24
09/06/22 09/06/22 1 Investigación de Operaciones II Ing. Santos Gabriel Bla Investigación de Operaciones II Ing. Santos Gabriel Blas UNIVERSIDAD PRIVADA SAN UNIVERSIDAD PRIVADA SAN PEDRO PEDRO FACULTAD DE INGENIERIA FACULTAD DE INGENIERIA CURSO INVESTIGACIÓN DE OPERACIONES II ”PROGRAMACION DINAMICA” DOCENTE: ING. SANTOS GABRIEL BLAS

03-1-Programacion Dinamica

Embed Size (px)

Citation preview

Page 1: 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

Page 2: 03-1-Programacion Dinamica

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

Page 3: 03-1-Programacion Dinamica

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.

Page 4: 03-1-Programacion Dinamica

Programación DinámicaProgramación Dinámica

A B

C

D

EF

G

Page 5: 03-1-Programacion Dinamica

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.

Page 6: 03-1-Programacion Dinamica

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.

Page 7: 03-1-Programacion Dinamica

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.

Page 8: 03-1-Programacion Dinamica

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.

Page 9: 03-1-Programacion Dinamica

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?

Page 10: 03-1-Programacion Dinamica

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.

Page 11: 03-1-Programacion Dinamica

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?

Page 12: 03-1-Programacion Dinamica

Programación DinámicaProgramación Dinámica

Page 13: 03-1-Programacion Dinamica

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.

Page 14: 03-1-Programacion Dinamica

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

Page 15: 03-1-Programacion Dinamica

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).

Page 16: 03-1-Programacion Dinamica

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.

Page 17: 03-1-Programacion Dinamica

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

Page 18: 03-1-Programacion Dinamica

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

Page 19: 03-1-Programacion Dinamica

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

Page 20: 03-1-Programacion Dinamica

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

Page 21: 03-1-Programacion Dinamica

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) ]

Page 22: 03-1-Programacion Dinamica

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

Page 23: 03-1-Programacion Dinamica

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

Page 24: 03-1-Programacion Dinamica

Programación DinámicaProgramación Dinámica