动态规划_多阶段决策问题的求解方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

动态规划_多阶段决策问题的求解方法
1.构造状态网络; :一:解决多阶段决策最优化的过程为动态规划方法在程序设计中,有一类活动的过程,由于它的特殊性,可将过程
2.根据状态转移关系和状态转移方程建立最优值的分成若干个互相联系的阶段,在它的每一阶段都需要做出决策,从而
3.按阶段的先后次序计算每个状态的最优值。

使整个过程达到最好的活动效果。

因此各个阶段决策的选取不能任逆向思维法是指从问题目标状态出发倒推回初始意确定,它依赖于当前面临的状态,又影响以后的发展。

当各个阶段态的思维方法。

动态规划的逆向思维法的要点可归纳为以决策确定后,就组成一个决策序列,因而也就确定了整个过程的一条 1.分析最优值的结构,刻画其结构特征; 活动路线。

这种把一个问题看作是一个前后关联具有链状结构的多 2.递归地定义最优值; 阶段过程就称为多阶段决策过程,这种问题称为多阶段决策问题。

3.按自底向上或自顶向下记忆化的方式计算最优在多阶段决策问题中,各个阶段采取的决策,一般来说是与时间有关
的,决策依赖于当前状态,又随即引起状态的转移,一个决策序列如果原问题可以分解成几个本质相同、规模较小的就是在变化的状态中产生出来的,故有"动态"的含义,我们称这种就会联想到从逆向思维的角度寻求问题的解决。

一般
解决多阶段决策最优化的过程为动态规划方法。

策问题多采用动态规划逆向思维方法解决。

二、举:二:动态规划最优化原理 pascal 语例说明本文以信息学奥赛用语言——最优化原理是动态规划的基础。

任何一个问题,如果失去了这言为编程个最优化原理的支持,就不可能用动态规划方法计算。

这个“最优化说明,其他编程语言编写方法相同,语句类似。

原理”如果用数学化一点的语言来描述的话,就是:假设为了解决某 :一:问题描述一优化问题,需要依次作出 n 个决策 D1,
D2,,Dn,如若这个决策设有 N 个不相同的整数组成的数列,记为: 序列是最优的,对于任何一个整数 k,1 < k < n,不论前面 k 个决策是
怎样的,以后的最优决策只取决于由前面决策所确定的当前状态,即 ()且 ?? a1 a2 an aiajij以后的决策 Dk+1,Dk+2,,Dn 也是最优的。

作为整个过程的最优例如 3,18,7,14,10,12,23,41,16,24 策略具有这样的性质:即无论过去的状态和决策如何,对以前的决策若存在 i1<i2 <ie 且有 ai1<ai2 <aie 则称为长度
序列。

如上例中 3,18,23,24 就是一个长度为 4 的不下
也有 3,7,10,12,16,24 长度为 6 的不下降序列。

程序
(1)若 an-1<an 则存在长度为 2 的不下降序列 an-1,an 。

begin
[] k:=j;l:=aj,2; (2)若 an-1>an 则存在长度为 1 的不下降序列 an-1 或
an 。

end; 3(一般若从 ai 开始,此时最长不下降序列应该按下列方法求出: if
l>0 then 在 ai+1 ,ai+2, an 中,找出一个比 ai 大的且最长的不下降序begin ,作为它的后继。

4(为算法上的需要,定义一个数组: []ai,2:=l+1; []a:array1..n,1..3of integer; []ai,3:=k; [][] ai,1表示 aiend []ai,2表示从 i 位置到达 n 的最长不下降序列长度 end; []ai,3表示从 i 位置开始最长不下降序列的下一个位置 []amax:=a1,2;
初始化:for i:=1 to n do l:=1; ([])[][]begin readai,1;ai,2:=1;ai,3=0 for j:=2 to n-1 do
end; []if ai,2>amax then
下面给出求最长不下降序列的算法:begin
for i:=n-1 downto 1 do []amax:=ai,2;
begin l:=i; end;
l:=1;k:=0; ()writelnamax:3; for j:=i+1 to n do while l<>0 do [][][][] if aj,1>ai,1and aj,2>l then begin k:=j;l:=aj,2end; begin
if l>0 then ([])write al,1:3;
begin []l:=al,3; []ai,2:=l+1; end;
[]ai,3:=k; end.
end :四:运行结果
end; 6 下面找出最长不下降序列,并排序列:3 7 10 12 23 41 多阶段决策问
题典型题目很多,篇幅限制,在[]amax:=a1,2;l:=1; 此不一一举例。

三、动态规划解题的好处及注意事项 :一:动态规划解题的好处 for j:=2 to n-1 do []动态规划的最大优势在于它具有极高的效率,而且动态规划还 if
ai,2>amax then
begin 有其他的优势,例如:动态规划可以得出一系列解,算法清晰简便,程[]amax:=ai,2; 序易编、易调,等等。

动态规划是研究一类最优化问题的方
法,在经 l:=i; 济、工程技术、企业管理、工农业生产及军事等领域中都有广泛
的应
(end; 用。

近年来,在 ACM/ICPC 中,使用动态规划或部分应用动态规划
[])最长不下降序列长度为 amax(al,2) 思维求解的题不仅常见,而且形式也
多种多样。

而在与此相近的各
类信息学竞赛中,应用动态规划解题已经成为一种趋势,这和动态规序列
while l<>0 do
begin 划的优势不无关系。

([]) write al,1:3; :二:动态规划解题的注意事项1(动态规划它只适于解决
一定条件的最优策略问题,利用动态 []l:=al,3; 规划解题,阶段的划分是关键,必须依据题意分析,寻求合理的划分 end; ()阶段子问题方法。

而每个子问题是一
个比原问题简单得多的优化 :三:参考程序问题。

而且每个子问题的求解中,均利用它的一个后部子问题的最 ()program buxiajianginput,output; 优化结果,直到最后一个子问题所得最优解,它就是原问题的最优解。

const n=10; 2(应指出,动态规划是考察求解多阶段决策问题的途径和方法, [] var
a:array1..n,1..3of integer; 但它不像线性规划那样,具有一个标准的数学表达式和明确定义的
一组规划。

因此我们在学习时,除了要对基本概念和方法正确理解
i,k,l,j,amax:integer; 外,必须具体问题具体分析处理,以丰富的想象力去建立模型,用创 begin 造性的技巧去求解。

for i:=1 to n do 3.动态规划是运筹学的一个分支。

许多隐式图上的算法,例如求 begin 单源最短路径的 Dijkstra 算法、广度优先搜索算法,都渗透着动态规 ([])readai,1; 划的思想。

还有许多数学问题,表面上看起来与动态规划风马牛不 []ai,2:=1; 相及,但是其求解思想与动态规划是完全一致的。

[]ai,3:=0;
end;
for i:=n-1 downto 1 do
begin
l:=0;k:=0;
for j:=i+1 to n do 参考文献:([][]) ([]) if aj,1>ai,1and aj,2>lthen []1李立新.全国青少年信息学(计算机)竞赛例题解析.人民邮电出版社.1998.
749 当代经理人CONTEMPORARY MANAGER 2006 ? 21。

相关文档
最新文档