Programación Lineal

Anuncio
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
Descargar