動態(tài)規(guī)劃matlab仿真實例_第1頁
動態(tài)規(guī)劃matlab仿真實例_第2頁
動態(tài)規(guī)劃matlab仿真實例_第3頁
動態(tài)規(guī)劃matlab仿真實例_第4頁
動態(tài)規(guī)劃matlab仿真實例_第5頁
全文預覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、精選文檔動態(tài)規(guī)劃在火力安排中的應用。1. 問題描述設(shè)有m個目標,目標價值(重要性和危害性)各不相同,用數(shù)值A(chǔ)K(K=1,2,.m)表示,方案用n枚導彈突襲,導彈擊毀目標的概率PK=1-e-ak uk,其中ak是常數(shù),取決于導彈的特性與目標的性質(zhì);uk為向目標放射的導彈數(shù),問題:做出方案使預期的突擊效果最大。2. 問題建模上述問題可以表述為 maxV=k=1mAk(1-e-ak uk)約束條件為 k=1muk=n (uk 為非負整數(shù))3. 算法描述下面通過一個實例說明:設(shè)目標數(shù)目為4(m=4),導彈為5(n=5),Ak和aK取值狀況如下表所示: 表1:Ak ,uk取值狀況目標K1234Ak876

2、3uk0.20.30.50.9將火力安排可分為4個階段,每個階段指標函數(shù)為:V1u1=8(1-e-0.2u1) V2u2=7(1-e-0.3u2) V3u3=6(1-e-0.5u3) V4u4=3(1-e-0.9u4)uk 可能取值為0,1,2,3,4,5,將函數(shù)值帶人如下表:表2 函數(shù)值uV1u1V2u2V3u3V4u40000011.451.812.361.7922.643.163.792.5133.614.154.662.8144.414.895.192.9355.065.445.512.97動態(tài)規(guī)劃問題基本方程為: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 (0uk5可取等號)只需要求解f15的最大值然后反推回去就可以獲得最優(yōu)的安排方案4. Matlab仿真求解由于xk 與uk取值為整數(shù),可以接受動態(tài)規(guī)劃的方法,獲得f15的最大值,對應的最優(yōu)方案functionp_opt,fval=dynpro

4、g(x,DecisFun,SubObjFun,TransFun,ObjFun) %求解動態(tài)規(guī)劃問題最小值函數(shù)k=length(x(1,:) %推斷決策級數(shù)x_isnan=isnan(x); % 非空狀態(tài)矩陣t_vubm=inf*ones(size(x); % 性能指標中間矩陣f_opt=nan*ones(size(x); % 總性能指標矩陣d_opt=f_opt; %每步?jīng)Q策矩陣tmp1=find(x_isnan(:,k); % 最終一步狀態(tài)向量tmp2=length(tmp1); % 最終一步狀態(tài)個數(shù)for i=1:tmp2 u=feval(DecisFun,k,x(tmp1(i),k);

5、tmp3=length(u);%決策變量 for j=1:tmp3 % 求出當前狀態(tài)下全部決策的最小性能指標 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 %求出當前狀態(tài)下全部可能的決策 u=feval(DecisFun,ii,

6、x(tmp10(i),ii); tmp30=length(u) ; for j=1:tmp30 % 求出當前狀態(tài)下全部決策的最小性能指標 tmp00=feval(SubObjFun,ii,x(tmp10(i),ii),u(j); % 單步性能指標 tmp40=feval(TransFun,ii,x(tmp10(i),ii),u(j); % 下一狀態(tài) tmp50=x(:,ii+1)-tmp40; % 找出下一狀態(tài)在 x 矩陣的位置 tmp60=find(tmp50=0) ; ifisempty(tmp60) if nargin6 %矩陣不同需要修改nargin的值,很重要 tmp00=tmp00

7、+f_opt(tmp60(1),ii+1); % set the default object value else tmp00=feval(ObjFun,tmp00,f_opt(tmp60(1),ii+1); end %當前狀態(tài)的性能指標 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);p_opt=;tmpx=;tmpd=;t

8、mpf=; 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 isempty(tmp2) tmpd(i

9、)=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; 下面編寫四個函數(shù):function u = DecisF1( k,x ) %決策函數(shù)if k=4 u=x;else u=0:x;endfunction y = TransF1( k,x,u ) %狀態(tài)轉(zhuǎn)移方程y=x-u;function v = SubObjF1( k,x,u ) %階段k的指標函數(shù)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變?yōu)閙infunction y = ObjF1( v,f ) %基本方程中的函數(shù)y=v+f;y=-y; %max變?yōu)閙in測試代碼:clear;n=5;x1=n;nan*ones(n,1);x2=0:n;x2=x2;x=x1,x2,x2,x2;p,f=dynpro

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論