白鲸优化(BWO)算法(含MATLAB代码)

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

原文在这里:点一下

白鲸优化(BWO)算法:

白鲸优化(Beluga Whale Optimization, BWO)算法是2022年提出的一种新的群智能优化算法,由大连理工大学运载工程与力学学部工程力学系的李刚教授团队设计并提出,发表在KBS上。它的原始参考文献如下:

Zhong C, Li G, Meng Z. Beluga whale optimization: A novel nature-inspired metaheuristic algorithm[J]. Knowledge-Based Systems, 2022: 109215.

白鲸优化(BWO)算法(含MATLAB代码)_第1张图片

01
灵感来源

白鲸是生活在海洋中的鲸类,因能发出多种不同的声音而获得“海洋金丝雀”的称号。白鲸也被称为“极地萌宠”,身材圆润结实,中等体型,长3.5-5.5米,体重约1500公斤。白鲸有敏锐的视觉和听觉,它们通过声音进行移动和捕猎。白鲸主要分布在北极和亚北极海域,包括阿拉斯加、加拿大西北部和埃尔斯米尔岛。有些白鲸被养在水族馆里,它们有着微笑的外表和优美的动作,如图1(a)所示。

尽管白鲸的社会行为尚未被充分探索,但人类饲养的白鲸也有一些明显的社会性行为。例如,白鲸在横向游动时,S形姿势下的身体表现为社会性行为,在垂直S形姿势下的头部抽搐表现为争斗性行为。白鲸可以横向游泳,胸鳍抬高;将胸鳍从身体延伸出去,这样鳍就垂直于身体。它们可以在游泳时以同步或镜像的方式潜水或浮出水面,称为milling。它们还可以从气孔中释放气泡,张开嘴乞求食物,快速地游向或远离其他生物。此外,它们会在同类周围玩耍、游泳、发出声音,并且对人类有很大的好奇心。

白鲸是高度社会化的动物,它们可以聚集在2到25个成员的群体中,平均为10个成员。如图1(b)所示,白鲸是杂食性的,包括但不限于虾、蠕虫、鳕鱼、鳟鱼和鲑鱼。当夏天到来时,许多生物聚集在一些河口,鲸鱼也会聚集起来进食。由于白鲸的牙齿不锋利,它们通常通过吸力把猎物吸进嘴里。有时,白鲸会和群体协调着一起攻击和捕食鱼类,将鱼类引到浅水中。此外,有些鲸鱼可能会在迁徙过程中死亡并坠入深海,这被称为“鲸鱼坠落”,为大量没有阳光和氧气的生物提供了充足的食物,如图1(c)所示。

 图1 白鲸的行为:(a) 游泳行为,对应勘探阶段;(b) 捕食行为,对应开发阶段;(c) 鲸落,对应鲸落阶段。

作者以白鲸的游泳、捕食和鲸鱼坠落行为为灵感,首次提出了一种新的元启发式算法——白鲸优化算。作者在BWO算法中建立了勘探、开发和鲸落三个进化阶段,分别对应于白鲸的成对游动、捕食和鲸落行为。

02
算法设计

由上文可知,BWO算法主要包括勘探、开发与鲸落三个大的计算步骤。与往期推送一样,目前我还不会在公众号里编辑数学公式。因此,这部分内容在Word文档里先写好,然后做成图片,最后导入。

白鲸优化(BWO)算法(含MATLAB代码)_第2张图片

白鲸优化(BWO)算法(含MATLAB代码)_第3张图片

由此,作者便基于白鲸的游走方式、捕食行为和鲸落现象设计了BWO算法。BWO算法比HHO算法的设计更简单,计算公式较少,更易实现。简单对比:HHO算法使用了7个位置更新公式来实现种群进化,而BWO算法使用了4个,并且良好地平衡了算法的勘探与开发。(纠正:(1)式有错误,应该是t/2T)

03
计算流程

BWO算法的计算流程非常简单,作者在原文中也展现得非常清晰。这里我用visio复现了它的计算流程,如图2所示。


 

白鲸优化(BWO)算法(含MATLAB代码)_第4张图片

图2 BWO算法的计算流程

04
实验仿真

BWO算法的设计相对来说,比较简单,计算公式较少,非常容易实现。这里就来简单检验一下算法的性能。BWO算法的MATLAB程序是严格按照它的原始参考文献进行编码的。此外,种群规模N我取的50,最大迭代次数T为500,基准函数采用的是CEC2005测试集。

这里以多峰函数Ackley、Levy和单峰函数Zakharov为例,展示BWO算法在30维环境下的收敛效果,如图3所示。这里我将它和HHO算法进行了对比,实验环境与实验设置完全相同,大家可以观察一下两种算法的对比效果。这里就不再进一步做分析了。

白鲸优化(BWO)算法(含MATLAB代码)_第5张图片

(a) Ackley

白鲸优化(BWO)算法(含MATLAB代码)_第6张图片

(b) Levy

白鲸优化(BWO)算法(含MATLAB代码)_第7张图片

(c) Zakharov

图3 BWO算法和HHO算法的收敛曲线对比

05
MATLAB代码

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

你可能感兴趣的:(人工智能,算法,开发语言,matlab,启发式算法)