Sunteți pe pagina 1din 6

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 siguiente 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
decisión (xn).
 ESTADO (sn) 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 sn 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 (xn) 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.
 FUNCION RECURRENTE (fn) Refleja el comportamiento del sistema en función de los estados
y de las variables de decisión: fn(sn, xn). 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 n=2 n=3 n=4

s1 x1 s2 x2 s3 x3 s4 x4

f4(s4 , x4)
f3(s3 , x3)
f2(s2 , x2)
f1(s1 , x1)

Evolución del sistema

N = número de etapas
n = etiqueta de la etapa actual (n = 1, 2, … N)
sn = estado actual de la etapa n
xn = variable de decisión de la etapa n
xn* = valor óptimo de xn (dado sn)

En la etapa n, el proceso se encuentra en algún estado sn. Al tomar la decisión xn se mueve a algún estado
sn+1 en la etapa n+1, etapa en la que se habría contribuido (bajo la perspectiva de la recursión en reversa)
con fn*+1(sn+1), que incluye las contribuciones acumuladas de las etapas siguientes; al considerar esta cantidad
con la contribución actual (llamémosle csn,xn) a la función objetivo se tiene a fn(sn , xn) como la contribución
de la etapa n en adelante.

Dados n y sn para un problema de minimización, y sea xn* el mejor valor entre todos los valores que
pueda adoptar xn al calcular su propia f n(s n, x n), y sea f n*(s n) el valor mínimo correspondiente a todos los
fn(sn, xn). Entonces:

fn*(sn) = min fn(sn , xn) = fn(sn , x n*)

donde:

fn(sn , xn) = costo mínimo inmediato (etapa n) + costo mínimo futuro (etapas n+1 en adelante) = csn,xn + fn *+1(sn+1)
Los valores de csn,xn son los incurridos al establecer sn como el estado actual y xn como el destino
inmediato. Seleccionando el valor óptimo a la variable xn* y determinando la contribución total a la
función objetivo fn*(sn), el procedimiento de solución se mueve a la siguiente etapa.

Ing. Manuel Sánchez Terán


2
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 El problema puede ser dividido en etapas, cada una de las cuales requiere de una política de
decisión.
o Cada etapa se relaciona con una cierta cantidad de etapas.
o Cada etapa tiene cierto número de estados asociados con su inicio.
o La decisión óptima de cada etapa depende solo del estado actual y no de las decisiones anteriores.
o 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
Tomando en cuenta el siguiente sistema de caminos, 4 1
6 4
si se encuentra inicialmente en el nodo A, encontrar 2
H
la trayectoria más económica para llegar al nodo J 3 6
3

considerando que los valores que se encuentran en A


4
C
2
F J
las ramas representan los costos de trasladarse de 4
3
4
un nodo a otro. 3 I
4 3
1 3
D 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: xn : destino siguiente de la etapa n, donde: (n = 1, 2, 3, 4)

 Estado: sn : lugar donde se encuentra en la etapa n

 Ruta a seleccionar: A – x1 – x2 – x3 – x4, donde x4 = 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 f4 (s4), f3 (s3), f2 (s2) y f1 (s1)

 Función recursiva: fn(sn , xn)= cs x + fn+1 *(xn)


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 x4 = J y su estado actual s4 puede ser H o I, de
manera que su último tramo es desde s4 hacia J. Por lo tanto, f 4*(s 4) = f(s4 , 4J) = cs 4J

f4(s4 ,x4)= cs4x4 Solución óptima


s4 x4 = J f4*(s4) x4*
H J 3 J
I J 4 J

Etapa 3:

f3(s3 ,x3)= cs3x3 + f4*(x3) Solución óptima


s3 x3 = H x3 = I f3*(s3) x3*
E 1+3=4 4+4=8 4 H
F 6+3=9 3+4=7 7 I
G 3+3=6 3+4=7 6 H

Etapa 2:

f2(s2 ,x2)= cs2x2 + f3*(x2) Solución óptima


s2 x2 =E x2 =F x2 =G f2*(s2) x2*
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:

f1(s1 ,x1)= cs1x1 + f2*(x1) Solución óptima


s1 x1 =B x1 =C x1 =D f1*(s1) x1*
A 2+11=13 4+7=11 3+8=11 11 CoD

Interpretación:

Costo total =11 Ruta1: A-C-E-H-J, Ruta2: A-D-E-H-J, Ruta3: A-D-F-I-J

Ing. Manuel Sánchez Terán


4

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