动态规划matlab仿真实例参考模板_第1页
动态规划matlab仿真实例参考模板_第2页
动态规划matlab仿真实例参考模板_第3页
动态规划matlab仿真实例参考模板_第4页
动态规划matlab仿真实例参考模板_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、动态规划在火力分配中的应用。1. 问题描述设有m个目标,目标价值(重要性和危害性)各不相同,用数值AK(K=1,2,.m)表示,计划用n枚导弹突袭,导弹击毁目标的概率PK=1-e-ak uk,其中ak是常数,取决于导弹的特性与目标的性质;uk为向目标发射的导弹数,问题:做出方案使预期的突击效果最大。2. 问题建模上述问题可以表述为 maxV=k=1mAk(1-e-ak uk)约束条件为 k=1muk=n (uk 为非负整数)3. 算法描述下面通过一个实例说明:设目标数目为4(m=4),导弹为5(n=5),Ak和aK取值情况如下表所示: 表1:Ak ,uk取值情况目标K1234Ak8763uk0

2、.20.30.50.9将火力分配可分为4个阶段,每个阶段指标函数为:V1u1=8(1-e-0.2u1) V2u2=7(1-e-0.3u2) V3u3=6(1-e-0.5u3) V4u4=3(1-e-0.9u4)1 / 6uk 可能取值为0,1,2,3,4,5,将函数值带人如下表:表2 函数值uV1u1V2u2V3u3V4u40000011.451.812.361.7922.643.163.792.5133.614.154.662.8144.414.895.192.9355.065.445.512.97动态规划问题基本方程为:fkxk=maxVkuk+fk+1xk-uk cf5x5=0逐次向前推

3、一级K=4 f4x4=V4u4=3(1-e-0.9u4) K=3 f3x3=maxV3u3+f4x3-u3=max6(1-e-0.5u3)+ f4x3-u3K=2 f2x2=maxV2u2+f3x2-u2= max7(1-e-0.3u2)+ f3x2-u2K=1 f1x1= maxV1u1+f2x1-u1= max8(1-e-0.2u1)+ f2x1-u1 (0<uk<5可取等号)只需要求解f15的最大值然后反推回去就可以获得最优的分配方案4. Matlab仿真求解因为xk 与uk取值为整数,可以采用动态规划的方法,获得f15的最大值,对应的最优方案functionp_opt,fv

4、al=dynprog(x,DecisFun,SubObjFun,TransFun,ObjFun) %求解动态规划问题最小值函数k=length(x(1,:) %判断决策级数x_isnan=isnan(x); % 非空状态矩阵t_vubm=inf*ones(size(x); % 性能指标中间矩阵f_opt=nan*ones(size(x); % 总性能指标矩阵d_opt=f_opt; %每步决策矩阵tmp1=find(x_isnan(:,k); % 最后一步状态向量tmp2=length(tmp1); % 最后一步状态个数for i=1:tmp2 u=feval(DecisFun,k,x(tmp

5、1(i),k); tmp3=length(u);%决策变量 for j=1:tmp3 % 求出当前状态下所有决策的最小性能指标 tmp=feval(SubObjFun,k,x(tmp1(i),k),u(j); if tmp <= t_vubm(i,k) %t_vub f_opt(i,k)=tmp; d_opt(i,k)=u(j); t_vubm(i,k)=tmp; end; end;end for ii=k-1:-1:1 tmp10=find(x_isnan(:,ii); tmp20=length(tmp10); for i=1:tmp20 %求出当前状态下所有可能的决策 u=feval

6、(DecisFun,ii,x(tmp10(i),ii); tmp30=length(u) ; for j=1:tmp30 % 求出当前状态下所有决策的最小性能指标 tmp00=feval(SubObjFun,ii,x(tmp10(i),ii),u(j); % 单步性能指标 tmp40=feval(TransFun,ii,x(tmp10(i),ii),u(j); % 下一状态 tmp50=x(:,ii+1)-tmp40; % 找出下一状态在 x 矩阵的位置 tmp60=find(tmp50=0) ; ifisempty(tmp60) if nargin<6 %矩阵不同需要修改nargin的

7、值,很重要 tmp00=tmp00+f_opt(tmp60(1),ii+1); % set the default object value else tmp00=feval(ObjFun,tmp00,f_opt(tmp60(1),ii+1); end %当前状态的性能指标 if tmp00<=t_vubm(i,ii) f_opt(i,ii)=tmp00; d_opt(i,ii)=u(j); t_vubm(i,ii)=tmp00; end; end; end; end;endfval=f_opt(:,1);tmp0 = find(isnan(fval);fval=fval(tmp0,1)

8、;p_opt=;tmpx=;tmpd=;tmpf=; tmp01=length(tmp0); for i=1:tmp01 tmpd(i)=d_opt(tmp0(i),1); tmpx(i)=x(tmp0(i),1); tmpf(i)=feval(SubObjFun,1,tmpx(i),tmpd(i); p_opt(k*(i-1)+1,1,2,3,4)=1,tmpx(i),tmpd(i),tmpf(i); for ii=2:k tmpx(i)=feval(TransFun,ii,tmpx(i),tmpd(i); tmp1=x(:,ii)-tmpx(i);tmp2=find(tmp1=0); if

9、 isempty(tmp2) tmpd(i)=d_opt(tmp2(1),ii); end tmpf(i)=feval(SubObjFun,ii,tmpx(i),tmpd(i); p_opt(k*(i-1)+ii,1,2,3,4)=ii,tmpx(i),tmpd(i),tmpf(i); end;end; 下面编写四个函数:function u = DecisF1( k,x ) %决策函数if k=4 u=x;else u=0:x;endfunction y = TransF1( k,x,u ) %状态转移方程y=x-u;function v = SubObjF1( k,x,u ) %阶段k的指标函数a=0.2,0.3,0.5,0.9;A=8,7,6,3;v=A(k)*(1-exp(-a(k)*u);v=-v; %max变为minfunction y = ObjF1( v,f ) %基本方程中的函数y=v+f;y=-y; %max变为min测试代码:clear;n=5;x1=n;nan*ones(n,1);x2=0:n;x2=x2'x=x1,x2,x2,x2;p,f=dynprog(x,'DecisF1','SubObjF1&

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论