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. 7 2007 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de Operación Evolutiva (EVOP) Esta técnica fue propuesta por el estadı́stico inglés George E.P. Box en 1957. Su algoritmo, denominado Evolutionary Operation (EVOP) se propuso en el contexto de optimización de producción industrial. Clase No. 7 2007 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de Operación Evolutiva (EVOP) Este algoritmo requiere (2N + 1) puntos, de los cuales 2N son las esquinas de un hipercubo, con centro en el otro punto. Se comparan entre sı́ los (2N + 1) valores de la función y se identifica el mejor punto entre ellos. En la siguiente iteración, se forma otro hipercubo alrededor del mejor punto. Si en cualquier iteración, no se mejora el punto actual, entonces se reduce el tamaño del hipercubo. Este proceso continúa hasta que el hipercubo se vuelve muy pequeño. Clase No. 7 2007 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de Operación Evolutiva (EVOP) Algoritmo Paso 1: Paso 2: Paso 3: Paso 4: Clase No. 7 Elegir un punto inicial x(0) y parámetros de reducción de tamaño ∆i para todas las variables de decisión, i = 1, 2, . . . , N . Elegir una tolerancia . Hacer x̄ = x(0) IF ||∆|| < THEN Terminar ELSE crear 2N puntos sumando y restando ∆i /2 de cada variable en el punto x̄ Calcular los valores de la función en los (2N + 1) puntos. Encontrar el punto con el menor valor de la función. Hacer que el punto mı́nimo sea x̄. IF x̄ = x(0) , reducir los parámetros de tamaño ∆i = ∆i /2. GOTO Paso 2. ELSE x(0) = x̄. GOTO Paso 2. 2007 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de Operación Evolutiva (EVOP) Nótese que en el algoritmo, x(0) siempre contiene al mejor punto. Por tanto, al final de su ejecución, x(0) se vuelve nuestra mejor aproximación al óptimo. Es evidente de este algoritmo que se requiere evaluar 2N veces la función objetivo por cada iteración. Por tanto, el número de evaluaciones de la función que se requieren crece exponencialmente con N . Sin embargo, el algoritmo es fácil de implementar y ha sido exitoso en la solución de muchos problemas industriales. Clase No. 7 2007 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de Operación Evolutiva (EVOP) Puede verse fácilmente que en EVOP, la convergencia del algoritmo depende del tamaño del hipercubo inicial, de su ubicación y del parámetro de reducción de tamaño (∆i ) elegido. Comenzar con una ∆i grande es bueno, pero la convergencia al óptimo puede requerir más iteraciones y, por ende, más evaluaciones de la función. Por otro lado, comenzar con un hipercubo pequeño puede conducirnos a convergencia prematura a un punto subóptimo, sobre todo en el caso de funciones altamente no lineales. Clase No. 7 2007 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de Operación Evolutiva (EVOP) Aún con un hipercubo inicial grande, es importante indicar que el algoritmo no garantiza convergencia a un óptimo local o global. Vale la pena mencionar también que la reducción del parámetro de paso (∆i ) en un factor de 2 que se muestra en el paso 4 del algoritmo, no siempre es necesaria. Puede adoptarse una mayor o menor reducción según se desee. Sin embargo, suele recomendarse una reducción más pequeña (un factor más pequeño que dos y mayor que uno) para lograr una mejor convergencia. Clase No. 7 2007 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de la Caminata Aleatoria Este método se basa en la generación de una secuencia de aproximaciones mejoradas al mı́nimo, cada una de las cuales se deriva de la aproximación previa. Entonces, si xi es la aproximación al mı́nimo obtenida en la etapa (o iteración) (i − 1), la nueva aproximación en la etapa i se obtiene de: xi+1 = xi + λui (1) donde λ es una longitud de paso (valor escalar), ui es un vector aleatorio unitario generado en la i-ésima etapa. Clase No. 7 2007 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de la Caminata Aleatoria Algoritmo Paso 1: Paso 2: Paso 3: Paso 4: Proporcionar punto inicial x1 , una longitud inicial de paso suficientemente grande λ, una longitud de paso mı́nimo permisible y un máximo número permisible de iteraciones N Calcular f1 = f (x1 ) Hacer i = 1 Generar n números aleatorios (n = número de variables de decisión) r1 , r2 , . . . , rn , cada uno en el intervalo [−1, 1] y formular el vector unitario u: u= Clase No. 7 1 1 2 +r 2 +...+r 2 ) 2 (r1 n 2 r1 r2 . . . rn 2007 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de la Caminata Aleatoria Algoritmo Las direcciones generadas con esta ecuación, se espera que tengan un sesgo hacia las diagonales de un hipercubo unitario. Para evitar este sesgo, se calcula la longitud del vector: 1 2)2 R = (r12 + r22 + . . . + rn y los números aleatorios generados (r1 , r2 ,. . .,rn ) son aceptables sólo si R ≤ 1, pero son desechados si R > 1. Si los números aleatorios son aceptados, el vector no sesgado de números aleatorios u está dado por la expresión antes indicada. Paso 5: Calcular el nuevo vector y el valor correspondiente de la función: x = xi + λu; f = f (x) Paso 6: IF f < f1 THEN x1 = x; f1 = f . GOTO Paso 3. ELSE GOTO Paso 7. Clase No. 7 2007 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de la Caminata Aleatoria Algoritmo Paso 7: Paso 8: Paso 9: Clase No. 7 IF i ≤ N THEN i = i + 1. GOTO Paso 4. ELSE GOTO Paso 8. Calcular la nueva longitud de paso reducida como λ = λ/2. IF λ ≤ THEN GOTO Paso 9. ELSE GOTO Paso 4. Detener el procedimiento y reportar xopt = x1 , fopt = f1 . 2007 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de la Caminata Aleatoria Algunas de las ventajas de los métodos de búsqueda aleatoria son las siguientes: Estos métodos funcionan aunque la función objetivo sea discontinua y no diferenciable en alguno de sus puntos. Estos métodos pueden usarse para encontrar el mı́nimo global cuando la función objetivo posee varios mı́nimos relativos. Clase No. 7 2007 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello Método de la Caminata Aleatoria Estos métodos son aplicables cuando otros métodos fallan debido a dificultades locales tales como funciones con formas determinadas y regiones de búsqueda difı́ciles de explorar. Aunque estos métodos no son muy eficientes, pueden usarse en las etapas iniciales de la optimización para detectar la región donde es más probable encontrar el mı́nimo global. Una vez localizada esta región, puede usarse una técnica más eficiente para ubicar con mayor precisión el mı́nimo global. Clase No. 7 2007 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello El Método de Búsqueda S 2 o Simplex Este es un ingenioso método de búsqueda propuesto por Spendley, Hext y Himsworth en 1962 y posteriormente mejorado por Nelder y Mead en 1965. Es importante hacer notar que este método no tiene relación alguna con el método simplex que se usa en programación lineal. La similitud del nombre es, sin embargo, desafortunada, pues suele prestarse a confusiones. Clase No. 7 2007 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello El Método de Búsqueda S 2 o Simplex El método de Spendley, Hext y Himsworth se basa en la observación de que un diseño experimental de primer orden requiere el menor número de puntos en el denominado simplex regular. En N dimensiones, un simplex regular es un polihedro compuesto de N + 1 puntos equidistantes, los cuales forman sus vértices. Por ejemplo, un triángulo equilátero es un simplex en dos dimensiones; un tetrahedro es un simplex en tres dimensiones. Clase No. 7 2007 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello El Método de Búsqueda S 2 o Simplex La principal propiedad del simplex empleado por el algoritmo es que puede generarse un nuevo simplex sobre cualquier cara del simplex previo, proyectando cualquier vértice elegido en una distancia apropiada a través del centroide de los vértices restantes del viejo simplex. El nuevo simplex se forma entonces reemplazando el viejo vértice por el punto proyectado que se acaba de generar. De esta forma, cada nuevo simplex se genera con una sola evaluación de la función objetivo. Clase No. 7 2007 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello El Método de Búsqueda S 2 o Simplex La siguiente figura ilustra el proceso para 2 dimensiones: Clase No. 7 2007 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello El Método de Búsqueda S 2 o Simplex En el método de búsqueda simplex, el número de puntos en el punto inicial es mucho menor que el del método de operación evolutiva (EVOP). Esto reduce el número de evaluaciones de la función objetivo que se requieren a cada iteración. Clase No. 7 2007 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello El Método de Búsqueda S 2 o Simplex Con N variables, se usan sólo (N + 1) puntos en el simplex inicial. Aunque existen algunas guı́as de diseño para elegir el simplex inicial, lo más importante es tomar en cuenta que el simplex inicial no debe formar un hipercubo (N -dimensional) de volumen cero. Por tanto, en una función con 2 variables, los 3 puntos elegidos no deben yacer a lo largo de una recta. Similarmente, en una función con 3 variables, los 4 puntos del simplex inicial no deben yacer sobre un plano. Clase No. 7 2007 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello El Método de Búsqueda S 2 o Simplex A cada iteración, se encuentra primero el peor punto en el simplex. Posteriormente se forma un nuevo simplex a partir del viejo usando ciertas reglas fijas que alejan la búsqueda del peor punto en el simplex. La orientación depende de los valores relativos de la función en el simplex. Clase No. 7 2007 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello El Método de Búsqueda S 2 o Simplex Pueden ocurrir cuatro situaciones diferentes dependiendo de los valores de la función: Clase No. 7 2007 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello El Método de Búsqueda S 2 o Simplex Primero, se determina el centroide (xc ) de todos los puntos, menos el peor. Posteriormente, se refleja el peor punto en el simplex alrededor del centroide y se obtiene un nuevo punto xr . La operación de reflexión se ilustra en el inciso (a) de la figura del acetato anterior. Clase No. 7 2007 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello El Método de Búsqueda S 2 o Simplex Si el valor de la función en este punto es mejor que el mejor punto en el simplex, se considera que la reflexión ha llevado al simplex a una buena región del espacio de búsqueda. Por lo tanto, se efectúa una expansión a lo largo de la dirección del centroide al punto reflejado (esto se muestra en el inciso (b) de la figura antes mencionada). Clase No. 7 2007 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello El Método de Búsqueda S 2 o Simplex La cantidad de expansión se controla mediante el factor γ. Por otro lado, si el valor de la función en el punto reflejado es peor que el peor punto en el simplex, se considera que la reflexión condujo al simplex a una mala región del espacio de búsqueda. En este caso, se realiza una contracción en la dirección del centroide al punto reflejado (esto se muestra en el inciso (c) de la figura antes citada). Clase No. 7 2007 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello El Método de Búsqueda S 2 o Simplex La cantidad de contracción es controlada por un factor β (se usa un valor negativo de β). Finalmente, si el valor de la función en el punto reflejado es mejor que el peor punto y peor que el segundo peor punto en el simplex, se realiza una contracción con un valor positivo de β (esto se muestra en el inciso (d) de la figura antes citada). Clase No. 7 2007 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello El Método de Búsqueda S 2 o Simplex El escenerio por omisión, es el punto mismo reflejado. El nuevo punto obtenido reemplaza al peor punto en el simplex y el algoritmo continúa con el nuevo simplex. La variante del método de búsqueda simplex que hemos descrito fue propuesta por Nelder y Mead (1965). Clase No. 7 2007 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello El Método de Búsqueda S 2 o Simplex Algoritmo Paso 1: Elegir γ > 1, β ∈ (0, 1) y una tolerancia . Paso 2: Encontrar xh (el peor punto), xl (el mejor punto), y xg (el segundo peor punto). Calcular: PN +1 1 x (centroide). xc = N i=1,i6=h i Paso 3: Calcular el punto reflejado xr = 2xc − xh Hacer xnew = xr IF f (xr ) < f (xl ) THEN xnew = (1 + γ)xc − γxh (expansión) ELSE IF f (xr ) ≥ f (xh ) THEN xnew = (1 − β)xc + βxh (contracción) ELSE IF f (xg ) < f (xr ) < f (xh ) THEN xnew = (1 + β)xc − βxh (contracción) Calcular f (xnew ) y reemplazar xh por xnew Calcular Q = Paso 4: Clase No. 7 hP N +1 i=1 (f (xi )−f (xc )) N +1 2 i 12 IF Q ≤ THEN Terminar ELSE GOTO Paso 2. 2007 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello El Método de Búsqueda S 2 o Simplex Para crear un simplex inicial se puede usar el siguiente procedimiento: 1. Proporcionar un punto inicial x(0) 2. Proporcionar un factor de escalamiento α. 3. Para obtener los N vértices restantes del simplex en N dimensiones, usar: (i) xj x(0) + δ 1 j = x(0) + δ2 j para i = 1, 2, . . . , N . Clase No. 7 IF j = i IF j 6= i (2) 2007 Optimización en Ingenierı́a Dr. Carlos A. Coello Coello El Método de Búsqueda S 2 o Simplex Los incrementos δ1 y δ2 dependen sólo de N y del factor de escalamiento α: " # 1 2 (N + 1) + N − 1 √ α δ1 = N 2 " 1 2 # (N + 1) − 1 √ δ2 = α N 2 (3) (4) Nótese que el valor elegido de α dependerá del problema a resolverse. Elegir α = 1, nos lleva a un simplex regular con lados de longitud unitaria. Clase No. 7 2007