03-1-Programacion Dinamica

Post on 12-Aug-2015

250 views 2 download

Transcript of 03-1-Programacion Dinamica

13/04/2313/04/2311Investigación de Operaciones II Ing. Santos Gabriel BlaInvestigación de Operaciones II Ing. Santos Gabriel Blas

UNIVERSIDAD PRIVADA UNIVERSIDAD PRIVADA SAN PEDROSAN PEDRO

FACULTAD DE INGENIERIAFACULTAD DE INGENIERIA

CURSOINVESTIGACIÓN DE OPERACIONES II

“”PROGRAMACION DINAMICA”

DOCENTE:ING. SANTOS GABRIEL BLAS

Modelos de la IO

Modelos de IO

Programación Lineal

MétodosClásicos

Determinísticos Híbridos Estocásticos

Transporte yAsignación

Redes

Optimización Lineal

Optimización no Lineal

Métodosde búsqueda

Programación no lineal

ProgramaciónDinámica

Teoría de Inventarios

Simulación

Pert / CPM

Heurísticas

Cadenas de Markov

Teoría de Colas

ProcesosEstocásticos

Teoría de Decisionesy Juegos

Programación Lineal

Prog Enteray 0,1

Optimización Lineal

Teoría de Inventarios

Transporte yAsignación

Programación DinámicaProgramación Dinámica

Una tarde de verano, siete bandidos que estuvieron tomando toda la mañana tuvieron una discusión sobre quién era el mejor tirador. Como no pudieron ponerse de acuerdo se batieron a duelo. Salieron tambaleándose 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 podía 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 información descubra quién y en que orden fueron cayendo los seis hombres.

Programación DinámicaProgramación Dinámica

A B

C

D

EF

G

Programación DinámicaProgramación Dinámica

A B

C

D

EF

G

Si iniciamos “al revés”, es decir, por el último difunto, tenemos que:

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

Entonces, Esteban disparó, previamente, sobre Beto.

Beto, antes, había dado cuenta de Franco

Franco, a su vez, había disparado, previamente, sobre Cuco

Cuco, finiquitó a Gus.

El orden de la mortandad fue: 1o Domingo, 2o Gus, 3o Cuco, 4o Franco, 5o Beto, 6o Esteban y el sobreviviente fue Al.

Programación DinámicaProgramación DinámicaLa programación dinámica es una técnica que se utiliza para resolver diversos problemas de optimización.

Esta técnica llega a la solución trabajando hacia atrás partiendo del final del problema hacia el principio, por lo que un problema enorme e inmanejable se convierte en una serie de problemas más pequeños y manejables.

Programación Dinámica - IntroducciónProgramación Dinámica - IntroducciónMuchos problemas de programación matemática determinan soluciones que repercuten en la formulación de los problemas a resolver en el próximo período 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 restricción del problema.

Sin embargo esto pude agrandar mucho el tamaño del problema. Surge así Programación Dinámica (PD) como una alternativa de descomposición en que resolvemos subproblemas mas pequeños y luego los ligamos. Así, programación dinamia consiste en solucionar el presente suponiendo que en cada etapa futura siempre se tomaran las decisiones correctas.

Programación Dinámica - CaracterísticasProgramación Dinámica - CaracterísticasPara que un problema pueda ser resuelto con la técnica de programación dinámica, debe cumplir con ciertas características:

• Naturaleza secuencial de las decisiones: El problema puede ser dividido en etapas.

• Cada etapa tiene un numero de estados asociados a ella.

• La decisión ´optima de cada etapa depende solo del estado actual y no de las decisiones anteriores.

• La decisión tomada en una etapa determina cual será el estado de la etapa siguiente.

En síntesis, la política ´optima es de un estado s de la etapa k a la etapa final esta constituida por una decisión que transforma s en un estado s0 de la etapa k +1 y por la política optima desde el estado s0 hasta la etapa final.

Programación DinámicaProgramación Dinámica

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. ¿Cómo puedo yo (el primer jugador) estar seguro de ganar el juego?

Acertijo de las tazas de lecheTengo una taza de 9 onzas y otra de 4 onzas. Mi madre me pidió traer a casa exactamente 6 onzas de leche. ¿Cómo puedo cumplir lo pedido?

Programación DinámicaProgramación Dinámica

Naturaleza recursiva:

Los cálculos de programación dinámica se hacen en forma recursiva, ya que la solución óptima de un subproblema se usa como dato para el siguiente subproblema.

Para cuando se resuelve el último subproblema queda a la mano la solución óptima de todo el problema.

La forma en la que se hacen los cálculos recursivos dependen de cómo se descomponga el problema original.

En particular, los subproblemas se vinculan normalmente mediante restricciones comunes.

Programación Dinámica - EjemploProgramación Dinámica - Ejemplo

• Joe Cougar vive en Nueva York, pero quiere viajar en su automóvil 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 día a la vez y avanzar por etapas.

• Luego de 4 días de manejar Joe puede llegar finalmente a Los Ángeles.

• Para minimizar la cantidad de millas recorridas, ¿dónde debe Joe pasar cada noche del viaje?

Programación DinámicaProgramación Dinámica

Programación Dinámica - SoluciónProgramación Dinámica - Solución

• Se determinará yendo hacia atrás (Recursividad)• Primero clasificamos todas las ciudades en la que

Joe puede estar al principio del n-ésimo día 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.

Programación Dinámica - SoluciónProgramación Dinámica - Solución

Los Ángeles

10

Nueva York

1

Omaha

6

Kansas City

5

Lousville

4

Nashville

3

Columbus

2

Dallas

7

San Antonio

9

Denver

8

550

900 760

770

580

680

660

830

700

510

790

1050

270

790

540

940

610

790

1030

1390

Etapa 5Etapa 4

Etapa 3Etapa 2

Etapa 1

Programación Dinámica - SoluciónProgramación Dinámica - SoluciónAlgoritmo para recursividad:

• La idea de trabajar hacia atrás implica que debemos empezar por resolver un problema fácil que con el tiempo nos servirá para resolver uno más complejo.

• Empezamos por determinar la trayectoria más corta a Los Ángeles desde cada ciudad de dónde hay sólo un día de viaje en automóvil (ciudades de la etapa 4).

• Luego usamos esta información para encontrar el camino más corto hasta Los Ángeles desde cada ciudad donde hay 2 días de manejo (ciudades de la etapa 3).

• Con esta información ya somos capaces de hallar el camino más corto desde cada ciudad que esté a 3 días de viaje (ciudades de la etapa 2).

• Encontramos, por último, la trayectoria más corta a Los Ángeles desde cada ciudad que está a 4 días de viaje (hay sólo una: Nueva York).

Programación Dinámica - SoluciónProgramación Dinámica - SoluciónCriterios básicos:

• Con el fin de simplificar la exposición usamos los números 1, 2, 3,…, 10 dados en la figura para nombrar las 10 ciudades.

• Definimos también 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 más corto desde la ciudad i hasta Los Ángeles, dado que la ciudad i es una ciudad de la etapa t.

Programación Dinámica - SoluciónProgramación Dinámica - Solución

Los Ángeles

10

Nueva York

1

Omaha

6

Kansas City

5

Lousville

4

Nashville

3

Columbus

2

Dallas

7

San Antonio

9

Denver

8

550

900 760

770

580

680

660

830

700

510

790

1050

270

790

540

940

610

790

1030

1390

Etapa 5Etapa 4

Etapa 3Etapa 2

Etapa 1

Programación Dinámica - SoluciónProgramación Dinámica - Solución

Cálculos de la Etapa 4

Determinamos el camino más 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

San Antonio

9

Denver

8

Los Ángeles

10

1030

1390

Etapa 5

Etapa 4

Programación Dinámica - SoluciónProgramación Dinámica - Solución

Cálculos de la Etapa 3

Determinamos el camino más corto desde cada ciudad de la etapa 3 hasta L. A.

Determinar f3(5)

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

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

Determinar f3(6)

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

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

Determinar f3(7)

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

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

Omaha

6

Kansas City

5

Dallas

7

San Antonio

9

Denver

8

Los Ángeles

10

270

790

540

940

610

790

1030

1390

E 5

E 4

E 3

Programación Dinámica - SoluciónProgramación Dinámica - Solución

Cálculos de la Etapa 2 Determinamos el camino más corto Determinamos el camino más corto

desde cada ciudad de la etapa 2 desde cada ciudad de la etapa 2 hasta L. A. hasta L. A.

Determinar Determinar ff22(2)(2)– CC2525 + f + f33(5) = 680 + 1640 = 2320* (2-(5) = 680 + 1640 = 2320* (2-

5-8-10)5-8-10)– CC2626 + f + f33(6) = 790 + 1570 = 2360(6) = 790 + 1570 = 2360– CC2727 + f + f33(7) = 1050 + 1660 = 2710(7) = 1050 + 1660 = 2710

Determinar Determinar ff22(3)(3)– CC3535 + f + f33(5) = 580 + 1640 = 2220* (3-(5) = 580 + 1640 = 2220* (3-

5-8-10)5-8-10)– CC3636 + f + f33(6) = 760 + 1570 = 2330(6) = 760 + 1570 = 2330– CC3737 + f + f33(7) = 660 + 1660 = 2320(7) = 660 + 1660 = 2320

Determinar Determinar ff22(4)(4)– CC4545 + f + f33(5) = 510 + 1640 = 2150* (4-(5) = 510 + 1640 = 2150* (4-

5-8-10)5-8-10)– CC4646 + f + f33(6) = 700 + 1570 = 2270(6) = 700 + 1570 = 2270– CC4747 + f + f33(7) = 830 + 1660 = 2490(7) = 830 + 1660 = 2490

6

5

4

3

2

7

9

8

10760

580

680

660

830

700

510

790

1050

270

790

540

940

610

790

1030

1390 E5

E4

E3E2

Programación Dinámica - SoluciónProgramación Dinámica - SoluciónCálculos de la Etapa 1

Como ya conocemos f2(2), f2(3) y f2(4), podemos ir hacia atrás una etapa más para determinar f1(1) y, por lo tanto, el camino más corto de la ciudad 1 a la 10.

Obsérvese que el camino más corto desde la c1 a la c10 debe empezar por ir a la ciudad 2, 3 ó a la 4.

Esto significa que el camino más 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 más corto desde la 2 hasta la 10. [C12 + f2(2) ]– Camino 2. Ir desde la 1 hasta la 3, luego seguir el

camino más corto desde la 3 hasta la 10. [C13 + f2(3) ]– Camino 3. Ir desde la 1 hasta la 4, luego seguir el

camino más corto desde la 4 hasta la 10. [C14 + f2(4) ]

Programación Dinámica - SoluciónProgramación Dinámica - SoluciónCálculos 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

Programación Dinámica - SoluciónProgramación Dinámica - Solución

Los Ángeles

10

Nueva York

1

Omaha

6

Kansas City

5

Lousville

4

Nashville

3

Columbus

2

Dallas

7

San Antonio

9

Denver

8

550

900 760

770

580

680

660

830

700

510

790

1050

270

790

540

940

610

790

1030

1390

Etapa 5Etapa 4

Etapa 3Etapa 2

Etapa 1

Programación DinámicaProgramación Dinámica