Está en la página 1de 17

NOMBRE: Karen Arianna Chico Castro

CURSO: Sexto “B”


FECHA: 23/10/2020
TEMA: Ensayo académico. Programación Dinámica

INDICE

1. Introducción............................................................................................................................3

2. Origen......................................................................................................................................3

4. Definición................................................................................................................................4

5. Características........................................................................................................................5

5.1. Cuando usar la programación dinámica............................................................................6

5.2. Principio de optimilidad....................................................................................................7

5.2.1. Ecuación funcional....................................................................................................7

6. Ventajas y desventajas...........................................................................................................7

7. Limitaciones............................................................................................................................8

8. Clasificación............................................................................................................................8

8.1. Programación Dinámica Determinista..............................................................................8

8.1.1. Programación dinámica determinística aditiva..........................................................9

8.2. Programación Dinámica Probabilística.............................................................................9

8.2.1. Un juego aleatorio....................................................................................................10

8.3. Programación dinámica dual...........................................................................................10


8.4. Programación dinámica estocástica................................................................................11

9. Métodos de solución.............................................................................................................11

9.1. Modelo de relación recursiva..........................................................................................11

9.2. Bottom-Up: Lo más fácil................................................................................................12

9.3. Problema de la mochila...................................................................................................12

9.4. Problema KP-DUR.........................................................................................................13

9.4.1. Algoritmo KPD-BB.................................................................................................13

10. Aplicaciones..........................................................................................................................13

11. Bibliografía............................................................................................................................14
3

PROGRAMACIÓN DINÁMICA

1. Introducción

Existe una serie de problemas cuyas soluciones pueden ser expresadas recursivamente en

términos matemáticos, y posiblemente la manera más natural de resolverlos es mediante un

algoritmo recursivo. Sin embargo, el tiempo de ejecución de la solución recursiva, normalmente

de orden exponencial y por tanto impracticable, puede mejorarse substancialmente mediante la

Programación Dinámica.

La Programación Dinámica no sólo tiene sentido aplicarla por razones de eficiencia, sino

porque además presenta un método capaz de resolver de manera eficiente problemas cuya

solución ha sido abordada por otras técnicas y ha fracasado. Donde tiene mayor aplicación la

Programación Dinámica es en la resolución de problemas de optimización.

En grandes líneas, el diseño de un algoritmo de Programación Dinámica consta de los

siguientes pasos: Planteamiento de la solución como una sucesión de decisiones, definición

recursiva de la solución, cálculo del valor de la solución, construcción de la solución óptima.

(Guerequeta & Vallecillo, 2000, p.177)

2. Origen

Es un método cuantitativo desarrollado por Richard Bellman alrededor de la década de los

años 50, con la finalidad de optimizar procesos, ya que en ese momento esa era su función como

trabajador de RAND Corporation, decidió emplear la palabra dinámica a esta técnica, deseaba

analizar las variables de los problemas con respecto al tiempo. (Sean, 2014)

Según Dasgupta, Papadimitriou y Vazirani (2006), se entendía a la programación como

“planificación” y a la programación dinámica como “optimización de procesos con etapa

múltiples”.
4

3. Objetivo
Sallán & Fonollosa (2016) señalan que el objetivo de la programación dinámica es de

encontrar cual es la política óptima para cada una de las etapas de la evolución del sistema. La

política para una determinada etapa es la decisión óptima en cada uno de los posibles estados del

sistema en dicha etapa.

Para cada etapa debe definirse una variable de decisión x n.Si el sistema tiene k estados en esa

etapa, una política será un vector de k componentes, cuya componente e−sima es el valor de la

variable de decisión para el estado e en la etapa n. (p.100)

4. Definición

Maurette & Ojea (2016) afirman que, es un método de optimización de extraordinaria

versatilidad. Si bien fue desarrollada especialmente para la resolución de problemas en Procesos

de Decisión en Múltiples Pasos, diferentes investigaciones han mostrado que las mismas ideas

pueden utilizarse en otro tipo de problemas de matemática aplicada. (p.1)

Proporciona un procedimiento sistemático para encontrar la combinación de decisiones que

maximice la efectividad total, al descomponer el problema en etapas, las que pueden ser

completadas por una o más formas (estados), y enlazando cada etapa a través de cálculos

recursivos. (Flores, 2015, p.2)

Los autores Fonollosa, Sallan, Fernadez, & Suñe, (2016) determinan que se basa en los

siguientes conceptos teóricos: El problema puede dividirse en dos o más subproblemas más

sencillos. Dicho proceso puede repetirse tantas veces como sea necesario hasta llegar a un

conjunto de problemas triviales. (p.35)


5

Es una técnica matemática útil en la toma de una serie de decisiones relacionadas entre sí.

Proporciona un método sistemático para determinar la combinación óptima de decisiones. En

contraste con la programación lineal, no se cuenta con una formulación matemática estándar para

el problema de programación dinámica. (Jaramillo & Restrepo, 2010, P.64)

La programacion dinamica es un procedimiento matematico diseñado rpincipalmente para

mejroar la eficiencia de calculo de problemas de programacion matematicaa seleccionados,

descomponiendolos en subprblemas de menor tamalo y por consiguiente mas faciles de calcular,

normalnente resuleve el problema en etapas. (Rodriguez, 2017, p.5)

(Rodriguez, 2017, p.5)

5. Características

Las características propaos de la programación dinámica como son: el no tener un tipo

específico de problemas sobre el cual operar, el carecer de un algoritmo estándar de solución,

etc., hacen que exista una gran dificultad en el momento de intentar dar una definición de ella.

(Rodriguez, 2017, p.5)

El problema puede dividirse en periodos o etapas y cada una de ella necesita tomar en cuenta

sus parámetros para la tomad dediciones. Cada periodo o etapa tiene ciertos para metros que se

asocia con su inicio.

Los parámetros para la toma de decisiones en cada una de las etapas o periodos, consiste en

modificar el periodo o etapa inicial en una etapa o periodo asociado con el inicial del periodo o

etapa siguiente, distribución de probabilidades. (Flores, 2017, p.24)

De acuerdo al periodo o etapa actual,los parametros optimos de solucion para los periodos o

etapas restantes son independientes de los parametros analizados en escenarios anterioes. El


6

principio de optimidad es:”La decision optima e inmediata que depende solo del estado actual y

no de como se llego ahí.

El proceso de resolucion inicia cuando se encuentran los parametros optimos para el ultimo

periodo o etapa en analisis.Los parametros optimos de solucion para el ultimo periosdo o etapa

menciona los parametros optimos para cada escenario posible en ese periodo o etapa. (Hiller &

Liberman, 2007, p.397)

Los autores Cormen, Leiserson, Rivest, & Stein (2003) anuncian que sirve para resolver

problemas combinando las soluciones de subproblemas. Normalmente es usada para resolver

problemas de optimización.

1. Caracterizar la estructura de una solución óptima.

2. Definir recursivamente el valor de una solución óptima.

3. Computar el valor de una solución en forma bottom-up.

4. Construir una solución óptima a partir de la información computada.(p.430)

5.1. Cuando usar la programación dinámica

Cormen, Leiserson, Rivest, & Stein (2003) mencionan que hay dos condiciones que se deben

cumplir antes de comenzar a pensar en una solución a un problema de optimización usando

programación dinámica.

 Sub-estructura óptima. Un problema tiene sub-estructura óptima cuando la solución

óptima a un problema se puede componer a partir de soluciones óptimas de su sub-

problema.

 Superposición de Problemas. El cálculo de la solución óptima implica resolver muchas

veces un mismo sub-problemas. La cantidad de sub-problema es “pequeña”. (p.432)


7

5.2. Principio de optimilidad

Una política óptima tiene la propiedad de que cualesquiera sean el estado y la decisión

iniciales, las decisiones siguientes constituyen una política óptima con respecto al estado

resultante de la primera decisión. Si llamamos f a la función de costo correspondiente a la

política óptima, el principio de optimilidad puede expresarse de la siguiente manera:

f ( u t ) =c ( ut ; d ( ut ) ) +f (T ( ut ; d ( u t ) ) )

(Maurette & Ojea, 2016, p.8)

5.2.1. Ecuación funcional

Maurette & Ojea (2016) propone que el Principio de Optimilidad permite establecer la

siguiente Ecuación Funcional:

f ( u )= min c ( u , d ( u ) ) + f d (T ( u , d (u ) ))
dϵD(u)

A partir de esta ecuación, puede resolverse el problema de manera recursiva, de un modo

análogo al utilizado para el problema de camino de costo mínimo. (p.9)

6. Ventajas y desventajas

Una de las principales ventajas de usar programación dinámica es que acelera el

procesamiento, ya que se usan referencias que fueron previamente calculadas. Como es una

técnica de programación recursiva, reduce las líneas de código del programa.

Como desventaja se da que muchas veces, el valor de salida se queda almacenado sin nunca

ser utilizado en los siguientes subproblemas durante la ejecución. Esto conlleva a una utilización

innecesaria de la memoria. En la programación dinámica las funciones se llaman recursivamente.

Esto hace que la memoria de pila se mantenga en constante aumento. [ CITATION Hek18 \l 3082 ]
8

7. Limitaciones

Bhowmik (2010) menciona que la programación dinámica ayuda a resolver la optimización

problemas. Pero la solución óptima implica resolver un subproblema, y luego usa la solución

óptima para eso. Subproblema. Esta propiedad clave de las soluciones producidas por la

programación dinámica es que son de tiempo consistente.

Otro inconveniente de esta práctica es que funciona mejor en objetos que están ordenados

linealmente y no se pueden reorganizar como caracteres en una cadena, puntos alrededor del

límite de un polígono, matrices en una cadena, el orden de izquierda a derecha de hojas en un

árbol de búsqueda.

La principal deficiencia de hacer uso de la programación dinámica como medio es que a

menudo no es trivial escribir código que evalúe los subproblemas en el orden más eficiente. El

desafío de idear un buen método de solución es avanzar para tomar decisiones cuáles son los

subproblemas, cómo se calcularían y en qué orden. (p.4)

8. Clasificación

8.1. Programación Dinámica Determinista

Izar (2019) anuncia que la programación dinámica determinística aplica cuando los valores de

la variable que se va a optimizar, que suele ser un costo, se conocen con certeza y no de manera

probabilística. Con frecuencia es el tipo de programación dinámica más usual en el ámbito de los

problemas de programación matemática.

Puede ser aditiva o multiplicativa, lo cual depende de la ecuación que forma la función

objetivo, tal y como se presenta a continuación. (p. 33)


9

8.1.1. Programación dinámica determinística aditiva

El caso típico de la programación dinámica determinística aditiva es el del agente viajero, que

parte de un origen para llegar a su destino final buscando la ruta más corta, que es la de menor

costo o distancia por recorrer. [ CITATION Hil07 \l 3082 ]

Izar (2019) afirma que x nes la variable de decisión de la etapa n por llegar a un destino dado,

mientras que f n (s , x n )es la función objetivo ( costo o distancia recorrida) de la mejor política

global de las etapas restantes y s es el estado en el que se encuentra el viajero de donde ira como

siguiente punto a x n.

Por lo tanto, se tiene que:

f ¿ n ( s ) =min f n ( s , x n) =f n ¿

Siendo f n (s , x n ):

f n¿

Esta ecuación aplica cuando la función objetivo se forma aditivamente, esto es, con la suma

de las aportaciones de cada etapa. Con esto, al llegar a la primera etapa del cálculo, se habrá

obtenido el costo mínimo global del problema. (p.33)

8.2. Programación Dinámica Probabilística

Difiere de la determinística 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 inventario y en los procesos de decisión. (Taha, 2004, p.547)


10

8.2.1. Un juego aleatorio

Taha (2004) explica que en 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 periferia. La probabilidad de que la rueda se

detenga en el número i después de un giro es pi .

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

definiciones:

1. La etapa i se representa con el giro i ,i=1,2 , … , m.

2. Las alternativas en cada etapa incluyen hacer girar la rueda una vez más o terminar el

juego.

3. El estado j del sistema en la etapa ise representa con uno de los números de 1 a n que se

haya obtenido en el último giro. (p.547)

8.3. Programación dinámica dual

El presente método se basa en principio en los métodos de programación lineal y de

programación dinámica.

Guañuna (2014) menciona que se basa en obtener la función de costo futuro del sistema

mediante un conjunto de funciones lineales, para lo cual se requiere conocer ciertos conceptos

básicos que se muestran a continuación:

Minimizar z c 1∗x 1 +c 2∗x 2

Sujeto a: A1∗x1 ≥ b1

E1∗x1 + A2∗x2 ≥ b2

Como se puede notar, las dos etapas están ligadas por la matriz E1, que son precisamente los

niveles finales de los embalses. (P.45)


11

8.4. Programación dinámica estocástica

Bedoya & Barrera (2015) anuncian que La Programación Dinámica Estocástica (PDE)

considera el carácter aleatorio de algunas variables del problema. Para el caso del despacho

hidrotérmico, la variable aleatoria será la afluencia. Por medio de los datos históricos de

afluencia se buscará una función de distribución de probabilidad discreta para esta variable.

(p.56)

Alayo (2016) pronuncia que el caso estocástico es un caso más interesante porque la solución

del algoritmo permite tener soluciones en lazo cerrado. Los problemas de programación

dinámica para el caso estocástico tienen la siguiente estructura:

Un sistema dinámico en tiempo discreto: x t +1=f t ( x t , ut , wt ) t=0, 1,…, T-1

Dónde: t es el tiempo discreto, x t es el estado del sistema en el periodo t, puede existir

restricciones x t ∈ Ω (t), ut es el vector de controles del sistema, es decir las decisiones que se

toman en cada etapa, w t es el par´ametro aleatorio con cierta distribución de probabilidad y T es

el horizonte de tiempo.(p.8)

9. Métodos de solución

Los métodos de programación dinámica fueron los que inicialmente se aplicaron para resolver

el problema de programación hidrotérmica. La programación dinámica tiene la ventaja de que

directamente puede representar características o funciones no lineales y funciones que

generalmente estén presentes en los modelos hidroeléctricos y térmicos. (Guañuna, 2014, p.40)

9.1. Modelo de relación recursiva

La idea es poder dividir el problema de optimización en n subproblemas de optimización de

una sola etapa. Para garantizar la optimilidad del problema global y poder separar el problema de
12

minimización en subproblemas, la función objetivo debe cumplir con las condiciones derivadas

por Mitten que son las condiciones de monotonicidad y de separabilidad. (Bedoya & Barrera,

2015, p.55)

Hiller & Liberman (2015) mencionan que, los parametros de solucion estan basados en una

relacion recursiva que identifica los parametros de solucion para la etapa n dados los parametros

de solucion optima para los perioses n+1.El modelo de relacion recursiva para la maximiaacion y

minimizacion esta representado por:

f ¿ n ( S n ) x n=max { f n (Sn ; x n) }

f ¿ n ( S n ) x n=min { f n (S n ; x n ) }

9.2. Bottom-Up: Lo más fácil

La estrategia bottom-up consiste en resolver primero los subproblemas más pequeños,

almacenar su solución, y luego resolver los problemas más complejos, usando los resultados

almacenados. Es claro que calcular m [i, i] es muy sencillo, m [i, i + 1], con 1 ≤ i < n.

(Cormen, Leiserson, Rivest, & Stein ,2003, p.450)

9.3. Problema de la mochila

El problema de la mochila es un problema clásico en la optimización combinatoria.

Constituye uno de los problemas más simples de la programación lineal entera, aparece como

subproblema en muchos otros problemas más complejos y tiene diversas aplicaciones prácticas.

Desde el enfoque de la teoría de complejidad computacional, el problema de la mochila

pertenece a la clase de problemas NP-difíciles (ver detalles de la definición de esta clase, por

ejemplo, en [5, p. 247]), para los cuales suele asumirse que no existen algoritmos polinomiales

de solución (a menos que P=NP). [ CITATION Sil16 \l 3082 ]


13

9.4. Problema KP-DUR

Como se señaló anteriormente, en esta variante del problema se tienen dados una mochila con

capacidad C y un conjunto de n objetos los cuales tienen asociados valores p1,..., pn, tamaños

w1,..., wn y duraciones d1,..., dn. El objetivo es maximizar el valor total almacenado en la

mochila dentro de un intervalo de tiempo.

Si el objeto i ingresa en la mochila en el período t ∈ {1,..., T − di − 1}, permanecerá en la

misma hasta el período t + di + 1. Asumimos que todos los parámetros C, T, pi , wi y di son

enteros, y que un objeto puede ingresar más de una vez en la mochila. [ CITATION Sil16 \l 3082 ]

9.4.1. Algoritmo KPD-BB

Silva & Torres (2016) anuncian que el modelo KP-PD puede ser extendido de manera natural

para incorporar restricciones adicionales que aparecen a partir de las decisiones de ramificación,

como veremos más adelante. Las decisiones de ramificación consisten en forzar o prohibir que

un objeto i ingrese a la mochila en un período t. Representaremos estas decisiones mediante

ternas de la forma (i, t, k). (p.5)

10. Aplicaciones

La versatilidad del método de programación dinámica es realmente apreciada por la

exposición a una amplia variedad de aplicaciones. La intención es comprender y contribuir a la

investigación de vanguardia sobre problemas de optimización, como el clásico problema de

parada óptima y la asignación óptima de recursos dentro del marco específico de programación

dinámica aproximada.

Dentro de este marco, se pueden emplear una variedad de técnicas de optimización para

resolver aspectos particulares de una formulación más general en una multiplicidad de áreas:
14

Teoría de la información, Teoría del control, Bioinformática, Investigación operativa, Ciencias

de la computación: teoría, gráficos, inteligencia artificial, etc. (Bhowmik, 2010, p.2)

11. Bibliografía

Alayo, H. (2016). Introducción a la programación dinámica. Obtenido de

https://hansroom17.files.wordpress.com/2016/12/dp.pdf

Bedoya, J. C., & Barrera, M. (2015). PROGRAMACIÓN DINÁMICA ESTOCÁSTICA APLICADA AL

PROBLEMA DEL DESPACHO HIDROTÉRMICO . Dialnet, 58.

Bhowmik, B. (2010). DYNAMIC PROGRAMMING – ITS PRINCIPLES, APPLICATIONS,STRENGTHS,

AND LIMITATIONS. Obtenido de

file:///C:/Users/karen/Downloads/DYNAMIC_PROGRAMMING_-

_ITS_PRINCIPLES_APPLICATIONS_.pdf

Cormen, T., Leiserson, C., Rivest, R., & Stein, C. (2003). Introduction to Algorithms, 3rd Edition (The

MIT Press) (Inglés) 3rd Edición. Massachusetts: McGraw-Hill.

Corvo, H. (2018). Programación dinámica: características, ejemplo, ventajas, desventajas. Obtenido de

https://www.lifeder.com/programacion-dinamica/

Dasgupta, S., & Vazirani, U. (2006). Algorithms. Obtenido de

https://repositorioacademico.upc.edu.pe/bitstream/handle/10757/621494/Tema77-Gil-Llave-

Munive.pdf?sequence=5&isAllowed=y

Flores, I. (2015). Programacion Dinamica. Obtenido de Universidad Nacional Autónoma de México:

https://bit.ly/3dS70e0

Flores, I. (2017). Modelo de programacion de la produccion con metodolodia de investigacion de

operacionde para la empresa Energy Cool. Obtenido de Universidad de Azuay:

http://dspace.uazuay.edu.ec/bitstream/datos/7336/1/13264.pdf
15

Fonollosa, J., Sallan, J., Fernadez, V., & Suñe, A. (2016). Programación dinámica: Métodos

cuantitativos para la toma de decisiones II. Barcelona: Oficinas de publicaciones academiques

digitales de la UPC.

Guañuna, W. (2014). Metodologia para la valoracion del agua de embalses. Obtenido de

https://bibdigital.epn.edu.ec/bitstream/15000/5860/1/T1693.pdf

Guerequeta, R., & Vallecillo, A. (2000). Tecnicas de Diseño de Algoritmo. Malaga: Servicio de

Publicaciones de la Universidad de Málaga.

Hiller, F., & Liberman, G. (2007). Investigacion de operaciones. Mexico: McGraw-Hill.

Izar, J. M. (2019). Modelos matemáticos para la toma de decisiones. Cuidad de Mexico: IMCP.

Jaramillo, A., & Restrepo, J. (2010). Aplicacion de la programacion Dinamica para resolver el problema

simple de balanceo de linea de ensamblaje. Redalyc, 67.

Maurette, M., & Ojea, I. (Junio de 2006). Programación Dinámica. 1. Obtenido de

http://cms.dm.uba.ar/materias/1ercuat2009/optimizacion/Maurette_Ojea.pdf

Rodriguez, W. (2017). Conceptos y ejemplos basicos de Programación Dinámina. Obtenido de

http://www.konradlorenz.edu.co/images/stories/suma_digital_matematicas/Programacion

%20Dinamica.PDF

Sallán, J., & Fonollosa, J. B. (2016). Métodos cuantitativos de organización industrial II. Barcelona:

Edicions UPC.

Sean, R. (2014). What is dynamic programming? Nature Biotechnology,. Obtenido de

https://repositorioacademico.upc.edu.pe/bitstream/handle/10757/621494/Tema77-Gil-Llave-

Munive.pdf?sequence=5&isAllowed=y
16

Silva, B., & Torres, L. (2016). Acerca De Una Versión Dinámica Del Problema De La Mochila.

Obtenido de file:///C:/Users/karen/Downloads/253-Texto%20del%20art%C3%ADculo-2017-1-

10-20150203.pdf

Taha, H. (2004). Investigacion de operaciones. Mexico: PEARSON EDUCACION.


17

También podría gustarte