1 简介

针对约束条件下三维装箱问题复杂性,为提高装箱利用率,本文提出 了混合粒子群算法,该算法采用BF启发式算法配合改进的自适应权重粒子群算法实现.通过仿真试验,结果表明该混合粒子群算法对解决部分约束条件下装箱问题 较之传统研究遗传算法利用率和准确率更高,具有不同程度的可行性.

1.1 粒子群算法

   粒子群算法(PSO)属于群智能算法的一种,是通过模拟鸟群捕食行为设计的。假设区域里就只有一块食物(即通常优化问题中所讲的最优解),鸟群的任务是找到这个食物源。鸟群在整个搜寻的过程中,通过相互传递各自的信息,让其他的鸟知道自己的位置,通过这样的协作,来判断自己找到的是不是最优解,同时也将最优解的信息传递给整个鸟群,最终,整个鸟群都能聚集在食物源周围,即我们所说的找到了最优解,即问题收敛。

(1)粒子群算法的流程

   粒子群算法通过设计一种无质量的粒子来模拟鸟群中的鸟,粒子仅具有两个属性:速度 点击并拖拽以移动和位置 点击并拖拽以移动,速度代表移动的快慢,位置代表移动的方向。每个粒子在搜索空间中单独的搜寻最优解,并将其记为当前个体极值 点击并拖拽以移动,并将个体极值与整个粒子群里的其他粒子共享,找到最优的那个个体极值作为整个粒子群的当前全局最优解 点击并拖拽以移动,粒子群中的所有粒子根据自己找到的当前个体极值 点击并拖拽以移动和整个粒子群共享的当前全局最优解 点击并拖拽以移动来调整自己的速度和位置。粒子群算法的思想相对比较简单,主要分为:1、初始化粒子群;2、评价粒子,即计算适应值;3、寻找个体极值 点击并拖拽以移动;4、寻找全局最优解 点击并拖拽以移动;5、修改粒子的速度和位置。下面是程序的流程图:


【三维装箱】基于粒子群算法求解三维装箱问题matlab源码_三维装箱_09点击并拖拽以移动

(PSO流程)

1.2 三维装箱问题

【三维装箱】基于粒子群算法求解三维装箱问题matlab源码_三维装箱_11

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 仿真结果点击并拖拽以移动

【三维装箱】基于粒子群算法求解三维装箱问题matlab源码_三维装箱_13点击并拖拽以移动

4 参考文献

[1]杜振, 宫会丽. 解决约束三维装箱问题的混合粒子群算法[J]. 计算机光盘软件与应用, 2014, 000(022):115-116.

【三维装箱】基于粒子群算法求解三维装箱问题matlab源码_三维装箱_15