1 / 7
文档名称:

动态规划程序.docx

格式:docx   大小:84KB   页数:7页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

动态规划程序.docx

上传人:pppccc8 2022/6/7 文件大小:84 KB

下载得到文件列表

动态规划程序.docx

相关文档

文档介绍

文档介绍:funct i on [p_opt, fva I ]=dynprog (x, Dec i sFun, SubObjFu
n, TransFun, ObjFun)
% x为状态变量,一列代表一个阶段的状态
% M_函数Deci sFunfunct i on [p_opt, fva I ]=dynprog (x, Dec i sFun, SubObjFu
n, TransFun, ObjFun)
% x为状态变量,一列代表一个阶段的状态
% M_函数Deci sFun (k, x)表示由阶段k的状态值x求出 相应的允许决策集合
% M_函数SubObjFun (k, x, u)表示阶段k的指标函数
% M_函数TransFun (k, x, u)是状态转移函数,其中x 是阶段k的状态值,u是其决策集合
% M_函数ObjFun (v, f)是第k阶段到最后阶段的指标 函数,当ObjFun (v, f)=v+f时,输入ObjFun (v, f) 可以省略
%输出p_opt由4列组成,p_opt=[序号组,最优轨线组, 最优策略组,指标函数值组];
%输出fva I是列向量,各元素分别表示p_opt各最优策 略组对应始端状态x的最优函数值
k二length(x(1, :)) ; % k为阶段数
x_i snan=~ i snan(x);
t_vubm= i nf*ones (s i ze (x)) : % t_vubm为指标
函数值的上限
f_opt=nan*ones(s i ze(x));
% f_opt为不同阶段、状态下的最优值矩阵,初值
为非数
d_opt=f_opt: % d_opt为不同阶段不同状态下
的决策矩阵,初值为非数
tmp1 =f i nd (x_ i snan (:, k)) ; % 找出第k阶段
状态值(不是非数)的下标
tmp2=length (tmp1);
for i=1:tmp2
u二feva I (Dec i sFun, k, x (tmp1 (i), k));
%求出相应的允许决策向量
tmp3= I ength (u);
for J=1 :tmp3 %该for语句是为了求
出相应的最有函数值以及最优决策
tmp=feva I (SubObjFun, k, x (tmp1 (i), k), u (j))
i f tmp<=t_vubm(i, k)
f_opt (tmp1 (i), k) -tmp;
d_opt (tmp1 (i), k)=u(j);
t_vubm(i, k)-tmp;
end
end
end for i i=k~1 :-1:1
%从后往前面递推求出f_opt以及d_opt
tmp10=f i nd (x_i snan (:, i i)) ; tmp20= I ength (t mp10);
for i=1:tmp20
u二feva I (Dec i sFun, i i, x (tmp10 (i), i i));
tmp30=Iength(u);
for j=1:tmp30
tmp00=fevaI(SubObjFun, i i,x (tmp10(i), i i),
u(j));
tmp40=feva I (TransFu