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: s.a min Z = c1x1 + c2x2 + ... + cnxn a11x1 + ... + a1nxn ≤ b1 .. am1x1 + ... + amnxn ≤ bm • 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 = 3x1 + 2x2 • Paso 1: Encontrar todos los vértices factibles del problema • Paso 2: Encontrar el valor objetivo para cada vértice Ejemplo: CP3: (x1 = 3, x2 = 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 = 3x1 + 5x2 + x3 • Restricciones: x1 2x2 + 4x3 3x1 + 2x2 + x3 x3 ≤ ≤ ≤ ≥ 4 12 18 2 • No-negatividad: x1 ≥ 0, x2 ≥ 0 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: x1 = 4, x2 = 2, x3 = 2 y Z ∗ = 24 • Un problema con 20 variables de decisión y 40 restricciones tiene o sea más de 30 millones de posibles vértices factibles !!! Apuntes de Clases • Optimización • Claudio Seebach Programación Lineal • 28 !40" 20 , 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 ∂L ∂µ ∂L µ ∂µ µ = c + µA = 0 = Ax − b ≤ 0 = µ(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 xi ≥ 0, las condiciones KKT son: ∂L ∂x ∂L x ∂x ∂L ∂µ ∂L µ ∂µ µ x Apuntes de Clases • Optimización • Claudio Seebach = c + µA ≥ 0 = x(c + µA) = 0 = Ax − b ≤ 0 = µ(Ax − b) = 0 ≥ 0 ≥ 0 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 m2 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 m2 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 m2 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 x1 y x2 que representan el número de planchas pintadas diarias a producir de cada tipo: P ) max 800x1 + 600x2 s.a. 15x1 + 5x2 ≤ 600 (minutos disponibles) 7x1 + 14x2 ≤ 630 (m2 de aluminio) 0, 3x1 + 0, 3x2 ≤ 15 (lts de pintura) x 1 , x2 ≥ 0 • El objetivo es identificar la combinación de x1 y x2 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 m2 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 Tipo 2 Solución Gráfica min disponibles m2 de aluminio lts de pintura x*2 (35,15) x*1 Tipo 1 • La solución óptima corresponde a la combinación de x1 y x2 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 = −800x1 − 600x2 + µ1(15x1 + 5x2 − 600) +µ2(7x1 + 14x2 − 630) + µ3(0, 3x1 + 0, 3x2 − 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 x1(−800 + 15µ1 + 7µ2 + 0, 3µ3) µ1(15x1 + 5x2 − 600) µ3(0, 3x1 + 0, 3x2 − 15) 15x1 + 5x2 − 600 0, 3x1 + 0, 3x2 − 15 x1 x2 µ1 µ3 Apuntes de Clases • Optimización • Claudio Seebach ≥ = = = ≤ ≤ ≥ ≥ ≥ ≥ 0 −600 + 5µ1 + 14µ2 + 0, 3µ3 0 x2(−600 + 5µ1 + 14µ2 + 0, 3µ3) 0 µ2(7x1 + 14x2 − 630) 0 0 7x1 + 14x2 − 630 0 0 0 0 µ2 0 Programación Lineal • 34 ≥ 0 = 0 = 0 ≤ 0 ≥ 0 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