智能优化算法:野狗优化算法
摘要:野狗优化算法(Dingo Optimization Algorithm,DOA)是于2021年提出的一种新型智能优化算法,该算法是根据澳大利亚野狗的社交行为设计的,具有寻优能力强,收敛速度快等特点。
1.算法原理
DOA算法的灵感来源于野狗的狩猎策略,即迫害攻击、分组策略和清扫行为。
1.1 种群初始化
野狗种群在搜索边界内随机初始化:
x
i
?
=
l
b
i
+
r
a
n
d
i
(
u
b
i
?
l
b
i
)
(1)
\vec{x_i}=lb_i+rand_i(ub_i-lb_i)\tag{1}
xi?
?=lbi?+randi?(ubi??lbi?)(1) 其中,
l
b
i
lb_i
lbi?和
u
b
i
ub_i
ubi?分别表示个体的上下边界,
r
a
n
d
i
rand_i
randi?是[0,1]之间的随机数。
1.2 策略一:群体攻击
捕食者通常使用高度智能的狩猎技术,野狗通常单独捕食小猎物,如兔子,但当捕食大猎物,如袋鼠时,它们会成群结队。野狗能找到猎物的位置并将其包围,其行为如式(2)所示:
x
i
?
(
t
+
1
)
=
β
i
∑
k
=
1
n
a
[
φ
k
(
t
)
?
x
i
(
t
)
?
?
]
n
a
?
x
?
(
t
)
?
(2)
\vec{x_i}(t+1)=\beta_i\sum_{k=1}^{na}\frac{[\vec{\varphi_k(t)-\vec{x_i(t)}}]}{na}-\vec{x_*(t)}\tag{2}
xi?
?(t+1)=βi?k=1∑na?na[φk?(t)?xi?(t)
?
?]??x??(t)
?(2) 其中,
t
t
t代表当前的迭代次数,
x
i
?
(
t
+
1
)
\vec{x_i}(t+1)
xi?
?(t+1)是野狗新位置;
n
a
na
na是在
[
2
,
S
i
z
e
P
o
p
/
2
]
[2,SizePop/2]
[2,SizePop/2]的逆序中生成的随机整数,其中
S
i
z
e
P
o
p
SizePop
SizePop是野狗种群的规模;
φ
k
(
t
)
?
\vec{\varphi_k(t)}
φk?(t)
?是将攻击的野狗的子集,其中
φ
∈
X
\varphi\in X
φ∈X,是随机生成的野狗种群;
x
i
?
(
t
)
\vec{x_i}(t)
xi?
?(t)是当前野狗的位置;
x
?
?
(
t
)
\vec{x_*}(t)
x??
?(t)是上一次迭代中发现的最佳野狗;
β
1
\beta_1
β1?是在[-2,2]内均匀生成的随机数,它是一个比例因子,可改变野狗轨迹的大小。
1.3 策略二:迫害攻击
野狗通常捕猎小猎物,直到单独捕获为止。式(3)模拟了这种行为:
x
i
?
(
t
+
1
)
=
x
?
?
(
t
)
+
β
1
?
e
β
2
?
(
x
r
1
?
(
t
)
?
x
i
(
t
)
?
)
(3)
\vec{x_i}(t+1)=\vec{x_*}(t)+\beta_1*e^{\beta_2}*(\vec{x_{r1}}(t)-\vec{x_i(t)})\tag{3}
xi?
?(t+1)=x??
?(t)+β1??eβ2??(xr1?
?(t)?xi?(t)
?)(3) 其中,
x
i
?
(
t
+
1
)
\vec{x_i}(t+1)
xi?
?(t+1)是野狗新位置,
x
?
?
(
t
)
\vec{x_*}(t)
x??
?(t)是上一次迭代中发现的最佳野狗,
β
1
\beta_1
β1?的值与式(2)中的值相同,
β
2
\beta_2
β2?是在[-1,1]区间内均匀生成的随机数,
r
1
r_1
r1?是在从1到最大搜索代理(野狗)大小的区间内生成的随机数,
x
r
1
?
(
t
)
\vec{x_{r1}}(t)
xr1?
?(t)是随机选择的第
r
1
r_1
r1?个野狗,其中
i
≠
r
1
i\neq r_1
i?=r1?。
1.4 策略三:清扫
清扫行为为被定义为当野狗在它们的栖息地随意行走时找到腐肉吃的行为。式(4)用于模拟这种行为:
x
i
?
(
t
+
1
)
=
1
2
[
e
β
2
?
x
r
1
?
(
t
)
?
(
?
1
)
σ
?
x
i
?
(
t
)
]
(4)
\vec{x_i}(t+1)=\frac{1}{2}[e^{\beta_2}*\vec{x_{r_1}}(t)-(-1)^{\sigma}*\vec{x_i}(t)]\tag{4}
xi?
?(t+1)=21?[eβ2??xr1??
?(t)?(?1)σ?xi?
?(t)](4) 其中,
x
i
?
(
t
+
1
)
\vec{x_i}(t+1)
xi?
?(t+1)是野狗新位置,
β
2
\beta_2
β2?的值与式(3)中的值相同,
r
1
r_1
r1?是在从1到最大搜索代理(野狗)大小的区间内生成的随机数,
x
r
1
?
(
t
)
\vec{x_{r1}}(t)
xr1?
?(t)是随机选择的第
r
1
r_1
r1?个野狗,其中
i
≠
r
1
i\neq r_1
i?=r1?。
σ
\sigma
σ是算法随机生成的二进制数,
σ
∈
{
0
,
1
}
\sigma \in\{0,1\}
σ∈{0,1}
1.5 策略四:野狗的存活率
在DOA中,野狗的存活率值由式(5)给出:
s
u
r
v
i
a
l
(
i
)
=
f
i
t
n
e
s
s
m
a
x
?
f
i
t
n
e
s
s
(
i
)
f
i
t
n
e
s
s
m
a
x
?
f
i
t
n
e
s
s
m
i
n
(5)
survial(i)=\frac{fitness_{max}-fitness(i)}{fitness_{max}-fitness_{min}}\tag{5}
survial(i)=fitnessmax??fitnessmin?fitnessmax??fitness(i)?(5) 其中,
f
i
t
n
e
s
s
m
a
x
fitness_{max}
fitnessmax?和
f
i
t
n
e
s
s
m
i
n
fitness_{min}
fitnessmin?分别是当前一代中最差和最佳的适应度值,而
f
i
t
n
e
s
s
(
i
)
fitness(i)
fitness(i)是第
i
i
i个野狗的当前适应度值。式(5)中的生存向量包含[0,1]区间内的归一化适应度。式(6)通过策略三应用于低生存率,例如,生存率值等于或小于0.3。
x
i
?
(
t
+
1
)
=
x
?
?
(
t
)
+
1
2
[
x
r
1
?
(
t
)
?
(
?
1
)
σ
?
x
r
2
?
(
t
)
]
(6)
\vec{x_i}(t+1)=\vec{x_*}(t)+\frac{1}{2}[{\vec{x_{r_1}}(t)-(-1)^{\sigma}*\vec{x_{r2}}(t)]}\tag{6}
xi?
?(t+1)=x??
?(t)+21?[xr1??
?(t)?(?1)σ?xr2?
?(t)](6) 其中,
x
i
?
(
t
)
\vec{x_i}(t)
xi?
?(t)是将被更新的生存率较低的野狗,
r
1
r_1
r1?和
r
2
r_2
r2?是在从1到搜索代理(野狗种群)的最大大小的区间内生成的随机数,
r
1
≠
r
2
r_1\neq r_2
r1??=r2?,
x
r
1
?
\vec{x_{r1}}
xr1?
?和
x
r
2
?
\vec{x_{r2}}
xr2?
?是随机选择的第
r
1
,
r
2
r1,r2
r1,r2个野狗,
x
?
?
(
t
)
\vec{x_*}(t)
x??
?(t)是上一次迭代中发现的最佳野狗;
σ
\sigma
σ是算法随机生成的二进制数,
σ
∈
{
0
,
1
}
\sigma \in\{0,1\}
σ∈{0,1}。
算法伪代码
procedure DOA
(2) Initialization of parameters
(3) P = 0.5, probability of hunting or scavenger strategy
(4) Q = 0.7, probability of Strategy 1 (group attack) or Strategy 2 (persecution attack)
(5) Generate the initial population
(6) while iteration < Max Number of Iterations do
(7) if random<P then
(8) if random<Q then
(9) Strategy 1: Group Attack Procedure, Algorithm 1, equation (2).
(10) else
(11) : Strategy 2: Persecution, (3).
(12) end if
(13) else
(14) Strategy 3: Scavenger, (4).
(15) end if
(16) Update search agents that have low survival value, Algorithm 3, equation (6)
(17) Calculate x new , the fitness value of the new search agents
(18) if x new <x ? then
(19) x ? = x new
(20) end if
(21) iteration = iteration + 1
(22) end while
(23) Display x ? , the best optimal solution
2.实验结果
3.参考文献
[1] Hernán Peraza-Vázquez, Adrián F. Pe?a-Delgado, Gustavo Echavarría-Castillo, et al. A Bio-Inspired Method for Engineering Design Optimization Inspired by Dingoes Hunting Strategies[J]. Mathematical Problems in Engineering, vol. 2021, Article ID 9107547, 19 pages, 2021.
4.Matlab代码
|