矮猫鼬优化算法(Dwarf Mongoose Optimization Algorithm,DMO)
一、算法灵感
矮猫鼬优化算法(Dwarf Mongoose Optimization Algorithm,DMO)是由Jeffrey O. Agushaka等人于2022年提出的一种群体智能优化算法,其灵感来源于矮猫鼬的群体觅食行为。矮猫鼬通常生活在一个母系社会的家族群体中,主要有觅食、侦察和保姆三种社会职能。矮猫鼬以集体觅食和侦察而闻名,由雌性首领引导种群进行食物源的搜寻。一旦满足保姆交换条件,即当阿尔法组未能寻找到合适的食物时,将交换阿尔法组和保姆组的成员,且阿尔法组同时进行觅食和寻找睡眠丘。
二、算法介绍
2.1 初始化
DMO优化从初始化矮猫鼬候选种群开始,种群在给定问题的上界和下界之间随机生成。公式如下:
X
=
[
x
1
,
1
x
1
,
2
…
x
1
,
d
−
1
x
1
,
d
x
2
,
1
x
2
,
2
…
x
2
,
d
−
1
x
2
,
d
⋮
⋮
x
i
,
j
⋮
⋮
x
N
,
1
x
N
,
2
…
x
N
,
d
−
1
x
N
,
d
]
(1)
X = \left[ {\begin{aligned} &{{x_{1,1}}} & {{x_{1,2}}} &\quad \ldots & {{x_{1,d - 1}}} &\quad {{x_{1,d}}} \cr &{{x_{2,1}}} & {{x_{2,2}}} &\quad \ldots & {{x_{2,d - 1}}} &\quad {{x_{2,d}}} \cr &\ \ \ \vdots &\vdots\ \ &\ \quad {{x_{i,j}}} & \vdots\ \ \ \ \ &\quad\ \ \vdots \cr &{{x_{N,1}}} & {{x_{N,2}}} &\quad \ldots & {{x_{N,d - 1}}} &\quad {{x_{N,d}}} \cr \end{aligned}} \right] \tag{1}
X=
x1,1x2,1 ⋮xN,1x1,2x2,2⋮ xN,2…… xi,j…x1,d−1x2,d−1⋮ xN,d−1x1,dx2,d ⋮xN,d
(1)其中,
X
X
X 是当前候选解的集合,它们是通过式(2)随机生成的,
x
i
,
j
{x_{i,j}}
xi,j 表示第
i
i
i 个个体在第
j
j
j 维的位置,
N
N
N 表示种群大小,阿尔法组的个体数量为
n
′
n'
n′,
b
s
bs
bs 为保姆的数量,
d
d
d 表示问题的维数。
x
i
,
j
=
u
n
i
f
r
n
d
(
l
b
,
u
b
,
V
a
r
S
i
z
e
)
(2)
{x_{i,j}} = unifrnd\left( {lb,ub,VarSize} \right) \tag{2}
xi,j=unifrnd(lb,ub,VarSize)(2)式中,
u
n
i
f
r
n
d
unifrnd
unifrnd 是均匀分布的随机数,
u
b
ub
ub 和
l
b
lb
lb 分别为搜索空间的上界和下界。
V
a
r
S
i
z
e
VarSize
VarSize 表示决策变量的大小。每次迭代中的最优解就是到目前为止获得的最佳解。
2.2 阿尔法组
2.2.1 雌性首领的产生
雌性首领在阿尔法组中产生,阿尔法组中每个雌性个体成为首领的概率为
α
\alpha
α,计算公式如下:
α
=
f
i
t
i
∑
i
=
1
N
f
i
t
i
(3)
\alpha {\rm{ = }}{{fi{t_i}} \over {\sum\limits_{i = 1}^N {fi{t_i}} }} \tag{3}
α=i=1∑Nfitifiti(3)其中,
f
i
t
i
fi{t_i}
fiti 是第
i
i
i 个个体的适应度。
2.2.2 阿尔法组成员觅食
阿尔法组成员将共行并进行觅食,食物源的候选位置由式(4)给出:
X
i
+
1
=
X
i
+
p
h
i
×
p
e
e
p
×
(
X
i
−
X
r
a
n
d
)
(4)
{X_{i + 1}} = {X_i} + phi \times peep \times ({X_i} - {X_{rand}}) \tag{4}
Xi+1=Xi+phi×peep×(Xi−Xrand)(4)其中,
X
i
+
1
{X_{i + 1}}
Xi+1 是找到的新食物源位置,
X
i
{X_i}
Xi 为雌性首领当前的位置,
p
h
i
phi
phi 是均匀分布在
[
−
1
,
1
]
[-1,1]
[−1,1] 之间的随机数,
p
e
e
p
peep
peep 选取为
2
2
2,
X
r
a
n
d
{X_{rand}}
Xrand 是阿尔法组中的随机个体。
2.3 保姆交换条件
保姆交换条件是用于重置阿尔法组和保姆组中的猫鼬个体。当阿尔法组成员未能搜寻到合适的食物时,认为阿尔法组成员能力不足,将交换阿尔法组和保姆组的成员。交换条件满足后,阿尔法组将同时进行觅食和寻找睡眠丘,计算公式如下:
X
b
=
l
b
+
r
a
n
d
∗
(
u
b
−
l
b
)
(5)
{X_b} = lb + rand * (ub - lb) \tag{5}
Xb=lb+rand∗(ub−lb)(5)其中,
X
b
{X_b}
Xb 为交换后个体的新位置,
r
a
n
d
rand
rand 是
0
0
0 到
1
1
1 之间的随机数。
保姆交换后的觅食行为由公式(4)实现。睡眠丘是猫鼬休息的场所,而猫鼬不会回到之前的睡眠丘,这种生活模式能够避免搜索区域被过度开发的问题。新搜寻到的睡眠丘的数学模型如下:
X
s
m
=
{
X
i
−
C
F
∗
p
h
i
∗
r
a
n
d
∗
[
X
i
−
M
→
]
i
f
φ
i
+
1
>
φ
i
X
i
+
C
F
∗
p
h
i
∗
r
a
n
d
∗
[
X
i
−
M
→
]
e
l
s
e
}
(6)
{X_{sm}} = \left\{ {\begin{aligned} {{X_i} - CF * phi * rand * \left[ {{X_i} - \overrightarrow M } \right]} & {if} & {{\varphi _{i + 1}} > {\varphi _i}} \cr {{X_i} + CF * phi * rand * \left[ {{X_i} - \overrightarrow M } \right]} & {} & {else} \cr \end{aligned}} \right\} \tag{6}
Xsm=⎩
⎨
⎧Xi−CF∗phi∗rand∗[Xi−M]Xi+CF∗phi∗rand∗[Xi−M]ifφi+1>φielse⎭
⎬
⎫(6)其中,
X
s
m
{X_{sm}}
Xsm 为新的睡眠丘的位置,
M
→
\overrightarrow M
M 是决定猫鼬移动到新睡眠丘的方向向量,
φ
\varphi
φ 是睡眠丘的平均值,计算公式如下:
M
→
=
∑
i
=
1
N
X
i
×
s
m
i
X
i
(7)
\overrightarrow M = \sum\limits_{i = 1}^N {{{{X_i} \times s{m_i}} \over {{X_i}}}} \tag{7}
M=i=1∑NXiXi×smi(7)
φ
=
∑
i
=
1
N
s
m
i
n
(8)
\varphi = {{\sum\limits_{i = 1}^N {s{m_i}} } \over n} \tag{8}
φ=ni=1∑Nsmi(8)其中,
s
m
i
s{m_i}
smi 代表睡眠丘值:
s
m
i
=
f
i
t
i
+
1
−
f
i
t
i
max
{
∣
f
i
t
i
+
1
,
f
i
t
i
∣
}
(9)
s{m_i} = {{fi{t_{i + 1}} - fi{t_i}} \over {\max \left\{ {\left| {fi{t_{i + 1}},fi{t_i}} \right|} \right\}}}\tag{9}
smi=max{∣fiti+1,fiti∣}fiti+1−fiti(9)
C
F
CF
CF 表示猫鼬种群移动能力的参数,它会随着迭代次数线性递减,计算公式如下:
C
F
=
(
1
−
t
T
)
(
2
t
/
T
)
(10)
CF = {\left( {1 - {t \over T}} \right)^{\left( {{2t /T}} \right)}}\tag{10}
CF=(1−Tt)(2t/T)(10)其中,
t
t
t 为当前迭代次数,
T
T
T 为最大迭代次数。
2.4 DMO的算法伪代码
- 初始化算法参数 p e e p peep peep、猫鼬种群规模 N N N、保姆数量 b s bs bs,等
- 设置 n ′ = N − b s n' = N - bs n′=N−bs
- 设置保姆交换参数 L L L
- While t < T t<T t<T do
- 计算猫鼬的适应度
- 设置交换计数器 C C C
- 计算个体成为首领的概率 α \alpha α 根据公式(3)
- 生成一个食物源的候选位置根据公式(4)
- 计算找到的食物源新位置 X i + 1 {X_{i + 1}} Xi+1 的适应度
- 计算评估睡眠丘值根据公式(9)
- 计算睡眠丘值的平均值根据公式(8)
- 计算移动向量根据公式(7)
- If C ≥ L C \ge L C≥L then
- 初始化保姆的位置根据公式(1)并计算适应度
- 阿尔法组寻找新睡眠丘根据公式(6)
- End If
- 更新目前最优解
- End While
- 返回最优解
三、实验结果
DMO在23个经典测试函数(设置维度 d i m = 30 dim=30 dim=30)的F1、F5、F8中的收敛曲线,测试函数公式如下:
函数 | 公式 | 理论值 |
---|---|---|
F1 | F 1 ( x ) = ∑ i = 1 n x i 2 {F_1}(x) = \sum\nolimits_{i = 1}^n {x_i^2} F1(x)=∑i=1nxi2 | 0.00 0.00 0.00 |
F11 | F 11 ( x ) = 1 400 ∑ i = 1 n x i 2 − Π i = 1 n cos ( x i i ) + 1 {F_{11}}(x) = {1 \over {400}}\sum\nolimits_{i = 1}^n {x_i^2 - \Pi _{i = 1}^n\cos ({{{x_i}} \over {\sqrt i }}) + 1} F11(x)=4001∑i=1nxi2−Πi=1ncos(ixi)+1 | 0.00 0.00 0.00 |
F21 | F 21 ( x ) = − ∑ i = 1 5 [ ( X − a i ) ( X − a i ) T + c i ] − 1 {F_{21}}(x) = - \sum\nolimits_{i = 1}^5 {{{[(X - {a_i}){{(X - {a_i})}^T} + {c_i}]}^{ - 1}}} F21(x)=−∑i=15[(X−ai)(X−ai)T+ci]−1 | − 10.1532 -10.1532 −10.1532 |
3.1 F1收敛曲线
3.2 F11收敛曲线
3.3 F21收敛曲线
四、参考文献
[1] 贾鹤鸣, 智能优化算法及 MATLAB 实现[M], 清华大学出版社, 2024。
[2] Agushaka J. O., Ezugwu A. E., Abualigag L. Dwarf mongoose optimization algorithm[J]. Computer methods in applied mechanics and engineering, 2022, 391, 114570.