一、理论基础
1、蝗虫优化算法
请参考这里。
2、正弦余弦算法
请参考这里。
3、SC-MGOA算法
(1)融入正弦余弦算法
本文的两种位置更新方式通过转换概率控制。当转换概率设置为一个常数时,并不利于平衡算法的全局搜索和局部开发,因此本文将转换概率设置为一个随着迭代自适应调整的函数,有利于算法通过动态控制转换概率的大小,进一步调控全局搜索和局部开发的平衡,转换概率的定义如下: P v = e x p ( μ × ( t T m a x ) 3 ) (1) P_v=exp\left(\mu×\left(\frac{t}{T_{max}}\right)^3\right)\tag{1} Pv=exp(μ×(Tmaxt)3)(1)其中, t t t是当前迭代次数, T m a x T_{max} Tmax是最大迭代次数, μ \mu μ为转换因子,取值为 μ = 0.01 \mu=0.01 μ=0.01。因为算法应在迭代前期尽可能的进行全局搜索,在后期进行局部开发,所以在转换的概率的控制下,当 rand < P v \text{rand}<P_v rand<Pv时,算法根据正弦余弦机制更新位置,否则,按照GOA原本的方式更新位置。
(2)对正弦余弦算法进行改进
对融进GOA算法的SCA部分的参数
R
1
R_1
R1的收敛方式进行改进,改进后的表达式如下:
R
1
=
a
×
t
T
m
a
x
c
o
s
(
π
t
)
3
(2)
R_1=a×\frac{t}{T_{max}}cos(\pi t)^3\tag{2}
R1=a×Tmaxtcos(πt)3(2)式中引入了余弦函数,利用余弦函数的数学特点,让
R
1
R_1
R1在一定范围内来回震荡,使算法的全局探索和局部开发得到进一步的平衡。
其次,为了在位置更新处充分利用个体位置信息,使个体位置对新位置的影响权重随迭代发生变化,引入动态权重系数,权重系数
β
\beta
β的表达式如下:
β
=
e
x
p
(
1
−
t
T
m
a
x
)
−
b
t
(3)
\beta=exp(1-\frac{t}{T_{max}})^{-bt}\tag{3}
β=exp(1−Tmaxt)−bt(3)其中,
b
b
b为服从指数分布的优化因子,即
b
∼
E
(
λ
)
b\sim E(\lambda)
b∼E(λ),本文中
λ
\lambda
λ取值为种群数
N
N
N。在算法迭代前期,
β
\beta
β较大且下降缓慢,即个体位置对算法有较大的影响力,以充分进行全局探索,在算法后期,
β
\beta
β急速减小以减少个体位置的影响力,让算法进行充分的局部开发。改进后的正弦余弦机制更新方式如下:
X
i
d
(
t
+
1
)
=
{
β
×
X
i
d
(
t
)
+
R
1
×
sin
(
R
2
)
×
∣
R
3
P
b
e
s
t
d
(
t
)
−
X
i
d
(
t
)
∣
,
R
4
<
0.5
β
×
X
i
d
(
t
)
+
R
1
×
cos
(
R
2
)
×
∣
R
3
P
b
e
s
t
d
(
t
)
−
X
i
d
(
t
)
∣
,
R
4
≥
0.5
(4)
X_i^d(t+1)=\begin{dcases}\beta×X_i^d(t)+R_1×\sin(R_2)×|R_3P_{best}^d(t)-X_i^d(t)|,R_4<0.5\\\beta×X_i^d(t)+R_1×\cos(R_2)×|R_3P_{best}^d(t)-X_i^d(t)|,R_4≥0.5\end{dcases}\tag{4}
Xid(t+1)={β×Xid(t)+R1×sin(R2)×∣R3Pbestd(t)−Xid(t)∣,R4<0.5β×Xid(t)+R1×cos(R2)×∣R3Pbestd(t)−Xid(t)∣,R4≥0.5(4)
(3)目标位置的变异选择
本文对目标位置进行变异更新,使算法具有跳出局部最优的概率,提升算法的收敛精度和收敛速度。本文在GOA算 法的目标位置更新后,以一定概率对目标位置进行变异,提高每次迭代后蝗虫解的质量,使算法能够避免陷入局部最优。其中变异概率
P
m
P_m
Pm定义如下:
P
m
=
f
i
t
n
e
s
s
−
l
g
(
t
T
m
a
x
)
3
(5)
P_m=fitness-lg(\frac{t}{T_{max}})^3\tag{5}
Pm=fitness−lg(Tmaxt)3(5)其中,
f
i
t
n
e
s
s
fitness
fitness是目标位置的适应度值,式(5)充分利用了每一代的目标值,随着算法的迭代,
P
m
P_m
Pm与目标值以及迭代次数紧密结合,动态调整变异概率的大小。当
rand
<
P
m
\text{rand}<P_m
rand<Pm时,对目标位置进行变异操作,生成新解:
X
n
e
w
d
=
b
e
s
t
d
+
r
⋅
X
i
j
(6)
X_{new}^d=best^d+r\cdot X_i^j\tag{6}
Xnewd=bestd+r⋅Xij(6)其中,
X
n
e
w
d
X_{new}^d
Xnewd是第
d
d
d维通过变异操作产生的新解,
b
e
s
t
d
best^d
bestd是第
d
d
d维的目标位置,
r
r
r是服从
(
0
,
1
)
(0,1)
(0,1)均匀分布的随机数,
X
i
j
X_i^j
Xij是随机选择的第
i
i
i只蝗虫在第
j
j
j维的位置。
对目标位置进行变异操作虽然能让算法跳出局部最优,但是不能保证新位置优于原目标位置,所以本文在变异操作后面加入了贪婪原则,通过比较适应度之后再决定是否更新目标位置:
b
e
s
t
d
=
{
X
n
e
w
d
,
f
(
X
n
e
w
d
)
<
f
(
b
e
s
t
d
)
b
e
s
t
d
,
f
(
X
n
e
w
d
)
>
f
(
b
e
s
t
d
)
(7)
best^d=\begin{dcases}X_{new}^d,f(X_{new}^d)<f(best^d)\\best^d,f(X_{new}^d)>f(best^d)\end{dcases}\tag{7}
bestd={Xnewd,f(Xnewd)<f(bestd)bestd,f(Xnewd)>f(bestd)(7)利用贪婪选择策略使算法在迭代过程中能够充分利用目标位置信息,提升算法收敛速度和精度,促进算法的寻优性能。
二、仿真实验与分析
设置种群规模
N
=
30
N=30
N=30,最大迭代次数
T
m
a
x
=
500
T_{max}=500
Tmax=500,空间维度
d
i
m
=
30
dim=30
dim=30,独立运算30次。以F1、F2、F3为例。
下图给出了SC-MGOA算法和SSA算法、ALO算法和SCA算法的收敛曲线对比图。
最大值、最小值、平均值及标准差显示如下:
函数:F1
SSA:最大值: 3.0467e-06,最小值:3.7203e-08,平均值:3.427e-07,标准差:6.0464e-07
ALO:最大值: 0.0060042,最小值:0.00011538,平均值:0.0015261,标准差:0.0014649
SCA:最大值: 67.712,最小值:0.029329,平均值:9.904,标准差:17.0281
SC_MGOA:最大值: 0,最小值:0,平均值:0,标准差:0
函数:F2
SSA:最大值: 5.4712,最小值:0.062379,平均值:2.1749,标准差:1.5069
ALO:最大值: 128.4936,最小值:2.0334,平均值:51.5495,标准差:48.173
SCA:最大值: 0.53317,最小值:0.00022484,平均值:0.045961,标准差:0.10527
SC_MGOA:最大值: 0,最小值:0,平均值:0,标准差:0
函数:F3
SSA:最大值: 4862.9184,最小值:389.8293,平均值:1580.0408,标准差:1045.8012
ALO:最大值: 9800.2649,最小值:1973.1802,平均值:4682.1538,标准差:2100.9291
SCA:最大值: 27243.3394,最小值:1285.1373,平均值:8935.6313,标准差:7164.3277
SC_MGOA:最大值: 0,最小值:0,平均值:0,标准差:0
结果证明了SC-MGOA算法相对于其他比较算法在寻优精度、寻优速度和鲁棒性等方面 的优越性。
三、参考文献
[1] 林杰, 何庆. 融合正弦余弦和变异选择的蝗虫优化算法[J]. 小型微型计算机系统, 2021, 42(4): 706-713.