黑猩猩优化算法(Chimp Optimization Algorithm,ChOA)
一、算法灵感
黑猩猩优化算法(Chimp Optimization Algorithm, ChOA)是2020年提出的一种群智能优化算法,其灵感来源于黑猩猩种群的社会行为。黑猩猩是除人类之外智力水平最高的物种,同时也是一种群居生活的物种。黑猩猩算法能够根据黑猩猩能力不同划分不同的社会职责,其社会职责可以分为攻击者(Attacker)、包围者(Barrier)、驱赶者(Chaser)和追捕者(Driver)四种类型,分别代表黑猩猩种群的最优解、次优解、第三优解和第四优解。黑猩猩狩猎主要分为两个过程:探索阶段,即驱动、阻挡和追逐猎物阶段;开发阶段,即攻击猎物阶段。
二、算法介绍
2.1 初始化阶段
在ChOA中,初始化黑猩猩种群位置更新公式如(1)所示:
X
i
=
r
a
n
d
×
(
u
b
−
l
b
)
+
l
b
(1)
{X_i} = rand \times (ub - lb) + lb \tag{1}
Xi=rand×(ub−lb)+lb(1)式中,
X
i
{X_i}
Xi 是第
i
{i}
i 个体的位置,
l
b
{lb}
lb 和
u
b
{ub}
ub 是搜索空间的下界和上界,
r
a
n
d
{rand}
rand 为0到1之间的随机数。
2.2 探索阶段
在狩猎过程中,黑猩猩个体各司其职,根据猎物的位置相应改变自身的位置,其位置更新公式如(2)所示:
X
c
h
i
m
p
(
t
+
1
)
=
X
p
r
e
y
(
t
)
−
a
⋅
d
(2)
{X_{chimp}}(t + 1) = {X_{prey}}(t) - a \cdot d \tag{2}
Xchimp(t+1)=Xprey(t)−a⋅d(2)式(2)中,
X
c
h
i
m
p
X_{chimp}
Xchimp 为当前黑猩猩的位置向量,
X
p
r
e
y
X_{prey}
Xprey 为当前猎物的位置向量,
t
t
t 代表当前迭代次数;
a
a
a 决定黑猩猩与猎物距离的随机向量,当
∣
a
∣
>
1
|a|>1
∣a∣>1 时,表示黑猩猩分散寻找猎物,即进入探索阶段;当
∣
a
∣
<
1
|a|<1
∣a∣<1 时,表示黑猩猩进行攻击行为,加快算法收敛。其计算公式如式(3)所示:
a
=
2
⋅
f
⋅
r
1
−
f
(3)
a = 2 \cdot f \cdot {r_1} - f \tag{3}
a=2⋅f⋅r1−f(3)其中,
f
f
f 是收敛因子,随迭代次数从2.5非线性减少到0,
r
1
r_1
r1 是取值为
[
0
,
1
]
[0,1]
[0,1] 的随机数。因此,
a
a
a 的取值范围是
[
−
f
,
f
]
[-f,f]
[−f,f] 。
d
d
d 为黑猩猩与猎物之间的距离,如式(4)所示:
d
=
∣
c
⋅
X
p
r
e
y
(
t
)
−
m
⋅
X
c
h
i
m
p
(
t
)
∣
(4)
d = |c\cdot{X_{prey}}(t) - m\cdot{X_{chimp}}(t)| \tag{4}
d=∣c⋅Xprey(t)−m⋅Xchimp(t)∣(4)其中,
c
c
c 表示在狩猎过程中障碍物对黑猩猩捕猎的影响因子,其计算公式如式(5)所示:
c
=
2
⋅
r
2
(5)
c = 2\cdot{r_2} \tag{5}
c=2⋅r2(5)其中,
r
2
r_2
r2 是取值为
[
0
,
1
]
[0,1]
[0,1] 的随机数。
式(4)中,
m
m
m 是混沌映射矢量,具有一定的遍历性和有序性;其计算公式如式(6)所示:
m
=
C
h
a
o
t
i
c
.
v
a
l
u
e
(6)
m = Chaotic.value \tag{6}
m=Chaotic.value(6)
2.3 开发阶段
黑猩猩群体搜索猎物数学模型如式(7)所示:
X
(
t
+
1
)
=
X
1
+
X
2
+
X
3
+
X
4
4
(7)
X(t + 1) = {{{X_1} + {X_2} + {X_3} + {X_4}} \over 4} \tag{7}
X(t+1)=4X1+X2+X3+X4(7)其中,
X
(
t
+
1
)
X(t+1)
X(t+1) 为当前黑猩猩个体更新后的位置向量,
X
1
X_1
X1、
X
2
X_2
X2、
X
3
X_3
X3 和
X
4
X_4
X4 为攻击者、包围者、驱赶者和追捕者更新后的位置向量,其攻击猎物数学模型如式(8)、(9)、(10)、(11)所示:
X
1
=
X
A
t
t
a
c
k
e
r
−
a
1
⋅
d
A
t
t
a
c
ker
(8)
{X_1} = {X_{Attacker }} - {a_1} \cdot {d_{Attac\ker }} \tag{8}
X1=XAttacker−a1⋅dAttacker(8)
X
2
=
X
B
a
r
r
i
e
r
−
a
2
⋅
d
B
a
r
r
i
e
r
(9)
{X_2} = {X_{Barrier}} - {a_2} \cdot {d_{Barrier}} \tag{9}
X2=XBarrier−a2⋅dBarrier(9)
X
3
=
X
C
h
a
s
e
r
−
a
3
⋅
d
C
h
a
s
e
r
(10)
{X_3} = {X_{Chaser}} - {a_3} \cdot {d_{Chaser}} \tag{10}
X3=XChaser−a3⋅dChaser(10)
X
4
=
X
D
r
i
v
e
r
−
a
4
⋅
d
D
r
i
v
e
r
(11)
{X_4} = {X_{Driver}} - {a_4} \cdot {d_{Driver}} \tag{11}
X4=XDriver−a4⋅dDriver(11)其中,
X
A
t
t
a
c
k
e
r
X_{Attacker}
XAttacker、
X
B
a
r
r
i
e
r
X_{Barrier}
XBarrier、
X
C
h
a
s
e
r
X_{Chaser}
XChaser、
X
D
r
i
v
e
r
X_{Driver}
XDriver 分别表示攻击者、包围者、驱赶者和追捕者的位置向量;
d
A
t
t
a
c
k
e
r
d_{Attacker}
dAttacker、
d
B
a
r
r
i
e
r
d_{Barrier}
dBarrier、
d
C
h
a
s
e
r
d_{Chaser}
dChaser、
d
D
r
i
v
e
r
d_{Driver}
dDriver 表示攻击者、包围者、驱赶者和追捕者分别与猎物之间的距离,其数学模式如式(12)、(13)、(14)、(15)所示:
d
A
t
t
a
c
ker
=
∣
c
1
⋅
X
A
t
t
a
c
ker
−
m
1
⋅
X
∣
(12)
{d_{Attac\ker }} = |{c_1}\cdot{X_{Attac\ker }} - {m_1}\cdot X| \tag{12}
dAttacker=∣c1⋅XAttacker−m1⋅X∣(12)
d
B
a
r
r
i
e
r
=
∣
c
2
⋅
X
B
a
r
r
i
e
r
−
m
2
⋅
X
∣
(13)
{d_{Barrier}} = |{c_2}\cdot{X_{Barrier}} - {m_2}\cdot X| \tag{13}
dBarrier=∣c2⋅XBarrier−m2⋅X∣(13)
d
C
h
a
s
e
r
=
∣
c
3
⋅
X
C
h
a
s
e
r
−
m
3
⋅
X
∣
(14)
{d_{Chaser}} = |{c_3}\cdot{X_{Chaser}} - {m_3}\cdot X| \tag{14}
dChaser=∣c3⋅XChaser−m3⋅X∣(14)
d
D
r
i
v
e
r
=
∣
c
4
⋅
X
C
h
a
s
e
r
−
m
4
⋅
X
∣
(15)
{d_{Driver}} = |{c_4}\cdot{X_{Chaser}} - {m_4}\cdot X| \tag{15}
dDriver=∣c4⋅XChaser−m4⋅X∣(15)其中,
c
1
c_1
c1、
c
2
c_2
c2、
c
3
c_3
c3 和
c
4
c_4
c4 均表示在狩猎过程中障碍物阻挡黑猩猩捕猎的影响因子,
m
1
m_1
m1、
m
2
m_2
m2、
m
3
m_3
m3 和
m
4
m_4
m4 均是混沌映射矢量。
2.4 算法伪代码
- 输入:黑猩猩种群规模 N N N、维度 d i m dim dim、最大迭代次数 T T T
- 初始化参数 f f f、 a a a、 c c c 和 m m m
- 初始化黑猩猩种群 X i ( i = 1 , 2 , . . . , N ) X_i(i=1,2,...,N) Xi(i=1,2,...,N)
- While t < T t<T t<T do
- 检查是否有黑猩猩超出搜索空间并进行修改
- 计算每个黑猩猩个体的饥饿值(适应度值)
- 选取饥饿值最小的前四个个体,确定四个领导者的位置( X a t t a c k e r X_{attacker} Xattacker、 X b a r r i e r X_{barrier} Xbarrier、 X c h a s e r X_{chaser} Xchaser 和 X d r i v e r X_{driver} Xdriver)
- 利用公式(3)、(5)、(6)更新参数 a a a、 c c c 和 m m m
- For i = 1 i=1 i=1 to N N N do
- If μ < 0.5 μ<0.5 μ<0.5 then
- If ∣ a ∣ < 1 |a|<1 ∣a∣<1 then
- 利用公式(2)更新黑猩猩种群位置
- Else
- 利用公式(8)~(11)更新四个领导者的位置( X a t t a c k e r X_{attacker} Xattacker、 X b a r r i e r X_{barrier} Xbarrier、 X c h a s e r X_{chaser} Xchaser 和 X d r i v e r X_{driver} Xdriver)
- End If
- Else
- 利用公式(7)更新所有黑猩猩个体
- End If
- End For
- t = t + 1 t=t+1 t=t+1
- End While
- 输出:最优位置 X a t t a c k e r X_{attacker} Xattacker
三、实验结果
ChOA在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 |
F5 | F 5 ( x ) = ∑ i = 1 n − 1 [ 100 ( x i + 1 − x i 2 ) 2 + ( x i − 1 ) 2 ] {F_5}(x) = \sum\nolimits_{i = 1}^{n - 1} {[100{{({x_{i + 1}} - x_i^2)}^2} + {{({x_i} - 1)}^2}]} F5(x)=∑i=1n−1[100(xi+1−xi2)2+(xi−1)2] | 0.00 0.00 0.00 |
F8 | F 8 ( x ) = ∑ i = 1 n − x i sin ( ∣ x i ∣ ) {F_8}(x) = \sum\nolimits_{i = 1}^n { - {x_i}\sin (\sqrt {|{x_i}|} )} F8(x)=∑i=1n−xisin(∣xi∣) | − 418.9829 × d i m -418.9829×dim −418.9829×dim |