动态规划
Posted jhcelue
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态规划相关的知识,希望对你有一定的参考价值。
最优化问题
动态规划(Dynamic programming)是用来优化一个随机问题的最优解。随机问题是仅仅我们优化的目标是随机的,最优解指的是在统计平均上的最优。
比較权威的參考资料:Dimiri P. Bertsekas, Dynamic Programming and Optimal Control, 3rd ed., Athena Scientific, Belmont, Massachusetts,2005
一般优化问题描写叙述
u 是最优化问题的决策g(u) 是决策的代价函数U 是全部决策ui 的集合动态规划的优化问题能够分为:
- 随机优化问题:
由于代价函数存在一个随机变量
w ,因此最优解的优化目标是代价函数的统计平均。
g(u)=EwG(u,w) - 确定优化问题:
这个问题代价函数是一个确定函数。
怎样区分这两个问题呢?我们能够观察系统是否存在随机性,这个随机性是体如今系统之中的,而不是这个系统。
举个栗子,优化一个随机网络是个确定性问题,即给定随意网络结构,找到最短路径。由于网络尽管是随机的,可是优化的目标在确定以后是不变的。
然而优化一个随时变化的网络是一个随机问题。即一边进行优化。网络结构一边在变的问题。
动态规划正是能够解决每个步骤都有随机变量
随机动态规划的结构
离散时间系统
当中:
k :表示离散时间 (也能够看作是步骤)。xk :表示在时间k 的状态 ,该状态具有马尔科夫性,即当前状态已经包括决策所须要的各种信息,与之前的状态无关。当前状态将会參与决策。uk :表示在时间k 所输出的控制 ,即再时间k 在集合U 中选择的控制信息。wk :是一个随机变量 ,这个随机变量将会影响代价函数。N :表示控制的窗体时间。
离散时间系统代价函数
我们的优化目标就是优化这个系统的平均代价。
能够看到这个代价是每个决策的代价和终于状态代价的统计平均。
反馈
前面描写叙述了动态规划的目的,动态规划为了优化一个随机函数。
它的解是平均意义上的最优,并非每次都是最优。动态规划问题能够分为随机优化问题以及确定优化问题。当中确定优化问题能够每次都取得最优解(算法导论上面介绍的就是确定优化问题,这仅仅是动态优化的冰山一角。)。
动态规划除了能够分为随机动态规划和确定动态规划,还能够分为带反馈和不带反馈(feed back)。也有人叫做开环(open-loop)和闭环(closed-loop)。这个命名可能会导致我们理解错误。
由于,反馈并非指的前一级对后一级的反馈。而是当前状态
如图:
可见反馈真正的意义是,依据如今的状态以及信息
第一个栗子:随机动态优化问题
如果系统是一个零售商的进货系统。进货是周期性的。如果一个周期需求是
因此我们能够建立例如以下模型:
这个离散时间系统就能够描写叙述为:
其代价函数会随着时间叠加,所以这个系统的代价函数为:
我们能够看到每个周期其代价都会叠加,到最后会有一个终于状态的代价(为什么有这个代价呢?最好还是如果没有这个代价,在第
可是这明显是不合理的。
)
第二个栗子:确定动态优化问题
确定一个确定系统操作顺序问题:我们要找到A,B,C,D的最佳操作顺序。
当中有几个限制:
1. A必须在B之前运行,C必须在D之前运行
2. 必须从A和C開始,即起始状态必须为:
3. 状态
则能够画出一个相似二叉树的图:
显然仅仅须要遍历整个图我们就可以找到一个最优解。
第三个栗子:来点复杂的无线网络问题
系统描写叙述:我们须要在
1. 信道条件有两种:好的(概率为:
2. 在好的和坏的信道以下都能够传包。不同信道条件下传包的代价不同。好信道的代价为
坏的信道的代价为
3.
以下我们依据已知的知识对系统建模:
- 系统状态:
(mk,Hk) :mk 表示剩余数据包的数量,Hk 表示信道条件。 - 控制信息:
uk 有两个取值,0(表示不发送),1(表示发送)。 - 随机变量
w :表示信道变化 - 系统描写叙述:
mk+1=mk?uk,Hk+1=wk - 开销函数:
E{∑k=0N?1g((mk,Hk),uk)+C(mN)}
问题解答见:http://blog.csdn.net/sylar_d/article/details/50900521
小结
经过以上栗子我们看出,动态规划问题具有以下几点特性:
1. 控制是局部的,仅仅取决于当前的状态
2. 状态具有马尔科夫性。
3. 动态规划系统具有以下特性:
- 系统描写叙述:
xk+1=fk(xk,uk,wk),k=0,1,…,N?1 - 控制约束:
uk∈U(xk) - 随机概率分布:
Pk(wk)=Pk(?|xk,uk) - 策略:有一系列的策略
π={μ0,…,μN?1} 当中每个μk 都将状态xk 依照映射uk=μk(xk) 映射成为一个决策。 - 代价函数:从
x0 開始的策略π 的代价函数为:
Jπ(x0)=E{∑k=0N?1gk(xk,μk(xk),wk)+gN(xN)} - 最优策略:
J?(x0)=minπJπ(x0) - 最优策略
π? 必须满足:
Jπ?(x0)=J?(x0)
以上是关于动态规划的主要内容,如果未能解决你的问题,请参考以下文章
算法动态规划 ② ( 动态规划四要素 | 动态规划状态 State | 动态规划初始化 Initialize | 动态规划方程 Function | 动态规划答案 Answer )
算法动态规划 ② ( 动态规划四要素 | 动态规划状态 State | 动态规划初始化 Initialize | 动态规划方程 Function | 动态规划答案 Answer )
算法动态规划 ① ( 动态规划简介 | 自底向上的动态规划示例 | 自顶向下的动态规划示例 )
算法动态规划 ① ( 动态规划简介 | 自底向上的动态规划示例 | 自顶向下的动态规划示例 )
算法动态规划 ③ ( LeetCode 62.不同路径 | 问题分析 | 自顶向下的动态规划 | 自底向上的动态规划 )
算法动态规划 ③ ( LeetCode 62.不同路径 | 问题分析 | 自顶向下的动态规划 | 自底向上的动态规划 )