目录
- 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.代码获取
【资源清单】代码资源清单导航~