赞
踩
灰狼优化算法(Grey Wolf Optimization, GWO)是于 2014 年提出的一种群体智能优化算法,算法主要思想是模仿灰狼群体觅食行为。算法中主要涉及四种类型的狼:α 狼、β 狼、δ 狼、ω狼。
其中,α 狼:处于狼群的第一等级,它是狼群中的绝对领导者,主要负责对整个狼群做出决策。
β 狼:处于狼群的第二等级,它在狼群中的职责是帮助 α 狼进行决策及参与其他狼群活动。如果 α 狼过世或是变老,不再适合担当领导者的职务,那么 β 狼便成为 α 狼的最佳候选者。
δ 狼:处于狼群的第三等级,狼群中的侦察者、长者、哨兵皆来自这一阶层,侦察者负责监控狼群边界,在有侵略者侵入时及时报警。长者是狼群中有经验的个体,曾经是 α 狼或者 β 狼中的一员。哨兵负责整个种群的安全事物。
ω狼:在狼群等级制度的最底层。它作为狼群中的普通个体,是狼群中数量最多的一个群体,必须服从于 α 狼、β 狼和 δ 狼。
四种狼的等级如下图所示:
在熟悉了GWO的基本概念后,我们接着了解如何使用GWO算法 ~ ~
我们先贴出GWO的流程:
步骤3中提及的公式(2.9),即位置更新公式是什么呢?
接着,我们了解如何进行位置更新,我们贴出来:
柔性作业车间的部分,我们之前已经讲述过了,请移步: 麻雀算法SSA解决柔性作业车间调度问题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 ~ ~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。