matlab求贪婪算法装箱问题的练习

matlab求贪婪算法装箱问题的练习
matlab求贪婪算法装箱问题的练习

路漫漫其修远兮,吾将上下而求索- 百度文库

利用matlab编程FFD算法完成装箱问题:

设有6种物品,它们的体积分别为:60、45、35、20、20和20单位体积,箱子的容积为100个单位体积。

建立box_main.m

function[box_count,b]=box_main(v) vmax=100;

sort(v,'descend');

n=length(v);

b=zeros(1,n);

for i=1:n

b(i)=vmax;

end

box_count=1;

for i=1:n

for j=1:box_count

if v(i)<=b(j) %可以放入 b(j)=b(j)-v(i);

break;

else%不可放入时

continue;

end

end

if j==box_count

box_count=box_count+1;

end

end

box_count=box_count-1;

end

主程序为:

v=[60 45 35 20 20 20];

[box_count,b]=box_main(v)

结果:

box_count =3 b =5 15 80 100 100 100

所以,使用的箱子数为3, 使用的箱子的剩余空间为5,15 ,80。

“超市大赢家”提供了50种商品作为奖品供中奖顾客选择,车的容量为1000dm3 , 奖品i 占用的空间为wi dm3 ,价值为vi 元, 具体的数据如下:

vi = { 220, 208, 198, 192, 180, 180, 165, 162, 160, 158,155, 130, 125, 122, 120, 118, 115, 110, 105, 101, 100, 100, 98,96, 95, 90, 88, 82, 80, 77, 75, 73, 72, 70, 69, 66, 65, 63, 60, 58,56, 50, 30, 20, 15, 10, 8, 5, 3, 1}

wi = {80, 82, 85, 70, 72, 70, 66, 50, 55, 25, 50, 55, 40, 48,50, 32, 22, 60, 30, 32, 40, 38, 35, 32, 25, 28, 30, 22, 50, 30, 45,30, 60, 50, 20, 65, 20, 25, 30, 10, 20, 25, 15, 10, 10, 10, 4, 4, 2,1}。

解:

模型建立:用价值密度贪婪准则的方法设x=v/w,对x做正向排序,依次选取商品。

建立chaoshi.m

function

[item_count,y]=chaoshi(v,w,car) n=length(v);

x=zeros(n,3);

x(:,1)=v';

x(:,2)=w';

x(:,3)=v'./v';

x=sortrows(x,-3);

item_count=0;

for i=1:n

if car>=x(i,2)

car=car-x(i,2);

item_count=item_count+1;

else

break;

end

end

y=zeros(item_count,2);

for i=1:item_count

y(i,1)=x(i,1);

y(i,2)=x(i,2);

end

end

主程序为:

v= [220, 208, 198, 192, 180, 180, 165, 162, 160, 158,155, 130, 125, 122, 120, 118, 115, 110, 105, 101, 100, 100, 98,96, 95, 90, 88, 82, 80, 77, 75, 73, 72, 70, 69, 66, 65, 63, 60, 58,56, 50, 30, 20, 15, 10, 8, 5, 3, 1];

w= [80, 82, 85, 70, 72, 70, 66, 50, 55, 25, 50, 55, 40, 48,50, 32, 22, 60, 30, 32, 40, 38, 35, 32, 25, 28, 30, 22, 50, 30, 45,30, 60, 50, 20, 65, 20, 25, 30, 10, 20, 25, 15, 10, 10, 10, 4, 4, 2,1];

car=1000;

[item_count,y]=chaoshi(v,w,car);

y’;

结果为:

ans =

Columns 1 through 11

158 58 115 95 82 118 105 69 65 162 90

25 10 22 25 22 32 30 20 20 50 28

Columns 12 through 22

101 125 155 96 88 160 98 56 220 192 100

32 40 50 32 30 55 35 20 80 70 38

Columns 23 through 26

180 77 122 208

70 30 48 82

最大总价值为3095元,可装入体积为996

相关主题
相关文档
最新文档