作者简介:本人擅长运筹优化建模及算法设计,包括各类车辆路径问题、生产车间调度、二三维装箱问题,熟悉CPLEX和gurobi求解器
微信公众号:运筹优化与学习
如有运筹优化相关建模或代码定制需求,可通过微信公众号联系我们
前言
之前给大家分享了三维装箱问题、遗传算法求解三维装箱问题,如果大家感兴趣可以看以下推文:
今天我们来介绍三维装箱问题的一类变体:二维装箱问题(Two-dimensional Bin Packing Problem),即不考虑物品的高度,只考虑物品的长度和宽度。
问题简介
二维装箱问题,就是将若干个矩形物品装进大矩形容器中,并且在装箱的过程中不允许将矩形物品斜着放,只允许将物品旋转90度放置,目标为最小化大矩形容器的使用数目。
该问题及其变体在现实生活中具有广泛应用,如闸室排档问题,将不同尺寸的船舶合理停泊与船闸闸室中;二维板材剪切排样问题,将大矩形原材料裁剪为若干不同尺寸的小矩形件。
Best-Fit算法介绍
最佳适应算法是由 Burke 等人提出用于求解二维装箱问题的启发式方法。该算法的基本思想为:装箱过程中,将所有容器按照剩余空间大小升序排列,尝试将物品装入剩余空间最小的容器中。
对于Best-Fit算法,物品的装箱顺序也会算法的最终装箱效果。通常,装箱之前会按照物品的面积、长度或者宽度进行降序排列。同样,为了提升算法效率,学者们尝试融合各种元启发式算法对问题进行求解,如遗传算法、禁忌搜索算法等。其中,融合禁忌搜索策略的装箱算法伪代码如下所示。
部分代码展示
%% Best Fit Algorithm for 2D Bin Packing Problem
clc
clear
%% Initialization
Rectangle = xlsread('data'); % import data
Array=Rectangle(:,1);
rect_num = size(Rectangle,1); % the number of rectangle
bin_size.width = 60;
bin_size.length = 60;
RectCoords = zeros(rect_num,10); % store the ID ,vertex coordinates,BinNumber
%% Main Loop
add = 1;
SumOfBin = 1; % the number of big bin
Ai = cell(SumOfBin,1);
[ Rect,Put ]=SortOrder(Rectangle,rect_num); % sort rectangle order
while ( add <= rect_num )
neach = rect_num;
flag = 1;
Ai{SumOfBin} = zeros(1,bin_size.width); %initial Ai
while ( flag ~= 0 && add <= rect_num )
[ Ai,flag,Rect,RectCoords ] = Best_Fit( Ai,bin_size,neach,Rect,SumOfBin,RectCoords );
if ( flag == 1 )
add = add + 1;
neach = neach - 1;
else
SumOfBin = SumOfBin + 1;
break
end
end
end
%% The Final Result
FinalResult=csvread('FinalResult.csv',1,0);
[ia,~,ic] = unique(FinalResult(:,10));
ind=arrayfun(@(i)find(ia(i)==ic),1:length(ia),'un',0);
Result=arrayfun(@(i)FinalResult(ind{i},:),1:length(ia),'un',0);
for ii=1:SumOfBin
Bin=Result{ii};
for iii=1:size(Bin,1)
X=Bin(iii,2);
Y=Bin(iii,3);
W=Rect(Bin(iii,1)).width;
H=Rect(Bin(iii,1)).length;
rectangle('position',[X,Y,W,H],'FaceColor',[0 0.4470 0.7410],'EdgeColor','k');
end
end
结果展示
代码输出:装箱结果示意图
代码输出:每个货物摆放位置的坐标
参考文献
BURKE E K, KENDALL G, WHITWELL G. A new placement heuristic for the orthogonal stock-cutting problem [J]. Operations Research, 2004, 52(4): 655-71.