动态规划第5讲.ppt

  1. 1、本文档共68页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
动态规划第5讲

动态规划(普及组) 绍兴柯桥中学 吴建锋 认识动态规划 动态规划在运筹学等领域都得到很大的运用,它是求解最优化分阶段决策问题的一种数学方法,大约产生于50年代。1951年美国数学家Bellman等人根据一类多阶段决策问题的特点,把多阶段决策问题变换为一系列互相联系的单阶段问题,然后逐个加以解决。与此同时,他提出了解决这类问题的“最优性原理”,研究了许多实际问题,从而创建了解决最优化问题的一种新的方法―――动态规划。 多阶段决策过程 “动态”的内涵 在分阶段决策问题中,各个阶段采取的决策,一般来说是与时间有关的,决策依赖于当前的状态,又随即引起状态的改变(转移),一个决策序列就是在变化的状态中产生出来的,所以有“动态”的含义。因此,把处理它的方法称为动态规划方法。 问题1:求最短路径长度 假如有下图所示的交通示意图,有向边上的数值表示边的长度,求A到D的最短路径的长度 。 解法1:从初始阶段出发的顺推求解 1、用f[i]表示A到结点i的最短距离 2、我们可以求得f[A]=13,f[B]=19 (第一阶段) 3、第二阶段求解过程如下: f[B]+28=41 {f[D]的候选最优解} f[C]+15=34 { f[D]的候选最优解} 4、保存较优解:f[D]=min{f[B]+28,f[C]+15} 解法2:目标阶段出发的逆推求解 1、如果用f[i]表示编号为i的结点到终点d的最短距离,那么动态规划分阶段求解的过程如下所示: (1)f[D]:=0 {初始化} (2)f[B]:=28+f[D]; f[C]:=15+f[D] {第一阶段求解} (3)f[A]:=min{13+f[B],19+f[C]} {状态转移方程的体现,第二阶段求解} 什么叫状态转移方程 对于当前阶段的某个状态,必定有有上个阶段的子问题的某一批状态通过对应的决策变换而来,这些子问题的一批状态通过对应的决策应用,就导致了状态转移,新的状态就是当前阶段的某个状态。由于这个新状态的子状态可能不止一个,所以决策后的对应局部解也可能不止一个,在这些解中取一个最优解,就是当前阶段当前状态的最优解,这个求最优解的过程可用一个表达式来描述,这个表达式就是状态转移方程。 状态转移方程应用举例 在下列交通路线中,求节点1到节点10 的最短路径的长度。 分阶段决策的手工计算 第一阶段: f[2]=f[1]+13=13;f[3]=f[1]+21=21;f[4]=f[1]+9=9 第二阶段: f[5]=min{f[2]+15,f[3]+17,f[4]+24}=28; f[6]=min{f[2]+3,f[3]+5,f[4]+27}=16 第三阶段: f[7]=min{f[5]+11,f[6]+8}=24; f[8]=min{f[5]+13,f[6]+19}=35; f[9]=min{f[6]+16}=32 目标阶段求解 第四阶段: f[10]=min{f[7]+25,f[8]+11,f[9]+20}=46 具体化的状态转移方程 1、f[5]=min{f[j]+x,……},f[6]=min{f[k]+y,……} 2、f[j]+x中的f[j]就是上阶段子问题各状态的最优解 ;而x则是某个子状态转移到当前状态产生的决策效应(或者是代价) 一般化的状态转移方程 实际编程实现时,状态转移方程往往是一个通用计算式,在这个通用计算式中往往会包含各种子状态、子状态对应子问题的最优解、决策等参数。 动态规划的算法设计 如果用i表示当前需求解的阶段号(有时为了描述的方便,i也可表示当前阶段的前一个阶段),j表示当前阶段各个状态(或者说是阶段的各个节点编号),k表示前一阶段各个子状态能选择的策略,用f[I,j]表示起点1到第i阶段编号为j的结点(也可理解为状态)的最短距离,那么上面问题用动态规划求解的大致程序结构如下: 穷举所有的阶段(for i:=1 to 4 do) 穷举当前阶段i所有可能的状态j 穷举j状态所有对应的子状态的所有可选择的策略k F[I,j]:=min{f[i-1,j1]+x[j1,k] | j1表示状态j所有可能的子状态} 数据结构 A[I,j]=k表示第i阶段的第j个决策点(后继节点)是k; D[I,j]=k表示i和j节点之间的直接联边长度是k,如果是maxint则表示没有直接联边。如果是0则表示节点本身。 程序框架 for i:=1 to 4 do begin j:=1; repeat j2:=a[I,j]; k:=1; repeat j1:=a[i-1,k]; if d[j1,j2]maxint then f[

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档