动态规划之最优化原理与动态规划方程
目录
- 动态规划
- 引言
- 1 动态规划原理
- 1.1 最短路问题及其解法
- 1.2 动态规划的基本概念和术语
- 1.3 最优化原理与动态规划方程
- 1.3.1 最优化原理
- 1.3.2 逆序动态规划方程
- 1.3.3 顺序动态规划方程
- 1.4 动态规划基本定理
动态规划
引言
1951年,美国数学家贝尔曼(R.Bellman)等根据一类所谓多阶段决策问题的特性,提出了解决这类问题的“最优化原理”,并研究了许多实际问题,从而创立了最优化的一个新分支----动态规划。
动态规划没有统一的数学模型,对不同的问题要采用不同的方法去建立它们的模型。有了模型之后,要想得到数值解,仍然没有统一的处理方法。这是应当注意的。
1 动态规划原理
1.1 最短路问题及其解法
最短路问题及其解法
1.2 动态规划的基本概念和术语
动态规划的基本概念和术语
1.3 最优化原理与动态规划方程
1.3.1 最优化原理
对于多阶段决策问题,作为整个过程的最优策略必然具有这样的性质:无论过去的状态和决策如何,就所形成的状态而言,余下的诸策略必然构成一个最优子策略。多阶段决策问题的这一规律称为最优化原理。
1.3.2 逆序动态规划方程
对后部指标函数Fk,nF_{k,n}Fk,n及最优函数fk(xk)f_k(x_k)fk(xk)有
(1)当Fk,n=∑j=knd(xj,uj)F_{k,n}=\sum\limits_{j=k}^nd(x_j,u_j)Fk,n=j=k∑nd(xj,uj)时,fk(xk)满足递推方程f_k(x_k)满足递推方程fk(xk)满足递推方程
{fk(xk)=optuk∈Dk{d(xk,uk)+fk+1(xk+1)},fn+1(xn+1)=0,k=n,n−1,⋯,2,1\left\{ \begin{array}{lcl} f_k(x_k) = \mathop{opt} \limits_{u_k \in D_k} \{ d(x_k,u_k) + f_{k+1}(x_{k+1})\} ,\\ f_{n+1}(x_{n+1})=0, k=n,n-1,\cdots,2,1 \end{array} \right. {fk(xk)=uk∈Dkopt{d(xk,uk)+fk+1(xk+1)},fn+1(xn+1)=0,k=n,n−1,⋯,2,1
(2)当Fk,n=∏j=knd(xj,uj)F_{k,n}=\prod\limits_{j=k}^nd(x_j,u_j)Fk,n=j=k∏nd(xj,uj)时,fk(xk)满足递推方程f_k(x_k)满足递推方程fk(xk)满足递推方程
{fk(xk)=optuk∈Dk{d(xk,uk)⋅fk+1(xk+1)},fn+1(xn+1)=1,k=n,n−1,⋯,2,1\left\{ \begin{array}{lcl} f_k(x_k) = \mathop{opt} \limits_{u_k \in D_k} \{ d(x_k,u_k) \cdot f_{k+1}(x_{k+1})\} ,\\ f_{n+1}(x_{n+1})=1, k=n,n-1,\cdots,2,1 \end{array} \right. {fk(xk)=uk∈Dkopt{d(xk,uk)⋅fk+1(xk+1)},fn+1(xn+1)=1,k=n,n−1,⋯,2,1
利用这两个递推公式原则上可求出最优函数f1(x1)f_1(x_1)f1(x1),称这两种递推公式为逆序动态规划方程。这种求最优函数的方法叫逆序法。
1.3.3 顺序动态规划方程
对前部指标函数F1,kF_{1,k}F1,k及最优函数fk(xk)f_k(x_k)fk(xk)有
(1)当F1,k=∑j=2kd(uj−1,xj)F_{1,k}=\sum\limits_{j=2}^kd(u_{j-1},x_j)F1,k=j=2∑kd(uj−1,xj)时,fk(xk)f_k(x_k)fk(xk)满足递推方程
{fk(xk)=optuk−1∈Dk−1{d(uk−1,xk)+fk−1(xk−1)},f1(x1)=0,k=2,3,⋯,n,n+1\left\{ \begin{array}{lcl} f_k(x_k) = \mathop{opt} \limits_{u_{k-1} \in D_{k-1}} \{ d(u_{k-1},x_k) + f_{k-1}(x_{k-1})\} ,\\ f_1(x_1)=0, k=2,3,\cdots,n,n+1 \end{array} \right. {fk(xk)=uk−1∈Dk−1opt{d(uk−1,xk)+fk−1(xk−1)},f1(x1)=0,k=2,3,⋯,n,n+1
(2)当F1,k=∏j=knd(uj−1,xj)F_{1,k}=\prod\limits_{j=k}^nd(u_{j-1},x_j)F1,k=j=k∏nd(uj−1,xj)时,fk(xk)f_k(x_k)fk(xk)满足递推方程
{fk(xk)=optuk−1∈Dk−1{d(uk−1,xk)⋅fk−1(xk−1)},f1(x1)=1,k=2,3,⋯,n,n+1\left\{ \begin{array}{lcl} f_k(x_k) = \mathop{opt} \limits_{u_{k-1} \in D_{k-1}} \{ d(u_{k-1},x_k) \cdot f_{k-1}(x_{k-1})\} ,\\ f_1(x_1)=1, k=2,3,\cdots,n,n+1 \end{array} \right. {fk(xk)=uk−1∈Dk−1opt{d(uk−1,xk)⋅fk−1(xk−1)},f1(x1)=1,k=2,3,⋯,n,n+1
利用这两个递推公式原则上可求出最优函数fn+1(xn+1)f_{n+1}(x_{n+1})fn+1(xn+1),称这两种递推公式为顺序动态规划方程。这种求最优函数的方法叫顺序法。
1.4 动态规划基本定理
基本定理 对于nnn阶段决策问题,若p1,n∗p^{\ast}_{1,n}p1,n∗是最优策略,则对任意满足1<k<n1<k<n1<k<n的自然数kkk,其子策略pk,n∗p^{\ast}_{k,n}pk,n∗(或p1,k∗p^{\ast}_{1,k}p1,k∗)对于以
xk=Tk−1(xk−1,uk−1∗)(或xk−1=Tk−1(uk−1∗,xk))x_k = T_{k-1}(x_{k-1},u^{\ast}_{k-1}) (或x_{k-1} = T_{k-1}(u^{\ast}_{k-1}, x_{k})) xk=Tk−1(xk−1,uk−1∗)(或xk−1=Tk−1(uk−1∗,xk))
为初始状态的kkk到nnn(或111到kkk)段子过程来说,也必定是最优策略。
动态规划之最优化原理与动态规划方程相关推荐
- 最优控制 3:最优控制理论中的极小值原理与动态规划
最优控制 3:使用极小值原理求解最优控制问题 引言 极小值原理 t f t_f tf 固定的情况 t f t_f tf 自由的情况 动态规划 连续系统 HJB 方程的推导 引言 经典变分法是一种特 ...
- c语言动态规划回溯的原理,「算法思想」分治、动态规划、回溯、贪心一锅炖...
观感度:????? 口味:东北一锅出 烹饪时间:10min 本文已收录在Github github.com/Geekhyt,感谢Star. 数据结构与算法系列专栏第四弹来袭,往期专栏链接如下: 初学者 ...
- 【算法之动态规划(一)】动态规划(DP)详解
一.基本概念 动态规划(dynamic programming)是 运筹学 的一个分支,是求解决策过程(decision process)最优化的数学方法.20世纪50年代初 美国 数学家R.E.Be ...
- 详解动态规划算法(Python实现动态规划算法典型例题)
动态规划(Dynamic programming) 是一种在数学.计算机科学和经济学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法. 动态规划算法是通过拆分问题,定义问题状态和状 ...
- python动态规划详解_经典动态规划例题整理(Python版)
由于本人的算法基础较为薄弱,所以在这里整理一下自己的做过的题,使自己能够随时随地回顾温习. 然后,本篇文章将会持续更新自己遇到的一些比较经典动态规划的题目,大家如果对代码有任何问题,直接在文章下面评论 ...
- java 动态规划找零钱_初探动态规划——LeetCode找零钱问题
1.简介: 在leetcode上刷题的时候,遇到了一道找零钱的动态规划题,后台测试用例很变态,必须把算法优化的很好才能通过.也借此机会好好的研究了一下动态规划.在下小白一个,大神轻喷. 2.题目如下: ...
- matlab 背包问题动态规划,从01背包问题理解动态规划---初体验
这个问题有两种解法,动态规划和贪婪算法.本文仅涉及动态规划. 先不套用动态规划的具体定义,试着想,碰见这种题目,怎么解决? 首先想到的,一般是穷举法,一个一个地试,对于数目小的例子适用,如果容量增大, ...
- 动态规划算法的原理和实现(Java)
动态规划算法介绍 动态规划(Dynamic Programming)算法的核心思想是:将大问题划分为小问题进行解决,从而一步步获取最优解的处理算法 动态规划算法与分治算法类似,其基本思想也是将待求解问 ...
- 动态规划立体匹配代码_411,动态规划和递归求不同路径 II
问题描述 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为"Start" ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为& ...
最新文章
- Silve“.NET研究”rlight 游戏开发小技巧:传说中的透视跑马灯
- WP8.1学习系列(第二十五章)——控件样式
- SD-WAN — Overview
- vue 报错./lib/html5-entities.js, this relative module was not found
- 如何让两个输入框保持长度一直_投篮如何保持直线,为什么有些职业球员手臂弯曲投篮一直直...
- matlab相关论文,matlab
- 用Visual C++实现远程线程嵌入技术
- Caffe的创始人贾扬清说,算法工程师将不存在?
- 如何在工作中更好的学习
- rpg制作大师2003_RPG制作大师MV 我们一起做游戏(十五)
- if(!!boolean)两次取反
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 表格:让表格更加紧凑
- CHIP-seq 分析笔记
- 华为手机上的网上邻居怎么用_华为手机上的网上邻居怎么用_HUAWEI Mate 8 网络邻居 使用教程...
- WORD文档插入页码时有几页不显示不显示页码?怎么解决
- ANSYS Electronics Desktop 19.2电机仿真思路
- NC7WZ14P6X绝对最大额定参数
- python如何求积分_python 求定积分和不定积分示例
- Java中violate关键字详解
- openlayers加载百度地图作为底图坐标偏移的解决办法
热门文章
- Intellij Idea flutter launch emulator Manager Unable to locate adb
- 攒机:5000就搞定的绝对NB配置!
- 7-316 藏头诗 (15分)
- 为 repo ‘AppStream‘ 下载元数据失败 错误:为 repo ‘AppStream‘ 下载元数据失败
- python round()_使用Xcode + Python进行IOS运动轨迹模拟!
- Windows10下配置JavaCup、JFlex及运行JavaCup测试用例
- word/wps分页
- [电商实时数仓] 数据仓库建模过程分析
- (重要)同网段和不同网段设备通信过程详解
- go语言web开发1 相关知识