Post on 12-Aug-2015
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