Sunteți pe pagina 1din 34

UNIVERSIDAD PRIVADA

SAN PEDRO
FACULTAD DE INGENIERIA

CURSO
INVESTIGACIN OPERATIVA

PROGRAMACION DINAMICA
DOCENTE:
ING. SANTOS GABRIEL BLAS
1

26/10/16

Investigacin Operativa

Ing. Santos Gabriel Blas


Bla

Modelos de la IO
Modelos de IO
Determinsticos
Optimizacin
Lineal

Hbridos

Optimizacin
no Lineal

Programacin
Programacin
Lineal
Lineal

Mtodos
Clsicos

Transporte y
Asignacin

Mtodos
de bsqueda

Prog Entera
y 0,1

Programacin
no lineal

Redes

Programacin
Dinmica

Estocsticos
Cadenas
de Markov

Teora de
Inventarios

Teora de
Colas

Simulacin

Procesos
Estocsticos

Pert / CPM
Heursticas

Teora de
Decisiones
y Juegos

Programacin Dinmica
Una tarde de verano, siete bandidos que estuvieron
tomando toda la maana tuvieron una discusin sobre quin
era el mejor tirador. Como no pudieron ponerse de acuerdo
se batieron a duelo. Salieron tambalendose y tomaron
posiciones tal como se muestra en el diagrama.
Sus nombres eran Al, Beto, Cuco, Domingo, Esteban,
Franco y Gus.
Como puede observarse en la figura, cada hombre poda
dispararle a otros dos nicamente, de manera que sin
moverse comenzaron a disparar. Domingo fue el primero
en caer muerto debido a un tiro de Al. Cuando termin la
batalla el nico vivo era Al. Con esta informacin descubra
quin y en que orden fueron cayendo los seis hombres.

Programacin Dinmica

B
C

G
D
F
E

Programacin Dinmica
A

Si iniciamos al revs,
es decir, por el ltimo
difunto, tenemos que:

B
C

Al debi liquidar a
Esteban, por que de otra
forma Esteban lo hubiese
ultimado a l.

Entonces,
Esteban
dispar,
previamente,
sobre Beto.

F
E

El orden de la mortandad fue: 1o Domingo, 2o


Gus, 3o Cuco, 4o Franco, 5o Beto, 6o Esteban y el
sobreviviente fue Al.

Beto, antes, haba dado


cuenta de Franco
Franco, a su vez, haba
disparado, previamente,
sobre Cuco
Cuco, finiquit a Gus.

Programacin Dinmica
La programacin dinmica es una tcnica que se utiliza para
resolver diversos problemas de optimizacin.
Esta tcnica llega a la solucin trabajando hacia atrs
partiendo del final del problema hacia el principio, por lo que
un problema enorme e inmanejable se convierte en una
serie de problemas ms pequeos y manejables.

Programacin Dinmica - Introduccin


Muchos problemas de programacin matemtica determinan
soluciones que repercuten en la formulacin de los
problemas a resolver en el prximo perodo o etapa. Una
alternativa es construir un nico modelo completo que tenga
un gran conjunto de variables indexadas por etapas e
iternalizar las relaciones entre etapas como una restriccin
del problema.
Sin embargo esto pude agrandar mucho el tamao del
problema. Surge as Programacin Dinmica (PD) como una
alternativa de descomposicin en que resolvemos
subproblemas mas pequeos y luego los ligamos. As,
programacin dinamia consiste en solucionar el presente
suponiendo que en cada etapa futura siempre se tomaran
las decisiones correctas.

Programacin Dinmica - Caractersticas


Para que un problema pueda ser resuelto con la tcnica de
programacin dinmica, debe cumplir con ciertas
caractersticas:
Naturaleza secuencial de las decisiones: El problema
puede ser dividido en etapas.
Cada etapa tiene un numero de estados asociados a
ella.
La decisin optima de cada etapa depende solo del
estado actual y no de las decisiones anteriores.
La decisin tomada en una etapa determina cual ser el
estado de la etapa siguiente.
En sntesis, la poltica optima es de un estado s de la etapa
k a la etapa final esta constituida por una decisin que
transforma s en un estado s0 de la etapa k +1 y por la
poltica optima desde el estado s0 hasta la etapa final.

Programacin Dinmica
Acertijo de las cerillas:
Suponga que hay 30 cerillas sobre una mesa. Yo
empiezo eligiendo 1, 2 3 cerillas. Luego mi
contrincante debe tomar 1, 2 3 cerillas. As
continuamos hasta que alguno de los jugadores
toma la ltima cerilla. Este jugador es el que pierde.
Cmo puedo yo (el primer jugador) estar seguro de
ganar el juego?
Acertijo de las tazas de leche
Tengo una taza de 9 onzas y otra de 4 onzas. Mi
madre me pidi traer a casa exactamente 6 onzas
de leche. Cmo puedo cumplir lo pedido?

Programacin Dinmica
Naturaleza recursiva:
Los clculos de programacin dinmica se hacen en
forma recursiva, ya que la solucin ptima de un
subproblema se usa como dato para el siguiente
subproblema.
Para cuando se resuelve el ltimo subproblema queda
a la mano la solucin ptima de todo el problema.
La forma en la que se hacen los clculos recursivos
dependen de cmo se descomponga el problema
original.
En particular, los subproblemas se vinculan
normalmente mediante restricciones comunes.

Programacin Dinmica - Ejemplo


Joe Cougar vive en Nueva York, pero quiere
viajar en su automvil hasta Los ngeles en
busca de fama y fortuna. Los fondos de Joe son
limitados, as que decide pasar cada noche de su
viaje en la casa de un amigo. Joe tiene amigos
en cada ciudad.
Joe sabe que puede viajar un da a la vez y
avanzar por etapas.
Luego de 4 das de manejar Joe puede llegar
finalmente a Los ngeles.
Para minimizar la cantidad de millas recorridas,
dnde debe Joe pasar cada noche del viaje?

Programacin Dinmica

Programacin Dinmica - Solucin

Se determinar yendo hacia atrs (Recursividad)


Primero clasificamos todas las ciudades en la que
Joe puede estar al principio del n-simo da de su
viaje como ciudades de la etapa n.

Etapa 1: Nueva York.

Etapa 2: Columbus, Nashville, Louisville.

Etapa 3: Kansas City, Omaha, Dallas.

Etapa 4: Denver, San Antonio.

Etapa 5: Los ngeles.

Programacin Dinmica - Solucin


Columbus

Kansas
City

680

610

580

790

Denver

550

Nueva York

900

Nashville

760

Etapa 1
1050

700

Lousville

10

San
Antonio

790

510

Etapa 2

1390

940

660

Los
ngeles

Omaha

770

1030

540

790

270

Dallas
830

Etapa 3

Etapa 4

Etapa 5

Programacin Dinmica - Solucin


Algoritmo para recursividad:

La idea de trabajar hacia atrs implica que debemos


empezar por resolver un problema fcil que con el
tiempo nos servir para resolver uno ms complejo.
Empezamos por determinar la trayectoria ms corta a
Los ngeles desde cada ciudad de dnde hay slo un
da de viaje en automvil (ciudades de la etapa 4).
Luego usamos esta informacin para encontrar el
camino ms corto hasta Los ngeles desde cada
ciudad donde hay 2 das de manejo (ciudades de la
etapa 3).
Con esta informacin ya somos capaces de hallar el
camino ms corto desde cada ciudad que est a 3
das de viaje (ciudades de la etapa 2).
Encontramos, por ltimo, la trayectoria ms corta a
Los ngeles desde cada ciudad que est a 4 das de
viaje (hay slo una: Nueva York).

Programacin Dinmica - Solucin


Criterios bsicos:

Con el fin de simplificar la exposicin usamos los


nmeros 1, 2, 3,, 10 dados en la figura para
nombrar las 10 ciudades.
Definimos tambin cij como las millas entre la
ciudad i y la ciudad j. Por ejemplo, c35 = 580 son
las millas entre Nashville y Kansas City.
Hacemos ft(i) la distancia del camino ms corto
desde la ciudad i hasta Los ngeles, dado que la
ciudad i es una ciudad de la etapa t.

Programacin Dinmica - Solucin


Columbus

Kansas
City

680

610

580

790

Denver

550

Nueva York

900

Nashville

760

Etapa 1
1050

700

Lousville

10

San
Antonio

790

510

Etapa 2

1390

940

660

Los
ngeles

Omaha

770

1030

540

790

270

Dallas
830

Etapa 3

Etapa 4

Etapa 5

Programacin Dinmica - Solucin

Clculos de la Etapa 4
Determinamos el camino
ms corto desde cada ciudad
de la etapa 4 hasta L. A.
Como hay un solo camino
desde
cada
ciudad,
observamos que:
f4(8) = 1030

f4(9) = 1390

Denver
8
1030

Los
ngeles
1390

San
Antonio
9
Etapa 4

10
Etapa 5

Programacin Dinmica - Solucin

Clculos de la Etapa 3

Determinamos el camino ms corto desde


cada ciudad de la etapa 3 hasta L. A.
Determinar f3(5)

Kansas
City
5
790

C58 + f4(8) = 610 + 1030 = 1640 * (5-8-10)


C59 + f4(9) = 790 + 1390 = 2180

Determinar f3(6)

Omaha

Los
ngeles

1390
940

San
Antonio

790

Determinar f3(7)
C79 + f4(9) = 270 + 1390 = 1660 * (7-9-10)

1030

540

C69 + f4(9) = 940 + 1390 = 2330


C78 + f4(8) = 790 + 1030 = 1820

Denver
8

C68 + f4(8) = 540 + 1030 = 1570 * (6-8-10)

610

Dallas
7

E3

270

E4

10

E5

Programacin Dinmica - Solucin

Clculos de la Etapa 2

Determinamos el camino ms corto


desde cada ciudad de la etapa 2
hasta L. A.
Determinar f2(2)
C25 + f3(5) = 680 + 1640 = 2320* (25-8-10)
C26 + f3(6) = 790 + 1570 = 2360
C27 + f3(7) = 1050 + 1660 = 2710

Determinar f2(3)

C35 + f3(5) = 580 + 1640 = 2220* (35-8-10)


C36 + f3(6) = 760 + 1570 = 2330
C37 + f3(7) = 660 + 1660 = 2320

Determinar f2(4)

C45 + f3(5) = 510 + 1640 = 2150* (45-8-10)


C46 + f3(6) = 700 + 1570 = 2270
C47 + f3(7) = 830 + 1660 = 2490

680

5
610

580
790

760

6
1390

790

510

1050
700

830

E2

10
940

660

1030

540

790

7
E3

270

E4

E5

Programacin Dinmica - Solucin

Clculos de la Etapa 1

Como ya conocemos f2(2), f2(3) y f2(4), podemos ir hacia


atrs una etapa ms para determinar f1(1) y, por lo tanto,
el camino ms corto de la ciudad 1 a la 10.
Obsrvese que el camino ms corto desde la c1 a la c10
debe empezar por ir a la ciudad 2, 3 a la 4.
Esto significa que el camino ms corto desde la c1 hasta
la c10 tiene que ser uno de los siguientes:
Camino 1. Ir desde la 1 hasta la 2, luego seguir el
camino ms corto desde la 2 hasta la 10. [C12 + f2(2) ]
Camino 2. Ir desde la 1 hasta la 3, luego seguir el
camino ms corto desde la 3 hasta la 10. [C13 + f2(3) ]
Camino 3. Ir desde la 1 hasta la 4, luego seguir el
camino ms corto desde la 4 hasta la 10. [C14 + f2(4) ]

Programacin Dinmica - Solucin

Clculos de la Etapa 1

Determinar f1(1):
C12 + f2(2) = 550 + 2320 = 2870
C13 + f2(3) = 900 + 2220 = 3120
C14 + f2(4) = 770 + 2150 = 2920

Camino ptimo: 1-2-5-8-10


Desde Nueva York hasta Los ngeles pasar por:
Nueva York, Columbus, Kansas City, Denver y
Los ngeles.
Este camino tiene una distancia de f1(1) = 2870
millas

Programacin Dinmica - Solucin


Columbus

Kansas
City

680

610

580

790

Denver

550

Nueva York

900

Nashville

760

Etapa 1
1050

700

Lousville

10

San
Antonio

790

510

Etapa 2

1390

940

660

Los
ngeles

Omaha

770

1030

540

790

270

Dallas
830

Etapa 3

Etapa 4

Etapa 5

Programacin Dinmica

Programacin Dinmica
Suponga que se va a llenar una mochila de 10 lb con los
productos de la tabla siguiente:
Peso y beneficio para el ejemplo de la mochila

Producto

Peso(lb)

Beneficio

11

12

Con que se debe


llenar la mochila si
se desea maximizar
el beneficio total?

Solucin:
As tenemos b1(x1) = 11x1, b2(x2) = 7x2, b3(x3) = 12x3,
p1(x1) = 4x1, p2(x2) = 3x2, p3(x3) = 5x3
Definamos ft(d) como el mximo beneficio que se puede
conseguir con una mochila de d libras que se llena con
productos del tipo t, t+1, ,3

Programacin Dinmica

Clculos de la etapa 3

f3 (d) = Max x3 {12x3}


Donde 5x3<= d y x3 es un entero no negativo. Entonces se tiene:
Peso y beneficio
Producto

Peso(lb)

Beneficio

11

12

f3(10) = 24
f3(5) = f3(6) = f3(7) =f3(8) =f3(9) = 12
f3(0) = f3(1) = f3(2) =f3(3) =f3(4) = 0
x3(10) = 2
x3(9) = x3(8) = x3(7) =x3(6) =x3(5) = 1

Programacin Dinmica

Clculos de la etapa 2

f2 (d) = Max x2 {7x2 + f3 (d 3x2)}


Donde x2 debe ser un numero no negativo que satisfaga 3x2 <= d. Ahora se
tiene:
Determinar f2(10) = 7X2 + F3 (10 -3X2)
Para x2=0, 7(0) + f3(10) = 0 + 24 = 24,
Para x2=1, 7(1) + f3(7) = 7 + 12 = 19
Para x2=2, 7(2) + f3(4) = 14 + 0 = 14
Para x2=3, 7(3) + f3(1) = 21 + 0 = 21
Determinar

f2(9) = 7X2 + F3 (9 -3X2)

Para x2=0, 7(0) + f3(9) = 0 + 12 = 12

Donde: f2(10) = 24 y x2(10)=0


f3(10) = 24
f3(5) = f3(6) = f3(7) =f3(8) =f3(9) = 12
f3(0) = f3(1) = f3(2) =f3(3) =f3(4) = 0
x3(10) = 2
x3(9) = x3(8) = x3(7) =x3(6) =x3(5) = 1
x3(0) = x3(1) = x3(2) =x3(3) =x3(4) = 0

Para x2=1, 7(1) + f3(6) = 7 + 12 = 19


Para x2=2, 7(2) + f3(3) = 14 + 0 = 14
Para x2=3, 7(3) + f3(0) = 21 + 0 = 21, Donde: f2(9) = 21 y x2(9)=3

Programacin Dinmica

Clculos de la etapa 2

f2 (d) = Max x2 {7x2 + f3 (d 3x2)}

Determinar f2(8) = 7X2 + F3 (8 -3X2)


Para x2=0, 7(0) + f3(8) = 0 + 12 = 12
Para x2=1, 7(1) + f3(5) = 7 + 12 = 19, Donde: f2(8) = 19 y x2(8)=1
Para x2=2, 7(2) + f3(2) = 14 + 0 = 14
f (10) = 24
3

Determinar f2(7) = 7X2 + F3 (7 -3X2)

f3(5) = f3(6) = f3(7) =f3(8) =f3(9) = 12


f3(0) = f3(1) = f3(2) =f3(3) =f3(4) = 0
x3(10) = 2
x3(9) = x3(8) = x3(7) =x3(6) =x3(5) = 1
x3(0) = x3(1) = x3(2) =x3(3) =x3(4) = 0

Para x2=0, 7(0) + f3(7) = 0 + 12 = 12


Para x2=1, 7(1) + f3(4) = 7 + 0 = 7
Para x2=2, 7(2) + f3(1) = 14 + 0 = 14, Donde: f2(7) = 14 y x2(7)=2

Determinar f2(6) = 7X2 + F3 (6 -3X2)


Para x2=0, 7(0) + f3(6) = 0 + 12 = 12
Para x2=1, 7(1) + f3(3) = 7 + 0 = 7
Para x2=2, 7(2) + f3(0) = 14 + 0 = 14, Donde: f2(6) = 14 y x2(6)=2

Programacin Dinmica

Clculos de la etapa 2 : f2 (d) = Max x2 {7x2 + f3 (d 3x2)}


Determinar f2(5) = 7X2 + F3 (5 -3X2)
Para x2=0, 7(0) + f3(5) = 0 + 12 = 12, Donde: f2(5) = 12 y x2(5)=0
f3(10) = 24
Para x2=1, 7(1) + f3(2) = 7 + 0 = 7

f3(5) = f3(6) = f3(7) =f3(8) =f3(9) = 12


f3(0) = f3(1) = f3(2) =f3(3) =f3(4) = 0
x3(10) = 2
x3(9) = x3(8) = x3(7) =x3(6) =x3(5) = 1
x3(0) = x3(1) = x3(2) =x3(3) =x3(4) = 0

Determinar f3(4) = 7X2 + F3 (4 -3X2)

Para x2=0, 7(0) + f3(4) = 0 + 0 = 0


Para x2=1, 7(1) + f3(1) = 7 + 0 = 7 , Donde: f2(4) = 7 y x2(4)=1
Determinar f2(3) = 7X2 + F3 (3 -3X2)

Para x2=0, 7(0) + f3(3) = 0 + 0 = 0


Para x2=1, 7(1) + f3(0) = 7 + 0 = 7, Donde: f2(3) = 7 y x2(3)=1
Determinar f2(2) = 7X2 + F3 (2 -3X2)

Para x2=0, 7(0) + f3(2) = 0 + 0 = 0, Donde: f2(2) = 0 y x2(2)=0


Determinar f2(1) = 7X2 + F3 (1 -3X2)

Para x2=0, 7(0) + f3(1) = 0 + 0 = 0, Donde: f2(1) = 0 y x2(1)=0


Determinar f2(0) = 7X2 + F3 (0 -3X2)

Programacin Dinmica
Clculos de la etapa 2

Programacin Dinmica
Clculos de la etapa 1: f1 (d) = Max x1 {11x1 + f2 (d 4x1)}

Determinar f1(10) = 11X1 + F2 (10 - 4X1)


Para x2=0, 11(0) + f2(10) = 0 + 24 = 24
Para x2=1, 11(1) + f2(6) = 11 + 14 = 25, Donde: f1(10) = 25 y x1(10)=1

f2(10) = 24, f2(9) = 21, f2(8) = 19, f2(7) = f2(6) = 14


Para x2=2, 11(2) + f2(2) = 22 + 0 = 22

f2(5) = 12, f2(4) = f2(3) = 7

Determinar f1(9) = 11X1 + F2 (9 - 4X1)

f2(2) = f2(1) = f2(0) = 0


x2(9)=3, x2(7)= x2(6)= 2
x2(8) = x2(4)= x2(3)=1
x2(10)= x2(5)= x2(2) = x2(1)= x2(0)= 0

Para x2=0, 11(0) + f2(9) = 0 + 21 = 21


Para x2=1, 11(1) + f2(5) = 11 + 12 = 23, Donde: f1(9) = 23 y x1(9)=1
Para x2=2, 11(2) + f2(1) = 22 + 0 = 22
Determinar f1(8) = 11X1 + F2 (8 - 4X1)

Para x2=0, 11(0) + f2(8) = 0 + 19 = 19


Para x2=1, 11(1) + f2(4) = 11 + 7 = 18
Para x2=2, 11(2) + f2(0) = 22 + 0 = 22, Donde: f1(8) = 22 y x1(8)=2
Determinar f1(7) = 11X1 + F2 (7 - 4X1)
Para x2=0, 11(0) + f2(7) = 0 + 19 = 14
Para x2=1, 11(1) + f2(3) = 11 + 7 = 18, Donde: f1(7) = 18 y x1(7)=1

Programacin Dinmica
Clculos de la etapa 1: f1 (d) = Max x1 {11x1 + f2 (d 4x1)}

Determinar f1(6) = 11X1 + F2 (6 - 4X1)


Para x2=0, 11(0) + f2(6) = 0 + 14 = 14, Donde: f1(6) = 14 y x1(6)=0

f2(10) = 24, f2(9) = 21, f2(8) = 19,


Para x2=1, 11(1) + f2(2) = 11 + 0 = 11

Determinar f1(5) = 11X1 + F2 (5 - 4X1)

Para x2=0, 11(0) + f2(5) = 0 + 12 = 12


Para x2=1, 11(1) + f2(1) = 11 + 0 = 11,
Donde: f1(9) = 23 y x1(9)=1
Determinar f1(4) = 11X1 + F2 (4 - 4X1)

f2(7) = f2(6) = 14

f2(5) = 12, f2(4) = f2(3) = 7


f2(2) = f2(1) = f2(0) = 0
x2(9)=3, x2(7)= x2(6)= 2
x2(8) = x2(4)= x2(3)=1
x2(10)= x2(5)= x2(2) = x2(1)= x2(0)= 0

Para x2=0, 11(0) + f2(4) = 0 + 7 = 7


Para x2=1, 11(1) + f2(0) = 11 + 0 = 11, Donde: f1(8) = 22 y x1(8)=2

Programacin Dinmica

Clculos de la etapa 1: f1 (d) = Max x1 {11x1 + f2 (d 4x1)}

Determinacin de la solucin optima para el problema de la


mochila
Tenemos F1(10) = 25 y X1 (10) =1
Por lo tanto, podramos incluir un producto tipo 1 en la mochila.
Entonces quedan 10 - 4 = 6 libras para los productos de los tipos 2
y 3, de modo que incluiramos X2(6) = 2 productos tipo 2.
Por ultimo, hay 6 2(3) = 0 libras para los productos del tipo 3, por
lo que llevaramos X3(0) = 0 productos del tipo 3.
En resumen, el beneficio mximo que podemos lograr con una
mochila de 10 libras es F3(10) = 25.
Para obtener un beneficio de 25 debemos llevar 01(un) producto
del tipo 1 y 02(dos) del tipo 2.

Programacin Dinmica

S-ar putea să vă placă și