目录
- 1.算法原理
- 2.改进点
- 3.结果展示
- 4.参考文献
- 5.代码获取
1.算法原理
【智能算法】蜣螂优化算法(DBO)原理及实现
2.改进点
混沌反向学习初始化
采用 Pwlcm 分段混沌映射,由于 Pwlcm 在其定义区间上具有均匀的密度函数,在特定的 p 值下 x 的分布几乎是平坦的,混沌序列的这种遍历性、随机性的特性有利于蜣螂个体分布于整个解空间,增强种群多样性:
x ( t + 1 ) = { x ( t ) p , 0 ≤ x ( t ) < p x ( t ) − p 0.5 − p , p ≤ x ( t ) < 0.5 1 − p − x ( t ) 0.5 − p , 0.5 ≤ x ( t ) < 1 − p 1 − x ( t ) p , 1 − p ≤ x ( t ) < 1 (1) x\big(t+1\big)=\begin{cases}\frac{x\big(t\big)}{p},0\leq x\big(t\big)<p\\\frac{x\big(t\big)-p}{0.5-p},p\leq x\big(t\big)<0.5\\\frac{1-p-x\big(t\big)}{0.5-p},0.5\leq x\big(t\big)<1-p\\\frac{1-x\big(t\big)}{p},1-p\leq x\big(t\big)<1\end{cases}\tag{1} x(t+1)=⎩ ⎨ ⎧px(t),0≤x(t)<p0.5−px(t)−p,p≤x(t)<0.50.5−p1−p−x(t),0.5≤x(t)<1−pp1−x(t),1−p≤x(t)<1(1)
将混沌序列映射到解空间得到混沌初始化种群,对其进行反向学习:
X o B L = k × ( U b + L b ) − X (2) X_{\mathrm{oBL}}=k\times\bigl(Ub+Lb\bigr)-X\tag{2} XoBL=k×(Ub+Lb)−X(2)
非线性权重的黄金正弦策略
蜣螂的滚球行为影响着算法的全局搜索能力与收敛速度,对种群有着引领作用,原始 DBO 算法以直线形式的滚球行为限制了滚球蜣螂在局部的搜索能力,容易错失寻得最优解的机会。加入自适应权重后滚球蜣螂的位置更新:
x i ( t + 1 ) = ( 1 − w ) × x i ( t ) × ∣ sin ( r 1 ) ∣ − w × r 2 × sin ( r 1 ) × ∣ c 1 × X b − c 2 × x i ( t ) ∣ (2) x_{i}\left(t+1\right)=\left(1-w\right)\times x_{i}\left(t\right)\times\left|\sin\left(r_{1}\right)\right|-w\times r_{2}\times\\\sin\left(\mathrm{r}_1\right)\times\left|\mathrm{c}_1\times\mathrm{X}^\mathrm{b}-\mathrm{c}_2\times x_i\left(t\right)\right|\tag{2} xi(t+1)=(1−w)×xi(t)×∣sin(r1)∣−w×r2×sin(r1)× c1×Xb−c2×xi(t) (2)
其中,权重参数为:
w = ( w max − w min ) × [ 1 − sin ( π 2 × t T max ) ] + w min (3) w=\begin{pmatrix}w_{\max}-w_{\min}\end{pmatrix}\times\begin{bmatrix}1-\sin\biggl(\frac{\pi}{2}\times\frac{t}{T_{\max}}\biggr)\end{bmatrix}+w_{\min}\tag{3} w=(wmax−wmin)×[1−sin(2π×Tmaxt)]+wmin(3)
融合 SSA 改进的觅食行为
改进后的蜣螂觅食行为位置更新:
x i ( t + 1 ) = { Q × e x p ( X b − x i ( t ) i 2 ) , f ( x i ) > f M d X b + ∣ x i ( t ) − X b ∣ × A + × L , f ( x i ) ≤ f M d (4) x_i\left(t+1\right)=\begin{cases}\quad Q\times exp\biggl(\frac{X^\mathrm{b}-x_i\left(t\right)}{i^2}\biggr),f(x_i)>f_\mathrm{Md}\\\\X^\mathrm{b}+\biggl|x_i\left(t\right)-X^\mathrm{b}\biggr|\times A^+\times L,f(x_i)\leq f_\mathrm{Md}\end{cases}\tag{4} xi(t+1)=⎩ ⎨ ⎧Q×exp(i2Xb−xi(t)),f(xi)>fMdXb+ xi(t)−Xb ×A+×L,f(xi)≤fMd(4)
基于分段函数改进偷窃行为
偷窃蜣螂占据种群的 40%,实现对种群的快速收敛,但原算法偏重在全局最优位置附近扰动,无法充分利用当前位置信息,使得种群对全局探索能力欠佳,在复杂问题上容易过早收敛。故基于分段函数形式改进偷窃行为,并以 sin 函数对扰动幅度进行约束:
x i ( t + 1 ) = { x i ( t ) + sin z × S × g × { ∣ x i ( t ) − X ∗ ∣ + ∣ x i ( t ) − X b ∣ } , t ≤ T m a x 2 X b + sin z × S × g × { ∣ x i ( t ) − X ∗ ∣ + ∣ x i ( t ) − X b ∣ } , t > T m a x 2 (5) x_i\left(t+1\right)=\begin{cases}x_i\left(t\right)+\sin z\times S\times g\times\left\{\left|x_i\left(t\right)-X^*\right|+\left|x_i\left(t\right)-X^\mathrm{b}\right|\right\},t\leq\frac{T_\mathrm{max}}2\\\\X^\mathrm{b}+\sin z\times S\times g\times\left\{\left|x_i\left(t\right)-X^*\right|+\left|x_i\left(t\right)-X^\mathrm{b}\right|\right\},t>\frac{T_\mathrm{max}}2&\end{cases}\tag{5} xi(t+1)=⎩ ⎨ ⎧xi(t)+sinz×S×g×{∣xi(t)−X∗∣+ xi(t)−Xb },t≤2TmaxXb+sinz×S×g×{∣xi(t)−X∗∣+ xi(t)−Xb },t>2Tmax(5)
非线性权重的柯西-高斯变异
全局最优位置对蜣螂种群的滚球、觅食、偷窃行为都有指引作用。用柯西-高斯变异策略可以对全局最优个体进行随机扰动:
X n e w = X b × [ w 1 × C a u c h y + ( 1 − w 1 ) × G a u s s i a n ] (6) X_{\mathrm{new}}=X^{\mathrm{b}}\times\left[w_{1}\times Cauchy+\left(1-w_{1}\right)\times Gaussian\right]\tag{6} Xnew=Xb×[w1×Cauchy+(1−w1)×Gaussian](6)
3.结果展示
比较难的F7,F8
4.参考文献
[1] 匡鑫,阳波,马华,等.多策略改进的蜣螂优化算法[J/OL].计算机工程,1-20[2024-07-08].
5.代码获取
【资源清单】代码资源清单导航~