改进的大猩猩部队优化算法(Modified Gorilla Troops Optimizer,MGTO)(原文作者) - 大白社区
- 发帖时间:
- 2023-03-07 13:23:41
摘要:大猩猩部队优化算法(Gorilla Troops Optimizer, GTO)是于2021年提出的元启发式算法,其灵感来自于大猩猩在自然界中的社会行为。将大猩猩的集体社会生活习性数学化,从而提出了具体的数学模型。
改进的大猩猩部队优化算法(Modified Gorilla Troops Optimizer,MGTO)(原文作者)
一、算法灵感
大猩猩部队优化算法(Gorilla Troops Optimizer, GTO)是于2021年提出的元启发式算法,其灵感来自于大猩猩在自然界中的社会行为。将大猩猩的集体社会生活习性数学化,从而提出了具体的数学模型。
二、算法介绍
2. 1 初始化
在GTO的初始化过程中会先设置相应的参数:种群数量 N N N、最大迭代次数 M a x I t MaxIt MaxIt、 β β β、 p p p、 w w w。然后在探索空间中随机初始化种群。其中, p p p 是在 0 0 0 到 1 1 1 之间的参数,控制大猩猩对未知位置的迁移策略。 β β β 为计算大猩猩暴力程度公式中的参数,其值为 0.3 0.3 0.3。 w w w 是开发阶段的两种机制的控制参数,其值为 0.8 0.8 0.8。
2. 2 探索阶段
大猩猩们在银背大猩猩的领导下以群体的形式生活在自然中,在探索阶段文章设计了三种机制,分别是迁移到未知位置,迁移到已知位置以及迁移到其他大猩猩的位置。这些机制使GTO算法拥有了出色的空间探索能力,第一种机制的执行条件是
r
a
n
d
1
<
p
rand_1<p
rand1<p,它能够使大猩猩随机探索空间,第二种机制用于提升GTO对空间的探索程度,它的执行条件是
r
a
n
d
2
≥
0.5
rand_2≥0.5
rand2≥0.5;最后,当
r
a
n
d
2
<
0.5
rand_2<0.5
rand2<0.5 时,执行第三种机制,用于增强了GTO逃离局部最优点的能力。具体的模拟公式如下:
G
X
(
t
+
1
)
=
{
(
U
B
−
L
B
)
×
r
1
+
L
B
,
r
a
n
d
1
<
p
(
r
2
−
C
)
×
X
r
(
t
)
+
L
×
H
,
r
a
n
d
2
≥
0.5
a
n
d
r
a
n
d
1
≥
p
X
(
t
)
−
L
×
(
L
×
(
X
(
t
)
−
G
X
(
t
)
)
)
+
r
3
×
(
X
(
t
)
−
G
X
r
(
t
)
)
,
r
a
n
d
2
<
0.5
a
n
d
r
a
n
d
1
≥
p
(1)
GX(t + 1) = \left\{ \begin{aligned} &(UB - LB) \times {r_1} + LB\qquad\qquad\qquad\qquad\qquad\qquad\qquad\quad\ ,rand_1 < p \cr &({r_2} - C) \times {X_r}(t) + L \times H\qquad\qquad\qquad\qquad\qquad\qquad\qquad,rand_2 \ge 0.5\ and\ rand_1 \ge p \cr &X(t) - L \times (L \times (X(t) - GX(t))) + {r_3} \times (X(t) - G{X_r}(t)),rand_2 < 0.5\ and\ rand_1 \ge p \cr \end{aligned} \right. \tag{1}
GX(t+1)=⎩
⎨
⎧(UB−LB)×r1+LB ,rand1<p(r2−C)×Xr(t)+L×H,rand2≥0.5 and rand1≥pX(t)−L×(L×(X(t)−GX(t)))+r3×(X(t)−GXr(t)),rand2<0.5 and rand1≥p(1)
C
=
F
×
(
1
−
t
M
a
x
I
t
)
(2)
C = F \times \left( {1 - {t \over {MaxIt}}} \right) \tag{2}
C=F×(1−MaxItt)(2)
F
=
cos
(
2
×
r
4
)
+
1
(3)
F = \cos (2 \times {r_4}) + 1 \tag{3}
F=cos(2×r4)+1(3)
L
=
C
×
l
(4)
L = C \times l \tag{4}
L=C×l(4)
H
=
Z
×
X
(
t
)
(5)
H = Z \times X(t) \tag{5}
H=Z×X(t)(5)
Z
=
[
−
C
,
C
]
(6)
Z = \left[ { - C,C} \right] \tag{6}
Z=[−C,C](6)其中,
G
X
(
t
+
1
)
GX(t+1)
GX(t+1) 表示大猩猩下一次迭代时的位置,
X
(
t
)
X(t)
X(t) 表示当前大猩猩的位置。
r
1
r_1
r1、
r
2
r_2
r2、
r
3
r_3
r3 和
r
a
n
d
rand
rand 都表示
0
0
0 到
1
1
1 之间的随机数。变量的上下界分别表示为
U
B
UB
UB、
L
B
LB
LB。
X
r
X_r
Xr 和
G
X
r
GX_r
GXr 都是随机选取的大猩猩的位置。
t
t
t 表示当前的迭代次数。在初始阶段的时候
C
C
C 的值的变化会较大,在后期变化值的变化会逐渐减少。
r
4
r_4
r4 是在
[
−
1
,
1
]
[-1,1]
[−1,1] 之间的一个随机数,
l
l
l 是
0
0
0 到
1
1
1 之间的随机数。
L
L
L 是用来模拟银背大猩猩的领导才能。银背大猩猩会由于经验的不足而导致寻找食物或者管理群体的决策错误。
Z
Z
Z 是区间
[
−
C
,
C
]
[-C,C]
[−C,C] 内的一个随机数。
在探索阶段结束时,要分别计算
G
X
GX
GX 和
X
X
X 的适应度值。如果
G
X
(
t
)
GX(t)
GX(t) 的适应度值小于
X
(
t
)
X(t)
X(t) 的适应度值,则
X
(
t
)
X(t)
X(t) 的位置将被
G
X
(
t
)
GX(t)
GX(t) 的位置替代 。
2. 3 开发阶段
在GTO算法的开发阶段,模拟了大猩猩的两种行为:跟随银背和成年女性竞争。这两种行为是通过
C
C
C 进行切换的,当
C
≥
w
C≥w
C≥w 时,选择跟随银背大猩猩,相反则进行竞争。跟随银背大猩猩机制的具体公式如下:
{
G
X
(
t
+
1
)
=
L
×
M
×
(
X
(
t
)
−
X
s
i
l
v
e
r
b
a
c
k
)
+
X
(
t
)
M
=
(
∣
1
N
∑
i
=
1
N
G
X
i
(
t
)
∣
g
)
1
g
g
=
2
L
(7)
\left\{ \begin{aligned} &GX(t + 1) = L \times M \times (X(t) - {X_{silverback}}) + X(t) \cr &M = {\left( {{{\left| {{1 \over N}\sum\limits_{i = 1}^N {G{X_i}(t)} } \right|}^g}} \right)^{{1 \over g}}} \cr &g = {2^L} \cr \end{aligned} \right. \tag{7}
⎩
⎨
⎧GX(t+1)=L×M×(X(t)−Xsilverback)+X(t)M=(
N1i=1∑NGXi(t)
g)g1g=2L(7) 这里的
X
S
i
l
v
e
r
b
a
c
k
X_{Silverback}
XSilverback 代表着最优解,
G
X
i
(
t
)
GX_i(t)
GXi(t) 是指迭代时每只候选大猩猩的位置,
N
N
N 表示大猩猩的总数。
成年女性竞争机制的计算公式如下:
{
G
X
(
t
)
=
X
s
i
l
v
e
r
b
a
c
k
−
(
X
s
i
l
v
e
r
b
a
c
k
×
Q
−
X
(
t
)
×
Q
)
×
A
Q
=
2
×
r
5
−
1
A
=
β
×
E
E
=
{
N
1
,
r
a
n
d
≥
0.5
N
2
,
r
a
n
d
<
0.5
(8)
\left\{ \begin{aligned} &GX(t) = {X_{silverback}} - ({X_{silverback}} \times Q - X(t) \times Q) \times A \cr &Q = 2 \times {r_5} - 1 \cr &A = \beta \times E \cr &E = \left\{ \begin{aligned} {N_1}, {rand \ge 0.5} \cr {N_2},{rand < 0.5} \cr \end{aligned} \right. \end{aligned} \right. \tag{8}
⎩
⎨
⎧GX(t)=Xsilverback−(Xsilverback×Q−X(t)×Q)×AQ=2×r5−1A=β×EE={N1,rand≥0.5N2,rand<0.5(8)其中,
Q
Q
Q 是模拟大猩猩竞争强度,
r
5
r_5
r5 是介于
0
0
0 和
1
1
1 之间的随机数。
A
A
A 是用来模拟竞争程度的系数,
β
β
β 是进行优化操作前设定的参数。
E
E
E 用来模拟暴力对解决方案维度的影响。
r
a
n
d
rand
rand 是0到1之间的随机数,当
r
a
n
d
≥
0.5
rand≥0.5
rand≥0.5,
E
E
E 会等于正态分布和问题维度中的随机值;反之,
E
E
E 会等于正态分布中的随机数。
三、改进的大猩猩部队优化算法
3.1 收缩控制因子策略
银背大猩猩与成员之间的交流沟通是进行决策的一个重要环节,我们提出一种收缩控制因子融合策略来模拟这一环节。
U
U
U 模拟的是大猩猩现阶段所拥有的经验程度,当经验不足的时候,即当
U
>
1
U>1
U>1,我们引入了一种收缩因子
C
A
N
CAN
CAN,让大猩猩能够更多地向未知空间进行探索,对未知空间的探索又分为两种,如果
∣
C
A
N
∣
≥
0.5
|CAN|≥0.5
∣CAN∣≥0.5 时,将模拟大猩猩自己完全按照自己的认知对未知位置进行探索的行为,相反另一种则是大猩猩跟其他大猩猩进行经验交流后再对未知位置的探索。参数
C
A
N
CAN
CAN 便控制着大猩猩选择这两种策略,有效地扩大大猩猩对未知领域的探索,增大算法的搜索空间。当经验充分
(
U
≤
1
)
(U≤1)
(U≤1) 时,大猩猩仍要跟其他大猩猩进行交流从而保证经验的充分可靠稳定性,使得搜索的盲目性降低。具体的计算公式如下:
收缩因子:
C
A
N
=
e
1
−
t
M
a
x
I
t
×
c
o
s
(
t
2
+
π
4
)
(9)
CAN = {e^{1 - {t \over {MaxIt}}}} \times {{cos}}({t \over 2} + {\pi \over 4}) \tag{9}
CAN=e1−MaxItt×cos(2t+4π)(9)经验参数:
U
=
F
i
−
S
i
l
v
e
r
b
a
c
k
_
S
c
o
r
e
M
e
a
n
−
S
i
l
v
e
r
b
a
c
k
_
S
c
o
r
e
(10)
U = {{{F_i} - Silverback\_Score} \over {Mean - Silverback\_Score}} \tag{10}
U=Mean−Silverback_ScoreFi−Silverback_Score(10)其中,
F
i
Fi
Fi 代表的是第i只大猩猩的适应度值,
S
i
l
v
e
r
b
a
c
k
S
c
o
r
e
Silverback_Score
SilverbackScore 表示的是银背大猩猩的适应度值,即最优解的适应度值,
M
e
a
n
Mean
Mean 是指所有大猩猩的适应度值取均值。
当
U
>
1
U>1
U>1 时,
{
G
X
i
=
[
(
U
B
−
L
B
)
×
(
∣
C
A
N
∣
−
r
a
n
d
)
×
r
a
n
d
(
1
,
d
i
m
)
]
/
2
+
L
B
,
∣
C
A
N
∣
≥
0.5
G
X
i
=
(
X
i
−
X
r
1
)
×
D
,
∣
C
A
N
∣
<
0.5
(11)
\left\{ \begin{aligned} &G{X_{{i}}} = [(UB - LB) \times (|CAN| - rand) \times rand(1,dim)]/2 + LB\ \ ,|CAN| \ge 0.5 \cr &G{X_{{i}}} = ({X_i} - {X_{r1}}) \times D\ \qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad,|CAN| < 0.5 \cr \end{aligned}\right. \tag{11}
{GXi=[(UB−LB)×(∣CAN∣−rand)×rand(1,dim)]/2+LB ,∣CAN∣≥0.5GXi=(Xi−Xr1)×D ,∣CAN∣<0.5(11)
D
=
u
n
i
f
r
n
d
(
−
∣
C
A
N
∣
,
∣
C
A
N
∣
,
1
,
d
i
m
)
(12)
D = unifrnd( - |CAN|,|CAN|,1,dim) \tag{12}
D=unifrnd(−∣CAN∣,∣CAN∣,1,dim)(12)当
U
≤
1
U≤1
U≤1 时,
G
X
i
=
X
r
2
+
(
X
i
−
X
r
2
)
×
U
+
[
X
i
/
(
X
i
×
r
a
n
d
(
1
,
d
i
m
)
)
]
×
(
1
−
U
)
(13)
G{X_{{i}}} = {X_{r2}} + ({X_i} - {X_{r2}}) \times U + [{X_i}/({X_i} \times rand(1,dim))] \times (1 - U) \tag{13}
GXi=Xr2+(Xi−Xr2)×U+[Xi/(Xi×rand(1,dim))]×(1−U)(13)其中
r
a
n
d
rand
rand 是指
0
0
0 到
1
1
1 之间的随机数,
r
a
n
d
(
1
,
d
i
m
)
rand(1,dim)
rand(1,dim) 是指范围在
0
0
0 到
1
1
1 之间的维数为
d
i
m
dim
dim 的随机向量,
X
r
1
Xr1
Xr1 代表的是随机的一个大猩猩个体,
D
D
D 是生成在区间
[
−
∣
C
A
N
∣
,
−
∣
C
A
N
∣
]
[-|CAN|,-|CAN|]
[−∣CAN∣,−∣CAN∣] 内均匀分布的维数为
d
i
m
dim
dim 的随机向量。
3.2 基于贴近度的正余弦交互融合策略
我们根据与银背大猩猩关系密切程度将大猩猩群体进行划分,采用最小平均贴近度计算大猩猩群体中的大猩猩与银背大猩猩领导者之间的远近程度,并将计算得到的贴近度值进行反余弦归一化处理得到
G
a
m
m
a
Gamma
Gamma,当
G
a
m
m
a
Gamma
Gamma大于
0
0
0 时,表示当前的大猩猩与银背大猩猩之间的关系密切稳定,反之关系则较为冷淡。相应的更新计算公式如下:
G
a
m
m
a
Gamma
Gamma 的计算公式为:
{
x
=
2
×
s
u
m
(
min
(
X
i
,
S
i
l
v
e
r
b
a
c
k
)
)
y
=
s
u
m
(
X
i
+
S
i
l
v
e
r
b
a
c
k
)
C
=
x
/
y
G
a
m
m
a
=
a
t
a
n
(
C
)
×
2
/
π
(14)
\left\{ \begin{aligned} &{{x}} = 2 \times sum(\min ({X_i},Silverback)) \cr &{{y}} = sum({X_i} + Silverback) \cr &C = {{x}}/y \cr &G{{amma}} = atan(C) \times 2/\pi \cr \end{aligned} \right. \tag{14}
⎩
⎨
⎧x=2×sum(min(Xi,Silverback))y=sum(Xi+Silverback)C=x/yGamma=atan(C)×2/π(14) 当
G
a
m
m
a
>
0
Gamma>0
Gamma>0 时,此时个体位置较好,所以我们主要让其周围区域全面发展,找到比当前更好的解决方案。当大猩猩与银背大猩猩密切相关,考虑到银背大猩猩的决策是不可避免的错误,和银背大猩猩有一定程度的人性化,银背大猩猩应该做出决定符合集体的意愿,以确保决策的正确性。这里将最优个体解与随机生成的个体位置融合,保证随机性,进一步提高其探索能力,同时考虑种群总体解的位置,避免盲目搜索和开发。另外也认为个体和银背大猩猩应该充分沟通,增加自己的经验,使当前个体解决方案更加有效,将其移到最优个体解决方案的位置,从而探索当前个体解决方案的局部区域和最优个体解决方案的局部区域,提高当前解决方案的质量。因此,本文提出了一个正弦余弦相互作用方程。通过正弦余弦函数的不断变化,大猩猩个体和银背大猩猩可以在许多方面进行深入的沟通,获得更可靠的决策方案。标准正态分布随机数h调节了上述两种行为。更新公式为:
{
G
X
i
=
(
S
i
l
v
e
r
b
a
c
k
+
(
(
U
B
−
L
B
)
×
r
a
n
d
(
1
,
d
i
m
)
)
+
L
B
×
r
a
n
d
(
1
,
d
i
m
)
)
×
r
a
n
d
(
1
,
d
i
m
)
−
P
,
h
>
0.7
G
X
i
=
X
i
+
m
e
a
n
(
sin
(
3
×
t
+
π
4
)
×
X
i
+
∣
sin
(
3
×
t
+
π
3
)
∣
×
S
i
l
v
e
r
b
a
c
k
)
×
2
r
a
n
d
(
1
,
dim
)
,
h
≤
0.7
(15)
\left\{ \begin{aligned} &G{X_{{i}}} = (Silverback + ((UB - LB) \times rand(1,dim)) + LB \times rand(1,dim)) \times rand(1,dim) - P,h > 0.7 \cr &G{X_i} = {X_i} + {{mean}}(\sin (3 \times t + {\pi \over 4}) \times {X_i} + |\sin (3 \times t + {\pi \over 3})| \times Silverback) \times 2rand(1,\dim ),h \le 0.7 \cr \end{aligned} \right. \tag{15}
⎩
⎨
⎧GXi=(Silverback+((UB−LB)×rand(1,dim))+LB×rand(1,dim))×rand(1,dim)−P,h>0.7GXi=Xi+mean(sin(3×t+4π)×Xi+∣sin(3×t+3π)∣×Silverback)×2rand(1,dim),h≤0.7(15)
P
=
(
m
e
a
n
(
G
X
a
l
l
)
×
C
A
N
2
−
m
e
a
n
(
X
a
l
l
)
)
×
(
r
a
n
d
−
1
)
(16)
P = ({{mean}}(G{X_{all}}) \times CAN2 - {{mean}}({X_{all}})) \times (rand - 1) \tag{16}
P=(mean(GXall)×CAN2−mean(Xall))×(rand−1)(16)
C
A
N
2
=
3
e
−
t
/
200
×
∣
cos
(
1
4
(
t
−
3
π
)
)
∣
(17)
CAN2 = 3{{{e}}^{ - t/200}} \times |\cos ({1 \over 4}(t - {3 \over \pi }))| \tag{17}
CAN2=3e−t/200×∣cos(41(t−π3))∣(17)其中,
P
P
P 模拟的是大猩猩群体的决策意愿,
m
e
a
n
(
G
X
a
l
l
)
mean(GXall)
mean(GXall) 是指所有候选大猩猩位置的均值向量,
m
e
a
n
(
X
a
l
l
)
mean(Xall)
mean(Xall) 是大猩猩群体的位置均值向量,
r
a
n
d
rand
rand 是
0
0
0 到
1
1
1 之间的随机数。
当两者之间的关系变冷淡时
(
G
a
m
m
a
<
=
0
)
(Gamma<=0)
(Gamma<=0),银背大猩猩作为领导者,就要想要征服其他大猩猩。同时又考虑到两者之间也需要进行经验的交流,因此也通过正余弦函数的不断变化进行交流,从而提高解的质量。也就是说,考虑到当前位置的银背大猩猩可能陷入当地的最佳位置,为了使它跳出当地的缺陷,正弦和余弦函数是用来迁移银背大猩猩的位置和其他大猩猩的个体位置找到一个更好的全局解决方案。
C
A
N
3
CAN3
CAN3 调节这两种行为。具体的数学公式如下:
{
G
X
i
=
m
e
a
n
(
X
i
+
S
i
l
v
e
r
b
a
c
k
)
+
C
A
N
3
×
(
X
i
/
2
−
S
i
l
v
e
r
b
a
c
k
)
∣
C
A
N
3
∣
>
0.8
G
X
i
=
X
i
+
m
e
a
n
(
c
o
s
(
3
×
t
+
π
4
)
×
X
i
−
∣
cos
(
3
×
t
+
π
3
)
∣
×
S
i
l
v
e
r
b
a
c
k
)
×
2
r
a
n
d
(
1
,
d
i
m
)
,
∣
C
A
N
3
∣
≤
0.8
(18)
\left\{ \begin{aligned} &G{X_{{i}}} = {{mean}}({X_i} + Silverback) + CAN3 \times ({X_i}/2 - Silverback)|CAN3| > 0.8 \cr &G{X_i} = {X_i} + {{mean}}({{cos}}(3 \times t + {\pi \over 4}) \times {X_i} - |\cos (3 \times t + {\pi \over 3})| \times Silverback) \times 2rand(1,dim),{{|}}CAN3| \le 0.8 \cr \end{aligned} \right. \tag{18}
⎩
⎨
⎧GXi=mean(Xi+Silverback)+CAN3×(Xi/2−Silverback)∣CAN3∣>0.8GXi=Xi+mean(cos(3×t+4π)×Xi−∣cos(3×t+3π)∣×Silverback)×2rand(1,dim),∣CAN3∣≤0.8(18)
C
A
N
3
=
5
×
(
498
500
+
(
1
−
t
M
a
x
I
t
)
×
cos
(
1
3
(
t
+
π
4
)
)
−
1
)
(19)
CAN3 = 5 \times ({{498} \over {500}} + (1 - {t \over {MaxIt}}) \times \cos ({1 \over 3}(t + {\pi \over 4})) - 1) \tag{19}
CAN3=5×(500498+(1−MaxItt)×cos(31(t+4π))−1)(19)
3.3 大猩猩个体差异鉴别策略
大猩猩和银背大猩猩之间有一些差异。为了缩小当前解与最优解之间的差异,根据大猩猩种群的习惯受到启发。即大猩猩将继续向银器大猩猩学习,并提高自我水平,以缩小它们之间的差异。我们利用当前的大猩猩当前解与最优银背大猩猩最优解之间的差异,并根据差异的大小更新位置,具体更新公式如下:
{
G
X
i
,
j
=
(
S
i
l
v
e
r
b
a
c
k
j
×
r
5
−
X
i
,
j
×
b
j
×
D
1
)
−
D
1
3
×
d
1
,
X
i
,
j
/
S
i
l
v
e
r
b
a
c
k
j
≥
1
G
X
i
,
j
=
(
S
i
l
v
e
r
b
a
c
k
j
×
r
6
+
∣
X
i
,
j
∣
×
b
j
×
D
2
)
−
D
2
×
d
2
1
>
X
i
,
j
/
S
i
l
v
e
r
b
a
c
k
j
>
0
G
X
i
,
j
=
(
X
i
,
j
×
b
j
×
D
1
×
r
a
n
d
i
(
−
2
,
2
)
+
S
i
l
v
e
r
b
a
c
k
j
)
−
D
2
×
d
3
,
o
t
h
e
r
s
(20)
\left\{ \begin{aligned} &G{X_{{{i,j}}}} = (Silverbac{k_j} \times {{{r}}_5} - {X_{i,j}} \times {b_j} \times D1) - {{D1} \over 3} \times {d_1},{X_{i,j}}{{/}}Silverbac{k_j} \ge {{1}} \cr &G{X_{{{i,j}}}} = (Silverbac{k_j} \times {r_6} + {{|}}{X_{i,j}}{{|}} \times {b_j} \times D2) - D2 \times {d_2}1 > {X_{i,j}}/Silverbac{k_j} > 0 \cr &G{X_{i,j}} = ({X_{i,j}} \times {b_j} \times D1 \times randi( - 2,2) + Silverbac{k_j}) - D2 \times {d_3},{{o}}thers \cr \end{aligned} \right. \tag{20}
⎩
⎨
⎧GXi,j=(Silverbackj×r5−Xi,j×bj×D1)−3D1×d1,Xi,j/Silverbackj≥1GXi,j=(Silverbackj×r6+∣Xi,j∣×bj×D2)−D2×d21>Xi,j/Silverbackj>0GXi,j=(Xi,j×bj×D1×randi(−2,2)+Silverbackj)−D2×d3,others(20)
b
=
S
i
l
v
e
r
b
a
c
k
s
u
m
(
S
i
l
v
e
r
b
a
c
k
2
)
(21)
b = {{Silverback} \over {sum(Silverbac{k^2})}} \tag{21}
b=sum(Silverback2)Silverback(21)
D
1
=
m
a
x
(
∣
X
i
∣
−
S
i
l
v
e
r
b
a
c
k
)
(22)
D1 = {{max}}(|{X_i}| - Silverback) \tag{22}
D1=max(∣Xi∣−Silverback)(22)
D
2
=
m
i
n
(
∣
X
i
∣
−
S
i
l
v
e
r
b
a
c
k
)
(23)
D2 = {{min}}(|{X_i}| - Silverback) \tag{23}
D2=min(∣Xi∣−Silverback)(23)其中,
r
5
r5
r5、
r
6
r6
r6 都是
−
1
-1
−1 或
1
1
1 的随机值,
d
1
d1
d1、
d
2
d2
d2 和
d
3
d3
d3 都是在区间
[
−
2
,
2
]
[-2,2]
[−2,2] 内的产生的均匀分布的随机值。
D
1
D1
D1 和
D
2
D2
D2 分别是大猩猩个体的最大和最小差异因子,
b
b
b 为银背大猩猩对大猩猩个体的影响程度向量,
s
u
m
(
S
i
l
v
e
r
b
a
c
k
2
)
sum(Silverback2)
sum(Silverback2) 是指银背大猩猩的向量位置平方后再相加所得值。
进而分别计算候选大猩猩
G
X
GX
GX 和大猩猩个体
X
X
X 的适应度值进行比较,若
G
X
GX
GX 的适应度值小于
X
X
X 的适应度值则
G
X
GX
GX 的个体位置将替换
X
X
X 的个体位置,并更新银背大猩猩的位置。进而再通过正余弦函数变化增进两者之间的交流,从而提高相应的开发收敛能力,具体公式如下:
G
X
i
=
m
e
a
n
(
2
×
c
o
s
(
3
×
t
+
π
4
)
×
X
i
−
cos
(
3
×
t
+
π
2
)
×
S
i
l
v
e
r
b
a
c
k
)
×
r
a
n
d
×
o
n
e
s
(
1
,
dim
)
(24)
G{X_i} = {{mean}}(2 \times {{cos}}(3 \times t + {\pi \over 4}) \times {X_i} - \cos (3 \times t + {\pi \over 2}) \times Silverback) \times rand \times {{ones}}(1,\dim ) \tag{24}
GXi=mean(2×cos(3×t+4π)×Xi−cos(3×t+2π)×Silverback)×rand×ones(1,dim)(24)
3. 4 MGTO的算法伪代码
- 设置参数:种群的数量 N N N、最大的迭代次数 M a x I t MaxIt MaxIt、 β β β、 p p p、 w w w
- 随机初始化每个种群个体 X i ( i = 1 , 2 , . . . , N ) X_i(i=1,2,...,N) Xi(i=1,2,...,N)
- 计算每一个大猩猩个体的适应度值
- While t ≤ M a x I t t≤MaxIt t≤MaxIt do
- 更新计算 C C C、 L L L 的值
- For i = 1 i = 1 i=1 to N N N do
- 用公式(1)更新当前位置大猩猩
- End
- 计算大猩猩个体的适应度值,如果 G X GX GX 的适应度值比 X X X 的适应度值好,则进行替换,同时更新银背大猩猩的位置
- For i = 1 i = 1 i=1 to N N N do
- 用收缩控制因子策略更新个体位置
- End For
- 计算大猩猩个体的适应度值,如果 G X GX GX 的适应度值比 X X X 的适应度值好,则进行替换,同时更新银背大猩猩的位置
- For i = 1 i = 1 i=1 to N N N do
- If ∣ C ∣ ≥ w |C|≥w ∣C∣≥w then
- 使用公式(7)进行更新
- Else
- 使用公式(8)进行更新
- End If
- End For
- 计算大猩猩个体的适应度值,如果 G X GX GX 的适应度值比 X X X 的适应度值好,则进行替换,同时更新银背大猩猩的位置
- For i = 1 i = 1 i=1 to N N N do
- 用基于贴近度的正余弦交互融合策略进行大猩猩个体位置更新。
- End For
- 计算大猩猩个体的适应度值,如果 G X GX GX 的适应度值比 X X X 的适应度值好,则进行替换,同时更新银背大猩猩的位置
- For i = 1 i = 1 i=1 to N N N do
- For j = 1 j = 1 j=1 to J J J do( J J J 是 1 1 1 到问题维度之间的随机整数)
- 用公式(20)进行更新大猩猩个体位置
- End For
- End For
- 计算大猩猩个体的适应度值,如果 G X GX GX 的适应度值比 X X X 的适应度值好,则进行替换,同时更新银背大猩猩的位置
- For i = 1 i = 1 i=1 to N N N do
- 用公式(24)进行大猩猩个体位置更新
- End For
- 计算大猩猩个体的适应度值,如果 G X GX GX 的适应度值比 X X X 的适应度值好,则进行替换,同时更新银背大猩猩的位置
- t = t + 1 t=t+1 t=t+1
- End While
- 返回最优适应度值和最优的大猩猩个体。
四、实验结果
MGTO和GTO在23个经典测试函数(设置维度 d i m = 30 dim=30 dim=30)的F5、F6、F7中的收敛曲线,测试函数公式如下:
函数 | 公式 | 理论值 |
---|---|---|
F5 | F 5 ( x ) = ∑ i = 1 d − 1 [ 100 ( x i + 1 − x i 2 ) 2 + ( x i − 1 ) 2 ] {F_5}(x) = \sum\nolimits_{i = 1}^{d - 1} {[100{{({x_{i + 1}} - x_i^2)}^2} + {{({x_i} - 1)}^2}]} F5(x)=∑i=1d−1[100(xi+1−xi2)2+(xi−1)2] | 0.00 0.00 0.00 |
F6 | F 6 ( x ) = ∑ i = 1 d ( x i + 5 ) 2 {F_6}(x) = {\sum\nolimits_{i = 1}^d {({x_i} + 5)} ^2} F6(x)=∑i=1d(xi+5)2 | 0.00 0.00 0.00 |
F7 | F 7 ( x ) = ∑ i = 1 d i × x i 4 + r a n d o m [ 0 , 1 ) {F_7}(x) = \sum\nolimits_{i = 1}^d {i \times x_i^4 + random[0,1)} F7(x)=∑i=1di×xi4+random[0,1) | 0.00 0.00 0.00 |