超详细 | 蜣螂优化算法DBO原理及其实现(Matlab)

超详细 | 蜣螂优化算法DBO原理及其实现(Matlab)_第1张图片

蜣螂优化算法(dung beetle optimizer,DBO)是JiankaXue 和Bo Shen在2022 年提出的一种新型群体智能优化算法[1],其灵感来自于蜣螂的滚球、跳舞、觅食、偷窃和繁殖行为。该算法同时考虑了全局探索和局部开发,从而具有收敛速度快和准确率高的特点,可以有效地解决复杂的寻优问题。本文将对该算法进行原理讲解及程序实现。

00 文章目录

1 蜣螂优化算法原理

2 代码目录

3 算法性能

4 总结

01 蜣螂优化算法原理

自然界中,蜣螂的特点是将粪便滚成球,利用天体线索导航,从而使球沿直线滚动。然而,没有任何光源,屎壳郎的路径就不再是直线了。此外,许多自然因素也会导致屎壳郎偏离原来的方向。再者,屎壳郎可以通过舞蹈来重新确立自己的方向。粪球还可以作为虫卵的繁殖地。除此之外,还有一种偷窃行为,一些蜣螂会把食物作为自己的食物来竞争。

在DBO中,每只蜣螂的位置对应一个解。蜣螂觅食时的行为有五种:滚球,即把粪便滚成一个球,利用天体线索进行导航,从而把球滚成一条直线;跳舞,这让蜣螂重新定位自己;觅食,一些成年蜣螂会从地下钻出来寻找食物;偷窃,一些被称为小偷的蜣螂会从其他蜣螂那里偷取粪球;繁殖,在自然界中,蜣螂会把粪球滚到安全的地方,藏起来进行繁殖。

因此算法中蜣螂种群分为四个部分,分别为滚球蜣螂、育雏球、小蜣螂和小偷蜣螂。滚球蜣螂受各种自然环境影响决更新其运行方向,初步寻找可以安全觅食的位置,育雏球会被产在已知的安全区域内,成长为成虫的蜣螂被称为小蜣螂,小蜣螂会在最佳觅食区觅食,小偷蜣螂也会根据其他蜣螂的位置和最佳觅食区寻找食物。

四种蜣螂位置更新方式如下:

(1)滚球蜣螂

滚球蜣螂以太阳为导航以保证粪球在直线路径上滚动,光源强度、风等自然因素会影响滚球蜣螂的行进路线,

超详细 | 蜣螂优化算法DBO原理及其实现(Matlab)_第2张图片

图源文献[1]

滚球蜣螂位置更新方式如下:
在这里插入图片描述

式中,代表当前迭代次数,()表示第次迭代时第只蜣螂的位置信息,α 是一个自然系数,表示是否偏离原来方向,根据概率法分配为−1或1, ∈ (0,0.2)表示偏转系数, ∈ (0,1)表示常数,和分别设定为0.1和0.3,表示全局最差位置,Δ用于模拟光强变化。

当蜣螂遇到障碍物而不能前进时,它需要通过跳舞来调整自己的方向,滚球蜣螂跳舞更新位置的公式定义如下:
在这里插入图片描述

式中θ ∈ [0, ]表示偏转角,在θ等于0、/2或时,蜣螂的位置不会更新。

(2)育雏球

育雏球采用边界选择策略模拟雌性蜣螂产卵区域,产卵区域的定义为:
超详细 | 蜣螂优化算法DBO原理及其实现(Matlab)_第3张图片

式中,∗表示当前的局部最佳位置,∗和∗分别表示产卵区的下限和上限, = 1 −/,表示最大迭代数,和分别代表优化问题的下限和上限。

在迭代过程中,育雏球位置是动态变化的,其定义为:
在这里插入图片描述

式中,()是第次迭代时第个育雏球的位置信息,1和2代表两个大小为1×D 的独立随机向量,D 表示优化问题的维度。

(3)小蜣螂

需要建立一个最优觅食区域,指导幼体蜣螂寻找食物并模拟其觅食行为,其中最优觅食区域定义为:
超详细 | 蜣螂优化算法DBO原理及其实现(Matlab)_第4张图片

式中,b表示当前的局部最佳位置,b和b分别表示最佳觅食区的下限和上限

小蜣螂的位置更新如下:
超详细 | 蜣螂优化算法DBO原理及其实现(Matlab)_第5张图片

式中,()是第次迭代时第只小蜣螂的位置信息,1表示遵循正态分布的随机数,2 ∈(0,1)表示随机向量。

(4)小偷蜣螂

Xb是食物竞争的最佳位置,因此小偷蜣螂位置更新方式如下:

在这里插入图片描述

式中,()第只小偷蜣螂在第次迭代的位置信息,g 表示一个遵循正态分布的大小为1×D的随机向量,S表示一个常数值。

综上所述,DBO 算法主要分为六个步骤。

1)初始化蜣螂种群和DBO 算法的参数;

2)根据目标函数计算所有蜣螂位置的适度值;

3)更新所有蜣螂的位置;

4)判断每个更新后的蜣螂是否出了边界;

5)更新当前最优解及其适度值;

6)重复上述步骤,在达到最大迭代次数后,输出全局最优值及其最优解。[2]

02 代码目录

超详细 | 蜣螂优化算法DBO原理及其实现(Matlab)_第6张图片

代码注释完整,其中部分DBO程序如下:
超详细 | 蜣螂优化算法DBO原理及其实现(Matlab)_第7张图片

代码获取方式见文末

03 算法性能

采用CEC的一个测试函数来初步检验其寻优性能,得到结果如下:

超详细 | 蜣螂优化算法DBO原理及其实现(Matlab)_第8张图片

04 总结

本文介绍了蜣螂优化算法的原理及其MATLAB实现,蜣螂优化算法虽然具有寻优能力强,收敛速度快的特点,但同时也存在全局探索和局部开发能力不平衡,容易陷入局部最优,且全局探索能力较弱的缺点,因此作者将在后面的文章中继续介绍其改进方法。

参考文献

[1] Xue Jiankai, Shen Bo. Dung beetle optimizer: a new meta-heuristic algorithm for global optimization[J]. Journal of Supercomputing, 2023,79(7):7305-7336.

[2]潘志远,卜凡亮.基于蜣螂算法优化的DV-Hop定位算法[J/OL].电子测量与仪器学报:1-10[2023-08-16].http://43.138.60.40/kcms/detail/11.2488.TN.20230803.1820.026.html

代码在作者微信公众号 KAU的云实验台 回复: DBO (大写字母) 获取

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

如果这篇文章对你有帮助或启发,可以点击右下角的赞(ง•̀_•́)ง(不点也行)

你可能感兴趣的:(MATLAB,算法,matlab,开发语言)