1 Rocío del Río Fernández Dpto. Electrónica y ElectromagnetismoMétodos Numéricos y de Simulación TEMA 3 OPTIMIZACIÓN Rocío del Río Fernández Dpto. Electrónica y Electromagnetismo
2 1 sesión teórica + 1 sesión prácticaOptimización PARTE I Contenidos Introducción Optimización de funciones de una variable: Bracketing Golden-Section Search Interpolación Parabólica Función fminbnd Optimización de funciones de una variable con condiciones de contorno 1 sesión teórica + 1 sesión práctica
3 Objetivos Optimización PARTE IComprender por qué y dónde surge la optimización en la resolución de problemas científicos y técnicos. Reconocer la diferencia entre la optimización uni- y multi-dimensional. Distinguir entre óptimos globales y locales. Saber reformular un problema de maximización para resolverlo mediante un algoritmo de minimización. Saber localizar el óptimo de una función de una variable mediante el golden- section search. Saber localizar el óptimo de una función de una variable mediante interpolación parabólica. Saber aplicar la función fminbnd de MATLAB para determinar el mínimo de una función uni-dimensional.
4 Bibliografía Optimización PARTE IJ. Kiusalaas: Numerical Methods in Engineering with MATLAB, 2/E. Cambridge University Press, 2010. S.C. Chapra: Applied Numerical Methods with MATLAB for Engineers and Scientists, 2/E. McGraw-Hill, 2006.
5 Optimización Optimización IntroducciónProceso de crear algo tan efectivo como sea posible. Compromiso prestaciones-limitaciones Matemáticamente consiste en encontrar los mínimos o máximos de una función que depende de una o más variables. f(x) = función objetivo, función de mérito o función coste x = variable de diseño
6 Optimización Optimización IntroducciónLa optimización normalmente se asimila con la minimización. maximización de f(x) minimización de –f(x) Presenta similitudes con los métodos de localización de raíces. Posible estrategia Diferenciar f(x) Obtener las raíces de f’(x)=0
7 Óptimos Globales vs. LocalesOptimización Introducción Óptimos Globales vs. Locales Un óptimo global representa la mejor de las soluciones, mientras que un óptimo local es mejor que sus vecinos inmediatos. Los casos que incluyen óptimos locales se llaman multi-modales. Cómo encontrar el óptimo global. Cómo no confundir un óptimo local con uno global.
8 Aspectos Básicos de la OptimizaciónIntroducción Aspectos Básicos de la Optimización Aunque a veces admiten solución analítica, la mayoría de los problemas reales requieren soluciones numéricas por ordenador. Los algoritmos de optimización son procesos iterativos que requieren un valor inicial de las variables de diseño. Si f(x) presenta varios mínimos locales, el x inicial determina cuál se computará. No hay manera garantizada de encontrar el mínimo global. Estrategia Correr el algoritmo varias veces usando diferentes valores iniciales. Un buen método de optimización debe intentar reducir el número de veces que se evalúa f(x). Optimización como parte de un método numérico más complejo. Alto tiempo de cómputo en la evaluación de funciones complejas. La solución analítica es sencilla de obtener en el caso de funciones f(x) fácilmente derivables.
9 Optimización Multi-Dimensional y LigadurasIntroducción Optimización Multi-Dimensional y Ligaduras La optimización multi-dimensional maneja funciones de dos o más variables f(x), con x=(x1, x2, …, xn) A menudo los problemas reales conllevan la optimización de funciones sujeta a restricciones (ligaduras, condiciones de contorno) Minimización de f(x) + Cumplimiento de igualdades y/o desigualdades gi(x)=0, i=1, 2, …, m hj(x)≤0, j=1, 2, …, n Los algoritmos de optimización con restricciones suelen ser complejos, específicos y difícilmente accesibles.
10 Minimización en una DimensiónOptimización Funciones de una variable Minimización en una Dimensión Problema: Minimizar una función f(x) en el intervalo c ≤ x ≤ d f(x) presenta: 1 mínimo global en el límite del contorno d 1 mínimo local en un punto estacionario f’(x)=0 ¿Cómo encontrar el mínimo global? Encontrar los puntos estacionarios a partir de las raíces de f’(x)=0 Evaluar f(x) en el contorno f(c), f(d) ¿Y si f(x) es difícil o imposible de derivar? Acotar el intervalo donde exista un mínimo Bracketing Aislar el mínimo Algoritmo de optimización
11 Bracketing Optimización Minimización en una dimensión …Antes de aislar un mínimo mediante un algoritmo de optimización debe acotarse su posición xmin (a, b) Procedimiento: Comenzar con un valor inicial x0 y moverse “cuesta abajo” evaluando la función en x1, x2, …, hasta llegar a un punto xn en el que f(x) crezca por primera vez. f(xn-1)
12 Bracketing Optimización Minimización en una dimensión …La acotación no debe ser precisa, sino eficiente. Tamaño del paso hi=xi+1-xi Un paso constante suele llevar a demasiadas iteraciones. Aumentando el paso en cada iteración se alcanza el mínimo más rápido “aprovechamos la cuesta abajo”. hi+1 = c∙hi, c > 1 x0 x1 xn-2 xn … x2 a b h1 xn-1 hn hn-1 h2
13 Bracketing Optimización Minimización en una dimensiónEJEMPLO_01.m Acotar el mínimo de f(x) = 0.1x2 - 2sin(x) en el intervalo 0 ≤ x ≤ 4. bracket.m Determinar dónde está la “cuesta abajo” para el valor inicial x0. Moverse “cuesta abajo” evaluando la función en x1, x2, …, hasta llegar al punto xn en el que f(x) crece. f(xn-1)
14 Bracketing Optimización Minimización en una dimensiónEJEMPLO_01.m Acotar el mínimo de f(x) = 0.1x2 - 2sin(x) en el intervalo 0 ≤ x ≤ 4. ¿x0 distintos? ¿pasos distintos? ¿Hay otros mínimos?
15 Golden-Section SearchOptimización Minimización en una dimensión Golden-Section Search Algoritmo de búsqueda para encontrar un mínimo en el intervalo (a,b) con un único mínimo (intervalo unimodal) Utiliza la razón áurea (golden ratio) =1.6180… para determinar la posición de dos puntos x1 y x2 internos a (a,b). Uno de los puntos internos se re-usa en la siguiente iteración para mejorar la acotación del mínimo. s1 s2 “Una línea recta se dice dividida en el extremo y su proporcional cuando la línea entera es al segmento mayor como el mayor es al menor.” Euclides (300aC)
16 Golden-Section SearchOptimización Minimización en una dimensión Golden-Section Search a h b Si f(x1) < f(x2) a x2 , x2 x1 Si f(x1) > f(x2) b x1 , x1 x2 h = (-1)(b-a) x1 = a+h x2 = b-h GS Sólo se necesita un nuevo punto interior y f(x) se evalúa sólo una vez más. En cada iteración el intervalo se reduce un factor (-1) (~62%). Número de iteraciones n para una tolerancia dada:
17 Golden-Section SearchOptimización Minimización en una dimensión Golden-Section Search EJEMPLO_02.m Aislar el mínimo de f(x) = 0.1x2 - 2sin(x) en el intervalo 0 ≤ x ≤ 4. goldSearch.m Calcula el número de iteraciones necesarias para una tolerancia dada. Aplica *GS* (transparencia anterior) ese número de veces. Dirime el mínimo entre los f(x1) y f(x2) finales.
18 Golden-Section SearchOptimización Minimización en una dimensión Golden-Section Search EJEMPLO_02.m Aislar el mínimo de f(x) = 0.1x2 - 2sin(x) en el intervalo 0 ≤ x ≤ 4. …
19 Interpolación ParabólicaOptimización Minimización en una dimensión Interpolación Parabólica La interpolación parabólica ajusta una parábola a los 3 puntos (x1, x2, x3) necesarios para establecer el bracketing de un óptimo. La posición del máximo/mínimo de esa parábola está dado por: El nuevo punto x4 y los 2 adyacentes (x1 y x2 o x2 y x3) se usan en la siguiente iteración del algoritmo. Se pueden hacer dos observaciones: 1) Un polinomio de 2º orden a menudo proporciona una buena aproximación a la forma de f(x) cerca de un óptimo. 2) Sólo existe una parábola que conecte 3 puntos (recta 2 puntos) La interpolación parabólica lo que hace es ajustar una parábola a los 3 puntos necesarios para establecer el bracketing de un óptimo.
20 Interpolación ParabólicaOptimización Minimización en una dimensión Interpolación Parabólica EJEMPLO_03.m Aislar el mínimo de f(x) = 0.1x2 - 2sin(x) en el intervalo 0 ≤ x ≤ 4. parabInterp.m Utiliza x1 = a, x2 = (a+b)/2, x3 = b para ajustar la parábola. Computa el mínimo de la parábola x4. Compara los valores de x4 y f(x4) para eliminar una de las coordenadas anteriores.
21 Interpolación ParabólicaOptimización Minimización en una dimensión Interpolación Parabólica EJEMPLO_03.m Aislar el mínimo de f(x) = 0.1x2 - 2sin(x) en el intervalo 0 ≤ x ≤ 4.
22 Función fminbnd Optimización Minimización en una dimensiónMATLAB tiene una función propia, fminbnd, que utiliza el método de Brent para que encontrar el mínimo de una función de una variable. [xmin, fval] = a, b) El algoritmo combina el golden search (fiable, pero lento) y la interpolación parabólica (rápida, pero poco fiable). Se pueden pasar opciones a la función fminbnd utilizando optimset como cuarto argumento. options = optimset(‘display’, ‘iter’, ‘TolX’,1e-4)
23 Función fminbnd Optimización Minimización en una dimensiónEJEMPLO_04.m Aislar el mínimo de f(x) = 0.1x2 - 2sin(x) en el intervalo 0 ≤ x ≤ 4. fminbnd
24 Función fminbnd Optimización Minimización en una dimensiónEJEMPLO_04.m Aislar el mínimo de f(x) = 0.1x2 - 2sin(x) en el intervalo 0 ≤ x ≤ 4.
25 Ejemplos de Resumen Optimización Minimización en una dimensiónEJEMPLO_05.m Aislar el mínimo de f(x) = 0.1x2 - 2sin(x) en el intervalo -10 ≤ x ≤ 10. ¿x0 distintos? Probar x0 = -10, -6, 1, 4, 8 ¿Por qué se obtienen resultados distintos? ¿Cuál es el mínimo? ¿Cómo encontrarlo?
26 Ejemplos de Resumen Optimización Minimización en una dimensiónxMin = fMin = xMin = fMin = xMin = fMin = xMin = fMin =
27 Ejemplos de Resumen Optimización Minimización en una dimensiónEJEMPLO_06.m Optimizar el diseño de una viga para que su estrés por flexión sea mínimo. El trapezoide mostrado es la sección transversal de una viga. Su geometría se obtiene eliminando la parte superior de un triángulo de base B = 48mm y altura H = 60mm. El problema consiste en encontrar la altura “y” del trapezoide que maximice el módulo de sección S = Ix/c donde Ix es el segundo momento del área transversal en torno al eje que pasa por el centroide C. Optimizando el módulo de sección se minimiza el estrés máximo por flexión de la viga.
28 Ejemplos de Resumen Optimización Minimización en una dimensiónEJEMPLO_06.m Optimizar el diseño de una viga para que su estrés por flexión sea mínimo.
29 Ejemplos de Resumen Optimización Minimización en una dimensiónEJEMPLO_06.m Optimizar el diseño de una viga para que su estrés por flexión sea mínimo. Subrutina para computar S(y) sin tener que derivar la expresión func_ej_06.m Maximizar S Minimizar –S y0 = 60cm y_Opt = 52.18cm S0 = 7200cm S_Opt = cm
30 Clase Práctica Optimización Minimización en una dimensiónEjercicios de optimización de funciones uni-dimensionales. Optimización de funciones uni-dimensionales con restricciones. Minimización de f(x) + Cumplimiento de igualdades y/o desigualdades gi(x)=0, i=1, 2, …, m hj(x)≤0, j=1, 2, …, n Los algoritmos de optimización con restricciones suelen ser complejos, específicos y difícilmente accesibles. ¿Cómo adaptar el problema para poder utilizar los algoritmos vistos hasta ahora?
31 Optimización de Funciones con RestriccionesMinimización con restricciones Optimización de Funciones con Restricciones Usar algoritmos de optimización sin restricciones pero redefinir la función objetivo para que el incumplimiento de las condiciones de contorno (CCs) esté altamente penalizado. PROBLEMA CON CCs Minimización de f(x) sujeta a las restricciones: gi(x)=0, i=1, 2, …, m hj(x)≤0, j=1, 2, …, n PROBLEMA SIN CCs Minimización de f*(x): f*(x) = f(x) + mP(x) Función de penalización: - Si se cumplen las CC P(x) = 0 - Si se incumple una CC P(x) CC2 También aplicable a funciones multi-variable.
32 Optimización de Funciones con RestriccionesMinimización con restricciones Optimización de Funciones con Restricciones Usar algoritmos de optimización sin restricciones pero redefinir la función objetivo para que el incumplimiento de las condiciones de contorno (CCs) esté altamente penalizado. EJEMPLO_07.m Aislar el mínimo de f(x) = 0.1x2 - 2sin(x) con 0 ≤ x ≤ 4. PROBLEMA CON CCs Minimización de f(x) = 0.1x2 -2sin(x) sujeta a las restricciones: x ≥ 0, x ≤ 4 PROBLEMA SIN CCs Minimización de f*(x): f*(x) = f(x) + mP(x) con P(x) = max2(-x,0) + max2 (x-4,0)
33 Optimización de Funciones con RestriccionesMinimización con restricciones Optimización de Funciones con Restricciones x0 = -10 xMin = fMin =
34 Rocío del Río Fernández Dpto. Electrónica y ElectromagnetismoMétodos Numéricos y de Simulación TEMA 3 OPTIMIZACIÓN Rocío del Río Fernández Dpto. Electrónica y Electromagnetismo
35 1 sesión teórica + 1 sesión prácticaOptimización PARTE II Contenidos Optimización de funciones de multi-variable: Downhill Simplex Función fminsearch Métodos de enfriamiento simulado Algoritmos genéticos Optimización en MATLAB 1 sesión teórica + 1 sesión práctica 35
36 Objetivos Optimización PARTE IISaber representar en MATLAB curvas de superficie y de contorno para visualizar funciones de dos variables. Saber localizar el óptimo de una función multi-variable mediante el algoritmo de downhill simplex. Saber aplicar la función fminsearch de MATLAB para determinar el mínimo de una función multi-dimensional. Comprender cómo los métodos de enfriamiento simulado y los algoritmos genéticos ofrecen la posibilidad de alcanzar el mínimo global de una función.
37 Bibliografía Optimización PARTE IIJ. Kiusalaas: Numerical Methods in Engineering with MATLAB, 2/E. Cambridge University Press, 2010. W.Y. Yang et al.: Applied Numerical Methods Using MATLAB. Wiley 2005. W.H. Press, S.A. Teukolsky, W.T. Vetterling, B.P. Flannery: Numerical Recipes. The Art of Scientific Computing, 3/E. Cambridge University Press, 2007.
38 Gráficas Multi-DimensionalesOptimización Minimización multi-dimensional Gráficas Multi-Dimensionales Las funciones de dos variables se pueden visualizar mediante curvas de superficie y de contorno (surf, surfc, contour, contourf). EJEMPLO_08.m Visualización de f(x) = 2+x1-x2+2x12+2x1 x2+x22 con -2 ≤ x1 ≤ 0 y 0 ≤ x2 ≤ 3
39 Método Downhill SimplexOptimización Minimización multi-dimensional Método Downhill Simplex Método downhill simplex (simple “colina abajo”) o de Nelder-Mead. Idea del método: Emplear un simplex que se mueva por el espacio de diseño para encerrar el punto óptimo y después encoger el simplex hasta alcanzar la tolerancia deseada. Se permiten 4 tipos de movimientos del simplex. La dirección del movimiento está determinada por el valor de f en los vértices: Hi vértice con mayor valor de f Lo vértice con menor valor de f n-simplex Figura de n-dimensiones con n+1 vértices conectados mediante líneas rectas y limitada por caras poligonales. 0-simplex punto 1-simplex línea 2-simplex triángulo 3-simplex tetraedro En geometría, un símplex o n-símplex es el análogo en n dimensiones de un triángulo. Más exactamente, un símplex es la envoltura convexa de un conjunto de (n + 1) puntos independientes afines en un espacio euclídeo de dimensión n o mayor, es decir, el conjunto de puntos tal que ningún m-plano contiene más que (m + 1) de ellos. Se dice de estos puntos que están en posición general. Por ejemplo, un 0-símplex es un punto; un 1-símplex un segmento de una línea; un 2-símplex un triángulo; un 3-símplex es un tetraedro; y un 4-símplex es un pentácoron (en cada caso, con su interior).
40 Método Downhill SimplexOptimización Minimización multi-dimensional Método Downhill Simplex Movimientos posibles (2D):
41 Método Downhill SimplexOptimización Minimización multi-dimensional Método Downhill Simplex Movimientos posibles (3D):
42 Método Downhill SimplexOptimización Minimización multi-dimensional Método Downhill Simplex Esquema del algoritmo: Escoger un simplex inicial Iterar hasta d ≤ ε (ε = tolerancia de error) Intentar la reflexión: * Si f(new) < Hi, aceptar la reflexión * Si f(new) < Lo, intentar la expansión * Si f(new) < Lo, aceptar la expansión * Si la reflexión es aceptada, comenzar un nuevo ciclo Intentar la contracción: * Si f(new) < Hi, aceptar la contracción y comenzar un nuevo ciclo Contracción múltiple (encoger) Fin de iteraciones Por lo general, el algoritmo es lento pero robusto.
43 Minimización multi-dimensionalOptimización Minimización multi-dimensional FUENTE:
44 Método Downhill SimplexOptimización Minimización multi-dimensional Método Downhill Simplex EJEMPLO_09.m Minimizar f(x1, x2) = x12 - x1x2 - 4x1 + x22 - x2 downhill_simplex
45 Método Downhill SimplexOptimización Minimización multi-dimensional Método Downhill Simplex EJEMPLO_09.m Minimizar f(x1, x2) = x12 - x1x2 - 4x1 + x22 - x2 …
46 Función fminsearch Optimización Minimización multi-dimensionalMATLAB tiene una función propia, fminsearch, para minimizar funciones de n variables mediante el algoritmo de Nelder-Mead. [xmin, fval] = xStart, options) Tanto xStart como xmin son vectores-fila de longitud n. La función debe escribirse en términos de una sola variable, representando las distintas dimensiones mediante índices de la variable. Se pueden controlar las opciones de la función optimset (Display, TolX, TolFun, MaxFunEvals, MaxIter, …). options = optimset(‘display’, ‘iter’, ‘TolX’,1e-4)
47 Función fminsearch Optimización Minimización multi-dimensionalEJEMPLO_10.m Minimizar f(x,y) = (x-0.5)2 (x+1)2 + (y+1)2 (y-1)2 fminsearch
48 Optimización Minimización multi-dimensional
49 Minimización multi-dimensionalOptimización Minimización multi-dimensional Comprobar distintas condiciones iniciales: xStart = [0 0] Alcanza un mínimo x_min = [0.50, 1.00], F_min = 0.00 xStart = [ ] Alcanza otro mínimo x_min = [-1.00, 1.00], F_min = 0.00 xStart = [0 0.5] Se pierde (max iter) x_min = [0.02, 1.01], F_min = 0.24 ¿Cómo saber si el mínimo que encontramos es uno de entre varios mínimos locales? ¿Podemos asegurarnos de que el mínimo alcanzado sea global?
50 Método de Enfriamiento SimuladoOptimización Minimización multi-dimensional Método de Enfriamiento Simulado Annealing = Templado de metales Al final de la transición líquidosólido la estructura cristalina tiene la mínima energía. El metal “encuentra” este estado si la temperatura (T) se reduce de manera suficientemente lenta. A una T finita el sistema tiene baja probabilidad de estar en un estado altamente excitado. Esto evita que quede “atrapado” en un mínimo local. Si T se reduce demasiado rápido, el resultado es una estructura cristalina amorfa. El método de enfriamiento simulado (simulated annealing, SA) emula este proceso de lento enfriamiento.
51 Método de Enfriamiento SimuladoOptimización Minimización multi-dimensional Método de Enfriamiento Simulado Traveling Salesman – Problema del Viajante Es un famoso problema de minimización combinatoria. El método de enfriamiento simulado proporciona soluciones. Problema: Un viajante debe visitar N ciudades y volver a casa siguiendo la ruta más corta. Solución: Existen N! caminos diferentes a tomar. Si N es grande, es imposible probar todas las posibilidades. (Ej: Si N = 30 existen 2.651032 rutas posibles)
52 Traveling Salesman – Problema del ViajanteOptimización Minimización multi-dimensional Traveling Salesman – Problema del Viajante Rutas para N = 100 ciudades con un río que las divide. Sin coste asociado al cruce del río Cruzar el río es caro (peaje)
53 Traveling Salesman – Demo de MATLABOptimización Minimización multi-dimensional Traveling Salesman – Demo de MATLAB >> travel
54 Método de Enfriamiento SimuladoOptimización Minimización multi-dimensional Método de Enfriamiento Simulado Esquema del algoritmo: Comenzar en un determinado estado s0 (punto del espacio de diseño). Computar el coste o energía E(s0). Fijar la temperatura a T. Considerar de algún modo un estado diferente s1. Computar E(s1). Si E(s1)
55 Método de Enfriamiento Simulado y TSPOptimización Minimización multi-dimensional Método de Enfriamiento Simulado y TSP OJO Comprobar Demo descargable. Se ejecuta desde el prompt de DOS.
56 Método de Enfriamiento SimuladoOptimización Minimización multi-dimensional Método de Enfriamiento Simulado EJEMPLO_11.m Minimizar la función f(x,y) “camello de 6 jorobas”
57 Método de Enfriamiento SimuladoOptimización Minimización multi-dimensional Método de Enfriamiento Simulado EJEMPLO_11.m Minimizar la función f(x,y) “camello de 6 jorobas” Comparar distintos algoritmos y distintas condiciones iniciales: xStart = [1 2]: Simplex f[1.7036, ] = fminsearch f[0.0898, ] = SA f[ , ] = xStart = [2 3]: Simplex f[1.7037, ] = fminsearch f[1.7036, ] = SA f [ , ] = Ojo, lo mostrado en estos dos casos no siempre es así. No siempre el método de enfriamiento simulado proporciona uno de los mínimos globales y fallan los otros métodos. Probar con otras condiciones iniciales. Se podrá ver cómo el método de simulated annealing queda a veces atrapado en un mínimo local. Poder escapar de ellos es altamente dependiente del esquema de enfriamiento usado (control de T).
58 Algoritmos Genéticos Optimización Minimización multi-dimensionalGenetic Algorithm (GA): Técnica de búsqueda aleatoria dirigida que está modelada de acuerdo con el proceso evolución/selección de supervivencia del mejor adaptado. Los individuos candidatos para posibles soluciones juegan el papel de los cromosomas y se representan mediante cadenas de números binarios. Al igual que el método SA puede evitar quedar atrapado en mínimos locales y alcanzar los globales. Al igual que SA, no siempre lo consigue).
59 Algoritmos Genéticos Optimización Minimización multi-dimensionalEsquema del algoritmo:
60 Optimización Minimización multi-dimensional
61 Algoritmos Genéticos y TSPOptimización Minimización multi-dimensional Algoritmos Genéticos y TSP Demo descargable y también ejecutable online.
62 Algoritmos Genéticos Optimización Minimización multi-dimensionalEJEMPLO_12.m Minimizar la función f(x,y) “camello de 6 jorobas” Distintos algoritmos y condiciones iniciales: xStart = [1 2]: Simplex f[1.7036, ] = fminsearch f[0.0898, ] = SA f[ , ] = GA f[ , ] = xStart = [-3 2]: Simplex f[ , ] = fminsearch f[ , ] = SA f[ , ] = GA f[ , ] = Ojo, lo mostrado en estos dos casos no siempre es así. No siempre el método de enfriamiento simulado proporciona uno de los mínimos globales y fallan los otros métodos. Probar con otras condiciones iniciales. Se podrá ver cómo el método de simulated annealing queda a veces atrapado en un mínimo local. Poder escapar de ellos es altamente dependiente del esquema de enfriamiento usado (control de T).
63 Optimización en MATLABFunciones propias de MATLAB fminbnd fminsearch fminunc Minimización multi-variable sin restricciones. No está basado en métodos directos (como simplex), sino de gradiente. fmincon Minimización multi-variable con restricciones lineales y no-lineales Toolboxes Optimization Toolbox Genetic Algorithm and Direct Search Toolbox Incluye Simulated Annealing)