Está en la página 1de 8

Pontificia Universidad Catlica

Escuela de Ingeniera
Departamento de Ingeniera Industrial y de Sistemas

Clase 30 Programaci
on Din
amica
ICS 1102 Optimizacion
Profesor : Claudio Seebach
20 de noviembre de 2006

Apuntes de Clases Optimizacion Claudio Seebach

Programaci
on Din
amica 2

Programaci
on Din
amica
Transforma un problema de optimizacion complejo en una secuencia de
problemas mas simples
Generalmente se comienza con el final y se trabaja hacia atras
Es aplicable a un rango muy amplio de problemas

Esta basado en la recursion y en el principio de optimalidad


Fue desarrollado por Richard Bellman en 1953

Apuntes de Clases Optimizaci


on Claudio Seebach

Programacion Din
amica 3

El juego de los f
osforos
Supongamos que hay 30 fosforos en una mesa.

Yo comienzo eligiendo 1, 2 o 3 fosforos. Luego mi contrincante debe


elegir 1, 2 o 3 fosforos. Se sigue de esta forma hasta que alguien saca el
ultimo fosforo. El jugador que toma el ultimo fosforo pierde el juego.
como puedo yo (el primer jugador) asegurarme de ganar el juego ? se
podra ?

Apuntes de Clases Optimizaci


on Claudio Seebach

Programacion Din
amica 4

El juego de los f
osforos
Yo gano si le dejo un fosforo en la mesa a mi contrincante

Retrocediendo un paso, yo gano si me toca jugar y quedan 2, 3 o 4


fosforos en la mesa
Retrocediendo otro paso, yo gano si dejo 5 fosforos a mi contrincante

Retrocediendo otro paso, yo gano si me toca jugar y quedan 6, 7 u 8,


para dejarle 5 a mi contrincante.
Retrocediendo otro paso, yo gano si dejo 9 fosforos a mi contrincante

Conclusion: Yo gano si dejo 1, 5, 9, . . . , 4n + 1 fosforos en la mesa al


jugar.
Si hay 30 fosforos, y juego yo, basta sacar uno y dejarle 29 (4 7 + 1)
fosforos para ganar

Apuntes de Clases Optimizaci


on Claudio Seebach

Programacion Din
amica 5

El problema de la diligencia

Apuntes de Clases Optimizaci


on Claudio Seebach

Programacion Din
amica 6

El problema de la diligencia

Observacion: Escoger siempre el arco mas barato no es necesariamente


lo mejor:
ABF IJ
ADF ?
como modelar el problema con las metodologas ya vistas ?
Apuntes de Clases Optimizacion Claudio Seebach

Programaci
on Din
amica 7

El problema de la diligencia
Si estamos en H la decision es obvia (y unica)
Si estamos en F :

cF,H + cH,J o cF,I + cI,J


o bien:
cF,H + costo optimo de H a J o cF,I + costo optimo de I a J

Apuntes de Clases Optimizaci


on Claudio Seebach

Programacion Din
amica 8

El problema de la diligencia
En el problema hay 4 decisiones que tomar para las etapas: 1, 2, 3 ,4

En cada etapa estaremos en un estado posible y deberemos tomar una


decision
Sea:
vn(s) = el costo mnimo para las etapas n, n + 1, . . . , N
si en la etapa n estamos en el estado s
Supongamos que d representa el siguiente destino escogido.
Sea c(s, d) el costo asociado al arco s d.
Entonces:

vn(s) =

min {c(s, d) + vn+1(d)}

d factibles

Esta es la recursion basica de programacion dinamica.

Se resuelve de atras hacia adelante. Condicion de borde: v5(J) = 0.


Apuntes de Clases Optimizaci
on Claudio Seebach

Programacion Din
amica 9

Ejemplo asignaci
on de recursos a proyectos
Hay 3 proyectos en los cuales invertir.

Si invierto xi pesos (en millones) en el proyecto i, recibo un Valor Presente Neto (VPN) de ri(xi):
r1(x1)
r2(x2)
r3(x3)
r1(0)

=
=
=
=

7x1 + 2
x1 > 0
3x2 + 7
x2 > 0
4x3 + 5
x3 > 0
r2(0) = r3(0) = 0

El monto invertido en cada proyecto debe ser un multiplo entero de 1


millon.
Se tiene en la actualidad un presupuesto de $ 6 millones (6 unidades de
un millon), cuanto y como debo invertir para maximizar el retorno ?

Apuntes de Clases Optimizacion Claudio Seebach

Programacion Din
amica 10

Asignaci
on de recursos a proyectos
Matematicamente el retorno, con N proyectos, esta dado por:
max
s. a

N
!

ri(xi)

i=1
N
!

xi = X

i=1

xi = 0, 1, 2, . . . , X
En el ejemplo
max{r1(x1) + r2(x2) + r3(x3)}
s. a x1 + x2 + x3 = 6
xi N i = 1, 2, 3

Apuntes de Clases Optimizacion Claudio Seebach

Programacion Din
amica 11

Asignaci
on de recursos a proyectos
Podemos usar programacion dinamica

Si solo queda una etapa, el problema sera facil de resolver. Luego,


retrocediendo, cuando queden dos etapas, tres etapas, etc.
Podemos definir la etapa n como el momento cuando tengo que asignar
recursos a las etapas n, n + 1, . . . , 3.
Sea:
vn(x) = maximo retorno que puedo obtener de los proyectos
n, n + 1, . . . , N si dispongo de x unidades de capital para ellos.
vn(x) = max {rn(xn) + vn+1(x xn)}
xn =0,1,...,X

xn(x) = arg

max {rn(xn) + vn+1(x xn)}

xn =0,1,...,X

vN (x) = rN (x)

Condicion de borde (i.e. un dato)

El valor optimo del problema es v1(X). En nuestro ejemplo v1(6).

Apuntes de Clases Optimizacion Claudio Seebach

Programacion Din
amica 12

Asignaci
on de recursos a proyectos
Como son multiplos enteros de 1 millon y no podemos tener mas de 6
para invertir, los estados posibles son 0, 1, 2, 3, 4, 5 y 6.
Determinemos v3(x) y x3(x):
v3(0) = 0
v3(1) = 9
v3(2) = 13
v3(3) = 17
v3(4) = 21
v3(5) = 25
v3(6) = 29

x3(0) = 0
x3(1) = 1
x3(2) = 2
x3(3) = 3
x3(4) = 4
x3(5) = 5
x3(6) = 6

Esto es, siempre conviene invertir todo el capital si hay un solo proyecto

Apuntes de Clases Optimizacion Claudio Seebach

Programacion Din
amica 13

Asignaci
on de recursos a proyectos
Determinemos v2(x) y x2(x):
x x2 r2(x2) v3(x x2) r2 + v3
0 0
0
0
0
1 0
0
9
9
1 1 10
0
10
2 0
0
13
13
2 1 10
9
19
2 2 13
0
13
3 0
0
17
17
3 1 10
13
23
3 2 13
9
22
3 3 16
0
16
4 0
0
21
21
4 1 10
17
27
4 2 13
13
26
4 3 16
9
25

x
4
5
5
5
5
5
5
6
6
6
6
6
6
6

x2 r2(x2) v3(x x2) r2 + v3


4 19
0
19
0
0
25
25
1 10
21
31
2 13
17
30
3 16
13
29
4 19
9
28
5 22
0
22
0
0
29
29
1 10
25
35
2 13
21
34
3 16
17
33
4 19
13
32
5 22
9
31
6 25
0
25

Apuntes de Clases Optimizacion Claudio Seebach

Programacion Din
amica 14

Asignaci
on de recursos a proyectos
De la tabla anterior obtenemos los v2(x) y x2(x) optimos:
v2(0) = 0
v2(1) = 10
v2(2) = 19
v2(3) = 23
v2(4) = 27
v2(5) = 31
v2(6) = 35

x2(0) = 0
x2(1) = 1
x2(2) = 1
x2(3) = 1
x2(4) = 1
x2(5) = 1
x2(6) = 1

Si hay capital, siempre conviene invertir un millon en el proyecto 2 y el


resto siempre en el 3.

Apuntes de Clases Optimizacion Claudio Seebach

Programacion Din
amica 15

Asignaci
on de recursos a proyectos
Finalmente buscamos v1(6) y x1(6) optimo:
x
6
6
6
6
6
6
6

x1 r1(x1) v2(6 x1) r1 + v2


0
0
35
35
1
9
31
40
2 16
27
43
3 23
23
46
4 30
19
49
5 37
10
47
6 44
0
44

El retorno optimo es v1(6) = 49 y la inversion optima de los $ 6 mill.


es $ 4 en el primero, $ 1 en el segundo y $ 1 en el tercer proyecto.
v1(6) = 30 + 10 + 9 = 49 x1(6) = 4
v2(2) = 10 + 9 = 19 x2(2) = 1
v3(1) = 9 x3(1) = 1

Apuntes de Clases Optimizaci


on Claudio Seebach

Programacion Din
amica 16

También podría gustarte