智能优化算法:饥饿游戏搜索算法-附代码
作者:互联网
智能优化算法:饥饿游戏搜索算法
文章目录
摘要:饥饿游戏搜索算法(Hunger games search,HGS)是于2021年提出的一种新型智能优化算法,该算法是根据动物饥饿驱动活动和行为而设计的,具有寻优能力强,收敛速度快等特点。
1.算法原理
1.1 接近食物
动物接近食物的行为可以用式(1)表示:
X
(
t
+
1
)
=
{
X
(
t
)
(
1
+
r
a
n
d
n
(
1
)
)
,
r
1
<
l
W
1
X
b
+
R
W
2
∣
X
b
−
X
(
t
)
∣
,
r
1
>
l
,
r
2
>
E
W
1
X
b
−
R
W
2
∣
X
b
−
X
(
t
)
∣
,
r
1
>
l
,
r
2
<
E
(1)
X(t+1)=\begin{cases} X(t)(1+randn(1)),r_1<l\\ W_1X_b+RW_2|X_b-X(t)|,r_1>l,r_2>E\\ W_1X_b-RW_2|X_b-X(t)|,r_1>l,r2<E \end{cases}\tag{1}
X(t+1)=⎩⎪⎨⎪⎧X(t)(1+randn(1)),r1<lW1Xb+RW2∣Xb−X(t)∣,r1>l,r2>EW1Xb−RW2∣Xb−X(t)∣,r1>l,r2<E(1)
其中,
R
R
R是介于
[
−
a
,
a
]
[-a,a]
[−a,a]的随机数;
r
1
,
r
2
r_1,r_2
r1,r2均为[0,1]之间的随机数;randn是满足标准正态分布的随机数;
t
t
t为当前迭代次数;
W
1
W_1
W1和
W
2
W_2
W2表示饥饿权重;
X
b
X_b
Xb表示全局最优位置;
X
(
t
)
X(t)
X(t)表示当前个体位置;
l
l
l是设置的常数。
E
E
E的计算公式如下:
E
=
s
e
c
h
(
∣
F
(
i
)
−
B
F
∣
)
(2)
E=sech(|F(i)-BF|)\tag{2}
E=sech(∣F(i)−BF∣)(2)
其中
i
∈
(
1
,
2
,
.
.
.
,
N
)
i\in(1,2,...,N)
i∈(1,2,...,N),
F
(
i
)
F(i)
F(i)第
i
i
i个个体的适应度值;
B
F
BF
BF是当前最优适应度值。
s
e
c
h
sech
sech是一个双曲函数。
s
e
c
h
(
x
)
=
2
e
x
+
e
−
x
(2)
sech(x)=\frac{2}{e^x+e^{-x}} \tag{2}
sech(x)=ex+e−x2(2)
R的计算公式如下:
R
=
2
∗
a
∗
r
a
n
d
−
a
(4)
R=2*a*rand-a \tag{4}
R=2∗a∗rand−a(4)
a = 2 ∗ ( 1 − t / M a x i t e r ) (5) a=2*(1-t/Max_{iter})\tag{5} a=2∗(1−t/Maxiter)(5)
1.2 饥饿角色
对搜索中个体的饥饿特征进行了数学建模
W
1
W_1
W1的计算如式(6)所示:
W
1
i
=
{
h
u
n
g
r
y
(
i
)
N
S
H
u
n
g
r
y
r
4
,
r
3
<
l
1
,
r
3
>
l
(6)
W_1^i=\begin{cases} hungry(i)\frac{N}{SHungry}r_4,r3<l\\ 1,r3>l \end{cases}\tag{6}
W1i={hungry(i)SHungryNr4,r3<l1,r3>l(6)
W
2
W_2
W2的计算如式(7)所示:
W
2
i
=
(
1
−
e
x
p
(
−
∣
h
u
n
g
r
y
(
i
)
−
S
H
u
n
g
r
y
∣
)
)
∗
r
2
∗
2
(7)
W_2^i=(1-exp(-|hungry(i)-SHungry|))*r_2*2 \tag{7}
W2i=(1−exp(−∣hungry(i)−SHungry∣))∗r2∗2(7)
其中,
h
u
n
g
r
y
hungry
hungry表示每个个体的饥饿程度;
N
N
N表示所有个体的总数;
S
H
u
n
g
r
y
SHungry
SHungry表示所有个体饥饿程度的总和,即
s
u
m
(
h
u
n
g
r
y
)
sum(hungry)
sum(hungry);
r
3
,
r
4
,
r
5
r_3,r_4,r_5
r3,r4,r5均为[0,1]之间的随机数。
h
u
n
g
r
y
(
i
)
hungry(i)
hungry(i)计算如下:
h
u
n
g
r
y
(
i
)
=
{
0
,
A
l
l
F
i
t
n
e
s
s
(
i
)
=
=
B
F
h
u
n
g
r
y
(
i
)
+
H
,
e
l
s
e
(8)
hungry(i)=\begin{cases} 0,AllFitness(i)==BF\\ hungry(i)+H,else \end{cases}\tag{8}
hungry(i)={0,AllFitness(i)==BFhungry(i)+H,else(8)
其中,
A
l
l
F
i
t
n
e
s
s
(
i
)
AllFitness(i)
AllFitness(i)表示每个个体的适应度值。
H
H
H的计算如下:
T
H
=
F
(
i
)
−
B
F
W
F
−
B
F
∗
r
6
∗
2
∗
(
U
B
−
L
B
)
(9)
TH=\frac{F(i)-BF}{WF-BF}*r_6*2*(UB-LB)\tag{9}
TH=WF−BFF(i)−BF∗r6∗2∗(UB−LB)(9)
H = { L H ∗ ( 1 + r ) , T H < L H T H , e l s e (10) H=\begin{cases} LH*(1+r),TH<LH\\ TH,else \end{cases}\tag{10} H={LH∗(1+r),TH<LHTH,else(10)
其中, r 6 r_6 r6为[0,1]之间的随机数; F ( i ) F(i) F(i)为每个个体的适应度值; B F BF BF为当前最优适应度值; W F WF WF为当前最差适应度值; U B UB UB和 L B LB LB分别表示搜索空间的上限和下限; L H LH LH为 H H H的下界。
算法伪代码
Algorithm 1 Pseudo-code of Hunger Games Search (HGS)
Initialize the parameters N, T,l,D,SHungry
Initialize the positions of Individuals X i (i = 1,2,⋯,N)
While (t ≤ T)
Calculate the fitness of all Individuals
UpdateBF,WF,X b ,BI
Calculate the Hungry by Eq. (8)
Calculate the W 1 by Eq. (6)
Calculate the W 2 by Eq. (7)
For eachIndividuals
Calculate E by Eq. (2)
Update R by Eq. (4)
UpdatepositionsbyEq.(1)
End For
t = t + 1
End While
ReturnBF,X
2.实验结果
3.参考文献
[1] Yutao Yang, Huiling Chen, Ali Asghar Heidari, Amir H Gandomi. Hunger Games Search: Visions, Conception, Implementation, Deep Analysis, Perspectives, and Towards Performance Shifts[J]. Expert Systems with Applications, 2021, 177: 114864.
4.Matlab
标签:BF,饥饿,搜索算法,hungry,算法,tag,适应度,SHungry 来源: https://blog.csdn.net/u011835903/article/details/122305294