1.22k likes | 1.47k Views
Optimización de Procesos. Tier I: Métodos Matemáticos de Optimización. Sección 3: Programación No Lineal. Introducción a la Programación No Lineal.
E N D
Optimización de Procesos
Tier I: Métodos Matemáticos de Optimización Sección 3: Programación No Lineal
Introducción a la Programación No Lineal • Ya hemos hablado sobre los aspectos básicos de la programación no Lineal (nonlinear programming, NLP) en el capítulo de Introducción cuando consideramos la optimización no restringida.
Introducción a la Programación No Lineal • Anteriormente optimizamos funciones no lineales de una variable usando la 1a y 2a derivadas. • Usaremos el mismo concepto aqui pero ahora extendido a funciones con más de una variable.
Optimización Multivariable No Restringida • Para funciones con una variable, usamos la 1a y 2a derivadas. • Para funciones con múltiples variables, usamos información idéntica que es el gradiente y el Hessiano. • El gradiente es la primera derivada con respecto a todas las variables, mientras que el Hessiano es el equivalente de la segunda derivada
El Gradiente • Repaso del gradiente (): Para una función “f”, de variables x1, x2, …, xn: Ejemplo:
El Hessiano • El Hessiano (2) de f(x1, x2, …, xn) es:
Ejemplo de Hessiano • Ejemplo (de antes):
Optimización No Restringida El procedimiento de optimización para funciones multivariables es: • Resolver el gradiente de la función igual a cero para obtener puntos candidatos. • Obtener el Hessiano de la función y evalúalo en cada uno de los puntos candidatos • Si el resultado es "positivo definitivo" (será definido después) entonces el punto es un mínimo local. • Si el resultado es un“negativo definitivo” (será definido después) entonces el punto es un máximo local.
Positivo/Negativo Definitivo • Una matriz es un “positivo definitivo” si todos los eigenvalores de la matriz son positivos(> 0) • Una matriz es un “negativo definitivo” si todos los eigenvalores de la matriz son negativos(< 0)
Positivo/Negativo Semi-definitivo • Una matriz es un “positivo semi-definitivo” si todos los eigenvalores son no-negativos (≥ 0) • Una matriz es un “negativo semi-definitivo” si todos los eigenvalores son no-positivos (≤ 0)
Matriz de Ejemplo Dada la matriz A: Los eigenvalores de A son: Esta matriz es un negativo definitivo
Ejemplo de NLP No Restringida Considera el problema: Minimizar f(x1, x2, x3) = (x1)2 + x1(1 – x2) + (x2)2 – x2x3 + (x3)2 + x3 Primero, encontramos el gradiente con respecto a xi:
Ejemplo de NLP No Restringida A continuación, igualamos el gradiente a cero: Entonces, tenemos un sistema de 3 ecuaciones y 3 incógnitas. Cuando resolvemos, obtenemos:
Ejemplo de NLP No Restringida Así tenemos solo un punto candidato para verificar. Encuentra el Hessiano:
Ejemplo de NLP No Restringida Los eigenvalores de esta matriz son: Todos los eigenvalores son > 0, entonces el Hessiano es un positivo definitivo. Entonces, el punto es un mínimo
Ejemplo de NLP No Restringida A diferencia de la Programación Lineal, a menos que conozcamos la forma de la función a ser minimizada o podamos determinar si es convexa, no podemos decir si este punto es el mínimo global o si hay valores de función más pequeños.
Método de Solución • En el ejemplo previo, cuando igualamos el gradiente a cero, tuvimos un sistema de 3 ecuaciones lineales y 3 incógnitas. • Para otros problemas, estas ecuaciones pueden ser no lineales. • Entonces, el problema se puede convertir en un sistema de ecuaciones no lineales, que puede ser muy difícil de resolver.
Método de Solución • Para evitar esta dificultad, los problemas de NLP son usualmente resuletos numéricamente. • Ahora veremos ejemplos de métodos numéricos usados para encontrar el punto óptimo para problemas de NLP de una sola variable. Estos y otros métodos pueden ser encontrados en cualquier referencia de métodos numéricos.
Método de Newton Al resolver la ecuación f (x) = 0 para encontrar un mínimo o un máximo, uno puede usar el paso de iteración: donde k es la iteración actual. La iteración se continua hasta que |xk+1 – xk| <e donde e es la tolerancia especificada.
Diagrama del Método de Newton El método de Newton aproxima f(x) como una línea recta a xk y obtiene un nuevo punto (xk+1), que es usado para aproximar la función a la siguiente iteración. Esto es llevado a cabo hasta que el nuevo punto es suficientemente cercano a x*. Tangente de f(x) en xk x x* xk xk+1 f(x)
Comentarios del Método de Newton • Uno debe asegurar que f (xk+1) < f (xk) para encontrar un mínimo y f (xk+1) > f (xk) para encontrar un máximo. • Desventajas: • Tanto la primera como la segunda derivada deben ser calculadas • El valor estimado inicial es muy importante – si no es suficientemente cercano a la solución, pudiera ser que el método no converja
Método Regula-Falsi Este método requiere dos puntos, xa y xb que que agrupan la solución a la ecuaciónf (x) = 0. Donde xc estará entre xa y xb. El siguiente intervalo será xc y xa o xb, cualquiera que tenga el signo opuesto a xc.
Diagrama Regula-Falsi El método Regula-Falsi aproxima la función f(x) como una línea recta e interpola para encontrar la raíz. f(x) xc xa x x* xb
Comentarios del método Regula-Falsi • Este método requiere conocimiento inicial de dos puntos que limiten la solución • Sin embargo, no requiere el cálculo de la segunda derivada • El Método Regula-Falsi requiere ligeramente más iteraciones para converger que el Método de Newton
Optimización Multivariable • Ahora consideraremos la optimización multivariable no restringida • Casi todos los métodos de optimización multivariable hacen lo siguiente: • Eligen una dirección de búsqueda dk • Minimizan a lo largo de esa dirección para encontrar un nuevo punto: donde k es el número de iteración actual y ak es un escalar positivo llamado tamaño de paso.
El Tamaño de Paso • El tamaño de paso, ak, es calculado de la siguiente manera: • Queremos minimizar la función f(xk+1) = f(xk +akdk) donde la única variable es ak porque xk y dk son conocidas. • Establecemos y resolvemos para ak usando un método de solución de una sola variable como los mostrados previamente.
Método de Descenso más Inclinado • Este método es muy simple – usa el gradiente (para maximización) o el gradiente negativo (para minimización) como la dirección de búsqueda: for Entonces,
Método de Descenso Más Inclinado • Puesto que el gradiente es la velocidad de cambio de la función en ese punto, usar el gradiente (o gradiente negativo) como la dirección de búsqueda ayuda a reducir el número de iteraciones requeridas x2 f(x) = 5 -f(xk) f(x) = 20 f(xk) xk f(x) = 25 x1
Pasos del Método de Descenso Más Inclinado Los pasos del Método de Descenso más Inclinado son: • Elige un punto inicial x0 • Calcula el gradiente f(xk) donde k es el número de iteración • Calcula el vector de búsqueda: • Calcula la siguiente x:Usa un método de optimización de una variable para determinar ak.
Pasos del Método de Descenso Más Inclinado • Para determinar la convergencia, usa alguna tolerancia dada e1 y evalúa:para convergencia O, usa otra tolerancia e2 y evalúa:para convergencia
Convergencia • Estos dos criterios pueden ser usados para cualquiera de los métodos de optimización multivariable discutidos aquí Recordatorio: La normal de un vector, ||x|| está dada por:
Ejemplo del Método de Descenso Más Inclinado Resolvamos el problema anterior con el Método del Descenso Más Inclinado: Minimizar f(x1, x2, x3) = (x1)2 + x1(1 – x2) + (x2)2 – x2x3 + (x3)2 + x3 Seleccionemos
Ejemplo del Método de Descenso Más Inclinado Ahora, necesitamos determinar a0
Ejemplo del Método de Descenso Más Inclinado A continuación, iguala a cero y resuelve:
Ejemplo del Método de Descenso Más Inclinado Toma el gradiente negativo para encontrar la siguiente dirección de búsqueda:
Ejemplo del Método de Descenso Más Inclinado Actualiza la fórmula de iteración:
Ejemplo del Método de Descenso Más Inclinado Insertala en la función original y toma la derivada para encontrar a1:
Ejemplo del Método de Descenso Más Inclinado Ahora podemos igualar la derivada a cero y resolver para a1:
Ejemplo del Método de Descenso Más Inclinado Ahora, calcula x2:
Ejemplo del Método de Descenso Más Inclinado Encuentra a2: Iguala la derivada a cero y resuelve:
Ejemplo del Método de Descenso Más Inclinado Calcula x3:
Ejemplo del Método de Descenso Más Inclinado Encuentra la siguiente dirección de búsqueda:
Ejemplo del Método de Descenso Más Inclinado Encuentra a3:
Ejemplo del Método de Descenso Más Inclinado Entonces, x4 se convierte en:
Ejemplo del Método de Descenso Más Inclinado La siguiente dirección de búsqueda:
Ejemplo del Método de Descenso Más Inclinado Encuentra a4:
Ejemplo del Método de Descenso Más Inclinado Actualiza para x5: