PROGRAMACIÓN DINÁMICA: La gracia de la programación dinámica es transformar problemas complejos en problemas más simples, teniendo estructuras especiales que nos permiten separar las variables. variab les. Problema 9: P. Dinámico Entero (Introductorio)
Una familia está interesada en planificar sus vacaciones a fin de año y tiene la posibilidad de visitar 3 ciudades. El presupuesto alcanza alcanza para salir de vacaciones durante 5 días. En una comida famil iar el Padre preguntó preguntó a cada uno de de los integrantes integrantes de la familia fami lia y calibró la siguiente función de utilidad del viaje: 2
Donde
x
i
x
1
+
x
2
+
3
x
3
es el número de días en la ciudad “i”. Plantee y resuelva en forma
dinámica el problema que maximiza la utili dad de la familia. Respuesta: El problema de optimización es: Max :
2 x1 +
x2 + 3
x3
s.a. x1 + x2 + x3 ≤ 5 xi ∈ Enteros ≥ 0 ∀i = 1,2,3
¡Procedamos a resolver el problema por programación dinámica!. PASO 1: Vamos de atrás para adelante Supongamos que la familia está decidiendo por la última cuidad, dadas las elecciones en la primera y segunda cuidad, que ya se hicieron y son óptimas. Supongamos que nos quedan y3 días disponibles (recursos (recursos disponibles).
¿Cuál es la mejor decisión en la tercera cuidad? Si este fuera el caso, el problema quedaría: ETAPA 3:
Max : 3 x s.a. f ( y ) = 0 ≤ x ≤ y x ∈ Entero
3
3
3
3
3
3
La solución óptima de este problema es fácil, hay que asignar todo lo que nos sobra en visitar la tercera cuidad.
Hagamos una tabla: x *
f3 ( y3 )
y3
3
0 0 0 1 3 1 2 4.24 2 3 5.20 3 4 6 4 5 6.71 5 Nota: El óptimo es en función de los recursos que tenemos disponibl es ETAPA 2: Ahora suponemos que sólo se ha elegido los días en la primera cuidad y es óptimo. Los días óptimos a elegir en la segunda ciudad dado que tenemos y2 días para visitar la segunda y la tercera se determinan con el siguiente problema:
Max : x + f ( y − x ) s.a. f ( y ) 0 ≤ x ≤ y x ∈ Entero Nota: Lo que nos sobraría para visitar la tercera cuidad sería ( y − x ) . 2
2
3
2
2
2
2
2
2
2
2
Hagamos una tabla: x
2
2
0 1 2 3 4 5
=
0
0 3 4.24 5.20 6.00 6.71
x
2
=
1
1 4 5.24 6.20 7
x
=
2
2
x
2
1.41 4.41 5.65 6.61
=
3
x
2
1.73 4.73 5.97
=
2 5
4
x
2
=
5
2.23
f2 ( y2 ) 0 3 4.24 5.24 6.20 7
x
2
*
0 0 0 1 1 1
ETAPA 1: Ahora no hemos elegido anteriormente nada. Tenemos por enunciado 5 días de recurso ( y1 5 ) , esto se llama condición de borde. El problema para elegir la cantidad de =
días óptimos a visitar la cuidad 1 es:
Max : 3 x + f (5 − x ) s.a. v* = f (5) 0 ≤ x ≤ 5 x ∈ Entero 1
1
1
1
2
1
Nota: f 1 (5) corresponde justamente al valor de la función objetivo de nuestro problema. Hagamos una tabla: y1
5
x1
=
0
7
x
1
=
1
8.20
x
=
1
2
8.06
x
1
=
3
x
1
7.70
=
4
7
x
1
=
f1 ( y1 )
5
4.47
8.20
x * 1
1
Luego tenemos que el valor óptimo es 8.20. ¿Cómo obtenemos la solución objetivo? PASO 2: Vamos de adelante para atrás Sabemos que x1* 1 (de la 3ra tabla). =
Esto
impl ica que dejamos
Esto
impl ica que
y3
=
3,
y2
=
luego
4. x
3
Con este recurso
*
=
3 (tabla
IMPORTANTE: Notemos que las variables Puede haber sido en cualquier orden.
x
1
,
x
2
*
=
1 (De
la 2da tabla).
1). x
2
,
x
3
fueron escogidas de forma arbitraria.
Problema 2: Dinámico Continuo Resolver el siguiente problema a través de programación dinámica: 2
2
Max : x1 x2 x3 s.a. x1 + x2 + x3 ≤ 10
0
xi ≥
∀i=1,2,3
Respuesta: Nota: Esta vez tenemos un problema continuo pero la base es l a misma.
ETAPA 3 Si tenemos
3
recursos para la tercera variable, ya habiendo elegido
x * 1
y
x
2
*
, el
problema es:
Max : x3 f3 ( y3 ) 0 ≤ x3 ≤ y3 Se tiene que el óptimo es: x3 *( y3 ) f3 ( y3 ) ETAPA 2 Si tenemos
2
recursos, ya habiendo elegido
y3
=
x * 1
Max : x f ( y − x ) f ( y ) 0 ≤ x ≤ y
y3
=
, el problema es:
2
2
2
3
2
2
2
Max : x ( y − x ) f ( y ) 0 ≤ x ≤ y 2
2
2
2
2
2
2
2
2
2
Se tiene que el óptimo es: x2 *( y2 ) f2 ( y2 ) ETAPA 1 Ahora si tenemos y1
=
2 =
=
3 4
27
y2 y2 3
10 recursos el problema es:
Max : x f (10 − x ) v* = f (10) 0 ≤ x ≤ 10 2
1
1
4 (10 − x ) Max : x v* = f (10) 27 0 ≤ x ≤ 10 2
2
1
1
1
1
1
Se tiene que el óptimo es: x1* v*
=
=
4 f 1 (10)
=
512
Luego la solución óptima se obtiene en cadena: Si x1*
=
4 queda
y2
=
6
x
2
*
=
4 queda y3
=
2
x
3
*
=
2
1
3
Problema 3: Producción e Inventario Una planta produce un solo producto y enfrenta las siguientes demandas en los períodos 1,..4: Periodo 1 2 3 1 3 2 Demanda: d n
Las demandas pueden ser satisfechas con lo producido el periodo anterior. Sean: • • • •
K: Costo fijo de producción = 5 C: Costo unitario variable de producción = 2 Q: Capacidad mensual máxima de producción = 3 h: Costo unitario de manutención de inventario = 1
Se debe decidir cuánto producir en cada periodo para satisfacer la demanda a mínimo costo. Respuesta:
Las variables de decisión son: : Tamaño del lote de producción del período n
Y
n
X
: Inventario al final del período n
Z
: 1 si
n
n
Y
n
> 0, 0 en caso contrario
El problema de optimización es: 3
Min :
∑ 5Z
n
+
2Yn
k 1 =
s.a.
n
Min : ∑ KZ n
+ CYn +
hX n
X 1 = Y 1 − 1
k 1 =
X 2 = X 1 + Y 2 − 3
s.a. X n Yn
=
Xn
1
−
+ Yn − d n ∀n
X 3 = X 2 + Y 3 − 2
≤ QZ n ∀n
Z n ∈ {0,1}
Y3 ≤
3Z 3
Y2 ≤
3Z 2
Y1 ≤
3Z 1
Z n ∈
Para el modelo de programación dinámica def inimos:
{0,1}
+ X n
f
n
( S ) := Costo mínimo asociado a los períodos n, n+1, …, N si el inventario al principio n
del período “n” es
S
=
n
X −1 . n
Por lo tanto, el modelo en cada etapa queda:
Min : α (Y ) + f s.a. f (S ) = S + Y − d ≥ 0 Y ≤ 3 n
n
n +1
( S + Y − d ) n
n
n
n
n
n
n
n
Con: α
h( S − d ) K + CY + h (S + Y − d )
(Y ) = n
n
n
n
n
n
n
si
Y
si
Y
n
n
= 0 >0
Luego el valor óptimo será f1 (0) V (inicial mente no hay inventario).
fk ( S k ) = 0 ∀k > 3 (son sólo 3 periodos)
=
ETAPA 3:
0 1 2 3
0 1
7 8 9
9 10 11 12
12 13 14 15
9 7 0 1
* (óptimo) 2 1 0 0
Es decir, en cada caso lo óptimo es producir lo menos posible, como es lógico. ETAPA 2:
0 1 2 3
0+9
7+9 8+7
9+9 10+7 11+0
11+9 12+7 13+0 14+1
20 18 13 9
* (óptimo) 3 2 3 0
26
* (óptimo) 3
ETAPA 1:
0
7+20
10+18
13+13
Por lo tanto, resolviendo de vuelta hacia adelante, lo óptimo es producir 3 unidades en el primer periodo, 3 en el segundo y ninguna en el tercero. El costo total entonces será 26.
Problema 4:
Se ha encargado un estudio a la Escuela. El problema es tan complejo que ésta ha formado 3 equipos diferentes para resolverlo; sin embargo, las probabilidades de fallar aún son altas. Para asegurarse, la Escuela ha decidido contratar hasta 2 investigadores adicionales, que deben repartirse entre los equipos de alguna forma. Se sabe que las probabilidades de fallar de cada equipo por separado, en función de la cantidad de investigadores extra asignados a cada uno, es Investigadores extra 0 1 2
Equipo 2 0,6 0,4 0,2
1 0,4 0,2 0,15
3 0,8 0,5 0,3
Usando programación dinámica, encuentre la asignación óptima de investigadores a equipos. Respuesta:
Sean: X i =
i
Número de investigadores asignados al equipo “i”
( X ) = probabilidad de fallar del equipo “i” al agregarle X investigadores. i
i
La probabilidad total de fallar es que los 3 equipos fallen simultáneamente, por lo que el problema de optimización es:
(
)
( X ) P ( X )
Min : P1 X 1 P2
2
3
3
s.a. X 1 + X 2 + X 3 = X 1 , X 2 , X 3 ≥
2
0
Usando programación dinámica, necesitamos definir: f ( Y ) = Mínima probabilidad de falla asociada a los equipos n, n + 1, . . . ,N si quedan n
n
investigadores por asignar. El problema dinám ico queda definido por: Min : P ( X ) * f 1 (Y − X ) n
n
n+
s.a. f (Y ) X ≤ Y X ∈ Entero ≥ 0 n
n
n
n
n
n
El valor óptimo entonces es f 1 (2) y fk ( Yk ) = 1 ∀k > 3
n
Y
n
ETAPA 3: x *
y3
3
0 1 2
0,8 0,5 0,3
0 1 2
ETAPA 2: y2
0 1 2
x
2
=
0
x
2
=
1
x
2
=
2
0,6×0,8 0,6×0,5 0,4×0,8 0,6×0,3 0,4×0,5 0,2×0,8
x
2
0,48 0,3 0,16
*
0 0 2
ETAPA 3: y1
2
x
1
=
0
x
1
=
1
x
1
=
2
0,4×0,16 0,2×0,3 0,15×0,48 0,06
x * 1
1
Por lo que resolviendo de vuelta, conviene asignar uno de los investigadores al equipo 1 y el otro al equipo 3. Al hacerlo así, se obtiene una probabilidad total de fallar de 0,06.