26 de Julio de 2023 2.1. Aplicaciones de la programación dinámica determinística 2.4. Aplicaciones de Programación dinámica determinística Programación dinámica determinística Formulación y solución de problemas
La programación dinámica no cuenta con una
formulación matemática estándar, sino que se trata de un enfoque de tipo general para la solución de problemas, y las ecuaciones específicas que se usan se deben desarrollar para que representen cada situación individual. Comúnmente resuelve el problema por etapas, en donde cada etapa interviene exactamente una variable de optimización (u optimizadora) Programación dinámica determinística Formulación y solución de problemas La teoría unificadora fundamental de la programación dinámica es el Principio de Optimalidad, que nos indica básicamente como se puede resolver un problema adecuadamente descompuesto en etapas utilizando cálculos recursivos. Una política óptima tiene la propiedad de que, independientemente de las decisiones tomadas para llegar a un estado particular, en una etapa particular, las decisiones restantes deben constituir una política óptima para abandonar ese estado Programación dinámica determinística Para la resolución de problemas
Un grado de creatividad
Un buen conocimiento de la estructura general de los problemas de programación dinámica para reconocer cuando un problema se puede resolver por medio de estos procedimientos y como esto se puede llevar a cabo. Programación dinámica determinística Características
El problema se puede dividir en etapas que
requieren una política de decisión en cada una. Cada etapa tiene cierto número de estados asociados a ella. Programación dinámica determinística Características
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. El procedimiento de solución esta diseñado para encontrar una política óptima para el problema completo. Programación dinámica determinística
En los problemas de
programación dinámica determinística no existe incertidumbre a la hora de calcular las soluciones óptimas, etapa a etapa. Podemos describirla a partir de la siguiente figura: Programación dinámica determinística
Si nos hallamos en la etapa i,
estamos en algún estado si . Al tomar la decisión xi pasamos a un estado si+1 en la etapa i + 1. La contribución óptima a la función objetivo a partir de ese punto la calculamos como f ∗ i+1(si+1), y sabemos que la variable de decisión xi también contribuye a la función objetivo. Programación dinámica determinística
Al combinar estos dos
datos de la forma correcta se obtiene fi(si , xi), la contribución de la etapa i en adelante. Por tanto, una vez hallados x ∗ i y f ∗ i (si) para cada valor posible de si , el procedimiento se mueve hacia atrás una etapa Programación dinámica determinística Clasificación de problemas Función objetivo: El objetivo puede ser tanto minimizar como maximizar la suma de las contribuciones en cada etapa, o también minimizar o maximizar el producto de los términos, etc. Estados: Estos pueden ser discretos o continuos. También se puede dar que necesitemos un vector de estado. Naturaleza de las variables de decisión: De la misma forma que los estados, las variables de decisión pueden ser discretas o continuas. 2.2. Revisión del problema de la ruta más corta, para ejemplificar la recursividad Revisión del problema de la ruta más corta ¿Qué es? El Problema del Camino más Corto (o ruta más barata) consiste en encontrar una ruta o camino óptimo entre un nodo fuente y un nodo destino, los cuales están enlazados a través de una red con arcos que poseen un cierto atributo, el cual puede ser costo, distancia, tiempo, etc. Revisión del problema de la ruta más corta Programación Entera La Programación Entera permite abordar de forma eficiente este tipo de problemas, en especial cuando la cantidad de nodos y rutas posibles resulta ser un número significativo. Utilizar en estos casos un enfoque intuitivo de resolución es tedioso y de no ser exhaustivo no garantiza la identificación de la mejor alternativa o ruta. Revisión del problema de la ruta más corta Ejemplo Consideremos el siguiente diagrama donde los números asignados a cada uno de los arcos representan la distancia en kilómetros de un nodo a otro. Se desea encontrar la ruta con la distancia mínima para ir del nodo 1 al nodo 8. Revisión del problema de la ruta más corta Ejemplo El tamaño reducido de la red anterior permite encontrar el camino más corto simplemente enumerando las distintas alternativas que comenzando en el nodo 1 permita llegar al nodo 8. Revisión del problema de la ruta más corta Ejemplo De esta forma las rutas posibles son: Ruta 1-2-5-7-8: 4+8+17+9=38[km] Ruta 1-3-4-7-8: 3+12+20+9=44[km] Ruta 1-3-4-6-8: 3+12+2+22=39[km] Ruta 1-3-4-8: 3+12+15=30[km] Ruta 1-3-6-8: 3+4+22=29[km] La ruta o camino más corto esta dada por la secuencia 1-3-6-8 con una distancia total de 29[km]. 2.3. Recursividad hacia adelante y recursividad hacia atrás Recursividad hacia adelante y recursividad hacia atrás Existen dos formas de plantear la fórmula de recursividad en los problemas de programación dinámica: Recursividad de Retroceso: el problema se resuelva partiendo de la última etapa hacia la primera. Recursividad de Avance: el problema se resuelve partiendo de la primera etapa hacia la última. Recursividad hacia adelante y recursividad hacia atrás Las formulaciones de avance y retroceso son en realidad equivalentes en términos de cálculo. Sin embargo, hay situaciones donde habría alguna diferencia, en la eficiencia del cálculo, según la formulación que se utilice. Esto sucede en particular en problemas donde intervine la toma de decisiones conforme transcurre el tiempo. En esto caso las etapas se designan con base en el estricto orden cronológico de los periodos que ellas representan y la eficiencia de los cálculos dependerá de si se utiliza formulación de avance o retroceso.