基于Matlab的动态规划顺序算法的实现-Read
维普资讯
烟台师范学院学报(自然科学版)
YantaiNormalUniversityJournal(NaturalScience) 2004,20(4):272—274
基于 Matlab的动态规划顺序算法的实现
黄 勇 ,曲长文 ,苏 峰 ,周鲁苹
(1.海军航空工程学院信息融合研究所 ,山东 烟台 264001;2.烟台师范学院交通学院,山东 烟台 264025)
摘要:运用Matlab编程实现动态规划顺序算法,以实例说明了该实现方法的正确性 以及实时性的特点,通过
对不同问题编制不同的子函数,表明该实现方法具有一定的通用性.
关键词:Matlab;动态规划;顺序算法
中图分类号:TP312 文献标识码:A 文章编号:1004—4930{2004}04—0272—03
动态规划是运筹学的重要分支之一 ,它是解 f (z)=min{L[T一(z,U一1),U一1]+
决多阶段决策过程最优化的一种方法.该方法是 _{ 一1(T-1(z,Uk一1))l“一1∈ 一1},
由美国数学家贝尔曼(R.Bellman)等人在 20世纪 z【 = T(z一1,“一1),k= 1,2,…,7"/.
50年代首先提出来的.他们根据多阶段决策问题
设 z0=C,则若 z0=C,那么 厂0(z0)=0,否则 ,
的特性 ,提出了解决这类问题的 “最优化原理”,即
f0(z0)=∞.该递归方程为动态规划顺序算法的
“
一 个最优策略具有这样的性质:不论初始状态和
基本方程 .
初始决策如何,相对于第一个决策所形成的状态
求 目标函数最小值的顺序(或前向)算法递归
来说,余下的决策必定构成一个最优策略”.自从
计算程序如下:function[OptPol,OptObjva1]=
1957年贝尔曼出版 了经典专著 DynamicPro—
MinForeDynprog(x,DecisFun,StageObjFun,State-
gramming以来 ,动态规划已在多个领域得到广泛
TransFun,ObjFun).其 中x是状态变量,一列代
应用.实现动态规划的递推方式有顺序算法和逆
表一个阶段状态 ;M一函数 DeciFun(k,x)表示由阶
序算法,即前向动态规划法和后 向动态规划法 .文
段k的状态变量Xk求出相应的允许决策变量;
[1]给出了动态规划逆序算法的Matlab实现方法
M一函数StageObjFun(k,x,u)是阶段 目标函数 ;M一
和具有一定通用性的函数.但是,由于逆序算法是
函数StateTransFun(k,x。u)是状态转移函数,其
从问题的最后阶段开始向初始阶段逆向递推 ,因
中x是阶段k的某状态变量,u是相应的决策变
此当处理的数据量较大、阶段数较多时,逆序算法
量,对于顺序算法而言,在使用状态转移函数时,
难以满足实时性要求.而顺序算法则是从初始阶
一 般采用其逆函数的形式:M一函数Ob