1 Programacin Dinmica La programacin dinmica, segn Hillier y Lieberman (2010), es una tcnica matemtica til para la toma de decisiones secuenciales interrelacionadas. Proporciona un procedimiento sistemtico para determinar la combinacin ptima de decisiones. En contraste con la programacin lineal, no cuenta con una formulacin matemtica estndar del problema, sino que se trata de un enfoque de tipo general para solucionar problemas; adems, las ecuaciones especficas que se usan deben ajustarse a la situacin particular.
De acuerdo a Taha (2012), la idea principal de la programacin dinmica es descomponer el problema en subproblemas (ms manejables). Los clculos se realizan entonces recursivamente donde la solucin ptima de un subproblema se utiliza como dato de entrada al siguiente problema. La solucin para todo el problema est disponible cuando se soluciona el ltimo subproblema. La forma en que se realizan los clculos recursivos depende de cmo se descomponga el problema original. En particular, normalmente los subproblemas estn vinculados por restricciones comunes. La factibilidad de estas restricciones comunes se mantiene en todas las iteraciones.
1.1 Caractersticas de los problemas de programacin dinmica A continuacin se presentan caractersticas bsicas que, segn Hillier y Lieberman (2010), distinguen a los problemas de programacin dinmica:
a) El problema se puede dividir en etapas, cada una de las cuales requiere de una poltica de decisin. b) Cada etapa tiene cierto nmero 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 nmero de estados puede ser finito o infinito. c) El efecto de la poltica de decisin en cada etapa es transformar el estado actual en un estado asociado con el inicio de la siguiente etapa, quiz segn una distribucin de probabilidad. d) El procedimiento de solucin est diseado para encontrar una poltica ptima para manejar el problema completo, es decir, una receta para elaborar la poltica de Simulacin Mdulo 1: Programacin Dinmica Elaborado por: Israel De la Cruz Madrigal 2
decisin ptima para cada etapa en cada uno de los estados posibles. En cualquier problema, la programacin dinmica proporciona este tipo de receta poltica sobre qu hacer en todas las circunstancias posibles (a esto se debe que la decisin real que se toma al llegar a un estado en particular se llama poltica de decisin). Proporcionar esta informacin adicional, en vez de slo especificar una solucin ptima secuencia ptima de decisiones, puede ser muy valioso en muchas situaciones que incluyen el anlisis de sensibilidad. e) Dado el estado actual, una poltica ptima para las etapas restantes es independiente de la poltica adoptada en etapas anteriores. Por tanto, la decisin inmediata ptima depende slo del estado actual y no de cmo se lleg ah. ste es el principio de optimalidad de la programacin dinmica. En general, en los problemas de programacin dinmica, el conocimiento del estado actual del sistema expresa toda la informacin sobre su comportamiento anterior, informacin que es necesaria para determinar la poltica ptima de ah en adelante. Un problema que carezca de esta propiedad no se puede formular como un problema de programacin dinmica. f) El procedimiento de solucin comienza cuando se determina la poltica ptima para la ltima etapa. La poltica ptima para la ltima etapa prescribe la poltica ptima de decisin para cada estado posible en esa etapa. Es comn que la decisin de este problema de una etapa sea trivial. g) Se dispone de una relacin recursiva que identifica la poltica ptima para la etapa n, dada la poltica ptima para la etapa n + 1. La forma precisa de la relacin recursiva difiere de un problema a otro de programacin dinmica, pero se usar una notacin anloga como se resume a continuacin: N = Nmero de etapas. n = Etiqueta de la etapa actual (n = 1, 2,..., N). sn = Estado actual de la etapa n. xn = Variable de decisin de la etapa n. xn * = Valor ptimo de xn (dado sn). fn(sn, xn ) = Contribucin de los estados n, n + 1,..., N a la funcin objetivo si el sistema se encuentra en el estado sn en la etapa n, la decisin Simulacin Mdulo 1: Programacin Dinmica 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 relacin recursiva siempre tendr la forma: fn*(sn) = mx{fn (sn, xn)} o fn* (sn) = mn{fn (sn, xn)}, donde fn(sn, xn) se escribe en trminos de sn, xn, f *n+1 (sn+1) y tal vez alguna medida de la contribucin inmediata de xn a la funcin objetivo. Lo que hace que la expresin de f*n (sn) sea una relacin recursiva es la inclusin de f*n+1(sn+ 1), en el lado derecho, de manera que f*n (sn) est definida en trminos de f*n+1(sn+1). La relacin recursiva recurre constantemente a las etapas posteriores a medida que se trabaja hacia atrs una etapa a la vez. Cuando el nmero de la etapa actual n disminuye su valor en 1, la nueva funcin f*n (sn) se obtiene mediante el uso de la funcin f *n +1(sn + 1) que se obtuvo en la iteracin anterior; despus, el proceso se repite cada nueva iteracin. h) Cuando se usa esta relacin recursiva, el procedimiento de solucin comienza al final y se mueve hacia atrs etapa por etapa para encontrar cada vez la poltica ptima para esa etapa hasta que encuentra la poltica ptima desde la etapa inicial. Esta poltica ptima lleva de inmediato a una solucin ptima para el problema completo, es decir, x*1 para el estado inicial s1, despus 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 mayora de los problemas de programacin dinmica, 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)
Simulacin Mdulo 1: Programacin Dinmica 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 decisin est especificada por x*1 en esta tabla. El valor ptimo de las otras variables de decisin queda, a su vez, especificado por las otras tablas segn el estado del sistema que se obtiene al tomar la decisin anterior.
1.2 Modelos de Programacin Dinmica A continuacin se describen los casos comnmente ilustrados acadmicamente.
1.2.1 Problema de la ruta ms corta. Este problema est referido a encontrar la ruta ptima (ruta mnima o ruta ms confiable), para viajar desde un punto llamado nodo inicial o fuente hacia otro llamado nodo final o destino a travs 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 tpico de rutas. (Taha, 2012)
Los tres elementos bsicos a seguir de este modelo son: 1. Definicin de las etapas 2. Definicin de las alternativas en cada etapa 3. Definicin de los estados para cada etapa
1.2.2 Asignacin de recursos con retornos tabulados Simulacin Mdulo 1: Programacin Dinmica Elaborado por: Israel De la Cruz Madrigal 5
El problema consiste en tomar la decisin ms conveniente en funcin de lo que sta redita.
Tabla 1.2. Problema tpico de asignacin 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 clsicamente con el hecho de determinar los artculos ms valiosos que una persona carga en una mochila. El problema representa un modelo de asignacin de recursos general en el cual se utilizan recursos limitados por varias actividades econmicas. El objetivo es maximizar el rendimiento total.
1.2.4 Modelo de inversin Para este tipo de problemas se hace el anlisis de opciones de inversin en distintos tiempos con diferentes rendimientos. Lo que se busca es obtener el rendimiento mximo de inversin.
1.3 Programacin dinmica determinstica Se le conoce como problema con enfoque determinstico porque el estado de la siguiente etapa est determinado por completo por el estado y la poltica de decisin de la etapa actual. (Hillier y Lieberman, 2010)
En la etapa n el proceso est en algn estado sn. Al tomar la decisin xn se mueve a algn estado sn+1 en la etapa n + 1. La contribucin a la funcin objetivo de ese punto en adelante se calcul como f *n+1(sn+1). La poltica de decisin xn tambin contribuye a la funcin objetivo. Al Simulacin Mdulo 1: Programacin Dinmica Elaborado por: Israel De la Cruz Madrigal 6
combinar estas dos cantidades en la forma apropiada se obtiene fn(sn, xn), la contribucin de la etapa n en adelante. De la optimizacin 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 solucin se mueve hacia atrs una etapa. (Ibd.)
Figura 1.2. Estructura bsica de programacin dinmica determinstica. (Hillier y Lieberman, 2010)
Una manera de clasificar los problemas de programacin dinmica determinstica es con base en la forma de la funcin 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 trminos, etc. Otra clasificacin se puede hacer en trminos 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 (ms de una variable). De manera similar, las variables de decisin (x1, x2,..., xN) tambin pueden ser discretas o continuas. (Ibd.)
1.3.1 Ejemplo: Ruta ms corta Supongamos que deseamos seleccionar la ruta por carretera ms 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 lneas de rayas verticales en la figura 1.3. A continuacin, realizamos por separado los clculos en cada etapa. Simulacin Mdulo 1: Programacin Dinmica Elaborado por: Israel De la Cruz Madrigal 7
Figura 1.3. Descomposicin del problema de la ruta ms corta en etapas. (Taha, 2012)
Funcin recursiva para el problema: f n*(s) = mn fn(s, xn) = fn(s, xn*)
Tabla 1.3. Etapa 1 de solucin. (Elaboracin 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 solucin. (Elaboracin propia) Xn
Simulacin Mdulo 1: Programacin Dinmica Elaborado por: Israel De la Cruz Madrigal 8
Resumen de solucin: 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: Asignacin 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 pas. Ha decidido que cada regin debe tener por lo menos un agente y que cada agente individual debe quedar restringido a una de estas regiones, pero ahora quiere determinar cuntos 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 regin (en las unidades apropiadas) si se le asignan diferentes cantidades de agentes. Resuelva aplicando PD: Tabla 1.6. Ventas esperadas por nmero de agentes asignados a cada regin. Nmero de agentes Regin 1 2 3 1 35 21 28 2 48 42 41 3 70 56 63 4 89 70 75
La funcin recursiva es fn (Sn) =Max {fn(Xn,Sn) + f*n+1(Sn-Xn)}
Tabla 1.7. Etapa 1 de solucin en regin 3. (Elaboracin propia) Xn
Resumen de solucin: Se presentan dos soluciones posibles con 140 ventas. Alternativa 1: De la etapa 3 en regin 1 con 1 vendedor (35 ventas) De la etapa 2 en regin 2 con 2 vendedores (42 ventas) De la etapa 3 en regin 3 con 3 vendedores (63 ventas)
Alternativa 2: De la etapa 3 en regin 1 con 3 vendedores (70 ventas) De la etapa 2 en regin 2 con 2 vendedores (42 ventas) De la etapa 3 en regin 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 ms de tres artculos. La siguiente tabla da el peso unitario, wi, en toneladas y el ingreso unitario en miles de dlares, ri, para el artculo i. El objetivo es determinar la cantidad de unidades de cada artculo que maximizar el rendimiento total. (Taha, 2012)
Simulacin Mdulo 1: Programacin Dinmica Elaborado por: Israel De la Cruz Madrigal 10
Tabla 10. Ingreso por peso unitario. (Ibd.)
Como el peso unitario wi y el peso mximo W son enteros, el estado xi asume slo valores enteros. La funcin es fn (Sn) =Max {fn(Xn,Sn) + f*n+1(Sn-Xn)}
Tabla 1.11. Etapa 1 de solucin artculo 3. (Elaboracin propia) Xn
Resumen de solucin: o De la etapa 3 en artculo 1 con 2 (35 ventas) o De la etapa 2 en regin 2 con 2 vendedores (42 ventas) o De la etapa 3 en regin 3 con 3 vendedores (63 ventas)
1.4 Programacin Dinmica probabilstica Segn Taha (2004), Hillier y Lieberman (2010), la programacin dinmica probabilstica difiere de la determinstica en que el estado de la siguiente etapa no est determinado por completo por el estado y la poltica de decisin de la etapa actual. En su lugar, existe una distribucin de probabilidad para determinar cul ser el siguiente estado. Sin embargo, esta distribucin de probabilidad queda completamente determinada por el estado y la poltica de decisin de la etapa actual. En el diagrama de la figura 1.4 se describe la estructura bsica que resulta para los problemas de programacin dinmica probabilstica. Simulacin Mdulo 1: Programacin Dinmica Elaborado por: Israel De la Cruz Madrigal 12
Figura 1.4. Estructura bsica de programacin dinmica probabilstica. (Hillier y Lieberman, 2010)
1.4.1 Ejemplo de modelo de inversin En este modelo de inversin, hay que suponer que se desea invertir $10,000 durante los 4 aos 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 inversin. (Taha, 2004) Funcin recursiva:
Simulacin Mdulo 1: Programacin Dinmica Elaborado por: Israel De la Cruz Madrigal 13
Tabla 1.14. Etapa 4 de solucin. (Taha, 2004)
Simulacin Mdulo 1: Programacin Dinmica Elaborado por: Israel De la Cruz Madrigal 14
Tabla 1.15. Etapa 3 de solucin. (Taha, 2004)
Tabla 1.16. Etapa 2 de solucin. (Ibd.)
Tabla 1.17. Etapa 1 de solucin. (Ibd.)
Simulacin Mdulo 1: Programacin Dinmica Elaborado por: Israel De la Cruz Madrigal 15
Entonces, la poltica ptima de inversin se puede resumir como sigue: como para y*i = xi para i = 1 a 4, la solucin ptima es invertir todos los fondos disponibles al iniciar cada ao. Los fondos acumulados al final de 4 aos son 2.0736x1 =2.0736 ($10,000) = $20,736.
1.5 Problema de dimensionalidad en Programacin Dinmica 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 restriccin es el peso del artculo. De manera ms realista en este caso, el volumen de la mochila tambin puede ser una restriccin 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 clculos en cada etapa. Esto es particularmente evidente en clculos tabulares de PD debido a que el nmero 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 bibliogrficas Hillier, Frederick S. y Lieberman, Gerald J. (2010). Introduccin a la investigacin de operaciones. 9 edicin, McGRAW-HILL
Taha, Hamdy A. (2004). Investigacin de operaciones. 7a edicin, Pearson Educacin.
Taha, Hamdy A. (2012). Investigacin de operaciones. 9a edicin, Pearson Educacin.