大猩猩部队优化算法(Gorilla Troops Optimizer,GTO)
一、算法灵感
大猩猩部队优化算法(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)其中, 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 的值的变化会较大,在后期变化值的变化会逐渐减少,其用公式(2)计算。 L L L 是用来模拟银背大猩猩的领导才能,其用公式(4)计算。银背大猩猩会由于经验的不足而导致寻找食物或者管理群体的决策错误。 Z Z Z 是区间 [ − C , C ] [-C,C] [−C,C] 内的一个随机数,其用公式(6)计算。
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)其中, r 4 r_4 r4 是在 [ − 1 , 1 ] [-1,1] [−1,1] 之间的一个随机数
L = C × l (4) L = C \times l \tag{4} L=C×l(4)其中, l l l 是 0 0 0 到 1 1 1 之间的随机数
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 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 会等于正态分布中的随机数。
2. 4 算法伪代码
- 设置参数:种群的数量 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
- If ∣ C ∣ ≥ w |C|≥w ∣C∣≥w then
- 使用公式(7)进行更新
- Else
- 使用公式(8)进行更新
- End If
- End For
- 计算大猩猩个体的适应度值,如果 G X GX GX 的适应度值比 X X X 的适应度值好,则进行替换,同时更新银背大猩猩的位置(最好个体位置)。
- t = t + 1 t=t+1 t=t+1
- End While
- 返回最优适应度值和最优的大猩猩个体。
三、实验结果
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 |
3. 1 F5收敛曲线
3. 2 F6收敛曲线
3. 3 F7收敛曲线
四、改进大猩猩部队优化算法
点这里:改进的大猩猩部队优化算法(Modified Gorilla Troops Optimizer,MGTO)