Pontificia Universidad Católica Escuela de Ingeniería Departamento de Ingeniería Industrial y de Sistemas Clase 18 Programación Lineal ICS 1102 Optimización Profesor : Claudio Seebach 4 de octubre de 2005 Apuntes de Clases Optimización Claudio Seebach Programación Lineal 17 Introducción a Programación Lineal Todo problema de Programación Lineal puede expresarse mediante el siguiente formato estándar: min Z = c 1 x 1 + c 2 x 2 +... + c n x n s.a a 11 x 1 +... + a 1n x n b 1. a m1 x 1 +... + a mn x n b m En notación matricial: min c x s.a A x b Apuntes de Clases Optimización Claudio Seebach Programación Lineal 18
Terminología de Programación Lineal Solución óptima Múltiples óptimos, o solución no óptima Valor óptimo o más favorable de Z Problema no acotado Problema infactible Apuntes de Clases Optimización Claudio Seebach Programación Lineal 19 Casos Especiales en LP 1. Problema infactible 2. Región no acotada, pero objetivo acotado 3. Región no acotada y objetivo no acotado 4. Múltiples soluciones Apuntes de Clases Optimización Claudio Seebach Programación Lineal 20
Caso Especial 1 Apuntes de Clases Optimización Claudio Seebach Programación Lineal 21 Caso Especial 2 Apuntes de Clases Optimización Claudio Seebach Programación Lineal 22
Caso Especial 3 Apuntes de Clases Optimización Claudio Seebach Programación Lineal 23 Caso Especial 4 Apuntes de Clases Optimización Claudio Seebach Programación Lineal 24
Resolviendo un Problema de LP Método de solución basado en vértices Ejemplo: max Z = 3x 1 + 2x 2 Paso 1: Encontrar todos los vértices factibles del problema Paso 2: Encontrar el valor objetivo para cada vértice Ejemplo: CP3: (x 1 = 3, x 2 = 4) y Z(CP3) = 3 3 + 2 4 = 17 Paso 3: Determinar el vértice con mayor Z Apuntes de Clases Optimización Claudio Seebach Programación Lineal 25 Resolviendo un Problema de LP Ejemplo: Objetivo: max Z = 3x 1 + 5x 2 + x 3 Restricciones: No-negatividad: x 1 0, x 2 0 x 1 4 2x 2 + 4x 3 12 3x 1 + 2x 2 + x 3 18 x 3 2 Apuntes de Clases Optimización Claudio Seebach Programación Lineal 26
Resolviendo un Problema de LP Usemos el Solver de Excel: Apuntes de Clases Optimización Claudio Seebach Programación Lineal 27 Resolviendo un Problema de LP Solución óptima: x 1 = 4, x 2 = 2, x 3 = 2 y Z = 24 Un problema con 20 variables de decisión y 40 restricciones tiene ( 40 20), o sea más de 30 millones de posibles vértices factibles!!! Apuntes de Clases Optimización Claudio Seebach Programación Lineal 28
KKT y Programación Lineal Los problemas de Programación Lineal son abordables via KKT Problema convexo cualquier solución que cumpla con las condiciones de KKT será un óptimo global al problema No necesariamente la solución óptima será única, pues las funciones objetivo lineales no son estrictamente convexas Consideremos el problema P ) min cx s.a. Ax b Las condiciones de KKT de L(x, µ) = cx + µ(ax b) son: L x = c + µa = 0 L µ = Ax b 0 µ L = µ(ax b) = 0 µ µ 0 Apuntes de Clases Optimización Claudio Seebach Programación Lineal 29 KKT y Programación Lineal Incorporando restricciones de signo en todas las variables x i 0, las condiciones KKT son: L x = c + µa 0 x L = x(c + µa) = 0 x L µ = Ax b 0 µ L = µ(ax b) = 0 µ µ 0 x 0 Apuntes de Clases Optimización Claudio Seebach Programación Lineal 30
Ejemplo KKT y Programación Lineal Ejemplo 1 Una fábrica produce dos tipos de planchas de aluminio pintado y requiere determinar la cantidad a producir de cada tipo. Producir una plancha del tipo 1 requiere 7 m 2 de aluminio bruto, 0, 3 lts de pintura y 15 min de trabajo. El costo por plancha (en aluminio y pintura) para el fabricante es de $400 y el precio unitario de venta es de $1200. Producir una plancha del tipo 2 requiere 14 m 2 de aluminio bruto, 0, 3 lts de pintura y 5 min de trabajo. El costo por plancha es $900 y el precio unitario de venta es de $1500. El fabricante maneja un stock diario máximo de 630 m 2 de aluminio bruto y 15 lts de pintura. Trabajará solo y dispone de 10 hrs cada día. El fabricante no dispone de un trabajo alternativo para las horas no utilizadas en fabricar planchas de aluminio Cuánto es lo óptimo a producir de modo de maximizar la utilidad? Apuntes de Clases Optimización Claudio Seebach Programación Lineal 31 Ejemplo KKT y Programación Lineal Definamos dos variables x 1 y x 2 que representan el número de planchas pintadas diarias a producir de cada tipo: P ) max 800x 1 + 600x 2 s.a. 15x 1 + 5x 2 600 (minutos disponibles) 7x 1 + 14x 2 630 (m 2 de aluminio) 0, 3x 1 + 0, 3x 2 15 (lts de pintura) x 1, x 2 0 El objetivo es identificar la combinación de x 1 y x 2 que, satisfaciendo las restricciones del modelo, maximiza las utilidades para la empresa. El problema tiene solución óptima ya que en un problema de programación lineal basta determinar una solución factible: Producir 20 planchas tipo 1 y 20 del tipo 2. Esto consume sólo 6 hrs 40 min, 420 m 2 de aluminio y 12 lts de pintura de las disponibles, lo que alcanza. Su utilidad sería de $28.000 diarios, pero claramente no sería óptimo (sobran insumos de todo tipo!). Apuntes de Clases Optimización Claudio Seebach Programación Lineal 32
Solución Gráfica Tipo 2 min disponibles m 2 de aluminio lts de pintura x 2 * (35,15) x* 1 Tipo 1 La solución óptima corresponde a la combinación de x 1 y x 2 en que la primera y tercera restricción están activas, es decir, se utiliza toda la pintura y las horas disponibles. Esta solución corresponde a x 1 = 35 y x 2 = 15, con una utilidad de $37.000. Apuntes de Clases Optimización Claudio Seebach Programación Lineal 33 Ejemplo KKT y Programación Lineal Escribamos este problema como un problema de KKT: L = 800x 1 600x 2 + µ 1 (15x 1 + 5x 2 600) +µ 2 (7x 1 + 14x 2 630) + µ 3 (0, 3x 1 + 0, 3x 2 15) Por lo tanto, un punto mínimo del problema equivalente (o máximo del original) debe cumplir con: 800 + 15µ 1 + 7µ 2 + 0, 3µ 3 0 600 + 5µ 1 + 14µ 2 + 0, 3µ 3 0 x 1 ( 800 + 15µ 1 + 7µ 2 + 0, 3µ 3 ) = 0 x 2 ( 600 + 5µ 1 + 14µ 2 + 0, 3µ 3 ) = 0 µ 1 (15x 1 + 5x 2 600) = 0 µ 2 (7x 1 + 14x 2 630) = 0 µ 3 (0, 3x 1 + 0, 3x 2 15) = 0 15x 1 + 5x 2 600 0 7x 1 + 14x 2 630 0 0, 3x 1 + 0, 3x 2 15 0 x 1 0 x 2 0 µ 1 0 µ 2 0 µ 3 0 Apuntes de Clases Optimización Claudio Seebach Programación Lineal 34
Ejemplo KKT y Programación Lineal Identifiquemos los multiplicadores µ 1, µ 2 y µ 3 asociados al punto x 1 = 35 y x 2 = 15 y verifiquemo que esta solución satisface las condiciones de KKT. Las condiciones de complementariedad de las holguras en este punto exigen: 800 + 15µ 1 + 7µ 2 + 0, 3µ 3 = 0 600 + 5µ 1 + 14µ 2 + 0, 3µ 3 = 0 µ 2 = 0 Así se obtiene: µ 1 = 20 µ 3 = 1666, 6 El punto x 1 = 35, x 2 = 15, µ 1 = 20, µ 2 = 0, µ 3 = 1666, 6 satisface todas las condiciones de KKT y por lo tanto corresponde a un óptimo global del problema. Apuntes de Clases Optimización Claudio Seebach Programación Lineal 35 KKT y Programación Lineal Observación 1: Los multiplicadores obtenidos no dependen de los insumos disponibles. Cambios menores en el vector de insumos b modifican la combinación óptima de planchas (x 1, x 2), pero no modifican los multiplicadores óptimos. Observación 2: Como se trata de un problema de programación lineal, el impacto en el valor óptimo de aumentar en una unidad el insumo disponible de una restricción activa será el mismo independiente de el valor del lado derecho (en la medida que el conjunto restante de restricciones activas en el punto óptimo no cambie). Observación 3: Si la restricción está inactiva, el multiplicador permanecerá nulo ante cambios en el total de insumos disponibles que la mantengan inactiva. Observación 4: Como se trata de un problema de programación lineal, la estimación de primer orden del impacto en el valor óptimo es exacta para perturbaciones menores. Apuntes de Clases Optimización Claudio Seebach Programación Lineal 36