PROGRAMACION DINAMICA DETERMINISTICA
Ing. Manuel Sánchez Terán
INVESTIGACION DE OPERACIONES II
PROGRAMACION DINAMICA DETERMINISTICA
INTRODUCCION A LA PROGRAMACION DINAMICA
Una forma razonable y comúnmente empleada de resolver un problema es definir o caracterizar su solución en términos de las soluciones de subproblemas del mismo. Esta idea proporciona métodos eficientes de solución para problemas en los que los subproblemas son versiones más pequeñas del problema original. La programación dinámica es útil para resolver un problema donde se deben tomar una serie de decisiones interrelacionadas. La programación dinámica encuentra la solución óptima de un problema con n variables, descomponiéndolo en n etapas, siendo cada etapa un subproblema de una sola variable. Conviene resaltar que a diferencia de la programación lineal, el modelado de problemas de programación dinámica no sigue una forma estándar. Así, para cada problema será necesario especificar cada uno de los componentes que caracterizan un problema de programación dinámica. La solución de problemas mediante esta técnica se basa en el llamado principio de optimalidad que establece la idea de que: Dado el estado actual, la decisión óptima para cada una de las etapas restantes no tiene que depender de los estados ya alcanzados o de las decisiones tomadas previamente. Esta técnica llega a una solución trabajando, por lo general, 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. La programación dinámica se utiliza tanto en problemas lineales como no lineales.
NATURALEZA RECURSIVA DE LA PROGRAMACION DINAMICA
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 se obtiene la solución óptima de todo el problema. La forma en la que se hacen los cálculos recursivos depende de cómo se descomponga el problema original. En particular, los subproblemas se vinculan normalmente mediante restricciones comunes. Al pasar de un subproblema al si guiente se debe mantener la factibilidad de esas restricciones comunes.
RECURSION EN AVANCE Y EN REVERSA
Se usa la recursión en avance, cuando los cálculos se hacen de la primera etapa a la última etapa; y se usa la recursión en reversa, cuando los cálculos se hacen de la última etapa a la primera etapa. Con las recursiones en avance y en reversa se obtiene la misma solución. Aunque el procedimiento en avance parece más lógico, en las publicaciones sobre programación dinámica se usa la recursión en reversa. La razón de esta preferencia es que, en general, la recursión en reversa es más eficiente desde el punto de vista computacional.
PROGRAMACION DINAMICA DETERMINISTICA
En este tipo de programación dinámica, el estado de la siguiente etapa está determinado por completo por el estado y la política de decisión de la etapa actual . El caso probabilístico es en el cual existe una distribución de probabilidad del valor posible del siguiente estado. Se analizará posteriormente.
Ing. Manuel Sánchez Terán
1
INVESTIGACION DE OPERACIONES II
ELEMENTOS DE UN PROBLEMA DE PROGRAMACION DINAMICA
ETAPA ( n ) Es el período de tiempo, lugar, fase o situación en donde se produce un cambio debido a una n decisión ( x ).
ESTADO ( s n ) Muestra la situación actual del sistema cuando nos encontramos en la etapa n . En la terminología de la programación dinámica, a s n se le llama estado del sistema en la etapa n . De hecho, se considera que el estado del sistema en la etapa n es la información que enlaza las etapas, de tal modo que se puedan tomar las decisiones para las etapas restantes sin volver a examinar cómo se llegó a las decisiones de las etapas anteriores. También se puede decir que por estado se quiere dar a entender la información que se necesita en cualquier etapa para tomar una decisión óptima. VARIABLES DE DECISION ( x n ) Hacen referencia a toma de decisiones (o política de decisión) que se producen en una etapa y que produce un cambio en el estado actual del sistema. f ) FUNCION RECURRENTE ( n Refleja el comportamiento del sistema en función de los estados y de las variables de decisión: f n (s , n x ). n La recursión relaciona el costo o la contribución ganada durante alguna etapa con el costo o la contribución ganada en la etapa posterior de forma acumulativa.
La programación dinámica se puede describir en un diagrama como el siguiente: n=1
s1
n=2
s2
x 1
n=4
n=3
x 2
s3
x 3
s4
x 4
f 4(s4 , x 4 ) f 3(s3 , x 3 ) f 2(s2 , x 2 ) f 1(s1 , x 1 )
Evolución del sistema
N n s n x n x n *
= número de etapas = etiqueta de la etapa actual (n = 1, 2, = estado actual de la etapa n = variable de decisión de la etapa n = valor óptimo de x n (dado s n )
N)
…
En la etapa n , el proceso se encuentra en algún estado s n . Al tomar la decisión x n se mueve a algún estado s n+1 en la etapa n+1, etapa en la que se habría contribuido (bajo la perspectiva de la recursión en reversa) con f n * +1(s n+1 ), que incluye las contribuciones acumuladas de las etapas siguientes; al considerar esta cantidad con la contribución actual (llamémosle c s n,x n ) a la función objetivo se tiene a f n (s n , x ) n como la contribución de la etapa n en adelante. Dados n y s n para un problema de minimización, y sea x n * el mejor valor entre todos los valores que * ) el valor mínimo correspondiente a todos los pueda adoptar xn al calcular su propia f (s n n, x n) , y sea f n (s n f n (s n , x n ). Entonces: f n * (s ) ) = f n (s n , x n * ) n = min f n (s n , x n donde: * f n (s n , x ) n = costo mínimo inmediato (etapa n) + costo mínimo futuro (etapas n+1 en adelante) = c s n,x n + f n +1(s n+1 )
Los valores de c sn ,x n son los incurridos al establecer s n como el estado actual y x n como el destino inmediato. Seleccionando el valor óptimo a la variable x n * y determinando la contribución total a la función objetivo f n * (s n ), el procedimiento de solución se mueve a la siguiente etapa. 2
Ing. Manuel Sánchez Terán
INVESTIGACION DE OPERACIONES II
CARACTERISTICAS DE UN PROBLEMA DE PROGRAMACION DINAMICA
Para que un problema pueda ser resuelto con la técnica de programación dinámica, debe cumplir con ciertas características: o
o o o o
El problema puede ser dividido en etapas , cada una de las cuales requiere de una política de decisión . Cada etapa se relaciona con una cierta cantidad de etapas. Cada etapa tiene cierto número de estados asociados con su inicio. La decisión óptima de cada etapa depende solo del estado actual y no de las decisiones anteriores. La decisión o política de decisión tomada en una etapa determina el modo en que el estado de la etapa actual se transforma en el estado de la etapa siguiente.
EJEMPLO PROTOTIPO DE PROGRAMACION DINAMICA
El siguiente problema se elaboró especialmente para ilustrar las características de la programación dinámica e introducir la terminología empleada en ésta. (Pudiera relacionárselo con el modelo de red de la ruta más corta, pero en realidad es este modelo el que utiliza la filosofía de la programación dinámica) 7
B
E 4
Tomando en cuenta el siguiente sistema de caminos, si se encuentra inicialmente en el nodo A, encontrar la trayectoria más económica para llegar al nodo J considerando que los valores que se encuentran en las ramas representan los costos de trasladarse de un nodo a otro.
1
6
4 2
H 3
3 4
A
C
6 2
F
J 3
4
4
I
3 4
3
1
D
3 5
G
Solución:
Si se tomara la decisión de ir por la ruta más barata en cada etapa, ésta sería: A – B – F – I – J con un costo total asociado de 13. Pero note que si desde el nodo A llegamos al nodo F mediante D, en lugar de ir por B el costo sería menor.
El evaluar todas las posibles rutas y sus costos asociados sería una tarea tediosa. Mediante la programación dinámica se puede hallar la solución con mucho menor esfuerzo.
Variables de decisión:
x n : destino siguiente de la etapa n, donde: (n = 1, 2, 3, 4)
Estado:
s n : lugar donde se encuentra en la etapa n
Ruta a seleccionar:
A x 1 x 2 x 3 x 4, donde x 4 = J
El destino final es J y se alcanza al terminar la etapa 4.
El objetivo es encontrar f 1* (A) y la ruta correspondiente. La programación dinámica la encuentra al
–
–
*
–
*
–
*
*
determinar en forma sucesiva f 4 (s 4 ), f 3 (s ), 3 f 2 (s ) 2 y f 1 (s 1 )
c sn x n + f n+1 (x ) Función recursiva: f n (s n , x )= n n
Ing. Manuel Sánchez Terán
3
INVESTIGACION DE OPERACIONES II
Etapa 4:
Cuando se está en la última etapa, el destino final es x 4 = J y su estado actual s 4 puede ser H o I , de manera que su último tramo es desde s 4 hacia J. Por lo tanto, f 4* (s 4) = f(s4 , 4J) = c s 4J Solución óptima f 4* (s4 ) x 4*
s4
f 4(s4 ,x 4 )= c s4 x 4 x 4 = J
H
J
3
J
I
J
4
J
Etapa 3:
s3
f 3(s3 ,x 3 )= c s3 x 3 + f 4*(x 3 ) x 3 = H x 3 = I
Solución óptima f 3* (s3 ) x 3*
E
1+3=4
4+4=8
4
F
6+3=9
3+4=7
7
H I
G
3+3=6
3+4=7
6
H
Etapa 2:
s2
f 2 (s2 ,x 2 )= c s2 x 2 + f 3*(x 2 ) x 2 =E x 2 =F x 2 =G
Solución óptima f 2 * (s2 ) x 2*
B
7+4=11
4+7=11
6+6=12
11
EoF
C
3+4=7
2+7=9
4+6=10
7
E
D
4+4=8
1+7=8
5+6=11
8
EoF
Etapa 1:
s1 A
f 1(s1 ,x 1 )= c s1 x 1 + f 2 *(x 1 ) x 1 =B x 1 =C x 1 =D 2+11=13
4+7=11
3+8=11
Solución óptima f 1* (s1 ) x 1* 11
CoD
Interpretación: Costo total =11
4
Ruta1: A-C-E-H-J, Ruta2: A-D-E-H-J, Ruta3: A-D-F-I-J
Ing. Manuel Sánchez Terán