2. DBO
基本的蜣螂算法通过模拟蜣螂在自然界中的四种行为(滚动、产卵、觅食和偷窃)来执行种群位置更新。
2.1 滚动蜣螂
在自然界中,蜣螂必须通过太阳导航,使其球滚动的路线尽可能直线。方程(1)用于原始论文中更新滚动蜣螂的位置:
x
i
(
t
+
1
)
=
x
i
(
t
)
+
α
⋅
k
⋅
x
i
(
t
−
1
)
+
b
⋅
Δ
x
(1)
x_i(t + 1) = x_i(t) + \alpha \cdot k \cdot x_i(t - 1) + b \cdot \Delta x \tag{1}
xi(t+1)=xi(t)+α⋅k⋅xi(t−1)+b⋅Δx(1)
其中
Δ
x
=
∣
x
i
(
t
)
−
X
w
∣
\Delta x = |x_i(t) - X^w|
Δx=∣xi(t)−Xw∣
其中 t t t表示当前迭代次数, x i ( t ) x_i(t) xi(t)表示 i i i次迭代中蜣螂的位置。在原始文本中, α \alpha α表示蜣螂是否偏离原始方向, α \alpha α的值以1或-1的概率设置,1表示无偏差,-1表示偏差。 k ∈ ( 0 , 0.2 ] k \in (0, 0.2] k∈(0,0.2]表示缺陷系数。 b b b是一个常数,属于[0, 1],在代码中赋值为0.3。 X w X^w Xw表示全局最差值。 Δ x \Delta x Δx用于模拟太阳照射,较大的 Δ x \Delta x Δx表示蜣螂离光源更远。在自然界中,当蜣螂遇到障碍物时,它会通过跳舞行为获得新的滚动方向。为了模拟这种情况,原始文章通过概率模拟蜣螂在滚动过程中是否遇到障碍物,当遇到障碍物时,原始文章使用切线函数获得新的滚动方向,以模拟蜣螂的跳舞行为。滚动蜣螂位置的更新变为方程(2)。
x i ( t + 1 ) = x i ( t ) + tan ( θ ) ∣ x i ( t ) − x i ( t − 1 ) ∣ (2) x_i(t + 1) = x_i(t) + \tan(\theta) |x_i(t) - x_i(t - 1)| \tag{2} xi(t+1)=xi(t)+tan(θ)∣xi(t)−xi(t−1)∣(2)
θ ∈ [ 0 , π ] \theta \in [0, \pi] θ∈[0,π],当 θ = 0 , π / 2 \theta = 0, \pi / 2 θ=0,π/2和 π \pi π时,位置不更新。
2.2 产卵蜣螂
在自然界中,蜣螂选择一个安全区域进行产卵,为了模拟这种行为,原始论文提出了一种边界选择策略来模拟这个区域,定义如下:
L
b
∗
=
max
(
X
∗
×
(
1
−
R
)
,
L
b
)
(3)
Lb^* = \max(X^* \times (1 - R), Lb) \tag{3}
Lb∗=max(X∗×(1−R),Lb)(3)
及
U
b
∗
=
min
(
X
∗
×
(
1
+
R
)
,
U
b
)
Ub^* = \min(X^* \times (1 + R), Ub)
Ub∗=min(X∗×(1+R),Ub)
L b ∗ Lb^* Lb∗和 U b ∗ Ub^* Ub∗表示产卵区域的上下界, X ∗ X^* X∗是当前局部最优, R = 1 − t / T max R = 1 - t / T_{\max} R=1−t/Tmax, T max T_{\max} Tmax表示最大迭代次数。一旦产卵蜣螂确定了最佳产卵区域,它就会在这个区域内产卵。在原始文本中,每只产卵蜣螂产卵区域是动态变化的,因此搜索当前最优解所在的区域可以保证,同时防止陷入局部最优。产卵蜣螂的位置更新由方程(4)给出。
x i ( t + 1 ) = X ∗ + b 1 × ( x i ( t ) − L b ∗ ) + b 2 × ( x i ( t ) − U b ∗ ) (4) x_i(t + 1) = X^* + b_1 \times (x_i(t) - Lb^*) + b_2 \times (x_i(t) - Ub^*) \tag{4} xi(t+1)=X∗+b1×(xi(t)−Lb∗)+b2×(xi(t)−Ub∗)(4)
其中 b 1 b_1 b1和 b 2 b_2 b2是大小为1×Dim的随机变量,Dim表示问题的维度。
2.3 觅食蜣螂
在自然界中,蜣螂觅食也会像产卵一样选择一个安全区域。原始文本选择重新定义该区域的具体定义为公式:
L
b
b
=
max
(
X
b
×
(
1
−
R
)
,
L
b
)
(5)
Lb^b = \max(X^b \times (1 - R), Lb) \tag{5}
Lbb=max(Xb×(1−R),Lb)(5)
及
U
b
b
=
min
(
X
b
×
(
1
+
R
)
,
U
b
)
Ub^b = \min(X^b \times (1 + R), Ub)
Ubb=min(Xb×(1+R),Ub)
这里 X b X^b Xb表示最优全局位置, L b b Lb^b Lbb和 U b b Ub^b Ubb表示最佳觅食区域的上下界, L b Lb Lb和 U b Ub Ub表示问题求解的上下界,每次觅食行为的蜣螂对应觅食蜣螂和觅食位置的一个位置更新如下:
x i ( t + 1 ) = x i ( t ) + C 1 × ( x i ( t ) − L b b ) + C 2 × ( x i ( t ) − U b b ) (6) x_i(t + 1) = x_i(t) + C_1 \times (x_i(t) - Lb^b) + C_2 \times (x_i(t) - Ub^b) \tag{6} xi(t+1)=xi(t)+C1×(x