Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programacion Dinamica PDF
Programacion Dinamica PDF
Programación Dinámica
2
Resumen
Abstract
Some results of the Mathematical theory of Dynamic Programming are
presented and some of the consequences of these results are exposed
through examples that demonstrate the great versatility this technique
owns; There is here also included a demonstration scheme of the
Optimal Principle.
3
Introducción
4
Programación dinámica
Definición 1.2 (Mínimo): sea {a k }k =1, 2,3,..., n una sucesión finita, se dice
que am es el mínimo de {a k }k =1 , 2 ,3 ,..., n si a m ≤ a k para k = 1,2,3,..., n .
∗
Tomado de [Tah95]
5
obtiene a partir de un elemento o varios elementos anteriores de la
sucesión.
Ejemplo 1.1:
Interés Compuesto
Supóngase que se consigna $100 en una cuenta que produce un
rendimiento del 5% mensual. ¿Cuál será el monto 4 meses mas tarde?.
Se define
M i = monto en el i-ésimo mes.
Y entonces se tiene
M 0 = 100
M i = M i −1 * 0.05 + M i −1 = 1.05M i −1 i = 1,2, . . .
Ejemplo 1.2:
La sucesión de Fibonacci se define según la fórmula recursiva:
s0 = 1
s1 = 1
sn = s n −1 + s n −2 para n = 2,3,4,…
S2 = 2
S3 = 3
S4 = 5
S5 = 8 etc.
6
Ejemplos de Programación Dinámica
Los números en los arcos indican el costo de la póliza que cubre el viaje
entre las dos ciudades, por ejemplo, la póliza del viaje entre A y C tiene
un costo de 3. El conductor supone que la ruta más segura es aquella para
la cual la suma total de los costos de las pólizas sea mínima.
7
1
B 4 E
6 4
2 3
3
6 H
4 2
C F
A 3
4 J
4 3 4
3
1 I
3
D G
5
Figura 1.1
7
Solución del problema
8
conjunto se denominan estados de la etapa 2. Entonces la ruta
seleccionada es A → x1 → x2 → x3 → J.
f n* ( s) = mín f n (s , xn −1 ) = f n ( s, x *n −1 ) (1)
x
n
en donde
en otras palabras
f n ( s, x n −1 ) = C + f n ( s, x *n −1 ) (2)
sx n −1
9
s f 1* ( s) x *0
B 2 A
C 4 A
D 3 A
Tabla 1.1
f 2 ( E , B ) = cEB1 + f 1* ( B ) = 7+2 = 9
x1 f 2 ( s, x1 ) = c sx1 + f1* ( x1 )
s B C D f 2* ( s) x1*
E 9 7 7 7 CoD
F 6 6 4 4 D
G 8 8 8 8 BoCoD
Tabla 1.2
10
Para n=3 se tiene
x2 f 3 ( s, x2 ) = csx2 + f 2* ( x2 )
s E F G f 3* ( s) x *2
H 8 10 11 8 E
I 11 7 11 7 F
Tabla 1.3
x2 f 4 ( s, x3 ) = csx3 + f 3* ( x3 )
s H I f 4* ( s) x3*
J 11 11 11 HoI
Tabla 1.4
A →C →E →H →J
A →D→E →H→J
A →D →F → I →J
∗
Nota: este mismo ejemplo se encuentra resuelto en la página 533 de [Hil02] siguiendo
un procedimiento conocido como de retroceso, el cual consiste en atacar el problema de
adelante hacia atrás. Sin embargo, se ha considerado que el procedimiento de avance,
seguido aquí, es mas intuitivo. Más adelante se discutirán las ventajas de cada uno.
11
Teorema de optimalidad
12
Como ya se dijo, el ejemplo 1.3 fue creado con el propósito de introducir
los elementos y la terminología propios de la P.D. Se tienen entonces las
siguientes características:
f n ( s, x n−1 ) = C + f n ( s, x *n −1 ) (3)
sx n−1
13
indican la posibilidad de no asignar fondo alguno a la planta. El objetivo,
obviamente, es maximizar el ingreso total resultante.
14
Pj* = propuesta óptima asociada a f n ( xn )
f 1 ( x1 ) = máx { R1 ( P1 ) } (4)
propuestas
factiblesP1
n=1
R1 ( P1 )
x1 P1 = 1 P1 = 2 P1 = 3 f 1 ( x1 ) P1*
0 0 * * 0 1
1 0 5 * 5 2
2 0 5 6 6 3
3 0 5 6 6 3
4 0 5 6 6 3
5 0 5 6 6 3
Tabla 1.6
La tabla 1.5 informa cual es la política óptima que debe seguirse para
cada uno de los posibles valores de x1. Puede parecer redundante en su
construcción pues para cada estado la propuesta más alta que puede
cubrirse es la que genera el mayor ingreso, sin embargo, como ocurre en
la realidad, no siempre la mayor inversión genera el más alto beneficio.
15
f n ( xn ) = máx { Rn ( Pn ) + f n−1 ( xn−1 ) } (5)
propuestas
factiblesPn
x n −1 = x n − C n ( Pn ) (6)
R2 ( P2 ) + f1 ( x 2 − C2 ( P2 ))
x2 P2 = 1 P2 = 2 P2 = 3 P2 = 4 f 2 (x 2 ) P2*
0 0+0=0 * * * 0 1
1 0+5=5 * * * 5 1
2 0+6=6 8+0=8 * * 8 2
3 0+6=6 8+5=13 9+0=9 * 13 2
4 0+6=6 8+6=14 9+5=14 12+0=12 14 2o3
5 0+6=6 8+6=14 9+6=15 12+5=17 17 4
Tabla 1.7
16
tendría entonces la solución al problema reducido (2,4) que tiene un costo
de 5 millones y, como ya se dijo, reporta una ganancia de 17 .
La tabla para la última etapa posee solamente una fila, pues al no haber
etapas restantes no deben considerarse todas las posibilidades de
inversión sino, únicamente, el caso x3 =5.
R3 ( P3 ) + f 2 ( x3 − C 3 ( P3 ))
x3 P3 = 1 P3 = 2 f 3 (x 3 ) P3*
5 0 + 17 = 17 3 + 14 = 17 17 1o2
Tabla 1.8
17
Solución del problema
n
sujeto a ∑x
i =1
i
= q, x i > 0 para toda i
18
parábola que abre hacia abajo no deben realizarse más cálculos. Se define
la función h como:
h( x2 ) = x 2 y2 − x 22 (12)
entonces
h' ( x 2 ) = y 2 − 2x2 (13)
x *2 = y2 / 2 (14)
x1* = y 2 / 2 (15)
f 2 ( y2 ) = y22 / 4 (16)
f 3 ( y3 ) = máx{ x3 * ( y3 − x3 ) 2 / 4} (17)
x3 ≤ y3
o
f 3 ( y3 ) = máx{( y32 x3 − 2 y 3 x32 + x 33 ) / 4} (18)
x3 ≤ y3
factorizando y trasponiendo el 4
( y 3 − 3 x3 )( y3 − x3 ) = 0 (20)
19
Se tienen, en consecuencia, dos soluciones: x3 = y 3 /3 y x3 = y 3 . El
cálculo de la segunda derivada permitirá determinar la raíz correcta
aunque el modelo ya insinúa que se trata de la primera.
Los cálculos realizados con i = 1, 2 y 3 insinúan que para cada etapa i los
resultados siguen el siguiente patrón:
xi* = yi / i (26)
f i ( yi ) = ( y i / i ) i (27)
f i +1 ( yi +1 ) = máx {x i +1 * f i ( yi +1 − xi +1 )} (28)
xi +1 ≤ y+1 1
h' ( xi +1 ) = (( yi +1 − x i +1 ) / i) i − xi +1 (( y i +1 − xi +1 ) / i ) i −1 = 0 (31)
20
factorizando
( y i +1 − xi +1 ) / i − x i +1 = 0 (33)
i
y
yi +1 − i +1 i +1
y i +1
i + 1 y i +1
f i +1 ( yi +1 ) = * = (35)
i +1 i i + 1
Para i = n se tiene
x *n = y n / n = q / n (36)
( n − 1) ( n − 1)
y n −1 = y n − xn = y n − y n / n = yn = q (37)
n n
n −1 q ( n − 2)
y n −2 = y n −1 − xn −1 = q− = q (38)
n n n
21
de donde, aplicando la misma fórmula
x *n−2 = q / n (39)
esto permite calcular
n−2 q n −3
y n −3 = y n −2 − x *n − 2 = q− = q (40)
n n n
( q / n) n
El problema
maximizar z = c1 x1 + c 2 x 2 + ... + c p x p
∗
Nota: este ejemplo se encuentra resuelto en la página 425 de [Tah95] siguiendo un
procedimiento de retroceso, el procedimiento de avance, seguido aquí, simplifica los
cálculos.
22
sujeto a
a11 x1 + a12 x2 + ... + a1 p x p ≤ b1
a 21 x1 + a 22 x2 + ... + a 2 p x p ≤ b2
ΜΛΛΛΜ ΛΛΛΜ ΛΛΛΜ ΛΜ
a m1 x1 + a m 2 x 2 + ... + amp x p ≤ bm
x1 , x 2 ,..., x p ≥ 0
Sean (v1 j , v2 j ,..., vmj ) los estados del sistema en la etapa j, o sea, las
cantidades de los recursos 1, 2, . . . , m, asignadas a las etapas 1, 2, . . . , j.
Sea f j (v1 j , v2 j ,..., vmj ) el valor óptimo de la función objetivo para las
etapas 1, 2, . . . ,j dados los estados v1 j , v 2 j ,..., v mj . Por lo tanto
f1 (v11, v21 ,..., vm1 ) = máx { c1x1} (41)
0 ≤ ai 1x1 ≤v i1
i =1, 2 ,..., m
j = 2, 3, . . . ,p (42)
23
sujeto a
5x1 + 3 x2 ≤ 105
2 x1 + 4x 2 ≤ 70
x1, x2 ≥ 0
v v
Como 5 x1 ≤ v11 y 2 x1 ≤ v21 se concluye que x1 ≤ mín 11 , 21 pero
5 2
v v
como se trata de maximizar se tiene x1 = mín 11 , 21 y por lo tanto
5 2
v11 v21
f1 ( v11 , v12 ) = 20 mín , (43)
5 2
v − 3 x2 v 22 − 4x 2
f 2 (v12 , v22 ) = máx 16x2 + 20mín 21 , (44)
0 ≤3 x2 ≤ v1 2
0 ≤ 4 x2 ≤v2 2 5 2
105 − 3 x2 70 − 4 x 2
f 2 ( v12 , v 22 ) = máx 16x 2 + 20mín , (45)
0 ≤ x2 ≤35 / 2
5 2
105 − 3x 2 70 − 4 x2
Para 0= x 2 ≤ 35 / 2 es necesario resolver ≤ que tiene
5 2
como solución x2 ≤ 10 . Con lo cual se tiene
24
105 − 3 x2
0 ≤ x 2 ≤ 10
5
f 2 (v12 , v22 ) = máx16x 2 + 20 (46)
70 − 4 x2 10 ≤ x ≤ 35 / 2
2
2
o de forma equivalente
420 + 4x 2 0 ≤ x2 ≤ 10
f 2 ( v12 , v 22 ) = máx (47)
700 − 24 x2 10 ≤ x 2 ≤ 35 / 2
v v
pero como x1 = mín 11 , 21 entonces x1 = 15 .
5 2
Resolver
maximizar z = 8 x1 + 7 x2
25
sujeto a
2 x1 + x2 ≤ 8
5x1 + 2x 2 ≤ 15
x1, x2 enteros no negativos
v v
Como 2 x1 ≤ v11 y 5x1 ≤ v21 se concluye que x1 ≤ mín 11 , 21 además
2 5
tratándose de un problema de maximización con valores enteros se tiene
v v
x1 = mín 11 , 21 (donde x representa la parte entera de x) y por lo
2 5
tanto
v v
f 1 ( v11 , v12 ) = 8 mín 11 , 21 (48)
2 5
8 − x2 15 − 2 x2
f 2 (v12 , v22 ) = máx 7 x2 + 8mín , (49)
0 ≤ x2 ≤8
0 ≤ 2 x2 ≤15 2 5
15 − 2 x2
f 2 (v12 , v22 ) = máx 7 x2 + 8 (50)
0 ≤ x2 ≤7
5
26
15 − 2 x2
x2 7 x 2 + 8
5
0 24
1 23
2 30
3 29
4 36
5 43
6 42
7 49
Tabla 1.8
8 − x2 15 − 2x 2 1 1
x1 = mín , entonces x1 = mín , = 0 .
2 5 2 5
27
Solución del problema
(56)
28
para resolver esta optimización se definen
99 146
x2 ≥ − y x2 ≥ = 4.42
34 33
con lo cual, en los intervalos que nos ocupan se tiene que h(x) es creciente
en [0,1/5] y g(x) tiene un mínimo dentro de [1/5,5] por lo tanto h(x) tiene
máximo en 1/5 y lo tiene en alguno de los extremos de [1/5,5], se calcula n
entonces:
h (1/5) = 702.92
g(1/5) = 702.92
g(5) = 125
29
Gráfica 1.
10 − x1 x1 − 9
=
2 3
que tiene como solución
x1 = 9.6
de donde
x 2 = 0.2
30
Compa ración entre los métodos basados en ecuaciones
recursivas de avance y los basados en ecuaciones recursivas de
retroceso
Ejemplo 1.9:
Al comienzo del año 0 un campesino posee k ovejas. Al final de cada año
decide cuántas debe vender y cuantas conservar. La ganancia obtenida por
la venta de una oveja en el año i es pi . Las ovejas que conserve
duplicarán su número en el transcurso del año. El campesino venderá
todas sus ovejas al cabo de n años.
Gráfica 2.
31
Se tiene
z1 = 2x 0 = 2k
z j = 2 x j −1 j = 1,2,..., n
f n ( z n ) = máxn { pn yn }
yn = z n ≤2 k
f 1 ( x1 ) = máx { p1 y1}
y1 =2 k − x1
xj + yj
f j (x j ) = máx { p j y j + f j −1 ( } , j = 2, 3,. . . ,n
y j≤2 k−xj
j
2
( x j + y j ) / 2 entero
∗
Nota: el ejemplo de las ovejas tiene más un propósito pedagógico que uno práctico,
pues se trata de un caso en el cual la solución se encuentra determinando el mejor
momento para vender las ovejas y venderlas todas en ese instante, para ello se determina
el mayor 2 i pi . En caso de presentarse un empate existirán soluciones alternativas a la
venta de todas las ovejas en un instante dado, pero la ganancia será la misma. Por lo
tanto atacar este problema con el enfoque de P.D. resultaría sumamente impráctico.
32
Conclusión
Las técnicas de P.D. nos han permitido resolver, entre otros, problemas de
Programación Lineal, de Programación Lineal Entera, de Programación
No Lineal etc. Esto no quiere decir que la P.D. constituya una panacea
para la solución de los problemas de todos estos campos, por dos razones:
en primer lugar, porque las técnicas de P.D. son aplicables únicamente a
un conjunto reducido de problemas en cada campo. Y en segundo lugar
porque, aunque la técnica sea aplicable, al resolver problemas grandes (de
Programación Lineal por ejemplo) el número de evaluaciones de todas las
alternativas crece de forma exagerada (este problema se conoce como la
plaga de la dimensionalidad ) lo cual hace que este enfoque sea
impráctico. Sin embargo, el propósito buscado al resolver este tipo de
problemas no ha sido proponer una alternativa a los métodos estándar de
solución de tales campos (como el método símplex en el caso de la
Programación Lineal) sino sencillamente poner en evidencia la
versatilidad propia de la P.D.
33
Bibliografía
34