1 简介
针对约束条件下三维装箱问题复杂性,为提高装箱利用率,本文提出 了混合粒子群算法,该算法采用BF启发式算法配合改进的自适应权重粒子群算法实现.通过仿真试验,结果表明该混合粒子群算法对解决部分约束条件下装箱问题 较之传统研究遗传算法利用率和准确率更高,具有不同程度的可行性.
1.1 粒子群算法
粒子群算法(PSO)属于群智能算法的一种,是通过模拟鸟群捕食行为设计的。假设区域里就只有一块食物(即通常优化问题中所讲的最优解),鸟群的任务是找到这个食物源。鸟群在整个搜寻的过程中,通过相互传递各自的信息,让其他的鸟知道自己的位置,通过这样的协作,来判断自己找到的是不是最优解,同时也将最优解的信息传递给整个鸟群,最终,整个鸟群都能聚集在食物源周围,即我们所说的找到了最优解,即问题收敛。
(1)粒子群算法的流程
粒子群算法通过设计一种无质量的粒子来模拟鸟群中的鸟,粒子仅具有两个属性:速度 和位置 ,速度代表移动的快慢,位置代表移动的方向。每个粒子在搜索空间中单独的搜寻最优解,并将其记为当前个体极值 ,并将个体极值与整个粒子群里的其他粒子共享,找到最优的那个个体极值作为整个粒子群的当前全局最优解 ,粒子群中的所有粒子根据自己找到的当前个体极值 和整个粒子群共享的当前全局最优解 来调整自己的速度和位置。粒子群算法的思想相对比较简单,主要分为:1、初始化粒子群;2、评价粒子,即计算适应值;3、寻找个体极值 ;4、寻找全局最优解 ;5、修改粒子的速度和位置。下面是程序的流程图:
(PSO流程)
1.2 三维装箱问题
2 部分代码
clc;clear;close all;
Vmax = 1;%速度限制
Vmin = -1;
nodes=50;%节点数目
links=150;%边数目
dims=nodes*(nodes-1)/2;%种群维数
c1 = 1.49445;
c2 = 1.49445;
maxgen = 300; %进化次数
sizepop = 100; %种群规模
% 惯性权重
w=1;
% 线性递减惯性权重
w_max=0.9;
w_min=0.4;
pop=zeros(sizepop,dims);%初始化种群
trans_index=zeros(1,dims);%初始化转换索引
%% 产生初始粒子和速度
for iter = 1:sizepop
%初始化种群
xx=randperm(nodes);
yy=randperm(nodes);
A=zeros(nodes,nodes);%连通阵,AA的迹为0
fitnesspbest(j) = fitness(j);
end
% 群体最优更新
if fitness(j) > fitnessgbest
gbest = pop(j,:);
fitnessgbest = fitness(j);
end
end
record(1,i)=fitnessgbest;
fprintf('%d %f\n',i,fitnessgbest); %输出结果
%% 适应度值变化绘图
plot(record);
xlabel('gen');
ylabel('fitness');
end
3 仿真结果
4 参考文献
[1]杜振, 宫会丽. 解决约束三维装箱问题的混合粒子群算法[J]. 计算机光盘软件与应用, 2014, 000(022):115-116.