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