灰狼优化(GWO)算法(含MATLAB代码)

这篇具有很好参考价值的文章主要介绍了灰狼优化(GWO)算法(含MATLAB代码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

先做一个声明:文章是由我的个人公众号中的推送直接复制粘贴而来,因此对智能优化算法感兴趣的朋友,可关注我的个人公众号:启发式算法讨论

文献[1]中的灰狼优化(Grey Wolf Optimizer, GWO)算法是2014年提出的一种群智能优化算法。严格来讲,应该叫灰狼优化器。GWO简单易实现,搜索性能较好,近年来被广泛研究。这里展示一下GWO在WOS上的引用数据,如图1所示。可以看出,这是一个被绝对高引的算法,认可度高。

灰狼优化(GWO)算法(含MATLAB代码)

图1 GWO在Web of Science上的引用数据

01 灵感来源

灰狼属于犬科动物,被认为是顶级的捕食者,它们处于生物圈食物链的顶端。灰狼大多喜欢群居,每个群体中平均有5~12只狼。特别令人感兴趣的一方面是,它们具有非常严格的社会等级制度,如图2所示。

灰狼优化(GWO)算法(含MATLAB代码)

图2 灰狼群体的社会等级制度

金字塔的第一层为种群中的领导者,称为α。在狼群中α是具有管理能力的个体,主要负责关于狩猎、休息、食物分配等群体中各项需要决策的事务。金字塔的第二层被称为β。β主要负责协助α进行决策。当整个狼群的α出现空缺时,β将接替α的位置。β在狼群中的支配权仅次于α,它将α的指令下达给给其他成员,并将其他成员的执行情况反馈给α,起着桥梁作用。金字塔的第三层是δ。δ听从β的决策命令,主要负责侦查、放哨、看护等事务。适宜度不好的α和β也会降为δ。排名最低的灰狼是ω。ω扮演了替罪羊的角色。ω狼总是不得不服从于所有其他有统治力的狼。它们是最后一批被允许进食的狼。看起来ω在族群中并不是一个重要的个体,但据观察,如果失去ω,整个族群都会面临内部斗争和问题。这是由于ω是对于所有狼的暴力和挫折的发泄。这有助于满足整个族群并维持主导结构。在某些情况下,ω也是族群中的保姆,负责种群内部关系的平衡。

集体狩猎是灰狼的另一个迷人的社会行为。灰狼的社会等级在群体狩猎过程中发挥着重要的作用,捕食的过程在α的带领下完成。灰狼的狩猎包括以下3个重要部分:

1).跟踪、追逐和靠近猎物;

2).追捕、包围和干扰猎物,直到它们停止移动;

3).攻击猎物。

这些步骤如图3所示。

灰狼优化(GWO)算法(含MATLAB代码)

图3 灰狼的狩猎行为: (A) 追逐、接近和跟踪猎物 (B-D) 追逐、骚扰和包围 (E)静止状态和攻击

文献[1]对灰狼的狩猎技术和社会等级进行了数学建模,以设计灰狼狩猎策略并进行优化,从而得到了GWO算法。

02 算法设计

与往期推送一样,目前我还不会在公众号里编辑数学公式。因此,这部分内容在Word文档里先写好,然后做成图片,最后导入。

灰狼优化(GWO)算法(含MATLAB代码)

灰狼优化(GWO)算法(含MATLAB代码)

图4 灰狼位置更新示意图

灰狼优化(GWO)算法(含MATLAB代码)

03
勘探和开发的实现

勘探和开发作为进化算法的两个重要概率,在前期推送中已经详细介绍,可以点击以下链接查看:

种群的勘探(Exploration)与开发(Exploitation)(含MATLAB代码)

接下来,我们就来讨论GWO是如何全局勘探与局部开发的。

3.1 开发(攻击猎物)

如上所述,当猎物停止移动时,灰狼通过攻击猎物来完成捕猎。为了建立接近猎物的数学模型,α的值被逐渐减小。因此,A的波动范围也随之减小了。换句话说,在迭代过程中,当α的值从2线性下降到0时,其对应的A的值也在区间[-a, a] 内变化。如图5(a)所示,当A的值位于区间内时,灰狼的下一位置可以位于其当前位置和猎物位置之间的任意位置。当|A|<1时,狼群向猎物发起攻击(陷入局部最优)。

灰狼优化(GWO)算法(含MATLAB代码)

图5 攻击猎物和搜索猎物

3.2 勘探(搜索猎物)

灰狼主要根据α,β和δ狼的位置搜索猎物。它们分开去寻找猎物,聚集起来攻击猎物。为了在数学上模拟种群的分散程度,作者利用随机值大于1或小于-1的A来迫使灰狼与猎物分离。这强调了勘探,并允许GWO算法进行全局搜索。图5(b)也表明,|A|>1迫使灰狼偏离猎物(局部最优),希望找到更适合的猎物(全局最优)。GWO算法还有另一个组件C来帮助发现新的解决方案。由(4)式可知,C是[0, 2]之间的随机值。C表示灰狼所在的位置对猎物影响的随机权重:C>1表示影响权重大;反之,表示影响权重小。这有助于GWO算法更随机地进行搜索,同时可在优化过程中避免陷入局部最优。另外,与A不同,C是非线性减小的。这样,从最初的迭代到最终的迭代中,它都负责了决策空间中的全局搜索。在算法陷入局部最优并且不易跳出时,C的随机性在避免局部最优方面发挥了重要作用。
 

04 计算流程

GWO的实现流程图如下:

灰狼优化(GWO)算法(含MATLAB代码)

图6 GWO算法的计算流程图

05 实验仿真

这里对GWO算法的性能进行简单的测试。将GWO算法用于函数寻优,算法的MATLAB程序是严格按照它的原始参考文献进行编码的。此外,种群规模取的50,最大迭代次数为500,Benchmark函数分别采用了CEC2005测试集、CEC2013测试集、CEC2014测试集和CEC2017测试集。这里对仿真结果进行简要展示,就不再进一步做分析了。

首先,我们来检验一下GWO对全局勘探和局部开发的平衡能力。如图7所示,是GWO算法在CEC2005测试函数f8上的勘探和开发占比曲线。

灰狼优化(GWO)算法(含MATLAB代码)

图7 GWO在CEC2005 f8上的勘探和开发百分占比变化曲线

其次,以CEC2005测试集中的单峰函数Sphere (f1)和多峰函数Ackley (f10)为例,展示GWO算法在30维环境下的收敛效果,如图8所示。

灰狼优化(GWO)算法(含MATLAB代码)

(a) 单峰函数Sphere (f1)

灰狼优化(GWO)算法(含MATLAB代码)

(b) 多峰函数Ackley (f10)

图8 GWO在CEC2005两个测试函数上的收敛曲线

再次,以CEC2013测试集中的单峰函数F1为例,展示GWO算法在30维环境下的收敛效果,如图9所示。(注意是画的误差曲线)

灰狼优化(GWO)算法(含MATLAB代码)

图9 GWO在CEC2013 F1上的误差收敛曲线

接着,以CEC2014测试集中的混合函数F18为例,展示GWO算法在30维环境下的收敛效果,如图10所示。(注意是画的误差曲线)

灰狼优化(GWO)算法(含MATLAB代码)

图10 GWO在CEC2014 F18上的误差收敛曲线

最后,以CEC2017测试集中的多模态函数F6为例,展示GWO算法在30维环境下的收敛效果,如图11所示。(注意是画的误差曲线)

灰狼优化(GWO)算法(含MATLAB代码)

图11 GWO在CEC2017 F6上的误差收敛曲线

06 MATLAB代码

GWO算法跑CEC2005测试集:

GWO算法跑CEC2013测试集:

GWO算法跑CEC2014测试集:

GWO算法跑CEC2017测试集:

GWO算法的勘探(Exploration)和开发(Exploitation)占比分析:

(公众号里有,关注:启发式算法讨论)

06 参考文献

[1] Mirjalili S, Mirjalili S M, Lewis A. Grey wolf optimizer[J]. Advances in engineering software, 2014, 69: 46-61.文章来源地址https://www.toymoban.com/news/detail-450072.html

到了这里,关于灰狼优化(GWO)算法(含MATLAB代码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包