logo资料库

Matlab求解动态规划问题.doc

第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
资料共4页,全文预览结束
根据动态规划的分析步骤,本着具体问题具体分析的原则,得到如下程序: 程序代码: % 保存为 dtgl1.m % 根据题目中的算法,逆序开始; i=0:4; cl=4-i; cbq4=3*(cl~=0)+cl+0.5*i; cb4=min(cbq4); fprintf('第四时期的总成本为:'); disp(cbq4); fprintf('最优解为:'); disp(cb4); cb3=[]; cbq3=[]; for i=0:6 if 2-i>=0 cl=(2-i):(6-i); qmch3=0:4; yhcb=cbq4; else cl=0:(6-i); qmch3=(i-2):4; yhcb=cbq4((i-1):5); end cbz1=3*(cl~=0)+cl+0.5*i; cbz2=cbz1+yhcb; cbq3=[cbq3;cbz2 zeros(1,5-length(cbz1))]; cb3=[cb3 min(cbz2)]; end fprintf('第三时期的总成本为:\n'); disp(cbq3); fprintf('最优解为:'); disp(cb3); cbq2=[]; cb2=[];
for i=0:4 if 3-i>=0 else cl=(3-i):(5-i); qmch2=0:2; yhcb=cb3(1:3); cl=0:(5-i); qmch2=(i-3):2; yhcb=cb3((i-2):3); end cbz1=3*(cl~=0)+cl+0.5*i; cbz2=cbz1+yhcb; cbq2=[cbq2;cbz2 zeros(1,3-length(cbz2))]; cb2=[cb2 min(cbz2)]; end fprintf('第二时期的总成本为:\n'); disp(cbq2); fprintf('最优解为:'); disp(cb2); cl=2:6; qmch1=0:4; cbz1=3+cl; yhcb=cb2; cbz2=cbz1+yhcb; cbq1=cbz2; cb1=min(cbz2); fprintf('第一时期的总成本为:'); disp(cbq1); fprintf('最优解为:'); disp(cb1); y1=cb1; fprintf('相应的第一期的最优为%f\n',y1); v1=find(cbq1==cb1); y2=cb2(v1); fprintf('相应的第二期的最优为%f\n',y2); v2=find(cbq2(v1,:)==y2); y3=cb3(v2); fprintf('相应的第三期的最优为%f\n',y3); v3=find(cbq3(v2,:)==y3); y4=cbq4(v3); fprintf('相应的第四期的最优为%f\n',y4); v=[0 v1-1 v2-1 v3-1];
fprintf('各时期期初存货量为:'); disp(v); 实验结果: 开始时是从这个例子入手的,采用了条件限制选择的原则,得到最优解。 程序代码: % 首先将数据赋给三个向量; x1=[0 3 7 9 12 13]; x2=[0 5 10 11 11 11]; x3=[0 4 6 11 12 12]; % 用来储存得到的总效益; x=[];
% 用来储存相应的规划策略; bj=[]; % 开始规划; for i=0:5 for j=0:5 for k=0:5 if i+j+k==5 bj=[bj;i j k]; a=x1(i+1)+x2(j+1)+x3(k+1); x=[x a]; end end end end % 寻找最大值; mx=max(x); lg=length(x); jh=[]; % 寻找最优规划; for i=1:lg if x(i)==mx jh=[jh;bj(i,:)]; end end fprintf('\n 此问题的最优解为:%d',mx); fprintf('\n\n 相应的最优规划为:\n'); fprintf('第一车间 第二车间 第三车间\n'); disp(jh) 实验结果: 对比答案:
分享到:
收藏