Notas de estudio-artículos de algoritmo de Matlab-programación dinámica

Programación dinámica

01 Introducción

Introducción: La programación dinámica es una rama de la investigación de operaciones y es un método matemático para resolver la optimización del proceso de decisión . La programación dinámica es un método para resolver cierto tipo de problema, es una forma de investigar el problema, en lugar de un algoritmo especial (como la programación lineal es un algoritmo). Por lo tanto, no tiene una expresión matemática estándar y un conjunto de reglas claramente definidas como la programación lineal, pero se deben analizar y procesar problemas específicos. Por lo tanto, además de una comprensión correcta de los conceptos y métodos básicos al estudiar, debe construir modelos con mucha imaginación y usar habilidades creativas para resolverlos.

Ejemplo: el problema de la ruta más corta. La siguiente figura es una red de líneas y el número en la línea indica la distancia (o costo) entre dos puntos. Trate de encontrar una ruta con la distancia más corta (o el menor costo) de A a G.

Clasificación del proceso de toma de decisiones: Según si la variable tiempo del proceso es discreta o continua, se divide en proceso de decisión en tiempo discreto y proceso de decisión en tiempo continuo ; se determina o determina según la evolución del proceso. El estocástico se divide en proceso de decisión determinista (proceso de decisión determinista ) y proceso de decisión estocástico ( proceso de decisión estocástico ), de los cuales el más utilizado es el proceso de decisión determinista de múltiples etapas. 

 

 

En comparación con la planificación estática, las ventajas de la planificación dinámica son:

( I ) Se puede obtener una solución óptima global. Debido a que el conjunto de restricciones determinado por la condición de restricción a menudo es muy complicado, incluso si la función de índice es relativamente simple, es difícil encontrar la solución óptima global con el método de programación no lineal. El método de programación dinámica convierte todo el proceso en una serie de subproblemas similares, el número de variables en cada subproblema se reduce considerablemente, el conjunto de restricciones es mucho más simple y es fácil obtener la solución óptima global. Especialmente para problemas de optimización en los que los conjuntos de restricciones, las transiciones de estado y las funciones de índice no se pueden proporcionar en forma analítica, cada subproceso se puede resolver mediante enumeración, y cuantas más restricciones haya, menor será el rango de búsqueda para la toma de decisiones y más fácil será la solución. Para tales problemas, la programación dinámica suele ser la única forma de encontrar la solución óptima global.

( Ii ) Se puede obtener una familia de soluciones óptimas. A diferencia de la programación no lineal, que solo puede obtener una solución óptima para todo el proceso, la programación dinámica obtiene una familia de soluciones óptimas para cada estado de todo el proceso y todos los subprocesos posteriores. Algunos problemas prácticos requieren tal familia de soluciones, incluso si no lo hacen, también son muy útiles para analizar la estabilidad de la estrategia óptima y el valor óptimo para el estado. Cuando la estrategia óptima no se puede realizar por alguna razón, dicha familia de soluciones se puede utilizar para encontrar la estrategia subóptima.

( Iii ) Capacidad para utilizar la experiencia para mejorar la eficiencia de la solución. Si el problema real en sí es dinámico, dado que el método de programación dinámica refleja el contexto y las características dinámicas de la evolución del proceso paso a paso, el conocimiento y la experiencia reales se pueden utilizar en el cálculo para mejorar la eficiencia de la solución. Por ejemplo, en el método de iteración de la estrategia, la experiencia real puede ayudar a seleccionar una mejor estrategia inicial y mejorar la velocidad de convergencia.

Las principales desventajas de la programación dinámica son:

( I ) No existe un modelo estándar unificado, y no existe un método universal para construir un modelo, y ni siquiera existe un criterio para juzgar si un problema puede construir un modelo de programación dinámica. De esta forma, solo podemos analizar cada tipo de problema y construir un modelo específico. Para problemas más complejos, se necesitan mucha imaginación y habilidades flexibles para seleccionar estados, tomar decisiones, determinar reglas de transición de estados, etc. Esto trae consigo limitaciones de aplicación.

( Ii ) Hay una maldición de dimensionalidad al resolver con métodos numéricos .

02 Caso: El problema de la ruta más corta

 

Supongo que te gusta

Origin blog.csdn.net/seek97/article/details/108346520
Recomendado
Clasificación