|
clc;clear;
maintain=[2 4 5 9 12];%0 1 2 3 4
buy=[12 7 6 2 1 0];%0 1 2 3 4 5
n=5;
state=maintain+buy(1:5)
for T=2:n
condition1=zeros(n);%买新车
for i=1:n
condition1(i,: )=condition1(i,: )+state-buy(2:n+1);
condition1(:,i)=condition1(:,i)+(maintain+buy(1:n))';
end
condition2=inf*ones(n);%不买新车
for i=1:n-1
condition2(i+1,i)=state(i)+maintain(i+1);
end
for i=1:n
for j=1:n
con1=condition1(i,j);
con2=condition2(i,j);
[min1,min2]=min([con1,con2]);
condition(i,j)=min1;
select1(i,j)=min2;
end
end
for i=1:n
[state(i),select2(i)]=min(condition(i,: ));
end
condition
select1
select2
state
end
state=state-buy(2:n+1)
这种题目要用动态规划去做
考虑题意:
买了轿车要立刻交维护费
买新车时把旧车卖掉
不买新车时交下一年维护费
求总费用不同、车龄相同的局部最优等价于求全局最优
输出结果是最小总费用为25(万元)
具体决策:
第1年买二手车(1):7+4
第2年卖掉二手车(2)再买二手车(1):-6+7+4
第3年同上:-6+7+4
第4年同上:-6+7+4
第5年同上:-6+7+4
第6年把二手车(2)卖掉:-6 |
|