动态规划算法原理与的应用.docx
- 文档编号:4386972
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:15
- 大小:54.23KB
动态规划算法原理与的应用.docx
《动态规划算法原理与的应用.docx》由会员分享,可在线阅读,更多相关《动态规划算法原理与的应用.docx(15页珍藏版)》请在冰豆网上搜索。
动态规划算法原理与的应用
动态规划算法原理
及其应用研究
系别:
x
x
x
姓名:
x
x
x
指导教员:
x
x
x
2012年5月20日摘要:
动态规划是解决最优化问题的基本方法,本文介绍了动态规划的基本思想和基本步骤,并通过几个实例的分析,研究了利用动态规划设计算法的具体途径。
关键词:
动态规划多阶段决策
1.引言
规划问题的最终目的就是确定各决策变量的取值,以使目标函数达到极大或
极小。
在线性规划和非线性规划中,决策变量都是以集合的形式被一次性处理的;然而,有时我们也会面对决策变量需分期、分批处理的多阶段决策问题。
所谓多阶段决策问题是指这样一类活动过程:
它可以分解为若干个互相联系的阶段,在
每一阶段分别对应着一组可供选取的决策集合;即构成过程的每个阶段都需要进行一次决策的决策问题。
将各个阶段的决策综合起来构成一个决策序列,称为一■
个策略。
显然,由于各个阶段选取的决策不同,对应整个过程可以有一系列不同的策略。
当过程采取某个具体策略时,相应可以得到一个确定的效果,采取不同的策略,就会得到不同的效果。
多阶段的决策问题,就是要在所有可能采取的策略中选取一个最优的策略,以便得到最佳的效果。
动态规划是一种求解多阶段决策问题的系统技术,可以说它横跨整个规划领域(线性规划和非线性规划)。
在
多阶段决策问题中,有些问题对阶段的划分具有明显的时序性,动态规划的“动
态”二字也由此而得名。
动态规划的主要创始人是美国数学家贝尔曼(Bellman)。
20世纪40年代末50年代初,当时在兰德公司(RandCorporation)从事研究工作的贝尔曼首先提出了动态规划的概念。
1957年贝尔曼发表了数篇研究论文,并出版了他的第一部著作《动态规划》。
该著作成为了当时唯一的进一步研究和应用动态规划的理论源泉。
在贝尔曼及其助手们致力于发展和推广这一技术的同时,其他一些学者也对动态规划的发展做出了重大的贡献,其中最值得一提的是
爱尔思(Aris)和梅特顿(Mitten)。
爱尔思先后于1961年和1964年出版了两部关于动态规划的著作,并于1964年同尼母霍思尔(Nemhause)、威尔德(Wild)一道创建了处理分枝、循环性多阶段决策系统的一般性理论。
梅特顿提出了许多对动态规划后来发展有着重要意义的基础性观点,并且对明晰动态规划路径的数学性质做出了巨大的贡献。
动态规划问世以来,在工程技术、经济管理等社会各个领域都有着广泛的应用,并且获得了显著的效果。
在经济管理方面,动态规划可以用来解决最优路径
问题、资源分配问题、生产调度问题、库存管理问题、排序问题、设备更新问题以及生产过程最优控制问题等,是经济管理中一种重要的决策技术。
许多规划问题用动态规划的方法来处理,常比线性规划或非线性规划更有效。
特别是对于离散的问题,由于解析数学无法发挥作用,动态规划便成为了一种非常有用的工具。
动态规划可以按照决策过程的演变是否确定分为确定性动态规划和随机性动态规划;也可以按照决策变量的取值是否连续分为连续性动态规划和离散性动态规划。
虽然动态规划主要用于求解以时间划分阶段的动态过程的优化问题,但是一
些与时间无关的静态规划(如线性规划、非线性规划),只要人为地引进时间因素,把它视为多阶段决策过程,也可以用动态规划方法方便地求解。
2.动态规划的基本思想
一般来说,只要问题可以划分成规模更小的子问题,并且原问题的最优解中包含了子问题的最优解,则可以考虑用动态规划解决。
动态规划的实质是分治思想和解决冗余,因此,动态规划是一种将问题实例分解为更小的、相似的子问题,并存储子问题的解而避免计算重复的子问题,以解决最优化问题的算法策略。
由
此可知,动态规划法与分治法和贪心法类似,它们都是将问题实例归纳为更小的、相似的子问题,并通过求解子问题产生一个全局最优解。
其中贪心法的当前选择可能要依赖已经作出的所有选择,但不依赖于有待于做出的选择和子问题。
因此贪心法自顶向下,一步一步地作出贪心选择;而分治法中的各个子问题是独立的(即不包含公共的子子问题),因此一旦递归地求出各子问题的解后,便可自下而上地将子问题的解合并成问题的解。
但不足的是,如果当前选择可能要依赖子问题的解时,则难以通过局部的贪心策略达到全局最优解;如果各子问题是不独立的,则分治法要做许多不必要的工作,重复地解公共的子问题。
解决上述问题的办法是利用动态规划。
该方法主要应用于最优化问题,这类问题会有多种可能的解,每个解都有一个值,而动态规划找出其中最优(最大或最小)值的解。
若存在若干个取最优值的解的话,它只取其中的一个。
在求解过程中,该方法也是通过求解局部子问题的解达到全局最优解,但与分治法和贪心法不同的是,动态规划允许这些子问题不独立,也允许其通过自身子问题的解作出选择,该方法对每一个子问题只解一次,并将结果保存起来,避免每次碰到时都要重复计算。
因此,动态规划法所针对的问题有一个显著的特征,即它所对应的子问题树中的子问题呈现大量的重复。
动态规划法的关键就在于,对于重复出现的子问题,只在第一次遇到时加以求解,并把答案保存起来,让以后再遇到时直接引用,不必重新求解。
3.动态规划的基本概念
动态规划的数学描述离不开它的一些基本概念与符号,因此有必要在介绍多
阶段决策过程的数学描述的基础上,系统地介绍动态规划的一些基本概念。
3.1多阶段决策问题
如果一类活动过程可以分为若干个互相联系的阶段,在每一个阶段都需作出决策,一个阶段的决策确定以后,常常影响到下一个阶段的决策,从而就完全确定了一个过程的活动路线,则称它为多阶段决策问题。
各个阶段的决策构成一个决策序列,称为一个策略。
每一个阶段都有若干个决策可供选择,因而就有许多策略供我们选取,对应于一个策略可以确定活动的效果,这个效果可以用数量来确定。
策略不同,效果也不同,多阶段决策问题,就是要在可以选择的那些策略中间,选取一个最优策略,使在预定的标准下达到最好的效果.
3.2动态规划问题中的术语
阶段:
把所给求解问题的过程恰当地分成若干个相互联系的阶段,以便于求
解,过程不同,阶段数就可能不同•描述阶段的变量称为阶段变量。
在多数情况下,阶段变量是离散的,用k表示。
此外,也有阶段变量是连续的情形。
如果过程可以在任何时刻作出决策,且在任意两个不同的时刻之间允许有无穷多个决策时,阶段变量就是连续的。
状态:
状态表示每个阶段开始面临的自然状况或客观条件,它不以人们的主
观意志为转移,也称为不可控因素。
在上面的例子中状态就是某阶段的出发位置,它既是该阶段某路的起点,同时又是前一阶段某支路的终点。
过程的状态通常可以用一个或一组数来描述,称为状态变量。
一般,状态是离散的,但有时为了方便也将状态取成连续的。
当然,在现实生活中,由于变量形式的限制,所有的状态都是离散的,但从分析的观点,有时将状态作为连续的处理将会有很大的好处。
此外,状态可以有多个分量(多维情形),因而用向量来代表;而且在每个阶段的状态维数可以不同。
无后效性:
我们要求状态具有下面的性质:
如果给定某一阶段的状态,则在这一阶段以后过程的发展不受这阶段以前各段状态的影响,所有各阶段都确定时,整个过程也就确定了。
换句话说,过程的每一次实现可以用一个状态序列表示,在前面的例子中每阶段的状态是该线路的始点,确定了这些点的序列,整个
线路也就完全确定。
从某一阶段以后的线路开始,当这段的始点给定时,不受以前线路(所通过的点)的影响。
状态的这个性质意味着过程的历史只能通过当前的状态去影响它的未来的发展,这个性质称为无后效性。
决策:
一个阶段的状态给定以后,从该状态演变到下一阶段某个状态的一种选择(行动)称为决策。
在最优控制中,也称为控制。
在许多间题中,决策可以自然而然地表示为一个数或一组数。
不同的决策对应着不同的数值。
描述决策的变量称决策变量,因状态满足无后效性,故在每个阶段选择决策时只需考虑当前的状态而无须考虑过程的历史。
决策变量的范围称为允许决策集合。
策略:
由每个阶段的决策组成的序列称为策略。
对于每一个实际的多阶段决
策过程,可供选取的策略有一定的范围限制,这个范围称为允许策略集合。
允许策略集合中达到最优效果的策略称为最优策略。
给定k阶段状态变量x(k)的值后,如果这一阶段的决策变量一经确定,第k+1阶段的状态变量x(k+1)也就完全确定,即x(k+1)的值随x(k)和第k阶段的决策u(k)的值变化而变化,那么可以把这一关系看成(x(k),u(k))与x(k+1)确定的对应关系,用x(k+1)=Tk(x(k),u(k))表示。
这是从k阶段到k+1阶段的状态转移规律,称为状态转移方程。
最优性原理:
作为整个过程的最优策略,它满足:
相对前面决策所形成的状态而言,余下的子策略必然构成最优子策略”。
4.动态规划求解的基本步骤
动态规划所处理的问题是一个多阶段决策问题,一般由初始状态开始,通过对中间阶段决策的选择,达到结束状态。
这些决策形成了一个决策序列,同时确定了完成整个过程的一条活动路线(通常是求最优的活动路线)。
如图所示。
动态规划的设计都有着一定的模式,一般要经历以下几个步骤。
初始状态^丨决策1|f|决策2丨^>|决策n丨―结束状态
动态规划决策过程示意图
⑴划分阶段:
,按照问题的时间或空间特征,把问题分为若干个阶段。
在划分阶段时,注意划分后的阶段一定要是有序的或者是可排序的,否则问题就无法求解。
(2)确定状态和状态变量:
将问题发展到各个阶段时所处于的各种客观情况用不同的状态表示出来。
当然,状态的选择要满足无后效性。
(3)确定决策并写出状态转移方程:
因为决策和状态转移有着天然的联系,状
态转移就是根据上一阶段的状态和决策来导出本阶段的状态
所以如果确定了决
策,状态转移方程也就可写出。
但事实上常常是反过来做,
根据相邻两段各状态
之间的关系来确定决策
(4)寻找边界条件:
给出的状态转移方程是一个递推式,
需要一个递推的终止
条件或边界条件
(5)程序设计实现:
动态规划的主要难点在于理论上的设计,一旦设计完成,实现部分就会非常简单。
根据上述动态规划设计的步骤,可得到大体解题框架如图所示。
对f石)初站化i边界条件)—~forkdoi】(这里以顺序求解为例)
以恥)^一个极值(8或一8)
对毒一个协GJwDb)
-
«£(「(乱"心)」
奴g1'
输出fn(sj
动态规划设计的一般模式图
上述提供了动态规划方法的一般模式,对于简单的动态规划问题,可以按部
就班地进行动态规划的设计。
下面,给出一个利用动态规划方法求解的典型例子。
V数字三角形问题>上图示出了一个数字三角形宝塔。
数字三角形中的数字为不超过100的整数。
现规定从最顶层走到最底层,每一步可沿左斜线向下或右斜线向下走。
任务一:
假设三角形行数<10键盘输入一个确定的整数值M,编程确定是否存在一条路径,使得沿着该路径所经过的数字的总和恰为M,若存在则给出所有路径,若不存在,则输出“NOAnswer!
”字样。
任务二:
假设三角形行数<100编程求解从最顶层走到最底层的一条路径,使得沿着该路径所经过的数字的总和最大,输出最大值。
输人数据:
由文件输入数据,任务一中文件第一行是三角形的行数N和整数
值M。
以后的N行分别是从最顶层到最底层的每一层中的数字。
任务二中文件
数据格式同任务一,只是第一行中没有整数值M。
在例子中任务二的文件数据
表示如下:
输入:
5
7
输出:
输出路径和最大值
38
7
或“NoAnswer!
字样
810
38
2774
81
0
45265
27
44
图3数字三角形
45
26
5
【分析】对于这一问题,很容易想到用枚举的方法去解决,即列举出所有路径并记录每一条路径所经过的数字总和。
然后判断数字总和是否等于给定的整数值M或寻找出最大的数字总和,这一想法很直观,而且对于任务一,由于数字三角形的行数不大(<=10),因此其枚举量不是很大,应该能够实现。
但对于任务二,如果用枚举的方法,当三角形的行数等于100时,其枚举量之大是可想而知的,显然,枚举法对于任务二的求解并不适用。
其实,只要对对任务二稍加分析,就可以得出一个结论:
如果得到一条由顶至底的某处的一条最佳路径,那么对于该路径上的每一个中间点来说,由顶至该中间点的路径所经过的数字和也为最大。
因此该问题是一个典型的多阶段决策最优化的问题。
算法设计与分析如下:
对于任务一,合理地确认枚举的方法,可以优化问题的解法。
由于从塔顶到底层每次都只有两种走法,即左或右。
设“0”示左,“1表示右,对于层数为
N的数字塔,从顶到底的一种走法可用一个N-1位的二进制数表示。
如例中二进制数字串1011,其对应的路径应该是:
8—1—4—6。
这样就可以用一个N—I位的二进制数来模拟走法和确定解的范围。
穷举出从0到2n-1个十进制数所对应
的N-1位二进制串对应的路径中的数字总和,判定其是否等于M而求得问题的
解。
对于任务二,采用动态规划中的顺推解法。
按三角形的行划分阶段,若行数为n,则可把问题看做一个n-1个阶段的决策问题。
从始点出发,依顺向求出第一阶段、第二阶段……第n—1阶段中各决策点至始点的最佳路径,最终求出始点到终点的最佳路径。
设:
fk(Uk)为从第k阶段中的点Uk至三角形顶点有一条最佳路径,该路径所经过的数字的总和最大,fk(Uk)表示为这个数字和;由于每一次决策有两个选择,或沿左斜线向下,或沿右斜线向下,因此设:
Uk1为k-1阶段中某点Uk沿左斜线向下的点;
Uk2为k-1阶段中某点Uk沿右斜线向下的点;
dk(Uk1)为k阶段中Uk1的数字;dk(Uk2)为k阶段中Uk2的数字。
因而可写出顺推关系式(状态转移方程)为:
fk(Uk)=max{fk-1(Uk)+dk(Uk1),fk-1(Uk)+dk(Uk2)}(k=1,2,3,…,n)f0(U0)=0
经过一次顺推,便可分别求出由顶至底N个数的N条路径,在这N条路径所经过的N个数字和中,最大值即为正确答案。
5.动态规划的应用实例
5.1最短路线问题
[例1]美国黑金石油公司(TheBlackGoldPetroleumCompany)最近在阿拉斯加(Alaska)的北斯洛波(NorthSlope)发现了大的石油储量。
为了大规模开发这一油田,首先必须建立相应的输运网络,使北斯洛波生产的原油能运至美国的3个装运港之一。
在油田的集输站(结点C)与装运港(结点P1、P2、P3)之间
需要若干个中间站,中间站之间的联通情况如图7-2所示,图中线段上的数字代表两站之间的距离(单位:
10千米)。
试确定一最佳的输运线路,使原油的输送距离最短。
解:
最短路线有一个重要性质,即如果由起点A经过B点和C点到达终点D是一条最短路线,则由B点经C点到达终点D一定是B到D的最短路(贝尔曼最优化原理)。
此性质用反证法很容易证明,因为如果不是这样,则从B点到D点有另一条距离更短的路线存在,不妨假设为B—P—D;从而可知路线A—B—P—D比原路线A—B—C—D距离短,这与原路线A—B—C—D是最短路线相矛盾,性质得证。
根据最短路线的这一性质,寻找最短路线的方法就是从最后阶段开始,由后向前逐步递推求出各点到终点的最短路线,最后求得由始点到终点的最短路;即动态规划的方法是从终点逐段向始点方向寻找最短路线的一种方法。
按照动态规划的
方法,将此过程划分为4个阶段,即阶段变量k",2,3,4;取过程在各阶段所处
的位置为状态变量Sk,按逆序算法求解。
10
Pi
P2
P3
M11
图7-2
当k=4时:
由结点M31到达目的地有两条路线可以选择,即选择P1或P2;故:
•(8]
彳4(S4=M31)=min丿?
=6
选择P2,由结点M32到达目的地有三条路线可以选择,即选择P1、P2或P3;故:
iN
f4(S4=M32)=min<3卜=3
选择P2,由结点M33到达目的地也有三条路线可以选择,即选择P1、P2或P3;故:
f4(S4=M33)=min<6》=5
选择P3,由结点M34到达目的地有两条路线可以选择,即选择P2或P3;故:
f4(S4=M34)=min,>=3
*
选择P2当k=3时:
由结点M21到达下一阶段有三条路线可以选择,即选择M31、
M32或M33;故:
[10+6、
f3(S3=M21)=min<7+3,=10
[6+5,
选择M32由结点M22到达下一阶段也有三条路线可以选择,即选择M31、M32
或M33;故:
[9+6]
f3(S3=M22)=min<7+3〉=10
选择M32或M33,由结点M23至V达下一阶段也有三条路线可以选择,即选择
M32、M33或M34;故:
113
f3(S3=M23)=min」4+5、=9
(6+3,
选择M33或M34当k=2时:
由结点M11到达下一阶段有两条路线可以选择,
即选择M21或M22;故:
”8+10、
f2(S2=M“)=min,>=16
21£+10:
选择M22,由结点M12,至U达下一阶段也有两条路线可以选择,即选择M22或
M23;故:
.[9+10、
f?
(S2=M[2)=min』>=19
J1+9:
选择M22,当k=1时:
由结点C到达下一阶段有两条路线可以选择,即选择M11或M12;故:
.12+16]
fi(S|=C)=min」,=28
]0+19:
选择M11,,而通过顺序(计算的反顺序)追踪(黑体标示)可以得到两条最佳的输运线路:
C—M11—M22—M32—P2;C—M11—M22—M33—P3。
最短的输送距离是280千米。
5.2资源分配问题
所谓资源分配问题,就是将一定数量的一种或若干种资源(如原材料、机器设备、资金、劳动力等)恰当地分配给若干个使用者,以使资源得到最有效地利用。
设有m种资源,总量分别为bi(i=1,2,…,m),用于生产n种产品,若用xij代表用于生产第j种产品的第i种资源的数量(j=1,2,…,n),则生产第j种产品的收益是其所获得的各种资源数量的函数,即gj=f(x1j,x2j,…,xmj)。
由于总收
益是n种产品收益的和,此问题可用如下静态模型加以描述:
n
.maxz八gj
j二
n
丿ZXij=b(i=1,2,|il,m)
州Z0(i=1,21m匕111,2n
若Xij是连续变量,当gj=f(X1j,X2j,..,Xmj)是线性函数时,该模型是线
性规划模型;当gj=f(X1j,X2j,…,Xmj)是非线性函数时,该模型是非线性规划模型。
若xij是离散变量或(和)gj=f(Xtj’Xzj,…,xmj)是离散函数时,此
模型用线性规划或非线性规划来求解都将是非常麻烦的。
然而在此情况下,由于这类问题的特殊结构,可以将它看成为一个多阶段决策问题,并利用动态规划的递推关系来求解。
本例只考虑一维资源的分配问题,设状态变量&表示分配于从第k个阶段至过程最终(第N个阶段)的资源数量,即第k个阶段初资源的拥有量;决策变量xk表示第k个阶段资源的分配量。
于是有状态转移律:
允许决策集合:
Dk(Sk)={兀|0_xk_Sk}
最优指标函数(动态规划的逆序递推关系式):
'fk(Sk^oma)s{gk(Xk)'fki(Ski)}(k=N,N—1,N—囱,1
0■:
Xk鸟
—fN卑(Sn屮)=0利用这一递推关系式,最后求得的f/S)即为所求问题的最大总收益,下面来看一个具体的例子。
[例2]某公司拟将500万元的资本投入所属的甲、乙、丙三个工厂进行技术改造,各工厂获得投资后年利润将有相应的增长,增长额如表7-1所示。
试确定500万
元资本的分配方案,以使公司总的年利润增长额最大。
表7-1
投
100
200
300万
400
500
资额
万元
万元
元
万元
万元
甲
30
70
90
120
130
乙
50
100
110
110
110
丙
40
60
110
120
120
解:
将问题按工厂分为三个阶段k=1,2,3,设状态变量Sk(k=1,2,3)代表从第k个工厂到第3个工厂的投资额,决策变量Xk代表第k个工厂的投资额。
于是有状态转移率£[Sk-Xk、允许决策集合Dk(SJ={兀|0乞Xk乞Sk}和递推关系
式:
-fk(SkH0mia)S{gk(Xk)-fk16-Xk)}(k二3,2,1
-f4(S4)=0
当k=3时:
f3(S3)=関0{93(沧)9=0團鄭93区)}
gi(xjf2(S-xj}
于是有表7-2,表中x3表示第二个阶段的最优决策
表7-2(单位:
百万元)
S3
o
1
2
3
4
5
x3
o
1
2
3
4
5
f3(S3
)0
0.4
0.6
1.1
1.2
1.
2
当k=2时:
f2(S2)max{g2(x2)f3(S2-x2)}。
于是有表7-3。
表7-3(单位:
百万元)
\〉
g2(x2)+f3(s2-x2)
f2(S
2)x2
0
1
2
3
4
5
(
)0+
0
0
0
*
0+
0.4
0.5+
0
0.5
1
2
>0+
0.6
0.5+
0.4
1.0
+0
1.0
2
3
0+
1.1
0.5+
0.6
1.0
+0.4
1.1
+0
1.4
2
I0+
1.2
0.5+
1.1
1.0
+0.6
1.1
+0.4
1.1
+0
1.6
1
,2
5
j0+
1.2
0.5+
1.2
1.0
+1.1
1.1
+0.6
1.1
+0.4
1.
1+0
2.1
2
当k=1时:
g1(x1)+f2(s1-x1)
f1(S)
X1
x
S
0
1
2
3
4
5
50+2.1
0.3+1.6
0.7+
1.4
0.9+
1.0
1.2+
0.5
1.3+0
2.1
0,2
血1)它世{
于是:
然后按计算表格的顺序反推算,可知最优分配方案有两个:
(1)甲工厂投资200万元,乙工厂投资200万元,丙工厂投资100万元;
(2)甲工厂没有投资,乙工厂投资200万元,丙工
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 动态 规划 算法 原理 应用