智能优化算法:河马优化算法
河马优化算法是 Amiri M. H. 等 [ 20 ] ^{[20]} [20]于 2024 年提出的新群体智能算法,灵感来源于河马的行为。该算法模拟河马在河流或池塘中的位置更新、防御捕食者策略和规避方法来解决优化问题。其核心分为 3 个阶段:河马初始位置更新、河马防御捕食者、河马逃离捕食者。
1.算法原理
河马算法初始阶段决策变量初始化公式为
z
i
j
=
l
b
j
+
p
×
(
u
b
j
−
l
b
j
)
,
(
i
=
1
,
2
,
…
,
N
;
j
=
1
,
2
,
…
,
m
)
(7)
z_{ij} = lb_j + p \times (ub_j - lb_j),\ (i = 1,2,\dots,N; j = 1,2,\dots,m) \tag{7}
zij=lbj+p×(ubj−lbj), (i=1,2,…,N;j=1,2,…,m)(7)
式中,
p
p
p 为
(
0
,
1
)
(0,1)
(0,1) 内的随机数;
u
b
j
ub_j
ubj 和
l
b
j
lb_j
lbj 分别为第
j
j
j 维度的上界和下界。
河马初始位置更新主要模拟河马群体的社会结构的动态变化。
雄性河马的更新公式为
z
i
j
M
=
z
i
j
+
p
1
×
(
A
hippo
−
J
1
×
z
i
j
)
(8)
z_{ij}^{\text{M}} = z_{ij} + p_1 \times (A_{\text{hippo}} - J_1 \times z_{ij}) \tag{8}
zijM=zij+p1×(Ahippo−J1×zij)(8)
式中,
z
i
j
M
z_{ij}^{\text{M}}
zijM 为第
i
i
i 只河马在第
j
j
j 维的位置;
A
hippo
A_{\text{hippo}}
Ahippo 为统治雄性河马的位置;
p
1
p_1
p1 为
[
0
,
1
]
[0,1]
[0,1] 区间的随机数;
J
1
J_1
J1 代表距离减少的因子。
雌性或未成熟河马的位置更新公式为
z
i
j
VM
=
{
z
i
j
+
h
1
×
(
A
hippo
−
J
2
×
M
G
i
)
,
B
>
0.6
Δ
,
else
(9)
z_{ij}^{\text{VM}} = \begin{cases} z_{ij} + h_1 \times (A_{\text{hippo}} - J_2 \times MG_i), & B > 0.6 \\ \Delta, & \text{else} \end{cases} \tag{9}
zijVM={zij+h1×(Ahippo−J2×MGi),Δ,B>0.6else(9)
Δ = { z i j + h 2 × ( A hippo − J 2 × M G i ) , p 6 > 0.6 l b j + p 7 × ( u b j − l b j ) , else (10) \Delta = \begin{cases} z_{ij} + h_2 \times (A_{\text{hippo}} - J_2 \times MG_i), & p_6 > 0.6 \\ lb_j + p_7 \times (ub_j - lb_j), & \text{else} \end{cases} \tag{10} Δ={zij+h2×(Ahippo−J2×MGi),lbj+p7×(ubj−lbj),p6>0.6else(10)
B = exp ( − t Maxiteration ) (11) B = \exp\left(-\frac{t}{\text{Maxiteration}}\right) \tag{11} B=exp(−Maxiterationt)(11)
式中, J 2 J_2 J2 是 [ 1 , 2 ] [1,2] [1,2] 区间内的随机数; M G i MG_i MGi 表示从群体中随机选择一些河马的平均位置; p 6 p_6 p6 和 p 7 p_7 p7 均为一个 [ 0 , 1 ] [0,1] [0,1] 区间内的随机数; h 1 h_1 h1 和 h 2 h_2 h2 是随机抽取的数字或者向量。
河马在群体中的位置更新可描述为
z
i
=
{
z
i
M
(
F
)
,
F
i
M
(
F
)
<
F
i
z
i
,
else
(12)
z_i = \begin{cases} z_i^{M(F)}, & F_i^{M(F)} < F_i \\ z_i, & \text{else} \end{cases} \tag{12}
zi={ziM(F),zi,FiM(F)<Fielse(12)
河马防御捕食者阶段通过模拟河马转向捕食者与对捕食者咆哮的防御方式来避免算法进入局部最优解情况。
捕食者位置随机更新为
Predato
j
=
l
b
j
+
p
8
⋅
(
u
b
j
−
l
b
j
)
(13)
\text{Predato}_j = lb_j + p_8 \cdot (ub_j - lb_j) \tag{13}
Predatoj=lbj+p8⋅(ubj−lbj)(13)
式中,
p
8
p_8
p8 表示
[
0
,
1
]
[0,1]
[0,1] 范围内的随机向量。
性河马的位置;
p
1
p_1
p1 为
[
0
,
1
]
[0,1]
[0,1] 区间的随机数;
J
1
J_1
J1 代表距离减少的因子。
雌性或未成熟河马的位置更新公式为
z
i
j
VM
=
{
z
i
j
+
h
1
×
(
A
hippo
−
J
2
×
M
G
i
)
,
B
>
0.6
Δ
,
else
(9)
z_{ij}^{\text{VM}} = \begin{cases} z_{ij} + h_1 \times (A_{\text{hippo}} - J_2 \times MG_i), & B > 0.6 \\ \Delta, & \text{else} \end{cases} \tag{9}
zijVM={zij+h1×(Ahippo−J2×MGi),Δ,B>0.6else(9)
Δ = { z i j + h 2 × ( A hippo − J 2 × M G i ) , p 6 > 0.6 l b j + p 7 × ( u b j − l b j ) , else (10) \Delta = \begin{cases} z_{ij} + h_2 \times (A_{\text{hippo}} - J_2 \times MG_i), & p_6 > 0.6 \\ lb_j + p_7 \times (ub_j - lb_j), & \text{else} \end{cases} \tag{10} Δ={zij+h2×(Ahippo−J2×MGi),lbj+p7×(ubj−lbj),p6>0.6else(10)
B = exp ( − t Maxiteration ) (11) B = \exp\left(-\frac{t}{\text{Maxiteration}}\right) \tag{11} B=exp(−Maxiterationt)(11)
式中, J 2 J_2 J2 是 [ 1 , 2 ] [1,2] [1,2] 区间内的随机数; M G i MG_i MGi 表示从群体中随机选择一些河马的平均位置; p 6 p_6 p6 和 p 7 p_7 p7 均为一个 [ 0 , 1 ] [0,1] [0,1] 区间内的随机数; h 1 h_1 h1 和 h 2 h_2 h2 是随机抽取的数字或者向量。
河马在群体中的位置更新可描述为
z
i
=
{
z
i
M
(
F
)
,
F
i
M
(
F
)
<
F
i
z
i
,
else
(12)
z_i = \begin{cases} z_i^{M(F)}, & F_i^{M(F)} < F_i \\ z_i, & \text{else} \end{cases} \tag{12}
zi={ziM(F),zi,FiM(F)<Fielse(12)
河马防御捕食者阶段通过模拟河马转向捕食者与对捕食者咆哮的防御方式来避免算法进入局部最优解情况。
捕食者位置随机更新为
Predato
j
=
l
b
j
+
p
8
⋅
(
u
b
j
−
l
b
j
)
(13)
\text{Predato}_j = lb_j + p_8 \cdot (ub_j - lb_j) \tag{13}
Predatoj=lbj+p8⋅(ubj−lbj)(13)
式中,
p
8
p_8
p8 表示
[
0
,
1
]
[0,1]
[0,1] 范围内的随机向量。河马对捕食者的反应情况为
z
i
j
MhippoD
=
{
RL
⊕
Predato
r
j
+
g
k
−
m
×
cos
(
2
π
c
)
×
1
D
,
F
Predator
j
<
F
i
RL
⊕
Predato
r
j
+
g
k
−
m
×
cos
(
2
π
c
)
×
1
D
+
p
9
,
else
(14)
z_{ij}^{\text{MhippoD}} = \begin{cases} \text{RL} \oplus \text{Predato}_{r_j} + \dfrac{g}{k - m \times \cos(2\pi c)} \times \dfrac{1}{D}, & F_{\text{Predator}_j} < F_i \\ \text{RL} \oplus \text{Predato}_{r_j} + \dfrac{g}{k - m \times \cos(2\pi c)} \times \dfrac{1}{D + p_9}, & \text{else} \end{cases} \tag{14}
zijMhippoD=⎩
⎨
⎧RL⊕Predatorj+k−m×cos(2πc)g×D1,RL⊕Predatorj+k−m×cos(2πc)g×D+p91,FPredatorj<Fielse(14)
式中, RL \text{RL} RL 是具有莱维分布的随机向量,用来模拟遭受捕食攻击时河马的快速变动行为; g , k , m , c g,k,m,c g,k,m,c 是随机数,用于控制河马反应的强度和方向。
此时第
i
i
i 只河马的位置更新为
z
i
=
{
z
i
HippoD
,
F
i
HippoD
<
F
i
z
i
,
else
(15)
z_i = \begin{cases} z_i^{\text{HippoD}}, & F_i^{\text{HippoD}} < F_i \\ z_i, & \text{else} \end{cases} \tag{15}
zi={ziHippoD,zi,FiHippoD<Fielse(15)
河马逃离捕食者阶段主要关注在解空间中进行有效的局部搜索,以提高解决方案的精确度和质量。河马逃离位置更新为
z
i
j
Hippoe
=
z
i
j
+
p
10
×
[
l
b
j
local
+
s
1
×
(
u
b
j
local
−
l
b
j
local
)
]
(16)
z_{ij}^{\text{Hippoe}} = z_{ij} + p_{10} \times \left[ lb_j^{\text{local}} + s_1 \times (ub_j^{\text{local}} - lb_j^{\text{local}}) \right] \tag{16}
zijHippoe=zij+p10×[lbjlocal+s1×(ubjlocal−lbjlocal)](16)
l b j local = l b j t , u b j local = u b j t (17) lb_j^{\text{local}} = \frac{lb_j}{t},\ ub_j^{\text{local}} = \frac{ub_j}{t} \tag{17} lbjlocal=tlbj, ubjlocal=tubj(17)
式中, p 10 p_{10} p10 表示 [ 0 , 1 ] [0,1] [0,1] 范围内的随机向量; s 1 s_1 s1 表示随机向量数[0,1]内的随机向量;t表示当前的迭代次数。
2.算法结果Matlab&Python

3.参考文献
[1] Amiri, M. H., Mehrabi Hashjin, N., Montazeri, M., & Shokouhifar, M. (2024). Hippopotamus optimization algorithm: a novel nature-inspired optimization algorithm. Scientific Reports, 14(1), 5032. https://doi.org/10.1038/s41598-024-54910-3

634

被折叠的 条评论
为什么被折叠?



