• No se han encontrado resultados

Minimizaci´ on unidimensional

Supongamos que se quiere minimizar una funci´on en una variable z(x), que cumple con ciertas condiciones de regularidad: el m´ınimo se encuentra dentro de un intervalo finito [a, b], la funci´on es continua y est´a definida de manera ´unica en todo el intervalo. Bajo estas condiciones, z(x) tiene un m´ınimo finito para alg´unxdentro del intervalo de inter´es. Adem´as vamos a asumir que z(x) tiene un ´unico m´ınimo sobre el intervalo [a, b].

Se presentar´an dos tipos de algoritmos: m´etodos de reducci´on de intervalos y m´etodos que utilizan una curva de ajuste cuadr´atica.

4.1.1. M´etodos de reducci´on de intervalos

Los m´etodos de reducci´on de intervalos involucran procedimientos iterativos que se enfocan, en cada paso, en un intervalo de inter´es. En la n-´esima iteraci´on, este intervalo es una porci´on de [a, b], denotada [an, bn], que se elige de manera tal que contenga al punto m´ınimo x. En

cada paso el intervalo se analiza y se divide en dos: el intervalo que no contiene a x∗ y el que s´ı lo contiene. La parte donde no se encuentra el m´ınimo se descarta, y la otra se utiliza como intervalo de inter´es para el siguiente paso.

El procedimiento empieza determinando un intervalo inicial [a, b] (es decir,a0 =ay b0 =b), que se va reduciendo hasta obetener una buena aproximaci´on para x∗.

Para entender mejor la reducci´on de intervalos, consideremosInla longitud del intervalo en

la iteraci´on n. Definimos entonces rn=In+1/In, que corresponde a la proporci´on de reducci´on

del intervalo en la n-´esima iteraci´on. Por lo general, se suele tomar una cantidad constante rn =r, ya que en principio no hay nada que nos indique que los m´etodos van a “comportarse

bien” y se reducir´an en cada paso.

Los algoritmos de reducci´on de intervalos terminan cuando la longitud del intervalo de inter´es es menor que cierta constante predetermianda. De esta manera, x∗ se calcula como el punto medio ˆx del intervalo resultante despu´es de N iteraciones: IN = [aN, bN]. Es decir,

ˆ

x = aN+bN

2 . A su vez, si se establece que el m´ınimo se calcular´a con una tolerancia de ± (es decir, que x∗ ∈ (ˆx−,xˆ+)), puede calcularse con anterioridad cu´antas iteraciones deber´an realizarse para alcanzar la aproximaci´on al m´ınimo. Este n´umero est´a dado por:

N = log 2−logI0 logr + 1 . (4.1)

donde I0 es la longitud del intervalo inicial.

Van a presentarse dos m´etodos de reducci´on de intervalos, que se diferencian entre s´ı por los criterios utilizados para descartar intervalos.

Golden section

La reducci´on de intervalos en este m´etodo se basa en comparar los valores de z(x) en dos puntos, xn

L y xnR (xnL < xnR), que se encuentran dentro del intervalo de inter´es actual, [an, bn].

La elecci´on de dichos puntos es lo que caracteriza a este m´etodo.

Supongamos que queremos minimizar una funci´on que posee un ´unico m´ınimo z(x) sobre un intervalo [an, bn]. Tomamos dos puntos interiores al intervalo, xn

L y xnR. Si z(xnL) > z(xnR),

como la funci´on tiene un ´unico m´ınimo, ´este debe estar “a la derecha”dexn

L (es decir,x

> xn L).

De esta manera, el intervalo [an, xnL] puede descartarse, terminando as´ı la iteraci´on n. En la iteraci´onn+ 1, el intervalo de inter´es ser´a [an+1, bn+1], dondean+1 =xn

L ybn+1 =bn. El proceso

sigue de la misma manera, buscando dos puntos interiores al intervalo y evaluando la funci´on en ellos. Si la funci´on hubiera sido tal que z(xnR) > z(xnL), entonces en intervalo a descartar ser´ıa [xn

R, bn] y en la iteraci´onn+ 1 el intervalo de inter´es ser´ıa [an+1, bn+1] = [an, xnL].

S´olo restar´ıa ver qu´e regla se utiliza para elegir los puntosxn

L yxnR, dado el intervalo [an, bn].

Lo que se busca es tener que calcular la funci´onz(x) en la menor cantidad de puntos posibles. Por lo tanto, se utiliza uno de los puntos de la iteraci´on anterior (coincidir´a con uno de los extremos del intervalo actual), ya que all´ı ya fue calculada la funci´on y s´olo deber´a hacerse un c´alculo adicional. En la Figura 4.1 se muestra este procedimiento, donde entre la iteraci´onn y la n+ 1 s´olo se busc´o un nuevo punto (xnR+1), ya que el otro estaba disponible de la iteraci´on anterior (xnL+1 =xn

R). La sucesi´on de puntos interiores se puede obtener utilizando una reducci´on

constante del intervalor= 0,618 (m´as precisamente,r= 12(√5−1)). De esta manera, los puntos interiores se toman de manera tal que xn

R se encuentra a 0,618 veces la longitud del intervalo

a la derecha de an y xn

L se encuentra a 0,618 veces la longitud del intervalo a la izquierda de

bn. La cantidad 12(√5−1) se conoce como “secci´on dorada”(Golden section) y de ah´ı deriva el nombre del algoritmo.

Este algoritmo requiere como entradas la funci´on objetivo, los extremos del intervalo inicial y la precisi´on requerida. Como resultado, arroja una estimaci´on del ´optimo ˆx, la precisi´on realmente obtenida 1

2(b

N aN) y la cantidad N de iteraciones que se realizaron. Esto ´ultimo

podr´ıa calcularse previamente seg´un la ecuaci´on (4.1).

Bisecci´on

En algunos casos, la derivada de la funci´on objetivo es f´acil de calcular y el m´etodo de Bisecci´on aprovecha esta ventaja. Como asumimos que la funci´on tiene un ´unico m´ınimo, sa- bemos que es mon´otona a ambos lados del m´ınimo. En otras palabras, dzdx(x) <0 parax < x∗ y

dz(x)

dx >0 para x > x

.

Sea [an, bn] el intervalo actual y ˆxn su punto medio. Si dz(ˆxn)

dx < 0, entonces x

>xˆn, y por

lo tanto se descarta el intervalo [an,xˆn]. De esa manera, el intervalo de inter´es para la siguiente iteraci´on ser´a [ˆxn, bn]. Si dz(ˆxn)

dx > 0, entonces x

< xˆn, y la busqueda seguir´a en el intervalo

[an,xˆn]. El radio de reducci´on para este m´etodo esr= 0,5, y puede usarse (4.1) para calcular la cantidad de iteraciones necesarias para alcanzar la precisi´on requerida. Adem´as tambi´en puede establecerse un criterio de convergencia para que, una vez alcanzado, el algoritmo termine.

Puede verse mediante diversos ejemplos que la tasa de convergencia del m´etodo de bisecci´on es casi el doble que el de golden section. Sin embargo, bisecci´on requiere que la derivada dez(x) se eval´ue en cada iteraci´on, algo que muchas veces no es sencillo. En esos casos en preferible utilizar golden section. Si la derivada es sencilla de calcular, bisecci´on es m´as adecuado debido a que converge m´as r´apido.

4. Algoritmos de optimizaci´on 33

Fig. 4.1:Reducci´on de intervalos realizada por el m´etodo de Golden Section. [1]

Ejemplo

Supongamos que quiere hallarse el m´ınimo de la funci´on z(x) = 3x2 4x+ 1, con una precisi´on de 0.001 y un intervalo inicial [0,2]. Se puede calcular previamente el n´umero de iteraciones requeridas utilizando la f´ormula (4.1) con r = (√5−1)/2 para el caso de golden section, resultando ser N = 15, y con r = 0,5 para bisecci´on, resultando ser N = 10. Ambos m´etodos se programaron en MATLAB, obteniendo los resultados que se muestran en las Tablas 4.1 y 4.2.

Como se dijo anteriormente, bisecci´on requiere menos iteraciones para alcanzar la precisi´on requerida, con lo cual conviene usar este m´etodo siempre y cuando la derivada se pueda obtener facilmente.

Se concluye de los resultados que la funci´on z(x) alcanza su m´ınimo en x∗ ' 0,666. Esto pod´ıa obtenerse f´acilmente derivando la funci´on e igualando a cero, de donde se obtiene x∗ =

4

6 '0,666.

4.1.2. M´etodos de ajuste de curvas

Cuando la funci´on a minimizar no s´olo tiene un ´unico m´ınimo sino que tambi´en es relati- vamente suave, pueden usarse m´etodos de ajuste de curvas para hallar el m´ınimo, los cuales son m´as eficientes que los de reducci´on de intervalos. Estos m´etodos trabajan mejorando el punto soluci´on actual en cada iteraci´on. Las caracter´ısticas de la funci´on en el ´ultimo punto (o puntos) se utilizan para generar una funci´on que aproxime a z(x). El nuevo punto se toma, como veremos m´as adelante, en el m´ınimo de esta aproximaci´on.

Los m´etodos de ajuste de curvas generan una sucesi´on de puntos x1, ..., xN que converge al m´ınimox∗. Cada punto se genera aplicando alg´un procedimiento algor´ıtmico al punto anterior,

n xL xR Precisi´on xˆ 0 0.7639 1.2361 1 1 0.4721 0.7639 0.6180 2 0.7639 0.9443 0.3820 3 0.6525 0.7639 0.2361 4 0.5836 0.6525 0.1459 5 0.6525 0.6950 0.0902 6 0.6262 0.6525 0.0557 7 0.6525 0.6687 0.0344 8 0.6687 0.6788 0.0213 9 0.6625 0.6687 0.0132 10 0.6687 0.6726 0.0081 11 0.6664 0.6687 0.0050 12 0.6649 0.6664 0.0031 13 0.6664 0.6673 0.0019 14 0.6658 0.6664 0.0012 15 7.3314e-04 0.6665

Tab. 4.1: Resultados con Golden Section.

n an bn Precisi´on xˆn 0 0 2 1 1 1 0 1 0.5000 0.5000 2 0.5000 1 0.2500 0.7500 3 0.5000 0.7500 0.1250 0.6250 4 0.6250 0.7500 0.0625 0.6875 5 0.6250 0.6875 0.0313 0.6563 6 0.6563 0.6875 0.0156 0.6719 7 0.6563 0.6719 0.0078 0.6641 8 0.6641 0.6719 0.0039 0.6680 9 0.6641 0.6680 0.0020 0.6660 10 0.6660 0.6680 9.7656e-04 0.6670

Tab. 4.2: Resultados con Bisecci´on.

y el algoritmo termina cuando se alcanza un criterio de convergencia. Dicho criterio puede determinarse de acuerdo a diferentes reglas. Las principales se basan en que la soluci´on satisfaga cierta precisi´on. Por ejemplo, el algoritmo puede terminar cuando la contribuci´on marginal de una nueva iteraci´on es relativamente chica. Es decir, el algoritmo termina si

|z(xn−1)−z(xn)|≤κ.

dondeκes una constante predeterminada (tolerancia). Otra constante que puede utilizarse para chequear la convergencia es

κ0 = z(x

n−1)z(xn)

z(xn−1) .

En otros casos, el algoritmo puede terminar cuando los puntos son cercanos, es decir, si |xnxn−1| ≤κ00(dondeκ00 es alguna otra constante predeterminada). La cercan´ıa de cualquier

soluci´on particular al m´ınimo se puede chequear utilizando la derivada de z(xn) en xn. Si esta

derivada es cercana a cero, el algoritmo termina.

El m´etodo de convergencia elegido depende de la funci´on a minimizar, el algoritmo que se utilice y el contexto en el cual se resuelve el problema. A continuaci´on se ver´an algunos de los algoritmos de ajuste de curvas m´as utilizados.

M´etodo de Newton

Este m´etodo aproxima a la funci´on z(x) en cada iteraci´on por un ajuste cuadr´atico en el punto actual, xn. La curva ajustada, ˆz(x) est´a dada por:

ˆ z(x) =z(xn) + dz(x n) dx (x−x n) + 1 2 d2z(xn) dx2 (x−x n)2. (4.2)

Esta curva es una par´abola, que coincide con z(x) en xn hasta la segunda derivada. La siguiente soluci´on,xn+1, est´a ubicada en el punto que minimiza a ˆz(x) (es decir, donde dˆz(x)

dx = 0).

Este punto est´a dado por:

xn+1 =xn− dz(x

n)/dx

4. Algoritmos de optimizaci´on 35

La ecuaci´on (4.3) especifica la regla con la cual se eligexn+1 a partir dexn. La f´ormula (4.2) s´olo se utiliza para fundamentar esto ´ultimo, ya que no debe calcularse ni evaluarse en ning´un paso del algoritmo.

El m´etodo de Newton es muy eficiente, pero requiere que z(x) sea dos veces diferenciable. Adem´as, la primera y segunda derivada se deben evaluar en cada iteraci´on, y esto en algunos casos puede resultar muy costoso en t´erminos computacionales.

M´etodo de falsa posici´on

Este m´etodo es muy similar al de Newton. La diferencia es que aqu´ı no se utiliza la segunda derivada de z(x), sino que se trabaja con una aproximaci´on de ella. Esta aproximaci´on se obtiene a partir de la primera derivada evaluada en xn−1 y xn:

d2z(xn) dx2 '

dz(xn−1)/dx−dz(xn)/dx

xn−1 xn . (4.4)

Esta expresi´on puede ponerse en lugar de la segunda derivada en (4.3), y obtener de esta manera el paso algor´ıtmico para el m´etodo de falsa posici´on. Este m´etodo se puede usar cuando la segunda derivada no est´a disponible, o es dif´ıcil de calcular.

M´etodo de ajuste cuadr´atico

Este m´etodo no utiliza derivadas, y se basa en tres puntos: x1, x2 y x3. En la n-´esima iteraci´on estos puntos son un subconjunto de la serie de puntos soluci´onx1, ..., xn. Al igual que

los casos anteriores, el nuevo punto soluci´on es el m´ınimo de la curva de ajuste, y est´a dado por: xn+1 = 1 2 (x2 2−x23)z(x1) + (x23 −x21)z(x2) + (x21 −x22)z(x3) (x2−x3)z(x1) + (x3 −x1)z(x2) + (x1 −x2)z(x3) . (4.5)

El conjunto de tres puntos que se usar´a en la siguiente iteraci´on est´a formado por xn+1 y dos puntos elegidos entrex1, x2 yx3 de manera tal que minimicen el valor dez(x). Estos puntos se etiquetan x1, x2 y x3 y el proceso se repite.

Dada una funci´on, la elecci´on del m´etodo de ajuste de curvas depende de la complejidad que se presente a lo hora de calcular las derivadas. Si el c´alculo es sencillo se utiliza el m´etodo de Newton, mientras que el ajuste cuadr´atico se utiliza cuando incluso la primera derivada es dif´ıcil de evaluar. En general, los m´etodos de ajuste de curvas son m´as r´apidos que los de reducci´on de intervalos cuando se aplican a funciones relativamente suaves. Adem´as, pueden utilizarse a´un cuando no se puede definir claramente un intervalo que contenga al m´ınimo (por ejemplo, cuando la funci´on se debe minimizar sin ninguna restricci´on).

Ejemplo

Supongamos que quiere hallarse el m´ınimo de la funci´on z(x) = 2x3 + 3x2 12x+ 5 en el intervalo [0,4]. Para el m´etodo de Newton se utilizax0 = 0, para falsa posici´on se tomanx0 = 0 y x1 = 0,5, y para el m´etodo de ajuste cuadr´atico los tres puntos iniciales sonx1 = 0, x2 = 0,5 y x3 = 1. En todos los casos el criterio de convergencia utilizado es |z(xn−1)z(xn)|≤ κ con

κ= 0,001. Los tres algoritmos se programaron en MATLAB, y arrojaron los resultados que se detallan en las Tablas 4.3 , 4.4 y 4.5. Los valores se expresan con 4 decimales, ya que as´ı los muestra MATLAB, pero si se quieren visualizar resultados m´as exactos puede recurrirse a los comandos format long (trabaja con punto fijo y 14 decimales) oformat longE (trabaja con 15 decimales y forma exponencial).

n xn |z(xn−1)−z(xn)| 0 0 1 2 4 2 1.2000 10.6240 3 1.0118 0.3748 4 1.0000 0.0012 5 1.0000 1.8860e-08 Tab. 4.3: Resultados con Newton.

n xn |z(xn−1)z(xn)| 0 0 1 0.5 5 2 1.3333 0.9259 3 0.9412 1.0433 4 0.9940 0.0304 5 1.0001 3.2215e-04

Tab. 4.4: Resultados con Falsa posici´on.

n xn |z(xn−1)z(xn)| 1 0 2 0.5 3 1 2 4 1.0833 0.0637 5 0.9949 0.0634 6 1.0000 2.3399e-04

Tab. 4.5: Resultados con Ajuste cuadr´atico.

Se concluye de esta manera que la funci´on z(x) alcanza su m´ınimo en el intervalo [0,4] en el punto x∗ = 1.