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. 2 2008 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Búsqueda Exhaustiva El primer método de acotamiento que estudiaremos es la búsqueda exhaustiva, que es el más simple de todos. En este método, el óptimo de una función es acotado calculando los valores de la función en un conjunto de puntos equidistantes entre sı́. Clase No. 2 2008 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Búsqueda Exhaustiva Clase No. 2 2008 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Búsqueda Exhaustiva Usualmente, la búsqueda comienza desde el lı́mite inferior de la variable y se calculan 3 valores consecutivos de la función a la vez, basándose en la premisa de unimodalidad de la función. Basándose en los resultados de la comparación, la búsqueda se concluye o se continúa reemplazando uno de los 3 puntos por uno nuevo. La búsqueda continúa hasta que se acota el mı́nimo. Clase No. 2 2008 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Búsqueda Exhaustiva Algoritmo Paso 1: Paso 2: Paso 3: Clase No. 2 x1 = a; ∆x = (b − a)/n (n es el número de puntos intermedios) x2 = x1 + ∆x; x3 = x2 + ∆x IF f (x1 ) ≥ f (x2 ) ≤ f (x3 ) el mı́nimo se encuentra en (x1 , x3 ). TERMINAR ELSE x1 = x2 ; x2 = x3 ; x3 = x2 + ∆x GOTO Paso 3 ¿Es x3 ≤ b? Si lo es, ir al Paso 2 ELSE no existe un mı́nimo en (a, b) o un punto extremo (a ó b) es el mı́nimo. 2008 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Búsqueda Exhaustiva Nótese que el intervalo final obtenido por este algoritmo es 2(b − a)/n. En promedio, se requieren (n/2 + 2) evaluaciones de la función para obtener la precisión deseada. Es decir, que se necesitan más evaluaciones para obtener una mejor precisión. Por ejemplo, si a = 0, b = 10 y la precisión requerida es de 0,001, entonces tenemos: 2(10 − 0)/n = 0,001 (1) de donde: n = 20, 000. Es decir, que se requieren al menos 20, 000 iteraciones para lograr una precisión de 0.001. Clase No. 2 2008 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de la Fase de Acotamiento Este es otro método de acotamiento que se conoce en inglés como bounding phase method. El algoritmo comienza con un valor cualquiera y se inicia la búsqueda basándose en dos o más evaluaciones de la función objetivo en la vecindad del punto inicial. Posteriormente se adopta una estrategia de búsqueda exponencial para alcanzar el óptimo. Clase No. 2 2008 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de la Fase de Acotamiento Algoritmo Paso 1: Paso 2: Paso 3: Paso 4: Clase No. 2 Elegir un punto inicial x(0) y un incremento ∆ Hacer k = 0 IF f (x(0) − |∆|) ≥ f (x(0) ) ≥ f (x(0) + |∆|), THEN ∆ es positivo ELSE IF f (x(0) − |∆|) ≤ f (x(0) ) ≤ f (x(0) + |∆|), THEN ∆ es negativo ELSE GOTO Paso 1 x(k+1) = x(k) + 2k ∆ IF f (x(k+1) ) < f (x(k) ) THEN k = k + 1 y GOTO Paso 3 ELSE el mı́nimo se encuentra en el intervalo (x(k−1) , x(k+1) ) TERMINAR 2008 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de la Fase de Acotamiento Observaciones: La efectividad de este método depende del valor adoptado para el incremento de ∆. Si ∆ es grande, se obtiene un intervalo inicial grande y la precisión del acotamiento del mı́nimo es, en consecuencia, pobre. Si se elige un ∆ pequeño, la precisión del acotamiento mejorará, pero se requerirán más evaluaciones de la función. Una vez que se ha acotado la ubicación del óptimo, pueden aplicarse esquemas más sofisticados de reducción de intervalos para aproximar el óptimo. Clase No. 2 2008 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Métodos de Eliminación de Regiones Se llama ası́ a los métodos de búsqueda que localizan el óptimo mediante la eliminación sucesiva de subintervalos que reducen el intervalo de búsqueda restante. Nótese que prácticamente todos los métodos de búsqueda unidimensionales presuponen unimodalidad de la función a resolverse, al menos en el dominio de interés de la misma. Clase No. 2 2008 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Métodos de Eliminación de Regiones Este tipo de métodos se basan en la llamada propiedad de eliminación, definida por el siguiente teorema: Teorema: Supongamos que f es estrictamente unimodal (o sea, es unimodal y no tiene intervalos de longitud finita en los cuales la función sea de valor constante) en el intervalo a ≤ x ≤ b con un mı́nimo en x∗ . Hagamos que x1 y x2 sean 2 puntos en el intervalo, de forma que a < x1 < x2 < b. Clase No. 2 2008 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Métodos de Eliminación de Regiones Tenemos entonces que: 1. Si f (x1 ) > f (x2 ), entonces el mı́nimo de f (x) no se encuentra en el intervalo (a, x1 ) En otras palabras, x∗ ∈ (x1 , b). 2. Si f (x1 ) < f (x2 ), entonces el mı́nimo de f (x) no se encuentra en el intervalo (x2 , b) En otras palabras, x∗ ∈ (a, x2 ). Clase No. 2 2008 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Métodos de Eliminación de Regiones Nótese que cuando f (x1 ) = f (x2 ) podemos eliminar los 2 extremos y x∗ ∈ (x1 , x2 ). Clase No. 2 2008 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Métodos de Eliminación de Regiones Usando la propiedad de eliminación, puede organizarse la búsqueda de manera que se encuentre el óptimo eliminando recursivamente secciones del intervalo acotado originalmente. La búsqueda termina cuando el subintervalo restante es reducido a una longitud suficientemente pequeña. Nótese que la mayor ventaja de este tipo de métodos es que no requieren que la función sea diferenciable (sólo requieren evaluarla). Clase No. 2 2008 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de División de Intervalos por la Mitad En este método de eliminación de regiones se consideran valores en tres puntos diferentes (espaciados de forma equidistante) y se borra exactamente una mitad del intervalo a cada iteración. Clase No. 2 2008 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de División de Intervalos por la Mitad Estos 3 puntos se ilustran en la figura anterior. Dos de los valores de la función se comparan a la vez y una cierta región se elimina. Hay 2 escenarios posibles: Caso 1: If f (x1 ) < f (xm ) el mı́nimo no puede encontrarse más allá de xm . Por lo tanto, reducimos el intervalo de (a, b) a (a, xm ). Dado que xm es el punto medio del espacio de búsqueda, esta eliminación reduce el espacio de búsqueda a la mitad. Clase No. 2 2008 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de División de Intervalos por la Mitad Caso 2: If f (x1 ) > f (xm ) el mı́nimo no puede encontrarse en el intervalo (a, x1 ). Entonces comparamos los valores de la función en xm y x2 para eliminar un 25 % del espacio de búsqueda (ya se habı́a eliminado otro 25 % antes, porque x1 estaba a 1/4 de distancia del lı́mite inferior de la búsqueda). Clase No. 2 2008 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de División de Intervalos por la Mitad Este proceso continúa hasta que se encuentra un intervalo suficientemente pequeño. Como a cada iteración se retiene exactamente la mitad del espacio de búsqueda, se denomina al algoritmo el método de división de intervalos por la mitad. Clase No. 2 2008 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de División de Intervalos por la Mitad Algoritmo Paso 1: Paso 2: Paso 3: Paso 4: Paso 5: Clase No. 2 Elegir un lı́mite inferior a y un lı́mite superior b. Definir tolerancia xm = (a + b)/2 Lo = L = b − a Calcular f (xm ) x1 = a + L/4; x2 = b − L/4 Calcular f (x1 ) y f (x2 ) IF f (x1 ) < f (xm ) b = xm ; xm = x1 GOTO Paso 5 IF f (x2 ) < f (xm ) a = xm ; xm = x2 GOTO Paso 5 ELSE a = x1 ; b = x2 ; GOTO Paso 5 L=b−a IF |L| < TERMINAR ELSE GOTO Paso 2 2008 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de División de Intervalos por la Mitad Observaciones: A cada etapa del algoritmo, se borra exactamente la mitad de la longitud del intervalo de búsqueda. El punto medio de los intervalos subsecuentes es siempre igual a uno de los puntos previos x1 , x2 o xm . Por tanto, se requieren, cuando mucho, dos evaluaciones de la función a cada paso subsecuente. Clase No. 2 2008 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de División de Intervalos por la Mitad Después de n evaluaciones de la función, el intervalo inicial de búsqueda será reducido a ( 12 )n/2 Lo. En consecuencia, el número de evaluaciones requeridas para obtener una precisión deseada puede calcularse resolviendo: (0,5)n/2 (b − a) = Clase No. 2 2008 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de Búsqueda de Fibonacci En este método de eliminación de regiones, el intervalo de búsqueda se reduce de acuerdo a la serie que se atribuye a Leonardo Pisano Fibonacci, un matemático del 1200 de nuestra era. Clase No. 2 2008 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de Búsqueda de Fibonacci La propiedad de los números de Fibonacci es que, dados dos números consecutivos Fn−2 y Fn−1 , el tercer número se calcula usando: Fn = Fn−1 + Fn−2 donde n = 2, 3, 4, ... Los primeros números de Fibonacci son: F0 = 1, F1 = 1, F2 = 2, F3 = 3, F4 = 5, F5 = 8, F6 = 13 y ası́ sucesivamente. Clase No. 2 2008 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de Búsqueda de Fibonacci Los números de Fibonacci pueden usarse para crear un algoritmo de búsqueda que requiera sólo una evaluación de la función objetivo a cada iteración. El principio de la búsqueda de Fibonacci es que de dos puntos requeridos para el uso de la propiedad de eliminación de regiones, uno es siempre el punto previo y el otro punto es nuevo. Por ende, sólo se requiere una evaluación de la función a cada iteración. Clase No. 2 2008 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de Búsqueda de Fibonacci En la iteración k, se eligen dos puntos intermedios, cada uno de los cuales está a una distancia L∗k de cada extremo del espacio de búsqueda (L = b − a). Cuando la propiedad de eliminación de regiones elimina una porción del espacio de búsqueda, el espacio de búsqueda restante es Lk . Clase No. 2 2008 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de Búsqueda de Fibonacci Definiendo L∗k = (Fn−k+1 /Fn+1 )/L y Lk = (Fn−k+2 /Fn+1 )/L se puede mostrar que: Lk − L∗k = L∗k+1 lo que significa que uno de los dos puntos usados en la iteración k se mantiene como uno de los puntos de referencia en la iteración (k + 1). Ver la figura siguiente: Clase No. 2 2008 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de Búsqueda de Fibonacci Puesto que los dos primeros números de Fibonacci son los mismos, el algoritmo usualmente empieza con k = 2. Clase No. 2 2008 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. 2 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 2008 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. 2 2008 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. 2 (b − a) = 2008 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. 2 2008 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. 2 2008 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. 2 2008 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de la Sección Dorada Clase No. 2 2008 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. 2 2008 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. 2 2008