博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

动态规划概念

Posted on 2010-10-20 11:15  桃子在路上  阅读(412)  评论(0编辑  收藏  举报

一、动态规划程序设计的基本概念
   1、阶段k
    将所给问题的过程,按时间或空间特征分解成若干相互联系的阶段,以便按次序去求每个阶段的解。设阶段变量为k。
   2、状态Sk
    各阶段开始的客观条件叫做状态,常用Sk表示各阶段的状态变量,Sk是k阶段的状态集合。
    每个阶段的状态都是由以前阶段的状态以某种方式“变化”而来,这种“变化”称为状态转移。
    将各阶段按照一定的次序排列好之后,对于阶段i的状态只能由阶段i+1的状态通过状态转移方程得来,与其他状态没有关系,尤其是未发生的状态没有关系。换句话说,每个状态都是“过去历史的一个完整总结”。就个特性称为“无后效性”。
   3、决策
    当各阶段的状态取定以后,就可以作出不同的决定,从而确定下一个阶段的状态,这种决定称为决策。表示决策的变量称为决策变量,常用Uk(Sk)表示第k阶段当状态为Sk时的决策变量,某个状态的决策可能有多个,以Dk(Sk)表示决策集合。
    决策是问题解的属性。决策的目的就是“确定下一个阶段的状态”。
   4、最优策略
     在某一阶段的所有策略中,如有一个策略最优对于当前问题最优,则称最优策略。无论先前初始状态及初始策略如何,对于先前决策所形成的状态而言,其以后的所有决策应构成最优策略。这就是最优化原理。
   5、最优指标函数
     用于衡量所选定策略优劣的数量指标称为指标函数,最优指标函数记为Fk(Sk)。最优指标函数其实就是我们真正关心的问题的解。

二、动态规划程序设计的一般步骤
   1、确定问题的研究对象,即状态。对于一个动态规划程序设计来说,状态的设计与存储比阶段的划分更重要,因为阶段只是一些可以等同处理的状态的集合,状态的选定对整个问题的处理起了决定性的作用。选定状态必须满足如下两点:
    ① 状态必须完全描述出事物的性质,两个不同的事物的状态是不同的。
    ② 必须存在状态与状态之间的“转移方程”,以便可以由初始状态逐渐转化为目标状态。
   2、划分阶段,确定阶段之间的状态转移方程。
   3、考察此问题可否用动态规划程序设计方法解决,即问题是否具备最优子结构和无后效性的特征
   4、如果发现问题目前不能用动态规划程序设计方法解决,则调整阶段的划分和状态的定义,使其具备最优子结构和无后效性的特征。

三、程序设计一般格式:
   Fn(Sn)←某个初始值;
   for k←n-1 downto 1 do
       for S 取遍所有状态 do
          for U 取遍所有决策 do
              Fk(Sk)取最优决策 ;