programacindinmica_final

21
UNIDAD V PROGRAMACIÓN DINÁMICA La programación dinámica es una técnica matemática útil que resuelve una serie de decisiones secuenciales, cada una de las cuales afecta las decisiones futuras. Proporciona un procedimiento sistemático para determinar la combinación de decisiones que maximiza la efectividad total 2012 Elmer Gabriel Chan Pech 30/11/2012

Upload: luis-fernando-garcia

Post on 25-Dec-2015

215 views

Category:

Documents


2 download

DESCRIPTION

Optimizacion

TRANSCRIPT

UNIDAD V

PROGRAMACIÓN DINÁMICA

La programación dinámica es una técnica matemática útil que resuelve una serie de decisiones secuenciales, cada una de las cuales afecta las decisiones futuras. Proporciona un procedimiento sistemático para determinar la combinación de decisiones que maximiza la

efectividad total

2012

Elmer Gabriel Chan Pech

30/11/2012

Programación dinámica

1

5.1 Introducción a la programación dinámica (PD)

La PD fue desarrollada por Richard Bellman y G B Dantzing. Sus importantes

contribuciones sobre esta técnica cuantitativa de toma de decisiones se publicaron en

1957 en un libro del primer autor denominado “Dynamic Programming” (Princeton

University Press. Princeton, New Jersey) (Domínguez, 2000).

Inicialmente a la PD se le denominó programación lineal estocástica ó problemas de

programación lineal con incertidumbre.

La programación dinámica (PD) determina la solución óptima de un problema de

n variables descomponiéndola en n etapas, con cada etapa incluyendo un subproblema

de una sola variable. La principal contribución de la PD es el principio de optimalidad, el

cual establece que una política óptima consiste de subpolíticas óptimas, un marco de

referencia para descomponer el problema en etapas.

La programación dinámica es una técnica que se puede aplicar para resolver muchos

problemas de optimización. La mayor parte de las veces, la programación dinámica

obtiene soluciones con un avance en reversa, desde el final de un problema hacia el

principio con lo que un problema grande y engorroso se convierte en una serie de

problemas más pequeños y más tratables.

Así, la programación dinámica se puede definir como una técnica matemática útil que

resuelve una serie de decisiones secuenciales, cada una de las cuales afecta las

decisiones futuras. Proporciona un procedimiento sistemático para determinar la

combinación de decisiones que maximiza la efectividad total (Taha, 2004).

En contraste para el problema de programación dinámica, trata de un enfoque de tipo

parcial para la solución de problemas y las ecuaciones específicas que se usan se

deben desarrollar para que represente cada situación individual.

5.2 Características de los problemas de programación dinámica

Las características de la programación dinámica se emplean para formular e identificar

la estructura de los problemas de este tipo.

A continuación se presentarán estas características básicas que distinguen a los

problemas de programación dinámica.

1. El problema se puede dividir en etapas que requieren una política de decisión en

cada una de ellas. En muchos problemas de programación dinámica, la etapa es

la cantidad de tiempo que pasa desde el inicio del problema, en ciertos casos no

se necesitan decisiones en cada etapa.

Programación dinámica

2

2. Cada etapa tiene un cierto número de estados asociados a ella. Por estado se

entiende la información que se necesita en cualquier etapa para tomar una

decisión óptima.

3. El efecto de la política de decisión en cada etapa es transformar el estado actual

en un estado asociado con la siguiente etapa (tal vez de acuerdo a una

distribución de probabilidad).

4. El procedimiento de solución está diseñado para encontrar una política óptima

para el problema completo, es decir, una receta para las decisiones de la política

óptima en cada etapa para cada uno de los estados posibles.

5. Dado el estado actual, una política óptima para las etapas restantes es

independiente de la política adoptada en etapas anteriores. (este es el principio

de óptimalidad para la programación dinámica). En general en los problemas de

PD, el conocimiento del estado actual del sistema expresa toda la información

sobre su comportamiento anterior, y esta información es necesario para

determinar la política óptima de ahí en adelante.

6. El procedimiento de solución se inicia al encontrar 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.

7. Se dispone de una relación recursiva que indica la política óptima para la etapa

dada la política optima para la etapa (n+1)

A pesar de esta característica, los problemas que pueden ser atacados con la PD

tienen otras dos propiedades adicionales:

Sólo un número reducido de variables se debe conocer en cualquier etapa con el

fin de describir al problema. En efecto, los problemas de la PD se caracterizan

por la dependencia de los resultados derivados de decisiones sobre un número

reducido de variables.

El resultado de una decisión en cualquier etapa altera los valores numéricos de

un número reducido de variables relevantes al problema. La decisión actual ni

incrementa ni decrementa el número de factores sobre los cuales depende el

resultado. Así, para la siguiente decisión en la secuencia, el mismo número de

variables se considera (Hillier, 1991).

En un problema de PD una serie de decisiones se deben tomar en una secuencia dada.

Cuando esto se cumple, una política óptima se debe perseguir. No importa cuáles

fueron los estados y decisiones iniciales, las decisiones restantes constituirán una

política óptima con respecto al estado resultante de la primera decisión.

Programación dinámica

3

Ejemplo 5.2:

El problema de la diligencia.

Un problema construido especialmente por el Profesor H M Wagner de la Universidad

de Stanford para ilustrar las características e introducir la terminología de la PD es el

problema de la diligencia.

Este problema se refiere a un vendedor mítico que tuvo que viajar hacia el oeste

utilizando como medio de transporte una diligencia, a través de tierras hostiles, en el

último cuarto del siglo XIX. Aún cuando su punto de partida y destino eran fijos, tenía un

número considerable de opciones para elegir qué estados (o territorios que

posteriormente se convirtieron en estados) recorrer en su ruta.

En la figura 5.1 se muestran las rutas posibles, en donde cada estado se representa por

un bloque numerado.

Figura 5.1. Sistema de caminos para el problema de la diligencia.

De la ilustración se puede observar que el viaje se puede realizar en 4 etapas,

partiendo del estado 1 hasta su destino en el estado 10:

Primera etapa: estados 1 y (2, 3, 4)

Segunda etapa: estados (2, 3,4) y (5, 6, 7)

Tercera etapa: estados (5,6,7) y (8, 9)

Cuarta etapa: estado (8,9) y10

Puesto que se ofrecían seguros de vida a los pasajeros de las diligencias, este

vendedor no quiso dejar pasar la oportunidad y se propuso determinar la ruta más

segura. Como el costo de cada póliza se basaba en una evaluación cuidadosa de la

seguridad de ese recorrido, la ruta más segura debía ser aquella con la póliza de

seguro de vida más barata. El costo de la póliza estándar para el viaje en diligencia del

Programación dinámica

4

estado i al j se muestra en figura 5.1 como una etiqueta en los caminos (flechas) para ir

de un estado a otro.

Así la pregunta central es: ¿cuál ruta (conjunto de caminos) minimiza el costo total de la

póliza?, para contestar esta pregunta es necesario hacer notar que, el procedimiento

poco inteligente de seleccionar el camino más barato ofrecido en cada etapa sucesiva

no necesariamente conduce a una decisión óptima global.

La PD parte de una pequeña porción del problema y encuentra la solución óptima para

ese problema más pequeño. Entonces gradualmente agranda el problema, hallando la

solución óptima en curso a partir de la anterior, hasta que se resuelve por completo el

problema original.

A continuación se explican los detalles involucrados en la implementación de esta

filosofía general.

La idea es calcular el costo mínimo (acumulativo) de la póliza de seguros entre los dos

estados de cada etapa y después utilizar esos costos como datos de entrada para la

etapa inmediata siguiente.

CÁLCULOS PARA LA ETAPA 1

Considerando los estados asociados con la etapa 1, se puede ver que los estados 2, 3

y 4 están conectados cada uno con el estado inicial 1 por una sola flecha como se

puede apreciar en la figura 5.2. Por consiguiente, para la etapa 1 se tiene

Costo mínimo al estado 2 = 2 (desde el estado 1)

Costo mínimo al estado 3 = 4 (desde el estado 1)

Costo mínimo al estado 4 = 3 (desde el estado 1)

CÁLCULOS PARA LA ETAPA 2

Después se avanza a la etapa 2 para determinar los costos mínimos

(Acumulativos) para los estados 5, 6 y 7 como se aprecia en la figura 5.3.

Considerando primero al estado 5, se ve que existen tres alternativas; a saber (2,5),

(3,5), (4,5).

Figura 5.2 etapa 1: estados 2, 3,4 conectados con el estado inicial 1

Programación dinámica

5

Esta información, junto con los costos mínimos de los estados 2, 3 y 4 (figura 5.4)

determinan el costo mínimo (acumulativo) para el estado 5 como:

De forma similar para el estado 6 (figura 5.5), se tiene:

Finalmente para el estado 7 (figura 5.6), se tiene:

Figura 5.3 Etapa 2: estados 5, 6, 7 conectados con los estados 2, 3, 4.

Figura 5.4 etapa 2: Estados 5 conectado con los estados 2, 3, 4.

Figura 5.5 Etapa 2: Estados 6 conectado con los estados 2, 3, 4.

Programación dinámica

6

CÁLCULOS PARA LA ETAPA 3

Para los cálculos se toman los datos de la figura 5.7

CÁLCULOS PARA LA ETAPA 4

Para los cálculos se toman los datos de la figura 5.8

Figura 5.6 Etapa 2: Estados 7 conectados con los estados 2, 3, 4.

Figura 5.8 Etapa 4: Estados 10 conectados

con los estados 8, 9

Figura 5.7 Etapa 3: estados 8, 9 conectados con los estados 5, 6, 7.

Programación dinámica

7

Resumen de cálculos para las diferentes etapas

El costo mínimo total desde el estado 1 al estado 10 es de 11.

El estado 10 se puede alcanzar desde los estados 8 y 9.

Si se elige el estado 9, este proviene de haber elegido el estado 6, el cual a su vez de

haber elegido el estado 4 y finalmente el estado 1.

Es decir la ruta óptima es: 1, 4, 6, 9,10

Si se elige el estado 8, este proviene de haber elegido el estado 5, el cual a su vez de

haber elegido el estado 4 o el 3.

Si se elige el estado 4, la ruta óptima es: 1, 4, 5, 8,10.

Si se elige el estado 3, la ruta óptima es: 1, 3, 5, 8,10

Por lo tanto existen 3 rutas óptimas a elegir ya que la tres implican el costo mínimo total

que es 11.

5.3 Formalización de los cálculos de programación dinámica

Se mostrará ahora la forma en la cual se pueden expresar matemáticamente los

cálculos recursivos de la PD.

Con la condición inicial . La ecuación indica que las distancias más cortas

en la etapa i se debe expresar en función del siguiente nodo . En la

terminología de la programación dinámica, a 𝑥𝑖 se le llama estado del sistema en la

etapa i.

i=1, 2,3…n

Programación dinámica

8

De hecho se considera que el estado del sistema en la etapa i es la información que

enlaza, conecta o vincula las etapas, de tal modo que se pueda tomar las decisiones

para las etapas restantes sin volver a examinar cómo se llegó a las decisiones de las

etapas anteriores. La definición correcta de estado permite considerar por separado

cada estado, y garantiza que la solución sea factible para todos los estados.

5.4 PROGRAMACIÓN DINÁMICA DETERMINÍSTICA (PDD)

En este caso se profundiza sobre el enfoque de programación dinámica en los

problemas determinísticos, en donde el estado en la siguiente etapa está

completamente determinado por el estado y la política de decisión de la etapa actual. El

caso probabilístico en el que existe una distribución de probabilidad para el valor

posible del siguiente estado este se analizara más adelante.

5.4.1 Aplicaciones de programación dinámica determinística

Algunas de las aplicaciones de programación dinámica determinística son:

Modelo de Volumen-Carga “Mochila”

Modelo del tamaño de la fuerza de trabajo

Modelo de reposición de equipos

Modelo de inversión

Modelos de inventarios

A continuación se presentarán algunas de estas aplicaciones, cada una de las cuales

muestra una nueva idea en la puesta en práctica de la PD.

A medida que se presente cada aplicación, es importante prestar atención a los tres

elementos básicos de un modelo de PD:

Definición de las etapas

Definición de las políticas o alternativas

Definición de los estados para cada etapa

De los tres elementos, la definición del estado por lo común es la más sutil.

Las aplicaciones que se presentan a continuación muestran que la definición de estado

varía dependiendo de la situación que se está modelando.

Sin embargo, a medida que se presente cada aplicación, resultará útil considerar las

siguientes preguntas:

¿Qué relaciones unen las etapas?

Programación dinámica

9

¿Qué información se necesita para tomar decisiones factibles en la etapa actual,

sin reexaminar las decisiones que se tomaron en las etapas anteriores?

La experiencia indica que la comprensión del concepto de estado se puede mejorar

cuestionando la “validez” de la forma que dicta la intuición.

Se sugiere intentar una definición de estado diferente que pueda parecer “más lógica” y

utilizarla en los cálculos recursivos.

Con el tiempo, se descubrirá que las definiciones que se presentan en las siguientes

aplicaciones proporcionan la forma correcta para resolver el problema.

Mientras tanto, el proceso mental propuesto deberá mejorar la comprensión del

concepto de estado.

5.4.2 Modelo del tamaño de la fuerza de trabajo

En algunos proyectos de construcción, las contrataciones y los despidos se ejercen

para mantener un número de empleados que satisfaga las necesidades del proyecto.

Debido a que las actividades tanto de contratación como de despido incurren en costos

adicionales, ¿cómo se debe mantener el número de empleados a todo lo largo de la

vida del proyecto?

Supóngase que el proyecto se ejecutara durante el lapso de n semanas, y que la fuerza

de trabajo mínima requiere en la semana i es 𝑏𝑖. Sin embargo, de acuerdo con los

parámetros de costos, podría ser más económico dejar que fluctué el tamaño de la

fuerza de trabajo. Como 𝑥𝑖 es la cantidad de trabajadores empleados en la semana i, en

esa semana i se puede incurrir en dos costos: 𝐶1(𝑥𝑖 − 𝑏1), el costo de mantener el

exceso de personal; 𝑥𝑖 − 𝑏𝑖 𝑦 𝐶2(𝑥𝑖 − 𝑥𝑖−1 ), el costo de contratar, 𝑥𝑖 − 𝑥𝑖−1 trabajadores

adicionales.

Los elementos del modelo de programación dinámica se definen como sigue:

Programación dinámica

10

Ejemplo 5.4-2:

Un contratista constructor estima que la fuerza de trabajo necesaria durante las

próximas 5 semanas será de 5, 7, 8, 4 y 6 trabajadores, respectivamente. La mano de

obra en exceso que se conserve le costara $300 por trabajador semanalmente, y la

nueva contratación en cualquiera semana tendrá un costo fijo de $400 más $200 por

trabajador y por semana.

Los datos del problema se resumen como sigue:

Programación dinámica

11

5.4.3 Modelo de reposición de equipo

Mientras más tiempo este en servicio una máquina, su costo de mantenimiento es

mayor y su productividad menor. Cuando la máquina llegue a cierta antigüedad será

más económico reemplazarla. Es así que entonces el problema se reduce a

determinación de la antigüedad mas económica de una maquina.

Programación dinámica

12

Supóngase que se estudia el problema de reposición de la máquina durante un lapso

de n años. Al inicio de cada año, se debe decidir si mantener la maquina en servicio por

un año más o reemplazarla por una nueva. Sean r(t), c(t), los ingresos y el costos de

operación anuales, y s(t) el valor de recuperación de una maquina con t años de

antigüedad. El costo de adquisición de una máquina nueva en cualquier año es I.

Los elementos del modelo de programación dinámica son:

Ejemplo 5.4-3

Una empresa debe determinar la política óptima, durante los próximos 4 años (n=4), de

reemplazo de una máquina, que en la actualidad tiene 3 años. La tabla 5.1 muestra los

datos del problema. La empresa establece que toda máquina que tenga 6 años de edad

debe reemplazarse. El costo de una maquina nueva es $100,000.

Tabla 5.1. Años con relación a sus utilidades, costos y valor de rescate

Programación dinámica

13

La determinación de los valores factibles de la edad de la máquina en cada etapa

requiere de algo de ingenio. En la figura 5.9 se resume la red que representa el

problema. Al iniciar el año 1 se tiene una máquina de 3 años de antigüedad. Se puede

reemplazarla (R) o conservarla (k) durante otro año. Al inicia el año 2, si hay reemplazo,

la maquina nueva tendrá 1 año de edad; en caso contrario, la máquina actual tendrá 4

años de antigüedad. Los mismos razonamientos se aplican al iniciar los años 2 o 4. Si

se reemplaza una maquina con 1 año de antigüedad al iniciar los años 2 y 3, su

reposición tendrá 1 año de antigüedad al inicio del año siguiente. También, al iniciar el

año 4, se debe reemplazar una máquina con 6 años de servicio, y al final del año 4 se

desechan las máquinas, con recuperación S.

La red indica que al comenzar el año 2, las edades posibles de las maquinas son de 1 4

años.

Para el comienzo del año 3, las antigüedades posibles son 1, 2 y 5 años, y para el

comienzo del año 4, las antigüedades posibles son 1, 2, 3 y 6 años.

La solución de la red de la figura 5.9 equivale a determinar la ruta más larga, del inicio

del año 1 al final del año 4. Se iniciara la forma tabular para resolver el problema. Todos

los valores son en miles de $. Nótese que si se reemplaza una máquina en el año 4 (es

decir, al final del horizonte de planeación) los ingresos incluirán el valor de

recuperación, s(t), de la máquina reemplazada y el valor de recuperación, s(1) de la

máquina de repuesto.

Figura 5.9 Representación de la edad de la maquina en función del año de decisión, en el ejemplo 5.2.1-2

Programación dinámica

14

La figura 5.10 resume el orden en el cual se obtiene la solución óptima. Al iniciar el año

1, la decisión optima para t=3 es reemplazar la maquina. Así, la máquina nueva tendrá

1 año al iniciar el año 2, y t=1 al iniciar el año 2 determina conservarla o reemplazarla.

Si se reemplaza, la nueva máquina tendrá 1 año al inicial el año 3; en caso contrario, la

Programación dinámica

15

maquina conservada tendrá 2 años. El proceso se continúa de esta forma hasta llegar

al año 4.

5.5 PROGRAMACIÓN DINÁMICA PROBABILÍSTICA (PDP)

La programación dinámica probabilística (PDP) es una técnica matemáticamente útil

para la toma de decisiones interrelacionadas, se presenta cuando el estado en 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

si queda bien determinada por el estado y la política de decisión en la etapa actual. Por

consiguiente la diferencia entre la programación dinámica probabilística y la

programación dinámica determinística (PDD) está en que los estados y los retornos o

retribuciones en cada etapa son probabilísticos. La programación dinámica

probabilística se origina en especial en el tratamiento de modelos estocásticos de

inventarios y en los procesos markovianos de decisión.

En este apartado se presentará algunos ejemplos generales, con objeto de hacer

resaltar la naturaleza estocástica de la programación dinámica.

5.5.1 Aplicaciones de programación dinámica probabilística Algunas de las aplicaciones de programación dinámica probabilística son:

Un juego aleatorio

Problema de inversión

Maximización del evento de lograr una meta.

A continuación se presentará una de estas aplicaciones.

Figura 5.10 Las políticas alternativas óptimas empezando en el año 1 son (R, K, K, R) y (R, R, K, K). El costo total es de 55,300 dólares.

Programación dinámica

16

5.5.2 Un juego aleatorio

Es una variación del juego de la ruleta rusa, se hace girar una rueda con marcas de n

números consecutivos: 1 a n, en su superficie. La probabilidad de que la rueda se

detenga en el número i después de un giro es pi. Un jugador paga $x por el privilegio de

hacer girar la rueda un máximo de m giros. La recompensa para el jugador es el doble

de la cantidad obtenida en el último giro. Suponiendo que le jugador se repite (hasta

con m giros cada vez) una cantidad razonablemente grande de veces, propone una

estrategia optima para el jugador.

Se puede formular el problema como un modelo de programación dinámica con las

siguientes definiciones:

1. La etapa i corresponde a la i-ésima vuelta de la rueda, i = 1, 2, …, m

2. En cada etapa hay dos alternativas: se gira la rueda una vez más o se termina el

juego

3. El estado j del sistema en la etapa i es el número que se obtuvo la última vez que

se giró la rueda, el cual está entre 1 y n

Sea

fi(j) = Ingreso máximo esperado cuando el juego está en la etapa i (el giro) y que el

resultado del último giro fue j

En este caso se tiene que

Entonces, la ecuación recursiva se puede escribir como sigue:

Los cálculos comienzan con fm+1 y terminan con f1, de modo que hay m+1 etapas. Como

f1(0) representa el rendimiento esperado de las m vueltas, así que el rendimiento

esperado neto, Rn, es:

11

2 , si terminamax

, si continúani

k ik

jf j

p f k

1 0nR f x

Programación dinámica

17

Ejemplo 5.5-2

Supongamos que la ruleta está marcada con los números 1 a 5 y que las

probabilidades de que se detenga en cada número son p1 = 0.30, p2 = 0.25, p3 = 0.20,

p4 = 0.15, p5 = 0.10.

El jugador paga $5 por un máximo de cuatro vueltas. Determine la estrategia óptima

para cada una de las cuatro vueltas y encuentre el rendimiento esperado neto asociado.

Etapa 4

f4(j) = máx.{2j,∑(pkf5(k))}

= máx.{2j, p1f5 (1)+ p2f5(2)+ p3f5 (3)+ p4f5 (4)+ p5f5 (5)}

= máx.{2j,0.3x2 + 0.25x4 + 0.2x6 + 0.15x8 + 0.1x10}

= máx.{2j,5}

Resultado de

la vuelta 4 Rendimiento esperado Solución óptima

j Terminar Girar f4(j) Decisión

1 2 5 5 Girar

Etapa 5

f5(j) = 2j

Resultado de

la vuelta 4 Solución óptima

j f5(j) Decisión

1 2 Terminar

2 4 Terminar

3 6 Terminar

4 8 Terminar

5 10 Terminar

Programación dinámica

18

2 4 5 5 Girar

3 6 5 6 Terminar

4 8 5 8 Terminar

5 10 5 10 Terminar

Etapa 3

f3(j) = máx.{2j, ∑ (pkf4(k))}

= máx.{2j, p1f4 (1)+ p2f4(2)+ p3f4 (3)+ p4f4 (4)+ p5f4 (5)}

= máx.{2j,0.3x5 + 0.25x5 + 0.2x6 + 0.15x8 + 0.1x10}

= máx.{2j,6.15}

Resultado de la

vuelta 3 Rendimiento esperado Solución óptima

j Terminar Girar f4(j) Decisión

1 2 6.15 6.15 Girar

2 4 6.15 6.15 Girar

3 6 6.15 6.15 Girar

4 8 6.15 8 Terminar

5 10 6.15 10 Terminar

Etapa 2

f2(j) = máx.{2j, ∑ (pkf3(k))}

= máx.{2j, p1f3 (1)+ p2f3(2)+ p3f3 (3)+ p4f3 (4)+ p5f3 (5)}

= máx.{2j,0.3x6.15 + 0.25x6.15 + 0.2x6.15 + 0.15x8 + 0.1x10}

= máx.{2j,6.8125}

Programación dinámica

19

Resultado de

la vuelta 3 Rendimiento esperado Solución óptima

j Terminar Girar f4(j) Decisión

1 2 6.8125 6.8125 Girar

2 4 6.8125 6.8125 Girar

3 6 6.8125 6.8125 Girar

4 8 6.8125 8 Terminar

5 10 6.8125 10 Terminar

Etapa 1

La única opción disponible al iniciar el juego es girar.

De acuerdo con los cuadros anteriores, la solución óptima es:

Vuelta número Estrategia óptima

1 Comienza el juego. Gire

2

Continúe si la vuelta 1 produce 1,2, o 3; de otra

forma, termine el juego

3

Continúe si la vuelta 2 produce 1, 2 o 3; de otra

forma, termine el juego

4

Continúe si la vuelta 3 produce 1 o 2. De otra forma,

termine el juego

Ingreso neto esperado= $7.31-$5.00= $2.31

f1(0) = máx.{2j, ∑ (pkf2(k))}

= máx.{2j, p1f2 (1)+ p2f2(2)+ p3f2 (3)+ p4f2 (4)+ p5f2 (5)}

= máx.{2j, 0.3x6.8125+ 0.25x6.8125 + 0.2x6.8125 + 0.15x8 + 0.1x10

= máx.{2j,7.31}

Programación dinámica

20

Referencias Bibliográficas

Domínguez, A. (Noviembre de 2000). Programación dinámica. Recuperado el Noviembre de 2012, de http://www.slideshare.net/Alexdfar/programacin-dinmica-5688350

Hillier, F. S. (1991). Introducción a la Investagación de Operaciones (3 ed.). México: McGraw-Hill.

Taha, H. A. (2004). Investigación de Operaciones (7 ed.). México: PEARSON EDUCATION.