










Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
PROGRAMACION DINAMICA 5 MUY BUENO
Tipo: Apuntes
1 / 18
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!











December 18, 2012
Investigación Operativa
La programación dinámica es un enfoque general para la solución de problemas en los que es necesario tomar decisiones en etapas sucesivas. Las decisiones tomadas en una etapa condicionan la evolución futura del sistema.
El procedimiento general de resolución de estas situaciones se divide en el análisis recursivo de cada una de las etapas del problema, en orden inverso, es decir comenzando por la última y pasando en cada iteración a la etapa anterior.
Existe problemas cuyas soluciones pueden ser expresadas recursivamente. No obstante, el tiempo de ejecución de la solución recursiva, es de orden exponencial y por tanto es muy difícil y costoso implementarlo pero puede mejorarse mediante la Programación Dinámica.
En el diseño Divide y Vencerás se basa en resolver un problema dividiendo en subproblemas independientes, los cuales se resolvían de manera recursiva para combinar finalmente las soluciones y así resolver el problema original.
La Programación Dinámica consiste en resolver los subproblemas una sola vez, guardando sus soluciones en una tabla para su futura utilización.
La Programación Dinámica en la resolución de problemas de optimización se realiza mediante la obtención de un valor óptimo que puede ser máximo o mínimo dependiendo el caso particular al que se aborde.
La solución de problemas mediante esta técnica se basa en el llamado principio óptimo enunciado por Bellman en 1957 y que dice: “En una secuencia de decisiones óptima toda subsecuencia ha de ser también óptima”.
El algoritmo de Programación Dinámica esta compuesto por los siguientes pasos:
Principio de Optimalidad de la Programación Dinámica o de Bellman
Dado un estado, la política óptima para las siguientes etapas no depende de la política tomada en las etapas anteriores. La decisión de óptima inmediata sólo depende del estado en el que se está, no de cómo se llegó hasta él. Toda la información sobre el pasado se resume en el estado en que se encuentra. Una vez conocida la solución óptima global, cualquier solución parcial que involucre sólo una parte de las etapas es también una solución óptima. Todo subconjunto de una solución óptima es a su vez una solución óptima para un problema parcial.
I. Xk estado actual en la etapa k.
II. uk variable de decisión en la etapa k.
III. Xk+1 estado al que se llega en la etapa k + 1 dependiente del estado inicial Xk y de la decisión uk.
IV. fk (Xk ) valor acumulado de la función objetivo para el estado Xk desde la etapa k hasta N.
V. C xk,uk. valor inmediato de tomar la decisión uk desde el estado Xk
VI. Coste acumulado desde una etapa k hasta el final para un estado Xk , f*k(xk) = Coste inmediato de dicha etapa C xk,uk.+ Coste acumulado desde una etapa k + 1 hasta el final para un estado Xk+1 , f*k+1(xk+1)
Ejemplo: problema del viajero
El viajero desea ir de la ciudad A a la J por el camino más corto.
La programación dinámica no cuenta con una formulación matemática estándar para resolver los problemas, se trata de un enfoque general para la resolución de problemas, en consecuencia se deben desarrollar ecuaciones y algoritmos específicos para cada problema particular.
La programación dinámica es una manera de analizar procesos de decisión en un programa de optimización. Esta técnica de análisis se basa en principio de Optimalidad de Richard Bellman que establece: “ Una política óptima tiene la propiedad de que cualquiera que sea el estado inicial y la primera decisión, las decisiones restantes constituyen una política óptima en relación a los efectos resultantes de la primera decisión ”.
Este principio también se define diciendo que una Política óptima tiene la propiedad de que independientemente de las decisiones tomadas para llegar a un estado particular, las decisiones restantes deben constituir una política óptima para abandonar ese estado.
La naturaleza del razonamiento que se debe realizar en programación dinámica es muy diferente al de la programación lineal. En programación lineal, intenta describir una determinada situación en términos de un modelo matemático determinado; una vez conocida la naturaleza de las variables de decisión, y expresadas la función objetivo y las restricciones en función de esas variables, la resolución del modelo puede confiarse, sin mayores problemas, a un programa informático. La programación dinámica no admite una resolución sistemática de este tipo; más que un modelo concreto, es una estrategia de resolución común a muchas situaciones en principio diferentes entre sí.
Además, es frecuente que la resolución del modelo esté muy relacionada con la situación que se ha de modelizar. En contrapartida, las simplificaciones que en ocasiones deben realizarse en programación lineal para poder resolver el modelo no son necesarias en programación dinámica, que admite gran variedad de relaciones entre variables.
Un Ingeniero Forestal, requiere saber:
i) Cuál es el costo mínimo.
ii) Cuál es la ruta con ese costo mínimo.
Para ir desde su oficina hasta el lugar donde está la cosecha debe atravesar varias ciudades. En su camino debe pasar por 3 ciudades antes de llegar a su destino, y algunos lugares posibles en esas ciudades. Las posibles rutas, y el costo asociado por Km. de distancia y otros es en $, se ven en el siguiente esquema:
Para ir de 1 a 13 hay 48 rutas posibles. Una posibilidad para encontrar la solución es calcular el valor asociado a cada una y ver cual es la que proporciona el menor costo. ¿Y si fuesen miles de rutas? Por se descarta esa alternativa y se usa el método de la programación Dinámica, donde se resuelve desde el final hacia el inicio, y hay etapas y estados.
Etapas: Son 4 etapas en este caso: La etapa 1 es decidir ir del estado inicial 1 al estado 2, 3, 4 o 5 que son los puntos posibles en el sector siguiente. La etapa 2 es decidir ir a 6, 7 u 8. La etapa 3 es decidir ir a 9, 10, 11 o 12. La etapa 4 es decidir a 13.
La ruta óptima es: 1 3 8 9 13
Respuesta al problema planteado:
El Ingeniero Forestal tiene un costo mínimo de $24 para ir desde su oficina al lugar de cosecha, y ese mínimo lo puede lograr yendo desde su oficina al lugar 3 luego al lugar 8 luego al lugar 9 y de ahí al lugar 13, que es donde está la cosecha.
Existen N diferentes tipos de artículos que pueden cargarse en una mochila; cada artículo tiene asociados un peso y un valor. El problema consiste en determinar cuántas unidades de cada artículo se deben colocar en la mochila para maximizar el valor total.
El problema consiste en determinar un programa de producción para un periodo de tiempo con el fin de minimizar los costos totales. Hay demandas conocidas para cada periodo, límites de capacidad tanto para la producción como para los inventarios (almacenamiento). Cuando hay más producción que demanda, se acumula inventario, y
cuando la producción es menor que la demanda, se generarán retrasos en el cumplimiento de pedidos (backorder). Para cada periodo, una producción no-cero incurre en un costo de preparación. En programación dinámica, el costo variable se expresa como una función de la producción (P), el inventario (H), y backorder (B).
Genéricamente un modelo matemático que representa un tipo importante de procesos de decisión de etapas se expresa como:
variables de decisión que representan el destino inmediato de la etapa “n”.
son funciones conocidas no lineales de una sola variable y “b” es un número entero no negativo conocido. “n” representa el número de etapas en que se descompone el problema.
Ahora bien, al comenzar la asignación, es decir, en el momento de decidir el valor
hayan determinado los valores x 1 , x 2 , x 3 ,….., xk, las restricciones de la asignación
correspondiente a la actividad k + 1 serán: 0 ≤ xk+1 ≤ P − (x 1 +x 2 +x 3 +….+xk).
El Principio de Optimalidad nos dice que el valor xk+1 de una asignación óptima
para las N actividades con un monto inicial P corresponde, a su vez, a una asignación
óptima de las actividades k + 1,..., N con un monto inicial z = P − (x 1 +x 2 +x 3 +….+xk). La
información esencial con la que debemos contar a cada paso es, entonces, el número de la actividad sobre la cual estamos decidiendo y la cantidad de pesos que restan distribuir.
En principio, los problemas de programación dinámica pueden clasificarse según dos criterios: su homogeneidad o no homogeneidad, y su carácter determinista o aleatorio.
a) Programación dinámica homogénea y no homogénea
Diremos que un modelo de programación dinámica es homogéneo si presenta la misma estructura para todas las etapas del sistema. Más concretamente:
El sistema puede presentar los mismos estados en cualquiera de sus etapas.
Los valores posibles de las variables de decisión para cada uno de los estados son las mismas para todas las etapas del sistema.
La función a optimizar es la misma para todas las etapas del sistema.
La evolución del sistema, para un determinado estado y para un determinado valor de la variable de decisión de los disponibles para dicho estado, es la misma para todas las etapas del sistema.
Una consecuencia de esta definición es que un modelo de programación dinámica homogénea puede evolucionar indefinidamente en el tiempo, esto es, el número posible de etapas es infinito. Entonces podemos plantearnos analizar su evolución para un número infinito de etapas o para un número finito de éstas.
Cuando el modelo no cumple alguna de estas condiciones, tenemos programación dinámica no homogénea. Todos aquellos modelos que tengan un número finito de etapas posibles entrarán dentro de esta categoría. También puede suceder que el número de etapas sea infinito, aunque los problemas de programación dinámica no homogénea suelen ser de horizonte finito.
b) Programación dinámica determinista y aleatoria
Esta categoría tiene que ver con la naturaleza de la evolución del sistema, una vez se ha tomado la decisión. Cuando, en una etapa determinada, podemos conocer con certeza la evolución del sistema para un determinado estado y un determinado valor de la variable de decisión, tenemos un modelo de programación dinámica determinista. Para estos modelos, podremos determinar las decisiones que, en cada etapa, dan el valor óptimo de la función de recurrencia.
Si, para una etapa determinada, en un estado cualquiera i, al escoger un determinado valor de la variable de decisión, encontramos que el sistema puede evolucionar hacia
modelo es de programación dinámica aleatoria. En este caso, podremos determinar las decisiones que optimicen el valor esperado de la función de recurrencia.
Conclusión
La Programación Dinámica es una técnica que permite la optimización de soluciones a problemas adaptandandolos a la metodología divide y vencerás, fraccionando el problema en subproblemas y solucionando a cada uno de ellos mediante el uso de la recursividad para luego combinar estas soluciones parciales para obtener la solución al problema. Cabe destacar que para que un problema se pueda resolver mediante la Programación Dinámica debe cumplir ciertas características para que pueda ser tratado como así.
Conviene resaltar que a diferencia de la programación lineal, el modelado de problemas de programación dinámica no tiene una forma estándar. Así, para cada problema es necesario especificar cada uno de los componentes que caracterizan un problema de programación dinámica.
Sin embargo un aspecto realmente destacable es la posibilidad de amplio campo de aplicación que posee la programación dinámica, que desde un turista queriendo viajar o la posibilidad de combinar objetos de una mochila para ahorrar espacio o también la planificación de programación de producción e inventarios y sin olvidarse de la gran importancia que posee la “Programación Dinámica” en la informática.