当前位置:   article > 正文

灰狼优化算法GWO解决柔性作业车间调度问题FJSP_混合灰狼算法求解多目标柔性作业车间调度问题

混合灰狼算法求解多目标柔性作业车间调度问题

灰狼优化算法

灰狼优化算法(Grey Wolf Optimization, GWO)是于 2014 年提出的一种群体智能优化算法,算法主要思想是模仿灰狼群体觅食行为。算法中主要涉及四种类型的狼:α 狼、β 狼、δ 狼、ω狼。

其中,α 狼:处于狼群的第一等级,它是狼群中的绝对领导者,主要负责对整个狼群做出决策。

β 狼:处于狼群的第二等级,它在狼群中的职责是帮助 α 狼进行决策及参与其他狼群活动。如果 α 狼过世或是变老,不再适合担当领导者的职务,那么 β 狼便成为 α 狼的最佳候选者。

δ 狼:处于狼群的第三等级,狼群中的侦察者、长者、哨兵皆来自这一阶层,侦察者负责监控狼群边界,在有侵略者侵入时及时报警。长者是狼群中有经验的个体,曾经是 α 狼或者 β 狼中的一员。哨兵负责整个种群的安全事物。

ω狼:在狼群等级制度的最底层。它作为狼群中的普通个体,是狼群中数量最多的一个群体,必须服从于 α 狼、β 狼和 δ 狼。

四种狼的等级如下图所示:

灰狼等级
在熟悉了GWO的基本概念后,我们接着了解如何使用GWO算法 ~ ~

GWO基本框架

我们先贴出GWO的流程:


GWO流程图
流程
步骤3中提及的公式(2.9),即位置更新公式是什么呢?

接着,我们了解如何进行位置更新,我们贴出来:

位置更新
位置更新
位置更新

柔性作业车间调度

柔性作业车间的部分,我们之前已经讲述过了,请移步: 麻雀算法SSA解决柔性作业车间调度问题FJSP

GWO求解FJSP问题实例

算例

使用 Brandimarte 测试集的 mk 算例。

测试结果

迭代曲线
迭代曲线

甘特图
甘特图
部分代码
main.m

clc;
dictPath='Brandimarte_Data';
dataName='Mk01.fjs';
dataRead(dictPath,dataName);
%% 载入数据
fileName=split(dataName,'.');
fileName=[fileName{1},'.mat'];
eval(['load ',fileName]);
%% 灰狼优化器
[Alpha_score,Alpha_pos,Convergence_curve]=GWO(MachineNum,jobNum,jobInfo,operaNumVec);
%% 画出迭代曲线
titleName=split(dataName,'.');
titleName=titleName{1};
figure(1);
plot(Convergence_curve, 'r-', 'LineWidth', 1.5);
box on; grid on
title([titleName,' Objective space']);
xlabel('Iteration');
ylabel('Best score obtained so far');
%% 画出Gantte图
[~,~,machineTable]=fitness(Alpha_pos,MachineNum,jobNum,jobInfo,operaNumVec);
figure(2);
gantt_chart(machineTable,'M');
title([titleName,' Gantte chart ',' makespan:',num2str(Alpha_score)]);
xlabel('Time');
ylabel('Machine');
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

写在后面

本文为本人的原创内容,未经本人允许,严谨盗图、盗文!如需完整MATLAB代码,私戳博主,或是咨询博主(扣)3249992049 ~ ~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/665172
推荐阅读
相关标签
  

闽ICP备14008679号