Post on 28-Dec-2015
Simulación
Módulo 1: Programación Dinámica
Elaborado por: Israel De la Cruz Madrigal 1
1 Programación Dinámica
La programación dinámica, según Hillier y Lieberman (2010), es una técnica matemática
útil para la toma de decisiones secuenciales interrelacionadas. Proporciona un procedimiento
sistemático para determinar la combinación óptima de decisiones. En contraste con la
programación lineal, no cuenta con una formulación matemática estándar “del” problema, sino
que se trata de un enfoque de tipo general para solucionar problemas; además, las ecuaciones
específicas que se usan deben ajustarse a la situación particular.
De acuerdo a Taha (2012), la idea principal de la programación dinámica es descomponer
el problema en subproblemas (más manejables). Los cálculos se realizan entonces recursivamente
donde la solución óptima de un subproblema se utiliza como dato de entrada al siguiente
problema. La solución para todo el problema está disponible cuando se soluciona el último
subproblema. La forma en que se realizan los cálculos recursivos depende de cómo se
descomponga el problema original. En particular, normalmente los subproblemas están
vinculados por restricciones comunes. La factibilidad de estas restricciones comunes se mantiene
en todas las iteraciones.
1.1 Características de los problemas de programación dinámica
A continuación se presentan características básicas que, según Hillier y Lieberman
(2010), distinguen a los problemas de programación dinámica:
a) El problema se puede dividir en etapas, cada una de las cuales requiere de una
política de decisión.
b) Cada etapa tiene cierto número de estados asociados con su inicio. En general, los
estados son las distintas condiciones posibles en las que se puede encontrar el sistema
en cada etapa del problema. El número de estados puede ser finito o infinito.
c) El efecto de la política de decisión en cada etapa es transformar el estado actual en un
estado asociado con el inicio de la siguiente etapa, quizá según una distribución de
probabilidad.
d) El procedimiento de solución está diseñado para encontrar una política óptima para
manejar el problema completo, es decir, una receta para elaborar la política de
Simulación
Módulo 1: Programación Dinámica
Elaborado por: Israel De la Cruz Madrigal 2
decisión óptima para cada etapa en cada uno de los estados posibles. En cualquier
problema, la programación dinámica proporciona este tipo de receta política sobre
qué hacer en todas las circunstancias posibles (a esto se debe que la decisión real que
se toma al llegar a un estado en particular se llama política de decisión). Proporcionar
esta información adicional, en vez de sólo especificar una solución óptima —
secuencia óptima de decisiones—, puede ser muy valioso en muchas situaciones que
incluyen el análisis de sensibilidad.
e) Dado el estado actual, una política óptima para las etapas restantes es independiente
de la política adoptada en etapas anteriores. Por tanto, la decisión inmediata óptima
depende sólo del estado actual y no de cómo se llegó ahí. Éste es el principio de
optimalidad de la programación dinámica. En general, en los problemas de
programación dinámica, el conocimiento del estado actual del sistema expresa toda la
información sobre su comportamiento anterior, información que es necesaria para
determinar la política óptima de ahí en adelante. Un problema que carezca de esta
propiedad no se puede formular como un problema de programación dinámica.
f) El procedimiento de solución comienza cuando se determina la política óptima para
la última etapa. La política óptima para la última etapa prescribe la política óptima de
decisión para cada estado posible en esa etapa. Es común que la decisión de este
problema de una etapa sea trivial.
g) Se dispone de una relación recursiva que identifica la política óptima para la etapa n,
dada la política óptima para la etapa n + 1. La forma precisa de la relación recursiva
difiere de un problema a otro de programación dinámica, pero se usará una notación
análoga como se resume a continuación:
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).
fn(sn, xn ) = Contribución de los estados n, n + 1,..., N a la función objetivo si
el sistema se encuentra en el estado sn en la etapa n, la decisión
Simulación
Módulo 1: Programación Dinámica
Elaborado por: Israel De la Cruz Madrigal 3
inmediata es xn, y en adelante se toman decisiones óptimas.
f *n(sn) = fn(sn, xn*). La relación recursiva siempre tendrá la forma:
fn*(sn) = máx{fn (sn, xn)} o fn* (sn) = mín{fn (sn, xn)}, donde fn(sn,
xn) se escribe en términos de sn, xn, f *n+1 (sn+1) y tal vez alguna
medida de la contribución inmediata de xn a la función objetivo.
Lo que hace que la expresión de f*n (sn) sea una relación
recursiva es la inclusión de f*n+1(sn+ 1), en el lado derecho, de
manera que f*n (sn) está definida en términos de f*n+1(sn+1).
La relación recursiva recurre constantemente a las etapas
posteriores a medida que se trabaja hacia atrás una etapa a la
vez. Cuando el número de la etapa actual n disminuye su valor
en 1, la nueva función f*n (sn) se obtiene mediante el uso de la
función f *n +1(sn + 1) que se obtuvo en la iteración anterior;
después, el proceso se repite cada nueva iteración.
h) Cuando se usa esta relación recursiva, el procedimiento de solución comienza al final
y se mueve hacia atrás etapa por etapa para encontrar cada vez la política óptima para
esa etapa hasta que encuentra la política óptima desde la etapa inicial. Esta política
óptima lleva de inmediato a una solución óptima para el problema completo, es decir,
x*1 para el estado inicial s1, después x*2 para el estado s2 que resulta, luego x*3 para
el estado s3 que se obtiene, y así sucesiva mente hasta x*N para el estado sN
resultante.
Para la mayoría de los problemas de programación dinámica, se obtiene una tabla como la
siguiente para cada etapa (n = N, N - 1,..., 1).
Tabla 1.1.- Etapa (N) para el estado n. (Hillier y Lieberman, 2010)
Simulación
Módulo 1: Programación Dinámica
Elaborado por: Israel De la Cruz Madrigal 4
Cuando se obtiene esta tabla de la etapa inicial (n = 1), el problema queda resuelto. Como
se conoce el estado de la etapa inicial, la primera decisión está especificada por x*1 en esta tabla.
El valor óptimo de las otras variables de decisión queda, a su vez, especificado por las otras
tablas según el estado del sistema que se obtiene al tomar la decisión anterior.
1.2 Modelos de Programación Dinámica
A continuación se describen los casos comúnmente ilustrados académicamente.
1.2.1 Problema de la ruta más corta.
Este problema está referido a encontrar la ruta óptima (ruta mínima o ruta más confiable),
para viajar desde un punto llamado nodo inicial o fuente hacia otro llamado nodo final o destino a
través de una red de caminos que los conecta dados los retornos (costos beneficios tiempo, etc),
asociados con los arcos o ramas de la red.
Figura 1.1. Problema típico de rutas. (Taha, 2012)
Los tres elementos básicos a seguir de este modelo son:
1. Definición de las etapas
2. Definición de las alternativas en cada etapa
3. Definición de los estados para cada etapa
1.2.2 Asignación de recursos con retornos tabulados
Simulación
Módulo 1: Programación Dinámica
Elaborado por: Israel De la Cruz Madrigal 5
El problema consiste en tomar la decisión más conveniente en función de lo que ésta
reditúa.
Tabla 1.2. Problema típico de asignación de recursos. (Hillier y Lieberman, 2010)
1.2.3 Modelo de la mochila/equipo de vuelo/carga de contenedor
El modelo de la mochila tiene que ver clásicamente con el hecho de determinar los
artículos más valiosos que una persona carga en una mochila. El problema representa un modelo
de asignación de recursos general en el cual se utilizan recursos limitados por varias actividades
económicas. El objetivo es maximizar el rendimiento total.
1.2.4 Modelo de inversión
Para este tipo de problemas se hace el análisis de opciones de inversión en distintos
tiempos con diferentes rendimientos. Lo que se busca es obtener el rendimiento máximo de
inversión.
1.3 Programación dinámica determinística
Se le conoce como problema con enfoque determinístico porque el estado de la siguiente
etapa está determinado por completo por el estado y la política de decisión de la etapa actual.
(Hillier y Lieberman, 2010)
En la etapa n el proceso está en algún estado sn. Al tomar la decisión xn se mueve a algún
estado sn+1 en la etapa n + 1. La contribución a la función objetivo de ese punto en adelante se
calculó como f *n+1(sn+1). La política de decisión xn también contribuye a la función objetivo. Al
Simulación
Módulo 1: Programación Dinámica
Elaborado por: Israel De la Cruz Madrigal 6
combinar estas dos cantidades en la forma apropiada se obtiene fn(sn, xn), la contribución de la
etapa n en adelante. De la optimización respecto de xn se obtiene entonces f *n(sn) = fn(sn, xn*).
Una vez de terminados xn* y f *n(sn) para cada valor posible de sn, el procedimiento de solución
se mueve hacia atrás una etapa. (Ibíd.)
Figura 1.2. Estructura básica de programación dinámica determinística. (Hillier y
Lieberman, 2010)
Una manera de clasificar los problemas de programación dinámica determinística es con
base en la forma de la función objetivo. Por ejemplo, el objetivo puede ser minimizar la suma de
las contribuciones en cada etapa individual o maximizar esa suma, o bien minimizar el producto
de los términos, etc. Otra clasificación se puede hacer en términos de la naturaleza del conjunto
de estados en las respectivas etapas. En particular, los estados sn pueden estar representa dos por
una variable de estado discreta o por una variable de estado continua, o tal vez se requiera un
vector de estado (más de una variable). De manera similar, las variables de decisión (x1, x2,...,
xN) también pueden ser discretas o continuas. (Ibíd.)
1.3.1 Ejemplo: Ruta más corta
Supongamos que deseamos seleccionar la ruta por carretera más corta entre dos ciudades.
La red en la figura 1.1 proporciona las posibles rutas, en millas, entre la ciudad de inicio en el
nodo 1 y la ciudad destino en el nodo 7. Las rutas pasan por ciudades intermedias designadas por
los nodos 2 a 6. (Taha, 2012)
Para resolver el problema, primero lo descomponemos en etapas como se indica mediante
las líneas de rayas verticales en la figura 1.3. A continuación, realizamos por separado los
cálculos en cada etapa.
Simulación
Módulo 1: Programación Dinámica
Elaborado por: Israel De la Cruz Madrigal 7
Figura 1.3. Descomposición del problema de la ruta más corta en etapas. (Taha, 2012)
Función recursiva para el problema: f n*(s) = mín fn(s, xn) = fn(s, xn*)
Tabla 1.3. Etapa 1 de solución. (Elaboración propia)
Xn
Sn
Fn(sn,xn) F*n(sn,xn) Xn*
7
5 9 9 7
6 6 6 7
Tabla 1.4. Etapa 2 de solución. (Elaboración propia)
Xn
Sn
Fn(sn,xn) F*n(sn,xn) Xn*
5 6
2 12+9 -- 21 5
3 8+9 9+6 17 6
4 7+9 13+6 16 5
Tabla 1.5. Etapa 3 de solución. (Elaboración propia)
Xn
Sn
Fn(sn,xn) F*n(sn,xn) Xn*
2 3 4
1 7+21 8+17 5+16 21 4
Simulación
Módulo 1: Programación Dinámica
Elaborado por: Israel De la Cruz Madrigal 8
Resumen de solución:
La ruta a seguir, con un total de 21 millas, es la siguiente:
De la etapa 3 marca del nodo 1 al nodo 4 (5 millas)
De la etapa 2 marca del nodo 4 al nodo 5 (7 millas)
De la etapa 1 marca del nodo 5 al nodo 7 (9 millas)
1.3.2 Ejemplo: Asignación de recursos con retornos tabulados
El gerente de ventas de una editorial de libros de texto universitarios tiene 6 agentes de
ventas puede asignar a tres regiones distintas del país. Ha decidido que cada región debe tener por
lo menos un agente y que cada agente individual debe quedar restringido a una de estas regiones,
pero ahora quiere determinar cuántos agentes debe asignar a las respectivas regiones con el fin de
maximizar las ventas. La siguiente tabla da el incremento estimado en las ventas de cada región
(en las unidades apropiadas) si se le asignan diferentes cantidades de agentes. Resuelva aplicando
PD:
Tabla 1.6. Ventas esperadas por número de agentes asignados a cada región.
Número
de
agentes
Región
1 2 3
1 35 21 28
2 48 42 41
3 70 56 63
4 89 70 75
La función recursiva es fn (Sn) =Max {fn(Xn,Sn) + f*n+1(Sn-Xn)}
Tabla 1.7. Etapa 1 de solución en región 3. (Elaboración propia)
Xn
Sn
Fn(sn,xn) F*n(sn,xn) Xn*
1 2 3 4
1 28 -- -- -- 28 1
2 28 41 -- -- 41 2
3 28 41 63 -- 63 3
4 28 41 63 75 75 4
Simulación
Módulo 1: Programación Dinámica
Elaborado por: Israel De la Cruz Madrigal 9
Tabla 1.8. Etapa 2 de solución en región 2. (Elaboración propia)
Xn
Sn
Fn(sn,xn) F*n(sn,xn) Xn*
1 2 3 4
2 21+28 -- -- -- 49 1
3 21+41 42+28 -- -- 70 2
4 21+63 42+41 56+28 -- 84 1, 3
5 21+75 42+63 56+41 70+28 105 2
Tabla 1.9. Etapa 3 de solución en región 1. (Elaboración propia)
Xn
Sn
Fn(sn,xn) F*n(sn,xn) Xn*
1 2 3 4
6 35+105 48+84 70+70 89+49 140 1, 3
Resumen de solución: Se presentan dos soluciones posibles con 140 ventas.
Alternativa 1: De la etapa 3 en región 1 con 1 vendedor (35 ventas)
De la etapa 2 en región 2 con 2 vendedores (42 ventas)
De la etapa 3 en región 3 con 3 vendedores (63 ventas)
Alternativa 2: De la etapa 3 en región 1 con 3 vendedores (70 ventas)
De la etapa 2 en región 2 con 2 vendedores (42 ventas)
De la etapa 3 en región 3 con 1 vendedor (28 ventas)
1.3.3 Ejemplo de modelo de la mochila/equipo de vuelo/carga de contenedor
Un barco de 4 toneladas puede cargarse con uno o más de tres artículos. La siguiente tabla
da el peso unitario, wi, en toneladas y el ingreso unitario en miles de dólares, ri, para el artículo i.
El objetivo es determinar la cantidad de unidades de cada artículo que maximizará el rendimiento
total. (Taha, 2012)
Simulación
Módulo 1: Programación Dinámica
Elaborado por: Israel De la Cruz Madrigal 10
Tabla 10. Ingreso por peso unitario. (Ibíd.)
Como el peso unitario wi y el peso máximo W son enteros, el estado xi asume sólo valores
enteros.
La función es fn (Sn) =Max {fn(Xn,Sn) + f*n+1(Sn-Xn)}
Tabla 1.11. Etapa 1 de solución artículo 3. (Elaboración propia)
Xn
Sn
Fn(sn,xn) F*n(sn,xn) Xn*
0 1 2 3 4
0 0 -- -- -- -- 0 0
1 0 14 -- -- -- 14 1
2 0 14 28 -- -- 28 2
3 0 14 28 42 -- 42 3
4 0 14 28 42 56 56 4
Tabla 1.12. Etapa 2 de solución artículo 2. (Elaboración propia)
Xn
Sn
Fn(sn,xn) F*n(sn,xn) Xn*
0 1
0 0+0 -- 0 0
1 0+14 -- 14 0
2 0+28 -- 28 0
3 0+42 47+0 47 1
4 0+56 47+14 61 1
Simulación
Módulo 1: Programación Dinámica
Elaborado por: Israel De la Cruz Madrigal 11
Tabla 1.13. Etapa 3 de solución artículo 1. (Elaboración propia)
Xn
Sn
Fn(sn,xn) F*n(sn,xn) Xn*
0 1 2
0 0+0 -- -- 0 0
1 0+14 14 0
2 0+28 31+0 31 1
3 0+47 31+14 47 0
4 0+61 31+28 62+0 62 2
Resumen de solución:
o De la etapa 3 en artículo 1 con 2 (35 ventas)
o De la etapa 2 en región 2 con 2 vendedores (42 ventas)
o De la etapa 3 en región 3 con 3 vendedores (63 ventas)
1.4 Programación Dinámica probabilística
Según Taha (2004), Hillier y Lieberman (2010), la programación dinámica probabilística
difiere de la determinística en que el estado de la siguiente etapa no está determinado por
completo por el estado y la política de decisión de la etapa actual. En su lugar, existe una
distribución de probabilidad para determinar cuál será el siguiente estado. Sin embargo, esta
distribución de probabilidad queda completamente determinada por el estado y la política de
decisión de la etapa actual. En el diagrama de la figura 1.4 se describe la estructura básica que
resulta para los problemas de programación dinámica probabilística.
Simulación
Módulo 1: Programación Dinámica
Elaborado por: Israel De la Cruz Madrigal 12
Figura 1.4. Estructura básica de programación dinámica probabilística. (Hillier y Lieberman,
2010)
1.4.1 Ejemplo de modelo de inversión
En este modelo de inversión, hay que suponer que se desea invertir $10,000 durante los 4 años
venideros. Hay 50% de probabilidades de que el dinero aumente al doble, 20% de probabilidades
de salir a mano y 30% de probabilidades de perder la cantidad invertida. Proponer una estrategia
óptima de inversión. (Taha, 2004)
Función recursiva:
Simulación
Módulo 1: Programación Dinámica
Elaborado por: Israel De la Cruz Madrigal 13
Tabla 1.14. Etapa 4 de solución. (Taha, 2004)
Simulación
Módulo 1: Programación Dinámica
Elaborado por: Israel De la Cruz Madrigal 14
Tabla 1.15. Etapa 3 de solución. (Taha, 2004)
Tabla 1.16. Etapa 2 de solución. (Ibíd.)
Tabla 1.17. Etapa 1 de solución. (Ibíd.)
Simulación
Módulo 1: Programación Dinámica
Elaborado por: Israel De la Cruz Madrigal 15
Entonces, la política óptima de inversión se puede resumir como sigue: como para y*i = xi
para i = 1 a 4, la solución óptima es invertir todos los fondos disponibles al iniciar cada año. Los
fondos acumulados al final de 4 años son 2.0736x1 =2.0736 ($10,000) = $20,736.
1.5 Problema de dimensionalidad en Programación Dinámica
En todos los modelos de PD presentados hasta ahora, el estado en cualquier etapa está
representado por un solo elemento. Por ejemplo, en el modelo de la mochila, la única restricción
es el peso del artículo. De manera más realista en este caso, el volumen de la mochila también
puede ser una restricción viable, en cuyo caso se dice que en cualquier etapa el estado es
bidimensional: peso y volumen. (Taha, 2012)
El aumento en la cantidad de variables de estado incrementa los cálculos en cada etapa.
Esto es particularmente evidente en cálculos tabulares de PD debido a que el número de filas en
cada tabla corresponde a todas las posibles combinaciones de las variables de estado. Esta
dificultad computacional en ocasiones se conoce en la literatura como el maleficio de
dimensionalidad.
1.6 Referencias bibliográficas
Hillier, Frederick S. y Lieberman, Gerald J. (2010). Introducción a la investigación de
operaciones. 9ª edición, McGRAW-HILL
Taha, Hamdy A. (2004). Investigación de operaciones. 7a edición, Pearson Educación.
Taha, Hamdy A. (2012). Investigación de operaciones. 9a edición, Pearson Educación.