1.背景
2022年,Zhao等人受到自然界蒲公英种子依靠风的长距离飞行过程启发,提出了蒲公英优化算法(Dandelion Optimizer, DO)。
2.算法原理
2.1算法思想
DO模拟了蒲公英御风长距离飞行过程分为上升、下降和着陆 3 个阶段。在上升阶段,根据不同天气条件,种子在群落中以螺旋式上升方式运动或在局部中飘逸;在下降阶段,通过在全局空间中不断调整飞行方向,上升到一定高度后种子稳定下降;在着陆阶段,在风和天气的影响下,种子随机选择位置降落。
2.2算法过程
上升阶段:
蒲公英种子达到一定高度后分散。受风速、温度、湿度等影响,蒲公英种子上升高度不同,按天气可分为晴天和雨天。
晴天风速服从对数性质的正态分lnY~N(μ,σ^2)随机沿 Y 轴均匀分布,蒲公英种子有更多机会传播至遥远区域。在探索空间内,蒲公英种子被风随机吹到不同的位置。风速决定种子飞行高度。风速不断调整种子上方的漩涡,上升姿态呈现螺旋状:
X
t
+
1
=
X
t
+
α
ν
x
ν
y
ln
Y
(
X
s
−
X
t
)
(1)
X_{t+1}=X_{t}+\alpha\nu_{x}\nu_{y}\ln Y(X_{s}-X_{t})\tag{1}
Xt+1=Xt+ανxνylnY(Xs−Xt)(1)
Xs为搜索空间中随机位置:
X
s
=
r
a
n
d
(
1
)
(
U
B
−
L
B
)
+
L
B
(2)
X_{s}=\mathrm{rand}(1)(U_{\mathrm{B}}-L_{\mathrm{B}})+L_{\mathrm{B}}\tag{2}
Xs=rand(1)(UB−LB)+LB(2)
函数 lnY 服从 μ=0 和 σ^2=1 的对数正态分布:
ln
Y
=
{
1
y
2
π
exp
[
−
1
2
σ
2
(
ln
y
)
2
]
,
y
⩾
0
0
,
y
<
0
(3)
\ln Y=\begin{cases}\dfrac{1}{y\sqrt{2\pi}}\exp[-\dfrac{1}{2\sigma^2}(\ln y)^2],y\geqslant0\\0,&y<0\end{cases}\tag{3}
lnY=⎩
⎨
⎧y2π1exp[−2σ21(lny)2],y⩾00,y<0(3)
调整搜索步长 α 为自适应参数:
α
=
r
a
n
d
(
1
T
2
−
2
T
t
+
1
)
(4)
\alpha=\mathrm{rand}(\frac{1}{T^{2}}-\frac{2}{T}t+1)\tag{4}
α=rand(T21−T2t+1)(4)
当分离涡流作用于蒲公英时,会产生升力分量系数 vx、vy:
{
r
=
e
−
θ
v
x
=
r
cos
θ
v
y
=
r
sin
θ
(5)
\begin{cases}r=e^{-\theta}\\v_x=r\cos\theta\\v_y=r\sin\theta\end{cases}\tag{5}
⎩
⎨
⎧r=e−θvx=rcosθvy=rsinθ(5)
雨天,受空气湿度、空气阻力等因素影响,蒲公英种子无法充分地随风上升,种子在局部领域开发:
X
t
+
1
=
X
t
k
(6)
X_{t+1}=X_{t}k\tag{6}
Xt+1=Xtk(6)
k 值调节蒲公英的局部搜索区域:
{
q
=
1
T
2
−
2
T
+
1
t
2
−
2
T
2
−
2
T
+
1
t
+
1
T
2
−
2
T
+
1
+
1
k
=
1
−
rand
(
)
q
(7)
\begin{cases}q=\dfrac{1}{T^2-2T+1}t^2-\dfrac{2}{T^2-2T+1}t+\dfrac{1}{T^2-2T+1}+1\\k=1-\text{rand}()q\end{cases}\tag{7}
⎩
⎨
⎧q=T2−2T+11t2−T2−2T+12t+T2−2T+11+1k=1−rand()q(7)
综上,蒲公英种子处于上升阶段:
X
t
+
1
=
{
X
t
+
α
ν
x
ν
y
ln
Y
(
X
s
−
X
t
)
,
rand
(
n
)
<
1.5
X
t
k
,
其他
(8)
X_{t+1}=\begin{cases}X_t+\alpha\nu_x\nu_y\ln Y(X_s-X_t),&\text{rand}(n)<1.5\\X_tk,&\text{其他}\end{cases}\tag{8}
Xt+1={Xt+ανxνylnY(Xs−Xt),Xtk,rand(n)<1.5其他(8)
下降阶段:
蒲公英种子上升到一定高后稳定下降,DO 采用服从正态分布的布朗运动来模
拟蒲公英种子的运动轨迹,使个体在迭代过程中容易遍历更多搜索区域。采用上升阶段后的平均位置信息反映蒲公英下降的稳定性,有助于整个种群向最优个体的区域搜索开发:
X
t
+
1
=
X
t
−
α
β
t
(
X
t
m
e
a
n
−
α
β
t
X
t
)
(9)
X_{t+1}=X_{t}-\alpha\beta_{t}(X_{t}^{\mathrm{mean}}-\alpha\beta_{t}X_{t})\tag{9}
Xt+1=Xt−αβt(Xtmean−αβtXt)(9)
Xmean 为种群平均位置信息:
X
t
m
e
a
n
=
1
N
p
∑
i
=
1
N
p
X
i
(10)
X_{t}^{\mathrm{mean}}=\frac{1}{N_{p}}\sum_{i=1}^{N_{p}}X_{i}\tag{10}
Xtmean=Np1i=1∑NpXi(10)
着陆阶段:
蒲公英种子随机选择位置降落,随着迭代次数增加,算法有望收敛于全局最优解,反映种子最容易存活的近似位置。在确定最优种子生长位置后,利用当前精英个体局部领域内的信息,可以使算法精确收敛于全局最优解。随着种群不断进化,最终算法收敛于全局最优解。
X
t
+
1
=
X
e
l
i
t
e
+
L
e
v
y
(
λ
)
α
(
X
e
l
i
t
e
−
X
t
δ
)
(11)
X_{t+1}=X_{\mathrm{elite}}+\mathrm{Levy}(\lambda)\alpha(X_{\mathrm{elite}}-X_{t}\delta)\tag{11}
Xt+1=Xelite+Levy(λ)α(Xelite−Xtδ)(11)
Xelite为种子在第 t 次迭代产生的最优位置;Levy(λ)为莱维飞行函数,用于增强局部搜索能力。
伪代码:
3.结果展示
4.参考文献
[1] Zhao S, Zhang T, Ma S, et al. Dandelion Optimizer: A nature-inspired metaheuristic algorithm for engineering applications[J]. Engineering Applications of Artificial Intelligence, 2022, 114: 105075.