灰狼优化算法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');

写在后面

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

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值