Sunteți pe pagina 1din 47

baltaM ne noicamargorP .9 NEMUSER .8 nedro odnuges ed sotceridni sodotM .7 nedro remirp ed sotceridni sodotM .6 sotcerid sodotM .

5 lanoisnemidinU adeuqsB .4 senoiccirtser nis elbairavitlum nicazimitpO .3 arutalcnemoN .2 niccudortnI .1

ACIRMUN

NICAZIMITPO AL A NOICCUDORTNI

.8 AMET .8 AMET .8 AMET .8 AMET


acirmun nicazimitpo al a niccudortnI :8 ameT

areinegnI ne ocirmun oluclC

Aumentar la presin para reducir costes, mejorar la calidad del producto, minimizar riesgos medio ambientales, son algunas de las motivaciones para desarrollar herramientas de optimizacin para los complejos problemas de operacin y diseo de una planta qumica. Varios factores han contribuido a este desarrollo. En primer lugar la disponibilidad de ordenadores y su creciente capacidad de clculo ha facilitado la aplicacin de complejos modelos matemticos. En segundo lugar, el desarrollo y mejora de los modelos econmicos que permiten decidir entre diferentes procesos competitivos. Y en tercer lugar el reciente desarrollo del software para optimizacin que ha proporcionado la herramienta adecuada para el uso de los modelos matemticos tanto de operaciones fsicas como econmicas, para la identificacin de las mejores soluciones. De hecho, muchas de las decisiones en la industria qumica relacionadas con diseo de procesos y operaciones estn basadas en tcnicas de optimizacin que combinan los nuevos desarrollos en algoritmos de optimizacin, modelado de sistemas, y arquitectura y software de ordenadores. Aunque muchas de las tcnicas matemticas fueron desarrolladas por investigadores relacionados con investigacin de operaciones, anlisis numrico y ciencia de los ordenadores, los ingenieros qumicos han jugado un importante papel en alguno de estos desarrollos (de hecho un importante porcentaje de las personas implicadas en investigacin de operaciones son ingenieros qumicos). A continuacin daremos una visin general de la optimizacin en ingeniera qumica haciendo un nfasis especial en los desarrollos ms significativos de los ltimos 10 aos. Si no se asume ninguna estructura especial para el problema que se est tratando (el problema es considerado como una caja negra) entonces las tcnicas de bsqueda directa son los mtodos ms sencillos de aplicar, pero son tambin los que ms tiempo consumen. Estos mtodos realizan una bsqueda pseudo aleatoria o sistemtica (simplex flexible, algoritmos genticos, etc.) para mejorar la funcin objetivo. Si el problema presenta restricciones estos mtodos usan mtodos costosos y a menudo con dificultades intrnsecas, por ejemplo los mtodos de penalizacin. Como contrapartida el mtodo es fcil de

acirmun nicazimitpo al a niccudortnI :8 ameT

niccudortnI .1 niccudortnI .1 niccudortnI .1

areinegnI ne ocirmun oluclC

aplicar a problemas con restricciones sencillas y probablemente encontrar soluciones cercanas al ptimo global. Sin embargo debido al hecho de que a menudo requiere miles de evaluaciones de la funcin objetivo su rendimiento ser altamente dependiente de la seleccin de los parmetros del algoritmo. La aproximacin ms frecuente para resolver problemas de optimizacin consiste en clasificarlos de acuerdo al tipo de funcin objetivo y al tipo de restricciones y desarrollar mtodos especficos que aprovechen la estructura especial de dichos problemas. Un problema general viene expresado de la forma:
Min f ( x, y ) s.a g ( x, y ) 0 h ( x, y ) = 0 x X n y {0,1}
m

donde F(x,y) es la funcin objetivo a minimizar (maximizar) que esta sujeta a restricciones de desigualdad, igualdad, tanto de variables continuas x, como variables discretas y. El caso ms conocido, es el de la programacin lineal (LP). En este caso la funcin objetivo es lineal y las restricciones que forman el problema tambin son lineales. La solucin ptima de un LP cae en un vrtice del espacio formado por la regin factible. Cualquier solucin local debe ser adems la solucin global del problema. Estos problemas han sido resueltos durante muchos aos utilizando el algoritmo simplex, basado en mtodos algebraicos. El cambio principal en los mtodos de solucin de los problemas de programacin lineal ha sido el desarrollo de problemas de punto interior, que tratan con transformaciones no lineales y cuyos requerimientos de clculo estn, tericamente acotados por un polinomio expresado en trminos del tamao del problema. Esta propiedad no la comparte el algoritmo del simplex, que tericamente tiene un crecimiento exponencial. Aunque este comportamiento es rara vez observable en la prctica. El algoritmo simplex permite resolver

problemas de manera eficiente, que contengan hasta 50000 100000 restricciones. Los mtodos de punto interior funcionan mejor con problemas de hasta 500000 incluso 1000000 restricciones. La estructura particular de ciertos problemas de programacin lineal (problema de flujo, de transporte, asignacin) han llevado al desarrollo de mtodos especficos que han permitido resolver problemas con millones de variables. La programacin lineal mixta (MILP) es la extensin de los problemas de programacin lineal cuando aparecen variables discretas. Los modelos donde aparecen variables discretas permiten acercarnos a formular problemas del mundo real basados en decisiones lgicas (esto es variables 0 1) o donde el nmero de posibilidades es discreto. La forma ms comn de resolver los MILP es la tcnica de branch and bound (ramificacin y acotamiento) que consiste en resolver un subconjunto de problemas de programacin lineal dentro de un rbol de decisin de variables discretas. Otras aproximaciones comunes suponen el uso de tcnicas de plano de corte que hace el MILP resoluble como un LP aadiendo ciertas restricciones especiales. Tericamente estos problemas son de difcil solucin, debido a la naturaleza combinatoria del problema que no esta polinomialmente acotado a medida que aumenta el nmero de variables discretas. Sin embargo el uso conjunto de tcnicas de Branch and Bound y de plano de corte ha permitido desarrollar algoritmos para resolver problemas que se consideraban irresolubles no hace muchos aos Para el caso en el cual todas, o al menos algunas de las funciones son no lineales y adems slo aparecen variables continuas, aparece un problema de programacin no lineal (NLP). Si la funcin objetivo y las restricciones son diferenciables, los ptimos locales vienen definidos por las condiciones de optimalidad de Kuhn-Tucker. Estos son, probablemente los modelos ms comunes en Ingeniera Qumica. Si bien problemas que contenan hasta 100 variables para un NLP eran considerados problemas grandes hace 10 aos. La resolucin de problemas con varios miles de variables es algo bastante comn hoy en da. Los mtodos de gradiente reducido y la programacin cuadrtica sucesiva, los cuales se generan de aplicar el mtodo de Newton a las condiciones de optimalidad de KunhTucker, son los principales algoritmos para resolver los NLP. El mtodo de

acirmun nicazimitpo al a niccudortnI :8 ameT

aproximacin exterior (outer approximation) son los ms utilizados para resolver estos problemas. Estos mtodos que suponen que la funcin debe ser diferenciable resuelven una secuencia de problemas NLP y MILP. El primero optimiza las variables continuas y el segundo las discretas. Como en el caso anterior la solucin slo est garantizada para problemas convexos. Finalmente, todos los mtodos mencionados anteriormente suponen que los problemas estn formulados en forma de ecuaciones algebraicas. Muy a menudo, sin embargo, dentro del problema aparecen ecuaciones diferenciales como restricciones del problema. Una de las aproximaciones principales para resolver este problema consiste en aproximar la ecuacin diferencial por ecuaciones algebraicas, las cuales ya pueden ser incluidas dentro del programa general de programacin no lineal. Otra manera de resolver el problema es considerar la ecuacin diferencial como una ecuacin a parte que se resuelve en un bloque independiente y se introduce dentro del NLP como una ecuacin implcita. En este captulo, sin embargo, slo se van a introducir los rudimentos ms bsicos de la optimizacin numrica. En particular se estudiar la optimizacin numrica para problemas sin restricciones (o cuyas restricciones pueden ser resueltas de forma implcita y transferidas a la funcin objetivo)

areinegnI ne ocirmun oluclC

gradiente reducido es mejor para resolver problemas con la mayora de las restricciones lineales. Para problemas altamente no lineales es mejor la programacin cuadrtica sucesiva. Una limitacin de estos mtodos es que su convergencia slo esta garantizada a un ptimo local. Para problemas que tienen una funcin objetivo convexa y una regin factible convexa, este problema no existe, porque estos problemas slo tienen un ptimo local que coincidir con el ptimo global. En la prctica probar la convexidad de un problema no lineal es a menudo difcil, sino imposible, por lo que encontrar un ptimo local es considerado a menudo una solucin satisfactoria sobre todo si ello significa una mejora en el proceso. La extensin de la programacin no lineal para tratar con variables discretas lleva a la programacin no lineal con variables enteras mixta (MINLP). Algoritmos como la descomposicin de Benders generalizada o la

a, b, c
B En el algoritmo simplex flexible: centroide de todos los vrtices excepto el que da pero valor de funcin objetivo. Funcin escalar. Generalmente hace referencia a la funcin objetivo en un problema de optimizacin. Puede venir en funcin de variables reales (x) o enteras, generalmente binarias (y). Primera derivada de la funcin escalar f respecto de la variable escalar x Segunda derivada de la funcin escalar f respecto de la variable escalar x Nmero phi. FB = 1 Uno menos phi. ndices, significado variable segn contexto. Matriz hessiana Matriz identidad En bsqueda unidireccional, longitud del intervalo en la etapa inicial y en la etapa k respectivamente. Pendiente de una recta Nmero de puntos que forman la figura simplex. Matriz definida positiva En el mtodo simplex, peor valor de funcin objetivo (desarrollado para minimizar) En el mtodo simplex, mejor valor de funcin objetivo (desarrollado para minimizar) En el mtodo simplex, valor de funcin objetivo tras reflexin. En el mtodo simplex, valor de funcin objetivo tras expansin. En el mtodo simplex, valor de funcin objetivo tras contraccin. Direccin de bsqueda en la etapa k .
3 5 0.618 2

f ( x ) , f ( x, y )

f '( x) f ''( x)
FB
Fs
i , j , k , p, q

H I

L0 , Lk
m n Q Qmax Qmin Q
*

Q** Q***

acirmun nicazimitpo al a niccudortnI :8 ameT

arutalcnemoN .2 arutalcnemoN .2 arutalcnemoN .2 arutalcnemoN .2

areinegnI ne ocirmun oluclC


x

Vector de variables reales. Solucin ptima de un problema de optimizacin. Valor del vector de variables x en la iteracin k. Vector de variables binarias (0,1). Variable escalar Parmetro escalar En el mtodo simplex, coeficiente de reflexin. En el mtodo simplex, coeficiente de expansin. En el mtodo simplex, coeficiente de contraccin. Longitud de paso en bsqueda unidireccional Tolerancia para la terminacin de la bsqueda del ptimo Factor de aceleracin en bsqueda unidireccional Longitud de paso en el mtodo de Powell. Hace referencia a la norma de un vector o matriz

x xk y y

r e c

La optimizacin numrica de funciones no lineales requiere la utilizacin de tcnicas de optimizacin eficientes y robustas. La eficiencia es importante porque la solucin de estos problemas se lleva a cabo por un procedimiento iterativo. La robustez (habilidad para encontrar la solucin) es una propiedad deseable dado que el comportamiento de las funciones no lineales puede ser impredecible en su comportamiento: puede presentar mximos, mnimos y puntos de silla. En algunas regiones el avance hacia el ptimo puede ser muy lento necesitando mucho tiempo de clculo etc. Afortunadamente se posee mucha experiencia utilizando mtodos de optimizacin numrica lo que permite contar con buenos algoritmos y conocer sus limitaciones y posibilidades. En este captulo discutiremos la solucin del problema sin restricciones: Encontrar x* = [ x1 , x 2 ,....... x n ] que minimice f ( x1 , x 2 ,.... x n ) f ( x) La mayor parte de los procedimientos iterativos que son efectivos, alternan la optimizacin en dos fases (a) Eleccin de una direccin sk (b) Movimiento en la direccin s, (en alguna extensin, o hasta encontrar un mnimo) para encontrar un nuevo punto x k +1 = x k + x donde xk se suele llamar el tamao del paso. Adems de (a) y (b) un algoritmo debe especificar:
0 0 (c) Un vector de valores iniciales x 0 = [ x10 , x 2 ,.... x n ] T

(d) Un criterio de convergencia para la terminacin del algoritmo.

acirmun nicazimitpo al a niccudortnI :8 ameT

senoiccirtser nis elbairavitlum nicazimitpO .3


niccudortnI .1.3

senoiccirtser nis senoicnuf ed nicazimitpO .2.3

areinegnI ne ocirmun oluclC


La mayor parte de los algoritmos de clculo siguen una metodologa similar. Se determina un punto inicial, se evala la funcin en ese punto y se elige una direccin de bsqueda. Se comienza entonces un movimiento en la direccin de bsqueda, hasta encontrar un ptimo en esa direccin, o bien hasta que se produzca una mejora determinada. A continuacin se selecciona una nueva direccin y as sucesivamente. Los mtodos NLP sin restricciones que discutiremos en este captulo difieren en como se generan las direcciones de bsqueda. Algunos mtodos utilizan informacin de las derivadas, mientras que otros se basan solamente en evaluaciones de la funcin objetivo. Comenzaremos con algunos mtodos que no usan derivadas y despus presentaremos los mtodos que usan informacin de las derivadas. Bsqueda unidireccional Una buena tcnica de optimizacin de funciones de una nica variable es fundamental por al menos tres razones: 1.- En muchos problemas las restricciones se pueden incluir dentro de la funcin objetivo, por lo que la dimensionalidad del problema se reduce a una variable. 2.- Algunos problemas sin restricciones, inherentemente incluyen una nica variable. 3.- Las tcnicas de optimizacin con y sin restricciones, generalmente incluyen pasos de bsqueda unidireccional en sus algoritmos. Antes de la aparicin de los ordenadores de alta velocidad, los mtodos de optimizacin estaban prcticamente limitados a los mtodos indirectos en los

cuales el clculo del extremo potencial estaba restringido al uso de derivadas y la condiciones necesaria de optimalidad. Los modernos ordenadores han hecho posible los mtodos directos, esto es la bsqueda de un ptimo por comparacin sucesiva de los valores de la funcin f(x) en una secuencia de puntos x1, x2, x3... sin la necesidad de hacer intervenir derivadas analticas. Para llevar a cabo los mtodos directos de minimizacin numrica solamente se usa el valor de la funcin objetivo. Se comienza con un valor inicial de x y se contina seleccionando valores de x de acuerdo con una estrategia pre-seleccionada. El proceso termina cuando f ( x k +1 ) f ( x k ) < donde el superndice k designa el nmero de iteracin y es la tolerancia pre-especificada o criterio de tolerancia. Los mtodos indirectos tienen la ventaja inherente de que la convergencia es generalmente ms rpida incluso aun cuando se utilicen mtodos numricos para calcular las derivadas. Sin embargo, en problemas de ingeniera esta ventaja es muchas veces neutralizada por la falta de inters de determinaciones precisas de la funcin objetivo debido a la falta de precisin de los coeficientes que muchas veces se utilizan. Los mtodos numricos directos, tienen la ventaja de que pueden tratar fcilmente con problemas que incluyan discontinuidades, puntos de inflexin y puntos finales. Tambin el carcter de f(x) en las vecindades de un extremo es fcilmente estudiable. Para resolver un problema de optimizacin no lineal sin restricciones bastara derivar cada una de las funciones e igualar a cero. Aparecera entonces un sistema de n ecuaciones no lineales. Sin embargo el problema as planteado podra ser incluso ms difcil que el problema de optimizacin original, por eso muchos autores prefieren resolver el problema de optimizacin por mtodos directos usando algunas de las tcnicas que veremos en prximas secciones. Para aplicar los mtodos de bsqueda directa se debe comenzar por acotar el punto donde se encuentra el ptimo, y asegurarse de que la funcin es unimodal en el intervalo considerado. Es muy difcil determinar, a priori, si una

acirmun nicazimitpo al a niccudortnI :8 ameT

areinegnI ne ocirmun oluclC


funcin es unimodal, pero en muchos casos prcticos las funciones presentan esta caracterstica. Un mtodo de optimizacin para una nica variable, podra consistir en dividir el intervalo de bsqueda en una rejilla (numero de intervalos), y calcular la funcin objetivo en cada uno de los puntos de la rejilla. El ptimo ser el mejor de todos los valores obtenidos. Por otra parte es casi imposible llevar a la prctica estos mtodos en un espacio mltiple de variables. Para seleccionar el mtodo de optimizacin se debe alcanzar un compromiso entre la complejidad del procedimiento y el nmero total de evaluaciones que se debe realizar. Acotacin del ptimo Casi todos los procedimientos de bsqueda unidimensional requieren que el ptimo est acotado dentro de un intervalo conocido como primer punto de la estrategia de bsqueda. Existen varias estrategias que se pueden usar para acotar el ptimo, la ms sencilla consiste en fijar un punto y comenzar a movernos una distancia fija en una direccin. Por ejemplo, si fijamos como punto inicial el cero, podemos movernos 0.01 cada vez. Aunque el mtodo da buenos resultados es bastante ineficaz. Una alternativa es hacer una transformacin de x, por ejemplo a una escala logartmica o bien incluir un factor de aceleracin:
x k +1 = x k + 2 k 1

De todas maneras, en una buena parte de los problemas de optimizacin los lmites de las variables vienen dados de forma natural por consideraciones fsicas: Mxima y mnima temperatura permitida, lmites de presin, valores de las fracciones molares etc...

Los mtodos de bsqueda unidimensional se pueden clasificar en mtodos directos, mtodos indirectos de bsqueda secuencial, y mtodos de interpolacin polinmica. Veremos ahora cada uno de ellos.

Han sido desarrollados, bsicamente tres mtodos para llevar a cabo la bsqueda directa unidireccional, basados en las condiciones de optimalidad. Estos son: 1.- Mtodo de Newton 2.- Aproximaciones finitas al mtodo de Newton (Mtodos cuasi-Newton) 3.- Mtodos de secante. Para comparar la eficacia de cada mtodo, es til examinar la velocidad de convergencia de cada mtodo. Las velocidades de convergencia se pueden clasificar de muchas maneras, las ms comunes son:

Lineal

x k +1 x * xk x *
x k +1 x * xk x *
p

0 c1

Orden p

c > 0; p 1 (El ms rpido en la prctica)

Superlineal

lim k

x k +1 x * xk x *

acirmun nicazimitpo al a niccudortnI :8 ameT

:lanoisnemidinU adeuqsB .4
sotceridnI sodotM .1.4
(Habitualmente rpido)

areinegnI ne ocirmun oluclC


4.1.1. Mtodo de Newton De acuerdo con la primera condicin necesaria para que una funcin tuviera un mnimo local se debe cumplir que f ' ( x ) = 0 . Por lo tanto podemos aplicar el mtodo de Newton a la derivada, as:

x k +1 = x k

f '( x k ) f '' ( x k ) f ( x k +1 ) < f ( x k ) , para minimizacin.

Asegurndonos que en la etapa k, funcin cuadrtica en xk.

Realmente lo que hace el mtodo de Newton es aproximar la funcin por una Las ventajas del mtodo de Newton son: 1.- El procedimiento es cuadrticamente convergente (p=2), siempre que f(x)=0. 2.- Para una funcin cuadrtica el mnimo se obtiene en una nica iteracin. Las desventajas son: 1.- Se debe calcular tanto f(x) como f(x). 2.- Si f(x)0 el mtodo converge muy lentamente. 3.- Si existe ms de un extremo, el mtodo podra no converger al extremo deseado. Adems el mtodo podra oscilar.

4.1.2. Mtodos cuasi Newton Los mtodos cuasi Newton, se utilizan si la derivada de la funcin objetivo es difcil de calcular, o sta viene dada de forma numrica. Se basan en sustituir las derivadas por aproximaciones en diferencias finitas.

Mtodos de secante Los mtodos de secante toman dos puntos, xp y xq y resuelve una ecuacin similar a la dada en el mtodo de Newton:

f ' ( x k ) + m( x x k ) = 0
donde m es la pendiente de la lnea que conecta xp con xq. dada por:

m=

f '( x q ) f '( x p ) xq x p

El mtodo de la secante aproxima la segunda derivada por una lnea recta. Cuando xqxp el valor de m se aproximar al valor de la segunda derivada. En este sentido el mtodo de la secante se podra considerar tambin un mtodo cuasi Newton. Admitiendo que la funcin es unimodal, el mtodo de la siguiente comienza con dos puntos cualquiera del intervalo de tal manera que la primera derivada tenga signos diferentes. Calculando el cero de la ecuacin de partida se obtiene:

x* = x q

f '( x q ) ( x q x p )

[ f ' ( x ) f ' ( x )]
q p ~

Los dos puntos seleccionados para el paso siguiente son x* y xp xq dependiendo de los signos de f(xp) y de f(xq) con respecto al de f ( x *) . El mtodo de la secante parece bastante crudo pero funciona bastante bien en la prctica. El orden de convergencia para funciones de una sola variable es de ( 1 + 5 ) / 2 16. Su convergencia es ligeramente menor que la del . mtodo de Newton de diferencias finitas, pero en muchas ocasiones funciona mejor que este en lo que a nmero de evaluaciones de la funcin objetivo se refiere.
~

acirmun nicazimitpo al a niccudortnI :8 ameT

areinegnI ne ocirmun oluclC


4.2. Bsqueda Unidireccional: Mtodos de eliminacin de regin Los mtodos de eliminacin de regin para una bsqueda unidimensional se basan en eliminar una regin, en cada etapa, del intervalo en el que est comprendido el mnimo. Cuando la regin posible es suficientemente pequea la bsqueda termina. El elemento bsico dentro del sistema de eliminacin de regiones es la comparacin de valores de f(x) en dos o ms puntos dentro del intervalo de x. Debemos asumir que f(x) es unimodal, y que tiene un mnimo (es convexa) dentro de [a, b]. Si partimos de dos puntos de test sean x1, x2 deberamos elegirlos de tal manera que la bsqueda fuera lo ms eficiente posible. Si usamos un espaciado igual, esto es x1 a = b x 2 = x 2 x1 el mtodo de bsqueda se llama bsqueda de dos puntos a intervalos iguales. El intervalo de incertidumbre se reduce en 1/3 en cada iteracin. As si L0 es la longitud del intervalo original (b-a) y Lk es el intervalo despus de k iteraciones, como en cada iteracin se llevan a cabo dos evaluaciones de la funcin objetivo, entonces Lk tras k iteraciones viene dado por:
2 L = L0 3
k k

Un mtodo ms eficiente usa x1-a=b-x2 pero x1 y x2 estn colocados muy cerca uno del otro (idealmente una distancia infinitesimal). Este mtodo es el mtodo de la biseccin o bsqueda dicotmica. La incertidumbre del intervalo despus de k iteraciones vendr dada por:

1 L = L0 2
k

Sin embargo los mtodos ms eficientes de bsqueda por eliminacin de regiones son los mtodos de Fibonacci y de la seccin urea, los cuales usan una relacin constante para dividir el intervalo en segmentos. Pasaremos a discutir el mtodo de la seccin urea que viene de los nmeros de Fibonacci.

La estrategia empleada en el mtodo de la seccin urea es localizar dos puntos interiores del intervalo eliminado en cada iteracin de tal manera que se cumpla la relacin:
a b x y y

x+ y y = y x

Adems solamente una nueva evaluacin se realiza en cada etapa de bsqueda. Para calcular la relacin dentro del mtodo de la seccin urea tenemos que resolver:
x+ y =1

1 y = y x
Esto nos lleva a que:
3 5 = Fs 0.382 2 3 5 = FB 0.618 2

x=

Para un determinado intervalo Lk se aplican las fracciones Fs y FB para calcular las distancias apropiadas. Si ak y bk son los extremos del intervalo en la etapa k de bsqueda los dos nuevos puntos interiores estarn localizados en
x1k +1 = a k + FS Lk
k x 2 +1 = b k FS Lk

Ntese en cada nueva iteracin uno de los nuevos puntos estar fijo de la iteracin anterior. As despus de k etapas la longitud del intervalo ser:
Lk = ( 0.618) L0
k

Donde se han llevado a cabo un total de k+1 evaluaciones de la funcin objetivo.

acirmun nicazimitpo al a niccudortnI :8 ameT


; y =1

acimnilop nicamixorpa ed sodotM :lanoicceridinU adeuqsB .3.4

areinegnI ne ocirmun oluclC


Otra clase de mtodos de minimizacin unidimensional localizan un punto x cercano a x*, el valor de la variable independiente correspondiente al mnimo de f(x), por interpolacin y extrapolacin utilizando aproximaciones polinmicas a f(x). Se han propuesto tanto aproximaciones cuadrticas como cbicas usando tanto los valores de la funcin solamente como los de sus derivadas primeras. Se ha comprobado que los mtodos de interpolacin polinmica son normalmente ligeramente mejores que el mtodo de la seccin urea.
acitrdauc nicalopretnI

Si comenzamos con tres puntos, por ejemplo x1, x2, x3 en orden creciente, y no necesariamente igualmente espaciados, pero contenidos dentro de la zona de bsqueda (a,b), podemos aproximarlos a un polinomio de grado 2, f ( x ) = a + bx + cx 2 de tal manera que dicho polinomio pasa exactamente por esos tres puntos y debe presentar un mnimo en:
~

x*=

b 2c

Si suponemos que f(x) se evala en los tres puntos, podramos calcular los valores de a, b, c resolviendo el sistema de tres ecuaciones lineales:
f ( x1 ) = a + b x1 + c x12
2 f ( x2 ) = a + b x 2 + c x 2 2 f ( x3 ) = a + b x 3 + c x 3

lo que nos lleva a :


2 2 2 2 2 2 1 ( x 2 x 3 ) f 1 + ( x 3 x1 ) f 2 + ( x1 x 2 ) f 3 x* = 2 ( x 2 x 3 ) f 1 + ( x 3 x1 ) f 2 + ( x1 x 2 ) f 3 ~

con

f 1 f ( x1 );

f 2 f ( x 2 );

f 3 f ( x3 )

Para

ilustrar

la

primera

etapa

examinaremos la siguiente figura. Sealar que solamente una nueva evaluacin de la funcin objetivo se lleva a cabo en cada etapa de bsqueda.
I . Si x * cae entre x 2 y x 3 (a ) (b) f * < f2 f * < f3 f * > f2 f * < f3 elegir x 2 , x*, x 3 elegir x1 , x 2 , x *

f(x)

(a)

x1

x2 x*

x3

Figura 1. Seleccin de la regin a eliminar Si el ptimo cae entre x1 y x2 se procede de forma anloga al caso anterior. La bsqueda termina cuando se ha alcanzado la precisin deseada.

Los mtodos directos no hacen uso de la informacin proporcionada por las derivadas. Bajo estas circunstancias, estos mtodos se pueden usar con bastante efectividad, pero son muy ineficientes comparados con los mtodos basados en derivadas. Tienen la ventaja de que estos mtodos son muy simples de entender y muy fciles de programar.

acirmun nicazimitpo al a niccudortnI :8 ameT


del procedimiento de bsqueda

f(x)

(b)

x1

x2 x*

x3

airotaela adeuqsb ed sodotM .1.5

sotcerid sodotM .5 sotcerid sodotM .5 sotcerid sodotM .5 sotcerid sodotM .5

simultneamente. Despus de una o ms etapas, el valor de f(xk) se compara con el mejor valor previo de f(x) y se toma la decisin de continuar o terminar el procedimiento. Existen diversas variaciones de este algoritmo, aunque estrictamente hablando slo se alcanza la solucin cuando k , pero desde un punto de vista prctico, si el objetivo tiene una forma muy plana se pueden encontrar soluciones subptimas bastante aceptables. Aunque el mtodo es bastante ineficiente por si mismo, puede dar valores aceptables de partida para otros mtodos.

.allijer ne acsub ed sodotM .2.5

areinegnI ne ocirmun oluclC


Un mtodo aleatorio simplemente selecciona un vector inicial x0, evala la funcin objetivo en ese punto y entonces aleatoriamente selecciona otro vector x1. Tanto la direccin de bsqueda como la longitud de bsqueda son elegidas Los mtodos bsicos de diseo de experimentos discutidos en muchos textos de estadstica, se pueden aplicar tambin a minimizacin de funciones. Se pueden seleccionar una serie de puntos alrededor de un punto base de referencia, de acuerdo a algunos de los diseos del tipo que se muestra en la siguiente figura. Despus se pasa al punto que ms mejora la funcin objetivo y se continua la bsqueda. Sin embargo el sistema es muy ineficaz, por ejemplo con n=10 y una bsqueda factorial a tres niveles deberamos realizar 3101=59048 evaluaciones de la funcin objetivo, lo cual es obviamente prohibitivo.
Diseo factorial a tres niveles Diseo hexagonal Diseo factorial a dos niveles

Figura 2. Alternativas para la seleccin de puntos en los mtodos de bsqueda en rejilla.

Otro mtodo muy sencillo de optimizacin consiste en seleccionar n direcciones fijas de bsqueda, para n variables, (habitualmente los ejes coordenados) de tal manera que f(x) se minimiza de forma secuencial usando bsquedas unidimensionales en cada una de las direcciones previamente seleccionadas. El mtodo suele ser bastante ineficaz incluso llegando a puntos muy alejados del ptimo de los cuales no puede salir.

Este mtodo se basa en tomar una figura regular (conocida como simplex) como base. As en 2 dimensiones tal figura debera ser un tringulo equiltero. Los experimentos se localizan de tal manera que la funcin objeto se evala en cada uno de los vrtices que forman la figura geomtrica. Los valores de la funcin objetivo obtenida en cada uno de los vrtices se comparan entre s rechazando el peor valor de todos formando una nueva figura geomtrica por reflexin del peor de los puntos respecto a los que no han sido rechazados. En el simplex original se mantiene la figura geomtrica, mientras que la modificacin de Neadler y Mead permite distorsiones de sta para acelerar el proceso de bsqueda. Veamos de forma sistemtica cada uno de los pasos del simplex:

Seleccin de la figura simplex inicial: Para visualizarlo de forma sencilla comenzaremos con el caso de dos dimensiones. As la distancia entre un punto x1=(x11, x12) y otro x2=(x21, x22) viene dada por la expresin:

(x

x 2 ) = ( x11 x12 ) + ( x 21 x 22 ) = a 2

acirmun nicazimitpo al a niccudortnI :8 ameT

.elbixelf xelpmis odotM .4.5

etnairavinU adeuqsB .3.5

areinegnI ne ocirmun oluclC


procediendo de tal manera las distancias entre dos puntos vendrn dadas por una expresin similar.

x1 j x1k

) (
2

+ x2 j + x2 k

= xij xik
i =1

=a 2

jk 3! = 3 as en dos dimensiones 2 !1!

como tenemos tres puntos podemos hacer C23 =

(3 vrtices) podemos definir tres distancias entre vrtices (todas ellas iguales). Por la tanto, especificando un punto base x1 el punto x2 estar localizado en un punto cualquiera de una circunferencia de radio a centrada en x1. Una vez elegido el punto x2, el punto x3 deber estar en la interseccin entre las circunferencias de radio a centradas en x1 y en x2 respectivamente. Existen dos posibilidades.

x3 x1 x2
Figura 3.- Generacin de la figura simplex inicial De forma similar en n dimensiones tenemos n+1 puntos. La tabla siguiente es una propuesta para comenzar un simplex de n variables cuando x1 es el origen.

Punto j 1 2 3 n

x1j 0 p q q

x2j 0 q p q

X3j 0 q q q

x4j 0 q q q

xn-1j 0 q q p

xnj 0 q q q

n+1

Si en lugar del origen se toma cualquier otro punto x1 basta realizar una traslacin. Se puede encontrar otra serie de puntos, pero este es uno de los ms simples para hallar p y q y la condicin de que formen parte de la figura simplex, se puede aplicar a cada par de puntos; as entre los puntos 1 y 2:

( 0 p) 2 + ( n 1)( 0 q) 2 = a 2
p 2 + ( n 1) q 2 = a 2

Entre los puntos 2 y 3:

2 ( p q ) + ( n 1) ( q q ) = a 2 2( p q ) = a 2
Resolviendo el sistema:
2

( n 1 + n + 1) n 2 a q= ( 1 + n + 1 ) n 2
p=
Una vez fijada la figura inicial del simplex, se sigue una bsqueda secuencial, en la que en cada paso se eliminar un vrtice y se incluir otro nuevo. (supondremos que queremos minimizar). Paso 0: Calcular la funcin objetivo en cada uno de los puntos (vrtices), hallar el vrtice con el valor mximo Qmax el vrtice con valor mnimo Qmin y el centroide de todos los vrtices excepto aquel que ha dado el peor valor: 1 n x j , B = xi n i =1

acirmun nicazimitpo al a niccudortnI :8 ameT


q q p

areinegnI ne ocirmun oluclC


El procedimiento a seguir a continuacin consiste en calcular un nuevo vrtice y eliminar aquel que dio un peor valor. (Qmax) Paso 1: Reflexin: Se calcula un nuevo vrtice Q * cuyas coordenadas son:

Q * = ( 1 + r ) B r Qmax
donde r es el llamado coeficiente de reflexin, una cantidad positiva que generalmente suele ser la unidad. Realmente lo que hemos hecho ha sido reflejar el punto con el peor valor respecto del centroide. Las siguientes figuras lo ilustran para el caso de 2 y 3 variables.
Q*

Reflexin

Q*

Reflexin
B B

Peor valor

Peor valor

Figura 4.- Reflexin en el algoritmo simplex flexible.

Despus de la reflexin pueden ocurrir tres posibilidades: (a) Si Qmin < Q * < Qmax se reemplaza el vrtice Qmax por Q*, se recalcula Qmax y B (centroide) y se vuelve a la etapa 1 (b) Si Q*<Qmin se extiende Q* hasta Q** (expansin)
Q ** = e Q * + (1 e ) B

donde e es un coeficiente de expansin, generalmente 2.

b1.- Si Q*<Qmin se reemplaza Qmax por Q** y se vuelve al punto 1 (recalcular Qmax , Qmin=Q**, B). b2.- Si Q**> Qmin se reemplaza Qmax por Q* y se vuelve al punto 1 (recalcular Qmax , Qmin=Q**, B).
Q**

Q*

B B Peor valor

Figura 5.-Expansin en el algoritmo simples flexible (c) Si Q*> Qi excepto de Qmax se lleva a cabo una contraccin obtenindose un nuevo punto Q***:

Q *** = c Q * + (1 c ) B
donde c es un coeficiente de contraccin, generalmente 0.5. Y se vuelve al punto 1, excepto en el caso que el nuevo vrtice sea peor que Qmax en cuyo caso se sigue con c1.

acirmun nicazimitpo al a niccudortnI :8 ameT


Q**
Q* Peor Valor

areinegnI ne ocirmun oluclC


Q* Reflexin Q* Reflexin B Q***

Q*** Contraccin

Contraccin
B

Peor Valor

Figura 6.- Contraccin en el algoritmo simples flexible (c1). Cambio todos los vrtices excepto Qmin. Se genera una nueva figura dividiendo a la mitad la distancia de todos los vrtices a Qmin.

Mejor valor

Mejor valor

Nuevos vrtices

Peor Valor

Figura 7.- Cambio de vrtices y reduccin de la figura simplex. Se vuelve entonces a la etapa 1. 5.5. Direcciones conjugadas. Mtodo de Powell La experiencia ha demostrado que las direcciones llamadas conjugadas son mucho ms efectivas como direcciones de bsqueda que otras como pueden ser la bsqueda univariante o las direcciones ortogonales. Dos direcciones si y sj se dice que son conjugadas una con respecto a la otra si:

( si ) T Q ( s j ) = 0
En general un conjunto de n direcciones de bsqueda linealmente independientes s0, s1, s2,...sn-1 se dice que son conjugadas con respecto a una matriz definida positiva Q si

( si ) T Q ( s j ) = 0

0 i j n 1

En optimizacin la matriz Q es la matriz hessiana de la funcin objetivo, H. Para una funcin cuadrtica f(x) de n variables, para la cual H es una matriz constante est garantizado que se obtiene el ptimo en n etapas de bsqueda unidireccional si se obtiene exactamente el mnimo de cada etapa. Una direccin conjugada en general no es una direccin nica. Sin embargo, en dos dimensiones, si se elige una direccin s1 y Q s2 queda completamente especificada. La ortogonalidad es un caso especial de la conjugacin cuando Q=I. Aunque es corriente encontrar en la bibliografa conjuntos de mtodos conocidos como de direcciones conjugadas estas, estrictamente hablando slo existen para funciones cuadrticas o aproximaciones cuadrticas de la funcin objetivo en la etapa k. Cmo se puede calcular las direcciones conjugadas sin usar derivadas? Este es un concepto bsico que lo referiremos a la siguiente figura. Comenzamos con el punto x0. Localizamos el punto xa que es el mnimo en una direccin cualquiera s. Elegimos otro punto cualquiera (distinto del primero) x1. y localizamos el punto xb que es el mnimo partiendo del punto x1 en la misma direccin s. Los puntos xa o xb se obtienen minimizando f ( x 0 + s) con respecto a . Si f(x) es una funcin cuadrtica:
1 f ( x) = f ( x 0 ) + T f ( x 0 ) x 0 + 2 ( x 0 ) H( x 0 ) T

Se puede demostrar que el ptimo cae en la lnea que une xa con xb. Sin embargo esta ltima afirmacin no es vlida para otro tipo de funciones.

acirmun nicazimitpo al a niccudortnI :8 ameT

areinegnI ne ocirmun oluclC

x1

xa x*

xb x2
Figura 8.-Ilustracin del clculo de direcciones conjugadas. El ptimo cae en la lnea que une xa con xb Powell desarroll un mtodo basado en las direcciones conjugadas aplicable a cualquier tipo de funciones. Aunque Powell introdujo importantes modificaciones a su mtodo para conseguir la adaptacin. El mtodo sigue una serie de pasos: Paso 1.- El mtodo comienza realizando una bsqueda en n direcciones 0 0 0 linealmente independientes ( s10 , s2 , s3 , ....., sn ) que suelen tomarse paralelos a los ejes coordenados. Partiendo del punto base x 0 se lleva a cabo una bsqueda 0 0 0 0 unidimensional en la direccin s1 para llegar al punto x 1 . Este punto ( x 1 ) se toma como punto de partida para una nueva bsqueda unidireccional, en este caso en 0 la direccin s2 , y as sucesivamente hasta acabar en el punto x 0 (La figura ilustra n el caso para dos dimensiones). Paso 2.- Buscamos el punto particular x 0 para el cual se ha obtenido una mejora k mayor de la funcin objetivo respecto al punto anterior x 0 1. Definimos dos k magnitudes:
0 0 k = f ( x k 1 ) f ( x k )

=x x

0 0

0 n

Paso 3.- Determinamos:


f t0= f ( 2 x 0 x 0 ) n 0

y llevamos a cabo dos comparaciones. Si


f t0 f ( x 0 ) 0
0 0

y/o
n 0 t 0 0 0 0 n

( f ( x ) 2 f ( x ) + f ) ( f ( x ) f ( x ) )

Entonces la direccin no es una buena direccin de bsqueda y repetiramos la bsqueda comenzando desde el punto x n como punto base. En caso contrario o se procede a incorporar la direccin al conjunto de direcciones de bsqueda, sustituyendo a la direccin que peor resultado hubiese obtenido. En la nueva etapa de bsqueda conviene que la ltima direccin investigada (en la etapa de bsqueda unidireccional) sea . Las dos desigualdades anteriores comprueban, la primera si se obtiene una mejora en la direccin al pasar del punto x o al punto x 0 , y la segunda, que la o n funcin descienda de manera pronunciada y no a travs de una zona plana. LA siguiente figura ilustra la aplicacin del mtodo de Powell.

acirmun nicazimitpo al a niccudortnI :8 ameT

f ( x 0 ) f t0 0
2

areinegnI ne ocirmun oluclC

0 0 0 x3 = 2 x2 x0 0 x2 0 x0

0 x1
Figura 9.- Ilustracin grfica del mtodo de Powell.

6. MTODOS INDIRECTOS: MTODOS DE PRIMER ORDEN. Los mtodos indirectos, en contraste con los mtodos descritos en las secciones previas hacen uso de las derivadas en la determinacin de la direccin de bsqueda. Sin embargo, nuestra clasificacin en mtodos directos e indirectos, podra no estar clara del todo debido a la aproximacin de las derivadas por diferencias finitas, lo que estrictamente hablando hace a estos mtodos libres de derivadas. Una buena direccin de bsqueda debera reducir (para minimizacin) la funcin objetivo, de tal manera que si x0 es el punto inicial y x1 es un nuevo punto:
f ( x1 ) < f ( x 0 )

Una direccin s es llamada de descenso si satisface la siguiente relacin en un punto dado:


T f ( x) s < 0

6.1. Mtodo del Gradiente (Mximo descenso) Se recordar que el gradiente es un vector en un punto x que proporciona la direccin (local) de mxima variacin de la funcin. El vector gradiente es un vector ortogonal al contorno de la funcin en el punto. Por lo tanto en la bsqueda de un mnimo la direccin de movimiento ser contra-gradiente: s k = f ( x) En el mtodo de mximo descenso la transicin de un punto xk a otro xk+1 viene dada por la siguiente expresin: x k +1 = x k + x k = x k + k s k = x k k f ( x k ) donde :xk = Vector desde xk hasta xk+1 sk = Direccin de bsqueda de mximo descenso
k = Escalar que determina la longitud de paso en la direccin sk

El gradiente negativo da la direccin de movimiento, pero no la longitud de dicho movimiento. Por lo tanto existen varios procedimientos posibles dependiendo de la eleccin de k. Entre los diversos mtodos que existen para la seleccin de la longitud de paso, dos merecen una mencin especial. El primero de ellos emplea una bsqueda unidireccional en la direccin del gradiente. El segundo especifica a priori la longitud del paso para cada iteracin. Claramente la principal dificultad con la segunda aproximacin es que a menudo no se sabe a priori la longitud de paso adecuada. Cmo se debera cambiar esta longitud de paso y como debera reducirse a medida que nos aproximamos al mnimo para conseguir la convergencia? una ilustracin nos indicar el problema: Supongamos una funcin cuadrtica de dos variables como la de la figura siguiente:

acirmun nicazimitpo al a niccudortnI :8 ameT

Si en cada paso se realiza una optimizacin total en la direccin contraria al gradiente los pasos sucesivos del mtodo de mximo descenso son ortogonales uno con respecto al anterior. Este resultado, que parece peculiar, ocurre para una determinada f(x) debido a que la derivada de f(x) a lo largo de la lnea s() viene dado, utilizando la regla de la cadena por:
d f d f f d xi ( ) = = si = s T f d i d d xi i xi

areinegnI ne ocirmun oluclC

Figura 10.- Oscilacin del mtodo de mximo descenso

en el paso final de la bsqueda queremos que

d f = 0 y por lo tanto d xi s T f ( x k +1 ) = 0 . En la prctica, por lo tanto no es deseable llevar a cabo

suboptimizaciones con demasiada precisin. Mientras que el mtodo del gradiente puede producir progresos muy satisfactorios en la reduccin de f(x) en la primeras iteraciones tiende a hacerse muy lento en las ltimas. Alargando excesivamente los clculos. El algoritmo prctico lo podemos resumir en los siguientes pasos: 1.- Elegir un valor inicial x0. En pasos sucesivos ser xk.

2.- Calcular, analtica o numricamente las derivadas parciales

f ( x) xj

j = 1, 2, 3...., n

3.- Calcular el vector de bsqueda


s = f ( x k )

4.- Usar la relacin x k +1 = x k + k s k para obtener el siguiente punto. El valor de k puede ser de valor fijo o calculado en cada paso mediante una bsqueda unidireccional. 5.- Comparar f ( x k +1 ) con f ( x k ) . Si el cambio es menor que una tolerancia pre-especificada terminar, en caso contrario volver al paso dos y continuar con las iteraciones. Un mtodo estricto de descenso mximo puede terminar en cualquier punto estacionario, es decir, puede llegar a un mnimo local o a un punto de silla. Para asegurarnos que tipo de resultado hemos obtenido debemos asegurarnos que la matriz Hessiana es definida positiva. Por otra parte la dificultad bsica del mtodo de gradiente es que es muy sensible al escalado de f(x) por lo que la convergencia puede ser muy lenta y producirse un nmero enorme de oscilaciones. Desde este punto de vista el mtodo del gradiente no es muy efectivo.

6.2. Mtodo del gradiente conjugado El mtodo del gradiente conjugado debido a Fletcher y Reeves (1964) combina las caractersticas de la convergencia cuadrtica del mtodo de las direcciones conjugadas con las del mtodo del gradiente. El mtodo supone una importante mejora del mtodo del gradiente con slo un pequeo incremento en el esfuerzo de clculo. El mtodo del gradiente conjugado, esencialmente, combina la informacin obtenida del vector gradiente con la informacin acerca del vector gradiente de iteraciones previas. Lo que hace el mtodo es calcular la nueva

acirmun nicazimitpo al a niccudortnI :8 ameT

areinegnI ne ocirmun oluclC


direccin de bsqueda utilizando una combinacin lineal del gradiente en la etapa considerada y el de la etapa anterior. La principal ventaja del mtodo es que necesita almacenar muy poca cantidad de informacin con lo que puede ser programado fcilmente incluso en calculadoras. Los pasos de clculo se comentan a continuacin: 1.- En x0 (punto inicial) calcular f(x0) y calcular s 0 = f ( x 0 ) 2.- Almacenar f ( x 0 ) y calcular x1 = x 0 + 0s 0 minimizando mediante una bsqueda unidireccional en la direccin s0. 3.- Calcular f(x1) f(x1) la nueva direccin de bsqueda es una combinacin lineal de s0 y f(x1):
s = f ( x ) + s
1 1 0

T f ( x1 ) f ( x1 ) T f ( x0 ) f ( x0 )

para la etapa k-sima la relacin es:


s k +1 = f x k +1 +s k

( )

T f x k +1 f x k +1

( ) ( ) T f (x k ) f (x k )

Para una funcin cuadrtica se puede demostrar que dos direcciones de bsqueda son conjugadas. Despus de n iteraciones conviene comenzar otra vez desde el principio tomando el ltimo punto k=n como nuevo punto de partida. 4.- Realizar el test de convergencia, (la funcin objetivo ha disminuido), y terminar el algoritmo cuando s k sea menor que alguna tolerancia preestablecida. Algunas de las dificultades que aparecen en el mtodo de Powell tambin aparecen en el mtodo del gradiente conjugado. Se puede producir una

dependencia lineal de las direcciones de bsqueda. Esto se puede eliminar reiniciando el proceso cada cuatro o cinco etapas completas.

7. MTODOS INDIRECTOS: MTODOS DE SEGUNDO ORDEN. Desde el punto de vista de las direcciones de bsqueda el mtodo del mximo descenso se puede interpretar como un movimiento ortogonal a una aproximacin lineal (tangente) a la funcin objetivo en el punto xk. Examinemos ahora la siguiente figura y realicemos una aproximacin cuadrtica de f(x) en xk.
1 f ( x) f ( x k ) + T f ( x k ) x k + 2 ( x k ) H ( x k ) x k T

donde H(x) es la matriz Hessiana evaluada en el punto xk. Por lo tanto es posible tener en cuenta la curvatura de la funcin en las proximidades del punto de forma anloga a como se haca en el mtodo de Newton.

s = f ( x k )

x* x
k

Linealizacin de f(x)

Figura 11.- Aproximacin lineal y cuadrtica de una funcin

acirmun nicazimitpo al a niccudortnI :8 ameT

s = 2 f ( x k )

f ( x k )

x* x
k

Aproximacin cuadrtica de f(x)

areinegnI ne ocirmun oluclC

7.1. El Mtodo de Newton. El mtodo de Newton hace uso de la aproximacin de segundo orden de la funcin utilizando las derivadas segundas con respecto a cada una de las variables independientes. De esta forma es posible tener en cuenta la curvatura de la funcin en el punto e identificar las mejores direcciones de bsqueda. El mnimo de f(x) se obtiene diferenciando la aproximacin cuadrtica de f(x) con respecto a cada una de las variables e igualando a cero. As:
f ( x) = f ( x k ) + H ( x k ) x k

o bien
x k +1 x k = x k = [ H( x k ) ] f ( x k )
1

Si f(x) es una funcin cuadrtica el mnimo se alcanza en un nico paso. Pero para una funcin general no lineal el ptimo no se alcanza en un nico paso, por lo que se puede modificar la ecuacin anterior para introducir el parmetro de longitud de paso, con lo que queda:
x k +1 x k = x k =
k

[ H( x )]
k

f ( x k )

Obsrvese que la direccin s viene ahora dada por :


s = [ H( x k ) ] f ( x k )
1

La longitud de paso se puede calcular va cualquier mtodo de optimizacin numrica de los ya comentados o bien analticamente con lo que se obtendra:
opt

T f ( x k ) sk

( sk ) T H( x k ) sk

En el mtodo de Newton estrictamente hablando el valor de es la unidad. El problema tambin se puede resolver sin necesidad de invertir la matriz hessiana resolviendo directamente el sistema de ecuaciones lineales en x , aplicando la factorizacin adecuada y evitando los errores de redondeo, en la medida de lo

posible, que puedan aparecer como consecuencia del proceso de inversin de matrices.

H( x k ) x k = f ( x k )
El mtodo de Newton es el mtodo de minimizacin ms rpido, cuando funciona bien. Pero presenta las siguientes desventajas: 1.- El mtodo no encuentra necesariamente un ptimo global (pero esto es una caracterstica de todos los mtodos que hemos comentado hasta el momento) 2.- Requiere la inversin de matrices o la resolucin de un sistema de n ecuaciones lineales
3.- Necesita de las derivadas primera y segunda, las cuales en la prctica

no son fciles de obtener. 4.- El mtodo puede llevar a un punto de silla si la matriz hessiana no es definida positiva. La dificultad 3 se puede aliviar utilizando mtodos apropiados de diferencias finitas para el clculo de las derivadas primera y segunda. La convergencia global se puede reforzar si, al realizar un paso de Newton propiamente dicho (=1) no se obtiene mejora de la funcin objetivo, se vuelve al punto anterior y se realiza una bsqueda con el valor de variable. Para evitar la dificultad 4 se debe ser muy cuidadoso con la tcnica que se utiliza para garantizar que la matriz hessiana o su inversa sea definida positiva. (en algunos casos debido al nmero de condicin de la matriz la inversin de sta podra llevar a matrices no definidas positivas). Por otra parte slo est garantizado que el valor de la funcin objetivo mejora si la matriz hessiana es definida positiva. H(x) es definida positiva slo para funciones estrictamente convexas, pero las funciones no lineales en general la matriz H(x) puede cambiar de punto a punto y el mtodo de Newton podra llevarnos a direcciones que no reducen el valor de la funcin objetivo (o al menos no a las direcciones

acirmun nicazimitpo al a niccudortnI :8 ameT

areinegnI ne ocirmun oluclC

ptimas). En otras palabras si los valores propios de la matriz hessiana son todos positivos sabemos que estamos aproximando nuestra funcin por una cuadrtica de contornos circulares o elipsoidales que tienen un mnimo. Pero si al menos dos valores propios presentan signos opuestos podramos movernos en direccin a un punto de silla en lugar de hacia el mnimo. El mtodo de Newton tiene la ventaja de la convergencia cuadrtica slo en la vecindad del ptimo, donde la funcin objetivo puede ser aproximada bastante bien por una funcin cuadrtica. Pero en zonas ms alejadas otros mtodos pueden presentar velocidades de convergencia mayores.

Forzando a la matriz Hessiana a ser Definida Positiva Marquardt, Levenverg y otros han sugerido que la matriz Hessiana de f(x) puede ser modificada para obligarla a ser definida positiva y bien condicionada en cada etapa de bsqueda. El procedimiento consiste en aadir elementos a la diagonal principal de H(x):

H( x) = [ H( x) + I]
donde es una constante positiva para asegurar que H( x) sea definida positiva cuando H(x) no lo es. Tambin es posible usar
~

~ ( ) -1 H x = [ H ( x) + I]
donde es un escalar de suficiente valor para el mismo propsito. Para estar seguro de que valor de usar se debe calcular el valor propio ms pequeo (ms negativo) de la matriz hessiana en el punto y hacer > min { 1 } , donde

1 es un valor propio de H(x). Remarcar que si el valor de es demasiado


grande la diagonal principal se hace tan dominante que el mtodo se convierte en el de mximo descenso. El problema que aparece ahora es que en cada paso se deben calcular los valores propios de la matriz hessiana. Se han desarrollado algunos algoritmos que utilizan valores arbitrarios de dicho parmetro que se

modifican en cada paso de acuerdo a los valores previos obtenidos. Aunque el mtodo ms comn consiste en utilizar una factorizacin de Cholesky de la matriz Hessiana.

7.2 Mtodos de cuasi-Newton (mtodos de secante) Los mtodos de secante comienzan con la misma ecuacin usada en el mtodo de Newton:
f ( x) + H( x k ) x k = 0

Pero a diferencia del mtodo de Newton estamos interesados en conseguir una ) actualizacin de la matriz H(x), a la que llamaremos H( x) usando solamente las derivadas parciales primeras de la funcin, a semejanza de lo que hacamos en los mtodos de secante unidimensionales. Si queremos aproximar la matriz inversa, los mtodos de secante o quasi-Newton calculan un nuevo vector x a partir de otro de una etapa precedente a travs de ecuaciones anlogas a las del mtodo de Newton:
) 1 x k +1 x k = k [ H( x k ) ] f ( x k )

) -1 donde [ H( x) ] se conoce en ocasiones como Matriz de direccin y representa

una matriz que es una aproximacin de la verdadera inversa de la hessiana. ) -1 Desde este punto de vista si la matriz [ H( x) ] es la identidad el mtodo se convierte en el de descenso rpido. Se han desarrollado varias frmulas para actualizar las matrices hessianas. Supongamos por un momento que f(x) es una funcin cuadrtica entonces podramos elegir dos puntos, xk y xk+1 y un punto de referencia xp :

) f ( x k +1 ) = f ( x p ) + H( x k +1 x p ) ) f ( x k ) = f ( x p ) + H( x k x p ) ) f ( x k +1 ) f ( x k ) = H( x k +1 x k )

acirmun nicazimitpo al a niccudortnI :8 ameT

areinegnI ne ocirmun oluclC


) Para una funcin no cuadrtica, la matriz H se podra obtener resolviendo las ecuaciones de la secante en los puntos xk y xk+1

) H( x k ) x k = g k

donde

g k f ( x k +1 ) f ( x k )
) x k = H 1 ( x k ) g k

una relacin equivalente sera .

Debido a que tenemos solamente n ecuaciones y un total de n2 incgnitas (cada uno de los elementos de la matriz hessiana a actualizar) aparece un nmero infinito de posibles soluciones a las ecuaciones anteriores. Se debera elegir una ) matriz H( x) lo ms parecida posible a Hk en algn determinado sentido. Se han hecho muchas sugerencias al respecto, a continuacin se muestran las dos actualizaciones ms utilizadas y que han demostrado dar los mejores resultados en la prctica. Ambas mantienen la matriz hessiana definida positiva y simtrica. Son las actualizaciones de Devidon-Fletcher-Powell (DFP) y la de BroydenFletcher-Goldfard y Shanno (BFGS). DFP:
) ) T ( H k ) 1 ( g k ) ( g k ) T ( H k ) 1 ) k 1 ( x k ) ( x k ) ( H ) = ) ( x k ) T ( g k ) ( g k ) T ( H k ) 1 ( g k )

)k k )k k T ) k k T k k ( g k H k x k ) T x k g k ( g k ) T ) k ( g H x ) ( g ) + g ( g H x ) H = ( g k ) T ( x k ) ( g k ) T x k ( g k ) T x k

][

BFGS:
) T ) T Hk xk ( xk ) Hk ) k g k ( g k ) H = ) ( g k ) T x k ( x k ) T H k x k
) k 1 k k ) k 1 x ( H ) g ( H ) =

]( x )
k

) 1 + x k x k ( H k ) g k

( g k ) T x k

] [ x

) 1 ( H k ) g k

[ ( g )

k T

] g x ( x ) x ] [ ( g ) x ]
k k k k T k

k T

En este captulo se ha pretendido dar una visin muy general de los mtodos de optimizacin ms utilizados en clculo numrico. Cualquiera de los mtodos basados en programacin matemtica: programacin lineal no lineal o mixta tanto lineal como no lineal, requeriran casi un nuevo libro para cada uno de ellos. A pesar de todo no hemos querido dejar de presentar al menos los mtodos ms utilizados de optimizacin para problemas sin restricciones, tanto directos libres de derivadas- entre los que el mtodo simplex flexible de Nedler y Mead ha sido el que ms se ha popularizado y ha sido y contina siendo muy utilizado en muy diversos mbitos, como indirectos que usan informacin de derivadas- entre los que el mtodo de Newton o los mtodos quasi-Newton son sin duda los ms utilizados.

Se aade a continuacin el cdigo MATLAB de los siguientes mtodos numricos antes descritos. 1. Mtodo de bsqueda unidireccional utilizando seccin urea. 2. Mtodo de bsqueda unidireccional utilizando interpolacin polinmica (cuadrtica) 3. Implementacin del mtodo simplex flexible.

function [x, obj] = golden(fun,x1,x4) % Busqueda unidireccional (minimizando) por el mtodo de la Seccin % urea % % fun = archivo donde se calcula la funcin objetivo (debe ser una % funcin escalar) % x1 = punto de un extremo del intervalo % x4 = punto del otro extremo del intervalo % % NOTA: se asume que existe un nico mnimo en el intervalo x1, x4. tol = 1e-5; % Tolerancia para la terminacin del problema, calculada %como la norma de la longitud de intervalo.

acirmun nicazimitpo al a niccudortnI :8 ameT

baltaM ne noicamargorP .9

aeru nicceS .1.9

NEMUSER .8 NEMUSER .8 NEMUSER .8

acitrdauc nicalopretnI .2.9

areinegnI ne ocirmun oluclC


F1 = (3-sqrt(5))/2; F2 = 1-F1; L = x4 - x1; error = norm(L); x2 = x1 + F1.*L; x3 = x1 + F2.*L; f1 = feval(fun,x1); f2 = feval(fun,x2); f3 = feval(fun,x3); f4 = feval(fun,x4); while error > tol if f3 <= f2 L = x4 - x2; x1 = x2; f1 = f2; x2 = x3; f2 = f3; x3 = x4 - F1.*L; f3 = feval(fun, x3); elseif f2 <= f3 L = x3 - x1; x4 = x3; f4 = f3; x3 = x2; f3 = f2; x2 = x1 + F1.*L; f2 = feval(fun, x2); end error = norm(L); end x = x1; obj= f1; function [x,obj] = optim_poly(objfun,x1,x3) % METODO DE INTERPOLACION POLINOMICA para encontrar el mnimo de la % funcin objfun en el intervalo [x1,x3]. Se admite que el mnimo es % unico tol = 1e-5; x2 = (x1+x3)/2; % error maximo en el resultado % el primer punto intermedio se toma como la media % de los otros f1 = feval(objfun,x1);

f2 = feval(objfun,x2); f3 = feval(objfun,x3); error =1; cont = 0; while error > tol cont = cont +1; A= [x1^2, x1, 1; x2^2, x2, 1; x3^2, x3 1]; d= [f1;f2;f3]; coef = inv(A)*d; a= coef(1); b= coef(2); c= coef(3); xm = -b/(2*a); fm = feval(objfun, xm); % los dos primeros if son para el caso de funciones crecientes o % decrecientes al menos en lo que respecta a los tres puntos % considerados. if f1 >= f2 & f2 >= f3 x1 = x2; f1 = f2; x2 = (x1 + x3)/2; f2 = feval(objfun,x2); y = f3; x = x3; elseif f1 <= f2 & f2 <= f3 x3 = x2; f3 = f2; x2 = (x1 + x3)/2; f2 = feval(objfun,x2); y = f1; x = x1; elseif xm >= x1 & xm <= x2 if fm >= f2 x1 = xm; f1 = fm; else x3 = x2; f3 = f2; x2 = xm; f2 = fm; end y = fm; x = xm; elseif xm > x2 & xm <= x3 if fm >= f2; x3 = xm; f3 = fm; else x1 = x2; f1 = f2; x2 = xm; f2 = fm; end y = fm; x = xm; end error = norm(x1-x3,1);

acirmun nicazimitpo al a niccudortnI :8 ameT

areinegnI ne ocirmun oluclC


end obj = y;

elbixelF xelpmiS .49

olpmejE .3.9

Como ejemplo de aplicacin veremos como es posible encontrar el ptimo de la funcin x En el intervalo [0,3 ]. sin( x) tan Podemos ejecutar las siguientes lneas:
f = inline('-sin(x).*tan(x/pi)'); [x, obj] = golden(f,0,3) O bien: [x, obj] = optim_poly(f,0,3)

En ambos casos obtenemos x= -0.6828 obj = 2.1472

% Mtodo simplex flexible de Nedler y Mead. % simplex(obj,xo) % % obj = nombre del fichero donde se encuentra la funcin objetivo % xo = vector inicial para comenzar la optimizacin function [y,x]=simplex(obj,xo) % PARAMETROS DEL SIMPLEX N=length(xo)+1; % numero de puntos igual a variables independientes mas % una a= 1; % longitud del lado de la figura simplex inicial; ITER_MAX=200; % numero mximo de iteraciones permitidas tol=1e-8; % separacin entre los vrtice mnima x=zeros(N,N-1); MEJOR=zeros(1,2); % Matriz de vrtices del simplex. cada fila un % punto % ndice y valor de funcin objetivo del mejor % vrtice

PEOR=zeros(1,2);

% ndice y valor de funcin objetivo del peor % vrtice

% generacin de la figura del simplex. p = a/(N*2^0.5)*(N-1+(N+1)^0.5); q = a/(N*2^0.5)*(-1+(N+1)^0.5); for i=1:N for j=1:N-1 if i==1 x(i,j)=xo(j); elseif i==j+1 x(i,j)=xo(j)+p; else x(i,j)=xo(j)+q; end end end % Evaluacin de la fucnin objetivo en los vertices iniciales % y clasificacin for i=1:N fobj(i)=feval(obj,x(i,:)'); end MEJOR(2) = min(fobj); PEOR(2) = max(fobj); MEJOR(1) = min(find(fobj==MEJOR(2))); PEOR(1) = min(find(fobj==PEOR(2))); % comienzan las iteraciones error=1; cont=0; %contador de iteraciones cont2=0; % contador de iteraciones sin mejora mejora=MEJOR(2); while error >= tol cont=cont + 1; MEJOR(2) = min(fobj); PEOR(2) = max(fobj); MEJOR(1) = min(find(fobj==MEJOR(2))); PEOR(1) = min(find(fobj==PEOR(2))); if abs(mejora- MEJOR(2)) < tol cont2=cont2+1; else mejora = MEJOR(2); cont2=0; end % Localizacin del centroide suma=zeros(1,N-1); for j=1:N-1 for i=1:N if i~=PEOR(1)

acirmun nicazimitpo al a niccudortnI :8 ameT

areinegnI ne ocirmun oluclC


suma(j)= suma(j) + x(i,j); end end end xc = suma/(N-1); % Este es el centroide. % REFLEXION %disp('reflexion'); xpeor=x(PEOR(1),:); xr= xc + (xc-xpeor); fobjr = feval(obj, xr); if fobjr < MEJOR(2) % SI MEJORA INTENTAR EXPANSION xe= xc + (xc-xpeor)*2; fobje= feval(obj,xe); if fobje < fobjr % si la expansin tiene xito acepto % movimiento fobj(PEOR(1)) = fobje; %peor x(PEOR(1),:)=xe; else fobj(PEOR(1))= fobjr; x(PEOR(1),:)=xr; end elseif fobjr > PEOR(2) % SI ES EL PEOR DE TODOS CONTRACCION % sustituyo este nuevo punto por el xco = xc + (xc-xpeor)*0.5; fobjc = feval(obj,xco); % si la contraccion tiene xito % acepto movimiento %disp('contraccin aceptada') fobj(PEOR(1)) = fobjc; % sustituyo este nuevo punto por % el peor x(PEOR(1),:)=xco; else % CAMBIO DE VERTICES %disp(' Cambio de vrtices') for i=1:N if i~=MEJOR(1); x(i,:)=x(MEJOR(1),:) - 0.5*(x(MEJOR(1),:)-x(i,:)); fobj(i)=feval(obj,x(i,:)); end end end else %disp('nuevo vrtice en reflexion normal') fobj(PEOR(1))= fobjr; x(PEOR(1),:)=xr; end % Criterios para terminacin if cont >= ITER_MAX error=0; end if cont2 > 10 if fobjc < MEJOR(2)

acirmun nicazimitpo al a niccudortnI :8 ameT

y=fobj; end % el del while end error=0;

S-ar putea să vă placă și