✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
一种求解作业车间调度问题的混合粒子群算法,该算法适用于作业车间调度技术领域,该算法将粒子群算法与模拟退火算法结合,不仅增加了粒子的多样性,提高了寻找最优解的概率,而且由于粒子的特性而快速收敛,显著减少了搜索时间.该混合算法的执行步骤如下:步骤1:初始化算法参数,包括PSO粒子的数目,位置和速度等信息.步骤2:执行改进的PSO算法并更新粒子的位置和速度转移.步骤3:执行模拟退火算子并更新粒子信息.步骤4:执行干扰算子,如果循环中全局最优解保持不变,保留原始粒子信息,并生成一个随机粒子.步骤5:判断是否到达停止条件,是则返回最优解,否则返回步骤2.该发明结合实际情况,具有实用性强的特点.
⛄ 部分代码
%对时间矩阵,机器矩阵进行解码。
function [FlowTimeAvg]=timedecode(particle,restrictmatrixM,restrictmatrixT,machineNum)
%particle=[1.0 1.0 3.0 2.0 3.0 4.0 2.0 6.0 4.0 3.0 1.0 6.0 5.0 5.0 6.0 4.0 3.0 2.0 4.0 3.0 2.0 5.0 4.0 6.0 1.0 2.0 1.0 5.0 5.0 6.0 1.0 4.0 2.0 6.0 3.0 5.0];
% restrictmatrixM=[ 3 1 2 4 6 5
% 2 3 5 6 1 4
% 3 4 6 1 2 5
% 2 1 3 4 5 6
% 3 2 5 6 1 4
% 2 4 6 1 5 3];
%restrictmatrixT= [ 1 3 6 7 3 6
% 8 5 10 10 10 4
% 5 4 8 9 1 7
% 5 5 5 3 8 9
% 9 3 5 4 3 1
% 3 3 9 10 4 1];
%machineNum=6;
[particleLong1 particleLong]=size(particle);
for i=1:machineNum,
counter(i)=[1] ; %位置计数器;
s(i)=[0] ; %工件上一工序结束时间;
t(i)=[0] ;
t1(i)=[0] ; %每台机器的开始时间;
WaitTime(i)=[0]; %机器等待时间;
end
for j=1:particleLong,
k=particle(j);
time(k,counter(k))=restrictmatrixT(k ,counter(k)) ;
%时间矩阵解码
machine(k,counter(k))=restrictmatrixM(k,counter(k));
%机器矩阵解码;
[rom]=max( s(k), t(machine(k,counter(k))) );
if s(k)>t(machine(k,counter(k)))&t(machine(k,counter(k)))~=0,
WaitTime(machine(k,counter(k)))=WaitTime(machine(k,counter(k)))+s(k)-t(machine(k,counter(k)));
end
s(k)=rom+time(k,counter(k));
if t(machine(k,counter(k)))==0,
t1(machine(k,counter(k)))=rom;
end
t(machine(k,counter(k)))=rom+time(k,counter(k));
%计算每台机器上加工时间
counter(k)=counter(k)+1 ;
end
[tmax]=max(t);
p=sum(WaitTime);
FlowTimeAvg=sum(t-t1)/machineNum;
%机器最长加工时间
⛄ 运行结果
⛄ 参考文献
[1] 付振奥. 粒子群算法求解车间调度问题研究[D]. 合肥工业大学, 2009.
[2] 张龙, 徐本柱, 刘晓平. 求解作业车间调度问题的混合粒子群算法[J]. 内蒙古大学学报:自然科学版, 2014, 45(1):7.
[3] 张静, 王万良, 徐新黎,等. 基于改进粒子群算法求解柔性作业车间批量调度问题[J]. 控制与决策, 2012, 027(004):513-518.
[4] 黄超杰, 胡成华. 一种求解作业车间调度问题的混合粒子群算法:.