PROGRAMACION_DINAMICA

15
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

Transcript of PROGRAMACION_DINAMICA

Page 1: PROGRAMACION_DINAMICA

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

Page 2: PROGRAMACION_DINAMICA

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

Page 3: PROGRAMACION_DINAMICA

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)

Page 4: PROGRAMACION_DINAMICA

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

Page 5: PROGRAMACION_DINAMICA

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

Page 6: PROGRAMACION_DINAMICA

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.

Page 7: PROGRAMACION_DINAMICA

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

Page 8: PROGRAMACION_DINAMICA

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

Page 9: PROGRAMACION_DINAMICA

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)

Page 10: PROGRAMACION_DINAMICA

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

Page 11: PROGRAMACION_DINAMICA

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.

Page 12: PROGRAMACION_DINAMICA

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:

Page 13: PROGRAMACION_DINAMICA

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)

Page 14: PROGRAMACION_DINAMICA

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.)

Page 15: PROGRAMACION_DINAMICA

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.