Optimización en Ingenierı́a Dr. Carlos Artemio Coello Coello Tarea No. 4 2 de marzo de 2009 1. EVOP 1. Considere el siguiente problema: Min f (x1 , x2 ) = 50(x2 − x21 )2 + (2 − x1 )2 (1) (10 puntos) Implemente en C el método de operación evolutiva (EVOP) que vimos en clase. Las entradas del programa deben ser x(0) , ∆i (i = 1, 2, . . . , N y N es el número de variables de decisión del problema) y la tolerancia ǫ. El código fuente de su programa deberá incluirse en el reporte de su tarea y deberá incluirse también en un diskette (el programa deberá ser capaz de compilar y ejecutarse correctamente usando GNU C bajo ambiente Linux). La salida del programa deberá ser el valor de x∗ , y el valor correspondiente de f (x∗ ) a cada iteración, ası́ como el obtenido al final. (10 puntos) Resuelva el problema antes indicado usando el programa del punto anterior. Utilice: x(0) = [0, 0]T y ǫ = 1 × 10−4 . Defina los valores de ∆i que considere adecuados. Discuta brevemente en su reporte el por qué de su elección. Recuerde que el objetivo es que el método logre llegar al óptimo del problema. En su reporte debe incluirse el valor final de x∗ y el de f (x∗ ) correspondiente. Indique también el número de iteraciones que realizó su programa. 2. Método de Búsqueda Simplex Considere el siguiente problema: Min f (x1 , x2 ) = (x1 + 2x2 − 7)2 + (2x1 + x2 − 5)2 (2) Deberá realizar lo siguiente: (10 puntos) Implemente en C el método de Búsqueda Simplex que vimos en clase. Las entradas del programa deben ser X (0) , α, γ, β y la tolerancia ǫ. El 1 código fuente de su programa deberá incluirse en el reporte de su tarea y deberá incluirse también en un diskette (el programa deberá ser capaz de compilar y ejecutarse correctamente usando GNU C bajo ambiente Linux). La salida del programa deberá ser el valor de X (k) , y de f (X (k) ) a cada iteración. (10 puntos) Resuelva el problema antes indicado usando el programa del punto anterior, usando los datos siguientes X (0) = [0,0, 0,0]T , ǫ = 1 × 10−4 , α = 2, γ = 1,5, β = 0,5. En su reporte debe incluirse el valor de X ∗ (con la precisión correspondiente) obtenido y el de f (X ∗ ) correspondiente. 3. Método de Hooke-Jeeves Considere el siguiente problema: Min f (x1 , x2 ) = 100(x2 − x21 )2 + (1 − x1 )2 (3) Deberá realizar lo siguiente: (10 puntos) Implemente en C el método de Hooke-Jeeves que vimos en clase. Las entradas del programa deben ser X (0) , ∆i (i = 1, 2, . . . , N ) α(> 1) y la tolerancia ǫ. El código fuente de su programa deberá incluirse en el reporte de su tarea y deberá incluirse también en un diskette (el programa deberá ser capaz de compilar y ejecutarse correctamente usando GNU C bajo ambiente Linux). La salida del programa deberá ser el valor de X (k) , y de f (X (k) ) a cada iteración. (10 puntos) Resuelva el problema antes indicado usando el programa del punto anterior, usando los datos siguientes X (0) = [−1,2, 1,0]T , ǫ = 1 × 10−4 , ∆ = [1, 1]T , α = 2. En su reporte debe incluirse el valor de X ∗ (con la precisión correspondiente) obtenido y el de f (X ∗ ) correspondiente. 4. Método de las Direcciones Conjugadas de Powell 1. Considere el siguiente problema: Min f (x1 , x2 ) = [1,5−x1 (1−x2 )]2 +[2,25−x1 (1−x22 )]2 +[2,625−x1 (1−x32 )]2 (4) Deberá realizar lo siguiente: (10 puntos) Implemente en C el método de las Direcciones Conjugadas de Powell que vimos en clase. Las entradas del programa deben ser el punto inicial x(0) , las direcciones iniciales de búsqueda s(1) , s(2) , . . . , s(N ) y la tolerancia ǫ. Es importante que investigue un mecanismo que permita verificar la independencial lineal de las direcciones de búsqueda. Dicho 2 mecanismo deberá explicarse detalladamente en el reporte y deberá implementarse como parte del algoritmo. No olvide citar la fuente bibliográfica de donde se obtuvo el mecanismo para checar la independencia lineal. El código fuente de su programa deberá incluirse en el reporte de su tarea y deberá incluirse también en un diskette (el programa deberá ser capaz de compilar y ejecutarse correctamente usando GNU C bajo ambiente Linux). La salida del programa deberá ser el valor de X (k) , y de f (X (k) ) a cada iteración. (10 puntos) Resuelva el problema antes indicado usando el programa del punto anterior, usando los datos siguientes X (0) = [1,0, 1,0]T , ǫ = 1×104 , s(1) = [1, 0]T , s(2) = [0, 1]T . En su reporte debe incluirse el valor de X ∗ (con la precisión correspondiente) obtenido y el de f (X ∗ ) correspondiente. 5. Métodos de Gradiente 1. Considere el siguiente problema: Min f (x1 , x2 , x3 , x4 ) = [10(x2 − x21 )]2 + (1 − x1 )2 + 90(x4 − x23 )2 + +(1 − x3 )2 + 10(x2 + x4 − 2)2 + 0,1(x2 − x4 ) (5) Deberá realizar lo siguiente: 2. Usando: x0 = [−3, −1, −3, −1]T , tolerancias de 1 × 10−5 y diferencias finitas para aproximar las derivadas y la matriz Hessiana, compare los siguientes métodos de gradiente: a) (20 puntos) Cauchy (descenso empinado) b) (20 puntos) Fletcher-Reeves c) (20 puntos) Newton d) (20 puntos) Marquardt (use λ(0) = 1 × 104 ) e) (20 puntos) Davidon-Fletcher-Powell f ) (20 puntos) Broyden-Fletcher-Shanno 3. (10 puntos) Discuta las resultados, comparando brevemente los métodos utilizados en términos de precisión, rapidez, facilidad de implementación, susceptibilidad a sus parámetros, etc. En cada caso, deberán mostrarse los valores de X (k) , y de f (X (k) ) obtenidos a cada iteración. En el reporte, deberá incluirse además el valor final de X ∗ (con la precisión correspondiente) obtenido y el de su f (X ∗ ) correspondiente. Nótese que la implementación de cada método (en C, compilable bajo Linux) tiene un valor de 10 puntos (por 3 método). La ejecución de cada programa (usando en todos los casos el mismo problema) tiene un valor de 10 puntos adicionales por método. NOTA: Para las búsquedas univariadas, puede utilizar cualquiera de los métodos de optimización para una sola variable que vimos anteriormente. Sin embargo, es importante que indique en su código y su reporte qué método adoptó en cada caso. Fecha de entrega: Viernes 27 de marzo a las 12:00hrs. Toda tarea entregada tarde será penalizada con 10 % (sobre la calificación obtenida) por cada periodo de 24 horas que se retrase su entrega. 4