文章目录
一、理论基础
1、原始麻雀算法(SSA)
请参考这里。
2、改进麻雀算法(ACLSSA)
(1)Circle映射对麻雀种群进行初始化
请参考这里。
将随机方式和Circle映射归一化处理,在
[
0
,
1
]
[0,1]
[0,1]区间内生成粒子如图1所示。从图1可以看出(b)中利用Circle映射粒子分布比(a)中随机分布更加均匀,避免出现在最优解附近麻雀种群较少的情况。
(2)基于余弦变化的自适应学习策略
为了更好的平衡局部开发和全局搜索之间的关系,本文引入基于余弦变化的惯性权重因子来更新麻雀的位置,表达式为:
ω
(
t
)
=
(
ω
min
+
ω
max
)
/
2
+
(
ω
max
−
ω
min
)
⋅
cos
(
π
⋅
t
T
)
/
2
(1)
\omega(t)=(\omega_{\min}+\omega_{\max})/2+(\omega_{\max}-\omega_{\min})\cdot\cos(\pi\cdot\frac{t}{T})/2\tag{1}
ω(t)=(ωmin+ωmax)/2+(ωmax−ωmin)⋅cos(π⋅Tt)/2(1)其中,
ω
max
\omega_{\max}
ωmax为初始时惯性权重;
ω
min
\omega_{\min}
ωmin为结束时的惯性权重;
t
t
t和
T
T
T分别为当前和最大迭代次数。
对发现者和加入者引入惯性因子自学习策略:
X
i
,
j
t
+
1
=
{
X
i
,
j
t
⋅
exp
(
−
i
∂
⋅
C
i
t
e
r
max
)
R
2
<
S
T
ω
⋅
X
i
,
j
t
+
C
Q
L
R
2
≥
S
T
(2)
X_{i,j}^{t+1}=\begin{dcases}X_{i,j}^t\cdot\exp\left(-\frac{i}{\partial\cdot C_{iter}^{\max}}\right)\quad R_2<ST\\\omega\cdot X_{i,j}^t+C_Q\boldsymbol L\quad\quad\quad\quad\quad R_2≥ST\end{dcases}\tag{2}
Xi,jt+1=⎩⎨⎧Xi,jt⋅exp(−∂⋅Citermaxi)R2<STω⋅Xi,jt+CQLR2≥ST(2)
X
i
,
j
t
+
1
=
{
C
Q
⋅
exp
(
X
worst
−
X
i
,
j
t
i
2
)
i
>
n
/
2
ω
X
p
t
+
1
+
∣
X
i
,
j
t
−
X
p
t
+
1
∣
A
T
(
A
A
T
)
L
i
≤
n
/
2
(3)
X_{i,j}^{t+1}=\begin{dcases}C_Q\cdot\exp\left(\frac{X_{\text{worst}}-X_{i,j}^t}{i^2}\right)\quad\quad\quad\quad\,\,\,\, i>n/2\\\omega X_p^{t+1}+|X_{i,j}^{t}-X_p^{t+1}|\boldsymbol A^T(\boldsymbol {AA}^T)\boldsymbol L\quad i≤n/2\end{dcases}\tag{3}
Xi,jt+1=⎩⎨⎧CQ⋅exp(i2Xworst−Xi,jt)i>n/2ωXpt+1+∣Xi,jt−Xpt+1∣AT(AAT)Li≤n/2(3)其中,
C
i
t
e
r
max
C_{iter}^{\max}
Citermax为常数,表示最大迭代次数;
R
2
R_2
R2为预警值;
S
T
ST
ST为安全值;
C
Q
C_Q
CQ为服从正态分布的随机数;
L
\boldsymbol L
L为
1
×
d
1×d
1×d矩阵,且元素全为1;
A
\boldsymbol A
A为
1
×
d
1×d
1×d矩阵,其中元素随机赋值1或-1。
(3)Levy飞行改进
通过Levy飞行路径对发现者位置更新公式再次改进,表达式如下: X i , j t + 1 = { X i , j t ⋅ exp ( − i ∂ ⋅ C i t e r max ) R 2 < S T ω ⋅ X i , j t + L e v y ( d ) ⊕ ( X i , j t − X best t ) R 2 ≥ S T (4) X_{i,j}^{t+1}=\begin{dcases}X_{i,j}^t\cdot\exp\left(-\frac{i}{\partial\cdot C_{iter}^{\max}}\right)\quad\quad\quad\quad\quad\,\,\, R_2<ST\\\omega\cdot X_{i,j}^t+Levy(d)\oplus (X_{i,j}^t-X_{\text{best}}^t)\quad R_2≥ST\end{dcases}\tag{4} Xi,jt+1=⎩⎨⎧Xi,jt⋅exp(−∂⋅Citermaxi)R2<STω⋅Xi,jt+Levy(d)⊕(Xi,jt−Xbestt)R2≥ST(4)
(4)对最优麻雀进行逐维交叉变异
在最优麻雀处实行逐维交叉变异,变异方式如下:
X
best
evo
=
{
X
best
ori
+
X
r
1
−
X
r
2
2
+
X
r
3
−
X
r
4
2
r
a
n
d
≥
0.5
X
best
ori
r
a
n
d
<
0.5
(5)
X_{\text{best}}^{\text{evo}}=\begin{dcases}X_{\text{best}}^{\text{ori}}+\frac{X_{r_1}-X_{r_2}}{2}+\frac{X_{r_3}-X_{r_4}}{2}\quad rand≥0.5\\X_{\text{best}}^{\text{ori}}\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\,\,\,\, rand<0.5\end{dcases}\tag{5}
Xbestevo=⎩⎨⎧Xbestori+2Xr1−Xr2+2Xr3−Xr4rand≥0.5Xbestorirand<0.5(5)其中,
X
best
evo
X_{\text{best}}^{\text{evo}}
Xbestevo和
X
best
ori
X_{\text{best}}^{\text{ori}}
Xbestori分别为变异后和原始最优麻雀;
X
r
1
X_{r_1}
Xr1、
X
r
2
X_{r_2}
Xr2、
X
r
3
X_{r_3}
Xr3和
X
r
4
X_{r_4}
Xr4均为
[
l
b
,
u
b
]
[lb,ub]
[lb,ub]区间内随机值。变异后如果结果更好则替换最优麻雀,否则保留原始最优麻雀。
改进麻雀算法流程见图2。
二、仿真实验与结果分析
以Sphere、Schwefel’s 2.22、Schwefel’s 1.2、Rosenbrock’s、Rastrigin、Ackley、Griewank为例,自变量取值范围分别为
[
−
100
,
100
]
[-100,100]
[−100,100]、
[
−
10
,
10
]
[-10,10]
[−10,10]、
[
−
100
,
100
]
[-100,100]
[−100,100]、
[
−
100
,
100
]
[-100,100]
[−100,100]、
[
−
5.12
,
5.12
]
[-5.12,5.12]
[−5.12,5.12]、
[
−
32
,
32
]
[-32,32]
[−32,32]、
[
−
600
,
600
]
[-600,600]
[−600,600],维度均为30维,分别命名为F1~F7。比较ACLSSA(本文改进麻雀算法)与3种基本算法SSA、GWO和MFO,种群规模为30,最大迭代次数为500,每个算法独立运行30次。
结果显示如下:
函数:F1
GWO:最优值: 8.6927e-30,最差值:8.0974e-27,平均值:9.538e-28,标准差:1.5669e-27
MFO:最优值: 0.32661,最差值:20001.8149,平均值:2014.1977,标准差:4837.5395
SSA:最优值: 0,最差值:7.7283e-75,平均值:2.5765e-76,标准差:1.411e-75
ACLSSA:最优值: 0,最差值:0,平均值:0,标准差:0
函数:F2
GWO:最优值: 1.1392e-17,最差值:2.1189e-16,平均值:8.4799e-17,标准差:5.5989e-17
MFO:最优值: 0.75428,最差值:80.0063,平均值:32.1467,标准差:17.4051
SSA:最优值: 0,最差值:3.1761e-35,平均值:1.1048e-36,标准差:5.7925e-36
ACLSSA:最优值: 0,最差值:0,平均值:0,标准差:0
函数:F3
GWO:最优值: 1.3822e-08,最差值:4.6416e-05,平均值:5.497e-06,标准差:1.0786e-05
MFO:最优值: 9271.5407,最差值:43793.6115,平均值:22587.8834,标准差:9746.1805
SSA:最优值: 0,最差值:5.1279e-55,平均值:1.7106e-56,标准差:9.362e-56
ACLSSA:最优值: 0,最差值:0,平均值:0,标准差:0
函数:F4
GWO:最优值: 26.0306,最差值:28.5653,平均值:27.1899,标准差:0.60176
MFO:最优值: 2381.7061,最差值:2478403.8834,平均值:256351.704,标准差:545579.6209
SSA:最优值: 2.4415e-09,最差值:0.0010219,平均值:0.0001532,标准差:0.00024191
ACLSSA:最优值: 1.6713e-07,最差值:0.002004,平均值:0.00030304,标准差:0.00049097
函数:F5
GWO:最优值: 0,最差值:12.8933,平均值:2.5737,标准差:3.5155
MFO:最优值: 49.8051,最差值:231.9736,平均值:152.7144,标准差:43.2597
SSA:最优值: 0,最差值:0,平均值:0,标准差:0
ACLSSA:最优值: 0,最差值:0,平均值:0,标准差:0
函数:F6
GWO:最优值: 7.1942e-14,最差值:1.4655e-13,平均值:1.0948e-13,标准差:1.7017e-14
MFO:最优值: 1.4072,最差值:19.9615,平均值:14.3764,标准差:7.1435
SSA:最优值: 8.8818e-16,最差值:8.8818e-16,平均值:8.8818e-16,标准差:0
ACLSSA:最优值: 8.8818e-16,最差值:8.8818e-16,平均值:8.8818e-16,标准差:0
函数:F7
GWO:最优值: 0,最差值:0.03643,平均值:0.0070352,标准差:0.010732
MFO:最优值: 0.54153,最差值:91.0252,平均值:6.9758,标准差:22.8265
SSA:最优值: 0,最差值:0,平均值:0,标准差:0
ACLSSA:最优值: 0,最差值:0,平均值:0,标准差:0
结果表明,ACLSSA与其余3种算法相比,收敛速度更快,并且精度更高,从而全局寻优能力得到较大提升。
三、参考文献
[1] 刘翕铭, 于永进, 杨洋. 基于改进麻雀算法的园区综合能源系统优化研究[J]. 智慧电力, 2021, 49(6): 9-16.