0% encontró este documento útil (0 votos)
209 vistas8 páginas

Programación Dinámica Determinística

Este documento introduce la programación dinámica determinística. Explica que la programación dinámica resuelve problemas dividiéndolos en subproblemas más pequeños. Describe que los cálculos se hacen de forma recursiva, ya sea hacia adelante o hacia atrás. También detalla los elementos clave de un problema de programación dinámica como etapas, estados, variables de decisión y funciones recursivas. Finalmente, presenta las características y un ejemplo de un problema de programación dinámica.

Cargado por

ßrayan Arce
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
209 vistas8 páginas

Programación Dinámica Determinística

Este documento introduce la programación dinámica determinística. Explica que la programación dinámica resuelve problemas dividiéndolos en subproblemas más pequeños. Describe que los cálculos se hacen de forma recursiva, ya sea hacia adelante o hacia atrás. También detalla los elementos clave de un problema de programación dinámica como etapas, estados, variables de decisión y funciones recursivas. Finalmente, presenta las características y un ejemplo de un problema de programación dinámica.

Cargado por

ßrayan Arce
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 8

PROGRAMACIÓN DINAMICA

DETERMINÍSTICA

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.

Ing. Manuel 1
Sánchez Terán
INVESTIGACION DE
OPERACIONES II

 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
2 Sánchez Terán
 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 x2 x3 s4 x4
s2
s3
f4(s4 , x4)
f3(s3 ,
f2(s2 , x3 )

f1(s1 , x1) x2 )

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 nlos valores que pueda
n n n adoptar
n x al calcular su propia f (s , x ), y
n
sea f *(s ) el valor mínimo correspondiente a todos los fn(sn, xn). Entonces:

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


n

fn(sn , x *) 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.
 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 4 1
6 4
sistema de caminos, si se 2
H
encuentra inicialmente en el 3
6
3

nodo A, encontrar la trayectoria A


4
C
2
F J
más económica para llegar al 4 3
4
nodo J considerando que los 3 I
valores que se encuentran en 4 3
1 3
las ramas representan los D 5
G
costos de trasladarse de un
nodo a otro.

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
1 f *(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
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
4 4 tramo
4 4 es desde s4 hacia
4J
J. Por lo tanto, f *(s ) = f(s , J) = cs

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

También podría gustarte