Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Departamento de Computación CINVESTAV-IPN Av. IPN No. 2508 Col. San Pedro Zacatenco México, D.F. 07300 email: [email protected] Clase No. 3 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de Búsqueda de Fibonacci Algoritmo Paso 1: Paso 2: Paso 3: Paso 4: Clase No. 3 Elegir un lı́mite inferior a y un lı́mite superior b. L=b−a Elegir un número deseado de iteraciones N k=2 L∗k = (Fn−k+1 /Fn+1 ) ∗ L x1 = a + L∗k ; x2 = b − L∗k Calcular f (x1 ) ó f (x2 ) (el que no se haya evaluado antes) Usar la propiedad de eliminación de regiones. Establecer nuevos valores de a y b. ¿Es k > N ? Si no, k = k + 1, GOTO Paso 2 ELSE TERMINAR 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de Búsqueda de Fibonacci Observaciones: La función a optimizarse debe ser unimodal en el intervalo inicial de búsqueda. Este método no puede localizar el óptimo exacto del problema. Sólo proporciona un intervalo, el cual posiblemente sea muy pequeño. Debe especificarse el número de iteraciones a efectuarse. Clase No. 3 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de Búsqueda de Fibonacci Con la búsqueda de Fibonacci, el intervalo se reduce a (2/Fn+1 ) ∗ L después de n evaluaciones de la función objetivo. Por tanto, para una precisión deseada , se requiere un número de evaluaciones correspondientes a la ecuación 2 Fn+1 Clase No. 3 (b − a) = 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de Búsqueda de Fibonacci Nótese que debe calcularse la serie de Fibonacci hasta N + 1 al usar este método. A cada iteración, se elimina una proporción del espacio de búsqueda de: (k = iteración actual) Fn−k /Fn−k+2 Para valores grandes de n, este valor es cercano a 38,2 %, lo cual es mejor que la reducción del método de división de intervalos por la mitad, que elimina el 25 %. Clase No. 3 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de la Sección Dorada Uno de los problemas de la búsqueda de Fibonacci es que deben calcularse y almacenarse los números de Fibonacci. Otro problema es que a cada iteración la proporción de la región eliminada no es la misma. Para aliviar estas dos desventajas y mantener el cálculo de una sola evaluación de la función objetivo por iteración, se usa el método de la sección dorada. Clase No. 3 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de la Sección Dorada En este algoritmo, el espacio de búsqueda (a, b) se mapea linealmente a un intervalo unitario (0, 1). Posteriormente, dos puntos en τ desde cualquier extremo del espacio de búsqueda se eligen en forma que a cada iteración la región eliminada sea de (1 − τ ) con respecto a la iteración previa. Esto se puede lograr igualando 1 − τ con (τ × τ ). Esto produce el número dorado: τ =0.618. Clase No. 3 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de la Sección Dorada Clase No. 3 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de la Sección Dorada El valor de τ tiene su historia. Los arquitectos de la Grecia antigua creı́an que un edificio de dimensiones d y b, el cual cumpliera con la relación d+b d τ= = d b tendrı́a las propiedades más placenteras a los sentidos (ver figura del siguiente acetato): Clase No. 3 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de la Sección Dorada También se encuentra este concepto en la geometrı́a de Euclides. Clase No. 3 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de la Sección Dorada Algoritmo Paso 1: Paso 2: Paso 3: Clase No. 3 Elegir un lı́mite inferior a y un lı́mite superior b. Elegir una tolerancia Normalizar la variable x usando: w = (x − a)/(b − a) aw = 0, bw = 1, Lw = bw − aw k=1 w1 = aw + (0,618)Lw w2 = bw − (0,618)Lw IF f (w1 ) < f (w2 ) aw = w2 ELSE bw = w1 Lw = bw − aw IF |Lw | < TERMINAR ELSE k = k + 1; GOTO Paso 2 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de la Sección Dorada En el método de la sección dorada, el intervalo se reduce a (0.618)n−1 después de n evaluaciones de la función objetivo. De tal forma, el número de evaluaciones de la función objetivo que se requieren para lograr una precisión deseada se calcula resolviendo (para n) la siguiente ecuación: (0,618)n−1 (b − a) = Clase No. 3 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de la Sección Dorada Al igual que en la búsqueda de Fibonacci, sólo se requiere una evaluación de la función objetivo por iteración y la eliminación regional efectiva por evaluación de la función es exactamente 38.2 %, que es un valor más alto que en el método de división de intervalos por la mitad. Esta cantidad es la misma que en la búsqueda de Fibonacci para un valor grande de n. De hecho, para un valor grande de n, el método de Fibonacci es equivalente a la sección dorada. Clase No. 3 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Comparación de los Métodos de Eliminación de Regiones Comparemos ahora las eficiencias relativas de los métodos de eliminación de regiones que hemos visto hasta ahora. Denotemos el intervalo de incertidumbre original como Lo y al intervalo de incertidumbre final, después de N evaluaciones de la función objetivo le llamaremos LN . Supongamos ahora que consideramos a la reducción fraccional (RF ) del intervalo original como una medida de mérito de los métodos de eliminación de regiones. Tenemos entonces: Clase No. 3 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Comparación de los Métodos de Eliminación de Regiones RF (N ) = LN Lo La siguiente tabla muestra los intervalos finales de incertidumbre de cada uno de los métodos que vimos: Clase No. 3 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Comparación de los Métodos de Eliminación de Regiones Clase No. 3 Método Fórmula Búsqueda Exhaustiva LN = Div. intervalos por la mitad LN =0.5 Fibonacci LN = Sección dorada LN =(0.618) 2 N Lo N/2 Lo 2 FN +1 Lo N −1 Lo 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Comparación de los Métodos de Eliminación de Regiones Las reducciones fraccionales pueden obtenerse fácilmente: Búsqueda exhaustiva: RF (N ) = LN 2Lo 2 = = Lo N Lo N División de intervalos por la mitad: LN 0,5N/2 Lo RF (N ) = = = 0,5N/2 Lo Lo Clase No. 3 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Comparación de los Métodos de Eliminación de Regiones Fibonacci: LN 2Lo 2 RF (N ) = = = Lo FN +1 Lo FN +1 Sección Dorada: LN (0,618)N −1 Lo = = (0,618)N −1 RF (N ) = Lo Lo Clase No. 3 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Comparación de los Métodos de Eliminación de Regiones La siguiente tabla muestra los valores de RF (N ) para distintos valores de N . Estos valores son indicativos de la eficiencia de cada método. Método N =5 N = 10 N = 15 N = 20 0.4 0.2 0.133 0.1 0.177 0.03125 0.0055 0.0009765 F6 =13 F11 =144 F16 =1597 F21 =17711 Fibonacci 0.1538 0.01389 0.00125 0.000113 Sección dorada 0.1459 0.01315 0.001185 0.00010685 Búsqueda Exhaustiva Div. intervalos por la mitad Clase No. 3 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Comparación de los Métodos de Eliminación de Regiones De esta tabla se desprende que el método más eficiente es el de Fibonacci, seguido por la sección dorada. En la práctica, suele calcularse el número de iteraciones que se requieren para obtener una precisión dada. Esto se puede obtener usando: LN = = precisión requerida. Si usamos Lo = 1, podemos obtener el número de iteraciones que requiere cada método para lograr una precisón dada. Ver la tabla siguiente: Clase No. 3 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Comparación de los Métodos de Eliminación de Regiones Método =0.1 =0.05 =0.01 =0.001 Búsqueda Exhaustiva 19 39 199 1999 Div. intervalos 7 9 14 20 6 8 11 16 por la mitad Sección dorada Clase No. 3 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Métodos de Aproximación Polinomial o Estimación de Puntos Los métodos de eliminación de regiones que vimos anteriormente, sólo requieren que la función sea unimodal. Por tanto, son aplicables tanto a funciones continuas como discontinuas, ası́ como a problemas con variables discretas. La lógica de estos métodos se basa en una simple comparación de valores de la función en 2 puntos diferentes. Además, esta comparación sólo toma en cuenta el ordenamiento de los valores de la función y no involucra de manera alguna a las magnitudes de la diferencia entre valores funcionales. Clase No. 3 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Métodos de Aproximación Polinomial o Estimación de Puntos Los métodos de estimación de puntos sı́ toman en cuenta las magnitudes relativas de los valores de la función y, en consecuencia, suelen tener mejor desempeño que los métodos de eliminación de regiones. Sin embargo, esta mejora en eficiencia se obtiene a partir de requerir que las funciones a optimizarse sean sufientemente “suaves”. Clase No. 3 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Métodos de Aproximación Polinomial o Estimación de Puntos La idea básica de los métodos de estimación de puntos es que si la función es suficientemente “suave”, entonces puede ser aproximada mediante un polinomio, y dicho polinomio puede entonces usarse para predecir la ubicación del óptimo. Para que esta estrategia sea efectiva, es necesario que la función a optimizarse sea tanto unimodal como continua. Clase No. 3 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Métodos de Aproximación Polinomial o Estimación de Puntos El teorema de la aproximación de Weierstrass garantiza que, si la función es continua en el intervalo considerado, entonces ésta puede ser aproximada con la precisión deseada usando polinomios de un orden suficientemente alto. Consecuentemente, si la función es unimodal y se cuenta con un polinomio que la aproxime razonablemente bien, entonces la ubicación del óptimo puede predecirse razonablemente bien usando el polinomio en cuestión. Clase No. 3 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Métodos de Aproximación Polinomial o Estimación de Puntos El teorema de Weierstrass también sugiere que se puede mejorar nuestra aproximación del óptimo usando polinomios de aproximación mediante alguno de los 2 mecanismos siguientes: 1. Usando un polinomio de mayor orden, o 2. Reduciendo el intervalo sobre el cual se aproximará el óptimo de la función. Clase No. 3 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Métodos de Aproximación Polinomial o Estimación de Puntos De entre estas 2 opciones, suele preferirse la segunda, porque el álgebra de los polinomios de un orden superior a tres se complica bastante y, debido a la premisa de unimodalidad, la reducción de intervalos es mucho más fácil de realizarse. Clase No. 3 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Métodos de Estimación Cuadrática El método de interpolación lineal más simple es la aproximación cuadrática. Se basa en la observación de que si una función alcanza su mı́nimo en el interior de un intervalo, entonces debe ser al menos cuadrática. Si es lineal, se supondrá que su óptimo se encuentra en alguno de los extremos del intervalo. Por tanto, un esquema de estimación cuadrática presupone que, dentro del intervalo dado, la función puede ser aproximada mediante una cuadrática y dicha aproximación mejorará conforme los puntos utilizados para construir la aproximación se acercan al mı́nimo real. Clase No. 3 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de las Estimaciones Cuadráticas Sucesivas Este algoritmo fue propuesto por Powell (1964) y usa la búsqueda cuadrática de manera iterativa para estimar el óptimo de una función. El algoritmo comienza con tres puntos x1 , x2 y x3 , como la búsqueda cuadrática vista previamente. Esto es porque cualquier función cuadrática puede ser definida usando tres puntos. Clase No. 3 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de las Estimaciones Cuadráticas Sucesivas Clase No. 3 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de las Estimaciones Cuadráticas Sucesivas El mı́nimo de la curva (x̄) se usa como uno de los puntos candidatos para la siguiente iteración. Para funciones no cuadráticas, el algoritmo requiere varias iteraciones, mientras que para funciones cuadráticas el mı́nimo exacto puede obtenerse con sólo una iteración. Clase No. 3 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de las Estimaciones Cuadráticas Sucesivas El método de Powell consiste en aplicar la búsqueda cuadrática usando tres puntos x1 ,x2 y x3 y calcular x̄. El punto x̄ es un estimado del mı́nimo de la función, el cual depende únicamente de los 3 puntos elegidos. De entre los cuatro puntos utilizados por el método (x1 ,x2 ,x3 y x̄), se retienen los 3 mejores y se obtiene una nueva función interpolada q(x). El procedimiento continúa hasta que dos estimaciones consecutivas se encuentran muy cerca entre sı́. Clase No. 3 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de las Estimaciones Cuadráticas Sucesivas Algoritmo Paso 1: Paso 2: Paso 3: Paso 4: Clase No. 3 Hacer que x1 sea un punto inicial y ∆ sea el tamaño del paso (o incremento). Pedir T OL1 y T OL2. Calcular x2 = x1 + ∆ Evaluar f (x1 ) y f (x2 ) If f (x1 ) > f (x2 ) THEN x3 = x1 + 2∆ ELSE x3 = x1 − ∆. Evaluar f (x3 ). Determinar Fmin =min(f1 , f2 , f3 ) y Xmin es el punto xi que corresponde a Fmin . 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de las Estimaciones Cuadráticas Sucesivas Paso 5: Paso 6: Paso 7 Clase No. 3 Calcular x̄ usando x1 , x2 y x3 . ¿Es |Fmin − f (x̄)| ≤ T OL1 AND |Xmin − x̄| ≤ T OL2? Si no se cumple, GOTO Paso 7 ELSE el óptimo es el mejor de los 4 puntos. TERMINAR Almacenar el mejor punto (Xmin o x̄) y dos puntos que lo rodeen, si esto es posible. Si no, almacena los 3 mejores puntos Re-etiquetarlos de acuerdo a: x1 < x2 < x3 . GOTO Paso 4. 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de las Estimaciones Cuadráticas Sucesivas Algoritmo Paso 1: Paso 2: Paso 3: Paso 4: Clase No. 3 Hacer que x1 sea un punto inicial y ∆ sea el tamaño del paso (o incremento). Pedir T OL1 y T OL2. Calcular x2 = x1 + ∆ Evaluar f (x1 ) y f (x2 ) If f (x1 ) > f (x2 ) THEN x3 = x1 + 2∆ ELSE x3 = x1 − ∆. Evaluar f (x3 ). Determinar Fmin =min(f1 , f2 , f3 ) y Xmin es el punto xi que corresponde a Fmin . 2009 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de las Estimaciones Cuadráticas Sucesivas Paso 5: Paso 6: Paso 7 Clase No. 3 Calcular x̄ usando x1 , x2 y x3 . ¿Es |Fmin − f (x̄)| ≤ T OL1 AND |Xmin − x̄| ≤ T OL2? Si no se cumple, GOTO Paso 7 ELSE el óptimo es el mejor de los 4 puntos. TERMINAR Almacenar el mejor punto (Xmin o x̄) y dos puntos que lo rodeen, si esto es posible. Si no, almacena los 3 mejores puntos Re-etiquetarlos de acuerdo a: x1 < x2 < x3 . GOTO Paso 4. 2009