目录
- 1.背景
- 2.算法原理
- 2.1算法思想
- 2.2算法过程
- 3.结果展示
- 4.参考文献
1.背景
2022年,Xue等人受到自然界中蜣螂生存行为启发,提出了蜣螂优化算法(Dung beetle optimizer, DBO)。
2.算法原理
2.1算法思想
DBO模拟了自然界蜣螂种群行为,构建了基于滚动-产卵-觅食-偷窃模型的搜索框架。
2.2算法过程
滚球行为:
在没有障碍物的情况下,蜣螂利用太阳导航以保持粪球在直线上滚动,其中光照的强度会影响蜣螂的路径,滚球的位置更新方式:
x i ( t + 1 ) = x i ( t ) + α × k × x i ( t − 1 ) + b × Δ x Δ x = ∣ x i ( t ) − X w ∣ (1) \begin{aligned}x_i\left(t+1\right)&=x_i\left(t\right)+\alpha\times k\times x_i\left(t-1\right)+b\times\Delta x\\\Delta x&=\left|x_i\left(t\right)-X^\mathrm{w}\right|\end{aligned}\tag{1} xi(t+1)Δx=xi(t)+α×k×xi(t−1)+b×Δx=∣xi(t)−Xw∣(1)
a为自然系数,a=1 表示没有偏离,a=-1 表示偏离原来方向;Xw表示全局最差位置;Δx 模拟光强的变化,越大表示光照越弱。
跳舞行为:
在遇到障碍物的情况下,蜣螂利用跳舞来重新定向自己,以获得新的路线,跳舞行为的位置更新方式:
x i ( t + 1 ) = x i ( t ) + tan ( θ ) ∣ x i ( t ) − x i ( t − 1 ) ∣ (2) x_i\left(t+1\right)=x_i\left(t\right)+\tan(\theta)\big|x_i(t)-x_i(t-1)\big|\tag{2} xi(t+1)=xi(t)+tan(θ) xi(t)−xi(t−1) (2)
繁殖行为:
雌性蜣螂将粪球滚到适合产卵的安全地方藏起来,以此为后代提供合适的栖息地:
L b ∗ = m a x ( X ∗ × ( 1 − R ) , L b ) U b ∗ = m i n ( X ∗ × ( 1 + R ) , U b ) (3) \begin{aligned}Lb^*&=max\Big(X^*\times\big(1-R\big),Lb\Big)\\Ub^*&=min\Big(X^*\times\big(1+R\big),Ub\Big)\end{aligned}\tag{3} Lb∗Ub∗=max(X∗×(1−R),Lb)=min(X∗×(1+R),Ub)(3)
其中,Lb*,Ub表示产卵的区域的下界和上界;X表示当前局部最优解;R=1-t/Tmax,Tmax 表示最大迭代次数;Lb,Ub 表示优化问题的下界和上界。
产卵发生的区域随迭代次数动态调整:
B i ( t + 1 ) = X ∗ + b 1 × ( B i ( t ) − L b ∗ ) + b 2 × ( B i ( t ) − U b ∗ ) (4) B_{i}\left(t+1\right)=X^{*}+b_{1}\times\left(B_{i}\left(t\right)-Lb^{*}\right)+b_{2}\times\left(B_{i}\left(t\right)-Ub^{*}\right)\tag{4} Bi(t+1)=X∗+b1×(Bi(t)−Lb∗)+b2×(Bi(t)−Ub∗)(4)
其中,Bi(t)表示第 t 次迭代时第 i 个卵球的位置信息。
觅食行为:
一些成熟的蜣螂从地里钻出来寻找食物,小蜣螂的最佳觅食区域是动态更新:
L b b = m a x ( X b × ( 1 − R ) , L b ) U b b = m i n ( X b × ( 1 + R ) , U b ) (5) \begin{aligned}Lb^\mathrm{b}&=max\Big(X^\mathrm{b}\times\big(1-R\big),Lb\Big)\\Ub^\mathrm{b}&=min\Big(X^\mathrm{b}\times\big(1+R\big),Ub\Big)\end{aligned}\tag{5} LbbUbb=max(Xb×(1−R),Lb)=min(Xb×(1+R),Ub)(5)
其中,Xb 表示全局最优位置,Lbb,Ubb 分别表示最佳觅食区域的下界和上界。
小蜣螂的位置更新:
x i ( t + 1 ) = x i ( t ) + C 1 × ( x i ( t ) − L b ♭ ) + C 2 × ( x i ( t ) − U b ♭ ) (6) x_{i}\left(t+1\right)=x_{i}\left(t\right)+C_{1}\times\left(x_{i}\left(t\right)-Lb^{\flat}\right)+C_{2}\times\left(x_{i}\left(t\right)-Ub^{\flat}\right)\tag{6} xi(t+1)=xi(t)+C1×(xi(t)−Lb♭)+C2×(xi(t)−Ub♭)(6)
偷窃行为:
有些蜣螂会偷其他蜣螂的粪球,位置更新:
x i ( t + 1 ) = X ♭ + S × g × { ∣ x i ( t ) − X ∗ ∣ + ∣ x i ( t ) − X ♭ ∣ } (7) x_{i}\left(t+1\right)=X^{\flat}+S\times g\times\left\{\left|x_{i}\left(t\right)-X^{\ast}\right|+\left|x_{i}\left(t\right)-X^{\flat}\right|\right\}\tag{7} xi(t+1)=X♭+S×g×{∣xi(t)−X∗∣+ xi(t)−X♭ }(7)
其中,g 是大小为 1×d 服从正态分布的随机向量,S 是常量。
伪代码:
3.结果展示
4.参考文献
[1] Xue J, Shen B. Dung beetle optimizer: A new meta-heuristic algorithm for global optimization[J]. The Journal of Supercomputing, 2023, 79(7): 7305-7336.