动态规划逆序.doc

动态规划逆序.doc

ID:55128218

大小:18.00 KB

页数:4页

时间:2020-04-28

动态规划逆序.doc_第1页
动态规划逆序.doc_第2页
动态规划逆序.doc_第3页
动态规划逆序.doc_第4页
资源描述:

《动态规划逆序.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、function[p_opt,fval]=dynprog(x,DecisFun,SubObjFun,TransFun,ObjFun)%[p_opt,fval]=dynprog(x,DecisFun,SubObjFun,TransFun)%自由始端和终端的动态规划,求指标函数最小值的逆序算法递归%计算程序。x是状态变量,一列代表一个阶段状态;M-函数%DecisFun(k,x)由阶段k的状态变量x求出相应的允许决策变量;%M-函数SubObjFun(k,x,u)是阶段指标函数,M-函数TransFun(k,x,u)%是状态转移函数,其中x是阶段k的某状态变量,u是相应的决策变量;%输出p_o

2、pt由4列构成,p_opt=[序号组;最优策略组;最优轨线组;%指标函数值组];fval是一个列向量,各元素分别表示p_opt各%最优策略组对应始端状态x的最优函数值;%%例(参看胡良剑等编《数学实验--使用MATLAB》P180%先写3个函数%eg13f1_2.m%functionu=DecisF_1(k,x)%在阶段k由状态变量x的值求出其相应的决策变量所有的取值%c=[70,72,80,76];q=10*[6,7,12,6];%ifq(k)-x<0,u=0:100;%决策变量不能取为负值%else,u=q(k)-x:100;end;%产量满足需求且不超过100%u=u(:);%eg1

3、3f2_2.m%functionv=ObjF_1(k,x,u)%阶段k的指标函数%c=[70,72,80,76];v=c(k)*u+2*x;%eg13f3_2.m%functiony=TransF_1(k,x,u)%状态转移方程%q=10*[6,7,12,6];y=x+u-q(k);%调用DynProg.m计算如下:%clear;x=nan*ones(14,4);%x是10的倍数,最大范围0≤x≤130,%%因此x=0,1,...13,所以x初始化取14行,nan表示无意义元素%x(1:7,1)=10*(0:6)';%按月定义x的可能取值%x(1:11,2)=10*(0:10)';x(1:

4、12,3)=10*(2:13)';%x(1:7,4)=10*(0:6)';%[p,f]=dynprog(x,'eg13f1_2','eg13f2_2','eg13f3_2')%ByX.D.DingJune2000k=length(x(1,:));f_opt=nan*ones(size(x));d_opt=f_opt;t_vubm=inf*ones(size(x));x_isnan=~isnan(x);t_vub=inf;%计算终端相关值tmp1=find(x_isnan(:,k));tmp2=length(tmp1);fori=1:tmp2u=feval(DecisFun,k,x(i,k)

5、);tmp3=length(u);forj=1:tmp3tmp=feval(SubObjFun,k,x(tmp1(i),k),u(j));iftmp<=t_vub,f_opt(i,k)=tmp;d_opt(i,k)=u(j);t_vub=tmp;end;end;end%逆推计算各阶段的递归调用程序forii=k-1:-1:1tmp10=find(x_isnan(:,ii));tmp20=length(tmp10);fori=1:tmp20u=feval(DecisFun,ii,x(i,ii));tmp30=length(u);forj=1:tmp30tmp00=feval(SubObjFu

6、n,ii,x(tmp10(i),ii),u(j));tmp40=feval(TransFun,ii,x(tmp10(i),ii),u(j));tmp50=x(:,ii+1)-tmp40;tmp60=find(tmp50==0);if~isempty(tmp60),ifnargin<5,tmp00=tmp00+f_opt(tmp60(1),ii+1);else,tmp00=feval(ObjFun,tmp00,f_opt(tmp60(1),ii+1));endiftmp00<=t_vubm(i,ii)f_opt(i,ii)=tmp00;d_opt(i,ii)=u(j);t_vubm(i,ii

7、)=tmp00;end;end;end;end;end;fval=f_opt(tmp1,1);%记录最优决策、最优轨线和相应指标函数值p_opt=[];tmpx=[];tmpd=[];tmpf=[];tmp0=find(x_isnan(:,1));tmp01=length(tmp0);fori=1:tmp01,tmpd(i)=d_opt(tmp0(i),1);tmpx(i)=x(tmp0(i),1);tmpf(i)=fe

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。