Unidad 2: Optimización con restricciones Norberto Alejandro Hernández Leandro Técnico Académico, CIMAT-Monterrey Optimización con restricciones Multiplicadores de Lagrange Condiciones de Karush-Kuhn-Tucker Programación lineal Programación cuadrática Optimización restringida Objetivos de la unidad: Al finalizar esta unidad el alumnor conocerá los fundamentos de la optimización con restricciones, ası́ como de programación lineal y cuadrática. Además, se abordarán algunas herramientas de Python que nos ayudarán a resolver los problemas relacionados. Optimización restringida Modelo Componentes: Variables de decisión Función objetivo Restricciones Parámetros Función Opt f (x) objetivo s.a. g (x) ≤ b h(x) = d Restricciones x ≥ 0 Donde x ∈ Rn representa las variables de decisión, y b ∈ Rm1 y d ∈ Rm2 . Optimización restringida Multiplicadores de Lagrange Opt f (X ) s.a. gi (X ) = 0 X ∈ Rn i = 1, . . . , m Si f y gi son funciones cuyas primeras derivadas parciales son continuas, para todos los valores de i. Además, si f tiene un extremo relativo en X0 sujeto a las condiciones gi = 0, y ∇gi ̸= 0, entonces existen constantes λi tales que ∇f (X0 ) + m X i=1 λi ∇gi (X0 ) = 0 Optimización restringida Algoritmo 1 Calcular la ecuación vectorial: ∇f (X ) + m X λi ∇gi (X ) = 0 i=1 2 Resolver el sistema de ecuaciones resultante de la ecuación anterior, considerando que gi (X ) = 0, para obtener los puntos crı́ticos. 3 Se evalúan los puntos crı́ticos en la función f para determinar los puntos extremos de la función. Optimización restringida Ejemplo Utilizar el método de multiplicadores de Lagrange a fin de determinar los puntos extremos de la función f para la cual f (x, y ) = 3x + 4y − 3 si el punto (x, y ) está sobre la circunferencia (x − 1)2 + y 2 = 25 Optimización restringida Ejemplo Solución: ∇f (x, y ) = 3 4 y ∇g (x, y ) = 2(x − 1) 2y Aplicando la condición de los multiplicadores de Lagrange se tiene: 3 2(x − 1) 0 ∇f (x, y ) + λ∇g (x, y ) = +λ = 4 2y 0 donde (x − 1)2 + y 2 = 25. Resolviendo el sistema de ecuaciones resultantes se tiene: Mı́nimo: Máximo: −2 v1 = 4 −4 v2 = 4 f (−2, −4) = −25 f (4, 4) = 25 Optimización Restringida Condiciones de Karush-Kuhn-Tucker Opt f (X ) s.a. gi (X ) = 0 i = 1, . . . , m hj (X ) ≤ 0 j = 1, . . . , p n X ∈ R Si f , gi y hj son funciones cuyas primeras derivadas parciales son continuas, para todos los valores de i y j. Además, suponga que el problema es de minimización, si f tiene un valor óptimo en X0 sujeto a las condiciones gi = 0, y hj ≤ 0, entonces existen constantes λi ∈ R y µj ≥ 0 tales que ∇f (X0 ) + m X i=1 λi ∇gi (X0 ) + p X j=1 µj ∇hj (X0 ) = 0 y µj hj (X0 ) = 0 Optimización restringida Condiciones KKT Si el problema es de maximización, la condición cambia a: −∇f (X0 ) + m X i=1 λi ∇gi (X0 ) + p X j=1 con µj hj (X0 ) = 0 µj ∇hj (X0 ) = 0 Optimización restringida Condiciones KKT 1 Calcular la ecuación vectorial (para el problema de minimización): ∇f (X ) + m X i=1 λi ∇gi (X ) + p X µj ∇hj (X ) = 0 j=1 2 Resolver el sistema de ecuaciones resultante de la ecuación vectorial anterior, considerando que gi (X ) = 0, hj ≤ 0, µj hj = 0 y µj ≥ 0 para obtener los puntos crı́ticos. 3 Se evalúan los puntos crı́ticos en la función f para determinar los puntos extremos de la función. Optimización restringida Ejemplo Encuentre los puntos máximos y mı́nimos de la función: f (x, y ) = x 2 + y 2 + y − 1 Sujeto a, x2 + y2 ≤ 1 con (x, y ) ∈ R2 Optimización restringida Ejemplo Solución: ∇f (x, y ) = 2x 2y + 1 y ∇g (x, y ) = 2x 2y Aplicando la condición de los multiplicadores de KKT para minimización se tiene: 2x 2x 0 ∇f (x, y ) + µ∇g (x, y ) = +µ = 2y + 1 2y 0 donde µ ≥ 0, x 2 + y 2 ≤ 25, y µ(x 2 + y 2 − 25) = 0. Resolviendo el sistema de ecuaciones e inecuaciones resultantes se tiene: Mı́nimo: Nota: Para calcular el máximo sólo se 0 debe cambiar el signo del gradiente de v1 = −0.5 f en las condiciones KKT, y resolver el sistema resultante. f (0, −0.5) = −1.25 Programación lineal Es una rama de la programación matemática que busca optimizar un proceso, que puede ser modelado mediante una función objetivo lineal y restricciones lineales. Programación lineal Problema Raddy Mikks produce pinturas para interiores y exteriores. La tabla siguiente proporciona los datos básicos del problema. Materia prima A Materia prima B Utilidad por ton Requerimientos Pintura para Pintura para exteriores interiores 6 4 1 2 5 4 Disponibilidad máxima 24 6 Una encuesta de mercado indica que la demanda diaria de pintura para interiores no puede ser mayor a una tonelada más que la pintura para exteriores, también que la demanda máxima de pintura para interiores de 2 toneladas. Reddy Mikks desea determinar la producción óptima de productos para interiores y exteriores que maximice la utilidad diaria total. Programación lineal Modelo Determinar las variables de decisión: Reddy Mikks desea determinar la producción óptima de productos para interiores y exteriores que maximice la utilidad diaria total. x1 = Toneladas de pintura para interiores a producir x2 = Toneladas de pintura para exteriores a producir Programación lineal Modelo Determinar la función objetivo: Reddy Mikks desea determinar la producción óptima de productos para interiores y exteriores que maximice la utilidad diaria total. Utilidad por ton max z = 4x1 + 5x2 Pintura para exteriores 5 Pintura para interiores 4 Disponibilidad máxima Programación lineal Modelo Determinar las restricciones: Materia prima A Materia prima B 4x1 + 6x2 ≤ 24 2x1 + 1x2 ≤ 6 Requerimientos Pintura para Pintura para exteriores interiores 6 4 1 2 Disponibilidad máxima 24 6 Programación lineal Modelo Determinar las restricciones: Una encuesta de mercado indica que la demanda diaria de pintura para interiores no puede ser mayor a una tonelada más que la pintura para exteriores, también que la demanda máxima de pintura para interiores de 2 toneladas. x1 ≤ 1 + x2 x1 ≤ 2 Además, x1 ≥ 0 y x2 ≥ 0. Programación lineal Modelo max z = 4x1 + 5x2 s.a. 4x1 + 6x2 ≤ 2x1 + x2 ≤ x1 − x2 ≤ x1 ≤ x1 ≥ x2 ≥ 24 6 1 2 0 0 Programación lineal Solución 4x1 + 6x2 ≤ 24 6 x2 4 2 0 0 1 2 3 4 5 6 Programación lineal Solución 4x1 + 6x2 ≤ 24 6 x2 4 2 0 0 1 2 3 4 5 6 Programación lineal Solución 2x1 + x2 ≤ 6 6 x2 4 2 0 0 1 2 3 4 5 6 Programación lineal Solución 2x1 + x2 ≤ 6 6 x2 4 2 0 0 1 2 3 4 5 6 Programación lineal Solución x1 − x2 ≤ 1 6 x2 4 2 0 0 1 2 3 4 5 6 Programación lineal Solución x1 − x2 ≤ 1 6 x2 4 2 0 0 1 2 3 4 5 6 Programación lineal Solución x1 ≤ 2 6 x2 4 2 0 0 1 2 3 4 5 6 Programación lineal Solución x1 ≤ 2 6 x2 4 2 0 0 1 2 3 4 5 6 Programación lineal Solución 6 x2 4 2 Región factible 0 0 1 2 3 x1 4 5 6 Programación lineal Solución Si z = 5, 4x1 + 5x2 = 5 6 x2 4 2 Región factible z=5 0 0 1 2 3 4 5 6 Programación lineal Solución Si z = 10, 4x1 + 5x2 = 10 6 x2 4 z=10 2 Región factible z=5 0 0 1 2 3 4 5 6 Programación lineal Solución Si z = 15, 4x1 + 5x2 = 15 6 x2 4 z=15 z=10 2 Región factible z=5 0 0 1 2 3 4 5 6 Programación lineal Solución Si z = 15, 4x1 + 5x2 = 15 6 x2 4 z=15 z=10 2 Región factible z=5 0 0 1 2 3 4 5 6 Programación lineal Solución óptima Si z = 21, 4x1 + 5x2 = 21 6 z=21 x2 4 x ∗ = (1.5, 3) z=15 z=10 2 Región factible z=5 0 0 1 2 3 4 5 6 Programación lineal Modelo extendido Modelo Original: max z = 4x1 + 5x2 s.a. 4x1 + 6x2 ≤ 24 2x1 + x2 ≤ 6 x1 − x2 ≤ 1 x1 ≤ 2 x1 ≥ 0 x2 ≥ 0 Modelo extendido: max z − 4x1 − 5x2 = 0 s.a. 4x1 + 6x2 + s1 = 2x1 + x2 + s2 = x1 − x2 + s3 = x1 + s4 = x1 ≥ x2 ≥ 24 6 1 2 0 0 Programación lineal Método simplex Propuesto en 1947, por el estadounidense George Bernard Dantzig. Método iterativo que explora todos los puntos extremos de la región factible. Estructura: 1 2 3 4 Se comienza con un puto extremo inicial. Se selecciona la variable que más aporte en la función objetivo. Se asigna el mayor valor a la variable seleccionada en el paso anterior, cumpliendo con las restricciones del problema. Además, se elige la restricción que se activa. Se actualiza el sistema y se repite el paso 2 hasta que ya no haya más variables que beneficien la evaluación. Programación cuadrática Es una rama de la programación matemática que busca optimizar un proceso, que puede ser modelado mediante una función objetivo cuadrática y restricciones lineales. Es decir, la función objetivo se puede expresar de la siguiente manera: 1 z = X t HX + c t X 2 donde X representa el vector de las variables de decisión, y H y C los coeficientes de la parte cuadrática y lineal, respectivamente. Programación cuadrática Condiciones Para poder asegurar la optimalidad global en un problema de programación cuadrática es necesario que se cumplan las siguientes condiciones: Para el problema de minimización, la función objetivo debe ser convexa. Para el problema de maximización, la función objetivo debe ser cóncava. Programación cuadrática Método de Wolfe Para resolver se hace uso del método de Wolfe propuesto en 1956: Se calculan las condiciones de KKT para el problema. Encontrar una solución para el sistema de ecuaciones resultante. Si se cumplen las condiciones antes mencionadas y dado que el sistema de ecuaciones resultante de las condiciones de KKT es lineal (exceptuando las ecuaciones de holgura complementaria), se puede asegurar que dicho sistema tiene solución única. Esta solución puede ser encontrada mediante la primera fase del método simplex de dos fases, considerando el sistema de ecuaciones como restricciones de un problema de programación lineal y cualquier función objetivo. Programación cuadrática Ejemplo Modelo de Markowitz Min W t ΣW s.a. µt W = r 1t W = 1 W ≥ 0 donde W es el vector de las proporciones de dinero que se invertirá en cada uno de los activos; Σ es una estimación a la matriz de covarianzas de los retornos de los activos, y µ el vector de valores esperados de los retornos. Programación cuadrática Ejemplo Modelo de Markowitz Suponga que se quiere invertir en 4 activos diferentes, donde: 0.019 0.003 0.009 0.011 0.04 0.003 0.024 0.011 −0.003 0.08 Σ= 0.009 0.011 0.031 0.007 y µ = 0.10 0.011 −0.003 0.007 0.028 0.18 Obtenga el portaforlio de mı́nimo riesgo con un retorno esperado del 15%.