智能优化算法:猎食者优化算法
摘要:猎食者优化算法(Hunter–prey optimization,HPO),是于2022年提出的一种新型智能优化算法,该算法通过模拟动物猎食的过程,来对问题进行寻优,具有收敛速度快,寻优能力强的特点。
1.算法原理
1.初始化
与其他优化算法一样,猎食者种群在搜索范围内随机初始化位置。
x
i
=
rand
?
(
1
,
d
)
.
?
(
u
b
?
l
b
)
+
l
b
(1)
x_{i} = \operatorname{rand}(1, d) . *(u b-l b)+l b \tag{1}
xi?=rand(1,d).?(ub?lb)+lb(1) 其中,
x
i
x_i
xi?是猎食的位置,
l
b
lb
lb是问题变量的最小值(下界),
u
b
ub
ub是问题变量的最大值(上界),
d
d
d是问题变量的数量(维度)。
2.猎食者搜索
对于猎食者的搜索机制,式(2)给出了其数学模型:
x
i
,
j
(
t
+
1
)
=
x
i
,
j
(
t
)
+
0.5
[
(
2
C
Z
P
p
o
s
(
j
)
?
x
i
,
j
(
t
)
)
+
(
2
(
1
?
C
)
Z
μ
(
j
)
?
x
i
,
j
(
t
)
)
]
(2)
x_{i, j}(t+1)=x_{i, j}(t)+0.5\left[\left(2 C Z P_{p o s(j)}-x_{i, j}(t)\right)+\left(2(1-C) Z \mu(j)-x_{i, j}(t)\right)\right] \tag{2}
xi,j?(t+1)=xi,j?(t)+0.5[(2CZPpos(j)??xi,j?(t))+(2(1?C)Zμ(j)?xi,j?(t))](2) 其中,
x
(
t
)
x(t)
x(t)是当前猎食者位置,
x
(
t
+
1
)
x(t+1)
x(t+1)是猎食者的下一次迭代位置,是
P
p
o
s
P_{pos}
Ppos?猎物的位置,
μ
\mu
μ是所有位置的平均值,
Z
Z
Z是由式(3)计算的自适应参数:
P
=
R
?
1
<
C
;
I
D
X
=
(
P
=
=
0
)
Z
=
R
2
?
I
D
X
+
R
?
3
?
(
~
I
D
X
)
(3)
\begin{array}{l} P=\vec{R}_{1}<C ; I D X=(P==0) \\ Z=R_{2} \otimes I D X+\vec{R}_{3} \otimes(\sim I D X) \end{array} \tag{3}
P=R
1?<C;IDX=(P==0)Z=R2??IDX+R
3??(~IDX)?(3) 其中,
R
→
1
\overrightarrow R1
R
1 和
R
→
3
\overrightarrow R3
R
3 是[0,1]内的随机向量,
P
P
P是
R
→
1
<
C
\overrightarrow R1<C
R
1<C的索引值,
R
→
2
\overrightarrow R2
R
2是[ 0 , 1 ] 内的随机数,
I
D
X
IDX
IDX是满足条件(
P
=
=
0
P==0
P==0)的向量
R
→
1
\overrightarrow R1
R
1 的索引值,
C
C
C是探索和开发之间的平衡参数,其值在迭代过程中从1减小到0.02,计算如下:
C
=
1
?
i
t
(
0.98
M
a
x
I
t
)
(4)
C=1-i t\left(\frac{0.98}{M a x I t}\right) \tag{4}
C=1?it(MaxIt0.98?)(4) 其中,
i
t
it
it是当前迭代次数,
M
a
x
I
t
MaxIt
MaxIt是最大迭代次数。计算猎物的位置(
P
p
o
s
P_{pos}
Ppos?),以便首先根据式(5)计算所有位置的平均值(
μ
\mu
μ),然后计算每个搜索个体与该平均位置的距离。
μ
=
1
n
∑
i
=
1
n
x
?
i
(5)
\mu=\frac{1}{n} \sum_{i=1}^{n} \vec{x}_{i} \tag{5}
μ=n1?i=1∑n?x
i?(5) 根据式(6)计算欧几里得距离:
D
e
u
c
(
i
)
=
(
∑
j
=
1
d
(
x
i
,
j
?
μ
j
)
2
)
1
2
(6)
D_{e u c(i)}=\left(\sum_{j=1}^{d}\left(x_{i, j}-\mu_{j}\right)^{2}\right)^{\frac{1}{2}}\tag{6}
Deuc(i)?=(j=1∑d?(xi,j??μj?)2)21?(6) 根据式(7),距离位置平均值最大的搜索代理被视为猎物(
P
p
o
s
P_{pos}
Ppos?):
P
?
pos?
=
x
?
i
∣
i
?is?index?of?
Max
?
(
e
n
d
)
sort
?
(
D
euc?
)
(7)
\vec{P}_{\text {pos }}=\vec{x}_{i} \mid i \text { is index of } \operatorname{Max}(\mathrm{end}) \operatorname{sort}\left(D_{\text {euc }}\right) \tag{7}
P
pos??=x
i?∣i?is?index?of?Max(end)sort(Deuc??)(7) 如果每次迭代都考虑到搜索代理与平均位置(
μ
\mu
μ)之间的最大距离,则该算法将具有延迟收敛性。根据狩猎场景,当猎食者捕获猎物时,猎物会死亡,而下一次,猎食者会移动到新的猎物位置。为了解决这个问题,考虑一种递减机制,如式(8)所示:
?kbest?
=
round
?
(
C
×
N
)
(8)
\text { kbest }=\operatorname{round}(C \times N) \tag{8}
?kbest?=round(C×N)(8) 其中
N
N
N是搜索代理的数量。改变式(7),将猎物的位置计算为式(9):
P
?
pos?
=
x
?
i
∣
i
?is?sorted?
D
euc?
(
?kbest?
)
(9)
\vec{P}_{\text {pos }}=\vec{x}_{i} \mid i \text { is sorted } D_{\text {euc }}(\text { kbest }) \tag{9}
P
pos??=x
i?∣i?is?sorted?Deuc??(?kbest?)(9) 在算法开始时,
k
b
e
s
t
kbest
kbest的值等于
N
N
N。最后一个距离搜索个体的平均位置(
μ
\mu
μ)最远的搜索个体被选择为猎物,并被猎食者捕获。假设最佳安全位置是最佳全局位置,因为这将使猎物有更好的生存机会,猎食者可能会选择另一个猎物。式(10)用于更新猎物位置:
x
i
,
j
(
t
+
1
)
=
T
p
o
s
(
j
)
+
C
Z
cos
?
(
2
π
R
4
)
×
(
T
p
o
s
(
j
)
?
x
i
,
j
(
t
)
)
(10)
x_{i, j}(t+1)=T_{p o s(j)}+C Z \cos \left(2 \pi R_{4}\right) \times\left(T_{p o s(j)}-x_{i, j}(t)\right)\tag{10}
xi,j?(t+1)=Tpos(j)?+CZcos(2πR4?)×(Tpos(j)??xi,j?(t))(10) 其中,
x
(
t
)
x(t)
x(t)是猎物的当前位置;
x
(
t
+
1
)
x(t+1)
x(t+1)是猎物的下一次迭代位置;
T
p
o
s
T_{pos}
Tpos?是全局最优位置;
Z
Z
Z是由式(3)计算的自适应参数;
R
4
R_4
R4?是范围[ ? 1 , 1 ]内的随机数;
C
C
C是探索和开发之间的平衡参数,其值在算法的迭代过程中减小,并由式(4)计算;
c
o
s
cos
cos函数及其输入参数允许下一个猎物位置在不同半径和角度的全局最优位置,并提高开发阶段的性能。为了选择猎食者和猎物,结合式(2)和(10)提出了式(11):
x
i
(
t
+
1
)
=
{
x
i
(
t
)
+
0.5
[
(
2
C
Z
P
pos?
(
j
)
?
x
i
(
t
)
)
+
(
2
(
1
?
C
)
Z
μ
(
j
)
?
x
i
(
t
)
)
]
?if?
R
5
<
β
T
pos?
+
C
Z
cos
?
(
2
π
R
4
)
×
(
T
pos?
?
x
i
(
t
)
)
?else?
(11)
x_{i}(t+1)=\left\{\begin{array}{ll} x_{i}(t)+0.5\left[\left(2 C Z P_{\text {pos }(j)}-x_{i}(t)\right)+\left(2(1-C) Z \mu(j)-x_{i}(t)\right)\right] & \text { if } R_{5}<\beta \\ T_{\text {pos }}+C Z \cos \left(2 \pi R_{4}\right) \times\left(T_{\text {pos }}-x_{i}(t)\right) & \text { else } \end{array}\right .\tag{11}
xi?(t+1)={xi?(t)+0.5[(2CZPpos?(j)??xi?(t))+(2(1?C)Zμ(j)?xi?(t))]Tpos??+CZcos(2πR4?)×(Tpos???xi?(t))??if?R5?<β?else??(11) 其中,
R
5
R_5
R5?是[ 0 , 1 ] 范围内的随机数,
β
\beta
β是一个调节参数。
算法流程:
步骤1:设置算法相关参数;并初始化种群。
步骤2:计算适应度值,并记录最优位置。
步骤3:根据(11)对猎食者或猎物位置进行更新。
步骤4:判断是否满足停止条件,如果满足则输出最优解,否则充分步骤2-3。
2.实验结果
3.参考文献
[1] Naruei, I., Keynia, F., Sabbagh Molahosseini, A. Hunter-prey optimization: algorithm and applications[J]. Soft Computing, 2022, 26: 1279-1314.
4.Matlab
|