自学内容网 自学内容网

高效计算!|海鸥优化算法SOA理论与实现(Matlab/Python双语言教程)

文章来源于我的个人公众号:KAU的云实验台,主要更新智能优化算法的原理、应用、改进
MATLAB、PYTHON
在这里插入图片描述
在这里插入图片描述

海鸥是自然界中最常见的一类海鸟,主要以群居的生存方式遍布在各大海港、湖泊、河流地区。它们拥有较高的群集智慧,每到冬季,便成群结队地迁徙至资源丰盛的低空水域,进行生殖繁衍。

印度学者 Gaurav Dhiman[1]对此行为进行了深入研究,于 2019 年在KBS上发表了一种新型群智能算法,海鸥优化算法(Seagull Optimization Algorithm,SOA)

在这里插入图片描述

海鸥优化算法通过模仿自然界海鸥的迁徙和攻击行为以用于优化问题。Gaurav Dhiman在44个著名的基准测试函数上对SOA算法的性能进行了评估。并且在此基础上,采用SOA算法对光学缓冲器、压力容器、减速器、焊接梁、拉压弹簧、25杆桁架、滚动轴承等问题进行了优化设计。SOA均取得不错的效果。除此之外,SOA的另一优势是其计算效率高,下图展示了各算法在同一优化问题上的平均处理时间,SOA所用时间更少。所有结果表明SOA是个具有潜力的算法,并且效率够高。

在这里插入图片描述

00 目录

1 海鸥优化算法(SOA)
2 代码目录
3 算法性能
4 源码获取

01 海鸥优化算法(SOA)

下图描述了海鸥从上一个水域迁徙至下一个资源丰富水域期间发生的螺旋觅食和攻击行为,从中我们可以发现,两种行为并发进行,具有较强的相关性。海鸥在迁徙的过程中,首先在避免个体相互碰撞的前提下,向着邻近的最优个体的位置进行移动,而在攻击阶段则是通过模拟海鸥捕捉猎物时做出的螺旋形运动作为数学模型。

在这里插入图片描述

基本的海鸥优化算法包括种群初始化、适应度更新、迁徙阶段(全局搜索)和攻击阶段(局部搜索)。

1.1 种群初始化

设定N为海鸥种群数量,dim为搜索空间维度,则海鸥群的位置:
在这里插入图片描述

HSi,j表示第i只海鸥在第j维的位置分量。

海鸥位置通过随机初始化生成:
在这里插入图片描述

其中,Lbj和Ubj分别是第j维的下界和上界,rand是[0,1]之间的随机数。

1.2 适应度更新

海鸥群的适应度值fitness的计算如下:

在这里插入图片描述

海鸥的适应度值大小反映了它们各自所处位置的食物资源的情况,适应度值越好的海鸥,其位置的食物资源越丰富。更新适应度值后,会对海鸥群排序。

1.3 迁徙阶段(全局搜索)

海鸥群在迁徙过程中,每只海鸥为了避免和相邻海鸥的碰撞,会先找到一个与其他海鸥不冲突的新位置,为了实现这一点,算法通过控制因子𝑓c来计算每只海鸥的新位置:
在这里插入图片描述

其中,Cs(t)代表无冲突的新位置,fc能够调整海鸥位置以避免相邻海鸥相撞,同时起到平衡全局/局部搜索的作用,其计算公式:

在这里插入图片描述

其中,MaxT为最大迭代次数。又公式可知fc呈现从2到0的线性递减的趋势,随着迭代的进行,海鸥在不断收缩其搜索范围。

避免与其他海鸥的碰撞后,每只海鸥将判断最优海鸥方向,并向最优海鸥靠拢,其移动过程如图。
在这里插入图片描述

最优海鸥的方向计算:
在这里插入图片描述

其中,Ms(t)为最优海鸥的方向;HSbest(t)为最优海鸥;fb是搜索平衡因子,其计算如下:
在这里插入图片描述

其中,rd为随机数。由上式可知,随机数rd和fc共同影响海鸥航向。

海鸥获取最优海鸥的方向后,由下式确定其距离:
在这里插入图片描述

其中,Ds(t)即代表海鸥与最优海鸥的距离。

1.4 海鸥攻击阶段(局部搜索)

对于海鸥群来说,每次迭代都是先通过迁徙行为来寻找更好的食物源,然后对猎物发起攻击。为防止猎物逃脱,海鸥以螺旋运动的方式靠近猎物(类似WOA?),如图所示:
在这里插入图片描述

海鸥的攻击行为贯穿每一次的迭代过程,决定了其在每次迭代后的新位置。海鸥的螺旋运动方式在𝑥𝑦𝑧平面中的数学描述如下:
在这里插入图片描述

其中,r是海鸥在空中螺旋飞行的半径;θ是[0,2]之间的随机数,表示海鸥的攻击角度;u和v是定义螺旋形状的常数。

海鸥的攻击位置如下:
在这里插入图片描述

其中,HS(t+1)是海鸥一次迭代后的新位置。

1.2 算法流程

源文献给出了SOA算法的伪代码,KAU在此基础上画出了其流程图,如下:

在这里插入图片描述

02 代码目录

在这里插入图片描述

包含MATLAB、Python以及SOA的源文献。
Readme:
在这里插入图片描述

代码都经过作者重新注释,代码更清爽,可读性强。

Python

在这里插入图片描述

Matlab

在这里插入图片描述

03 算法性能

在MATLAB中,进行标准函数的测试,执行程序结果如下:
在这里插入图片描述

在PYTHON中,进行标准函数的测试,执行程序结果如下:
在这里插入图片描述

04 源码获取

在公众号(KAU的云实验台)后台回复 SOA 即可

(注:若有链接失效情况可以后台给我私信)

参考文献

[1] DHIMAN G, KUMAR V. Seagull optimization algorithm: Theory and its applications for large-scale industrial engineering problems [J]. Knowledge-Based Systems, 2019, 165: 169-96.

另:如果有伙伴有待解决的优化问题(各种领域都可),可以发我,我会选择性的更新利用优化算法解决这些问题的文章。

如果这篇文章对你有帮助或启发,可以点击右下角的赞/在看(ง •̀_•́)ง(不点也行),你们的鼓励就是我坚持的动力!若有定制需求,可私信作者。


原文地址:https://blog.csdn.net/sfejojno/article/details/143073881

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!