一、理论基础
1、随机分形搜索算法
随机分形算法(Stochastic Fractal Search, SFS)是一个启发于自然界物质分形增长的形状特点。随机分形算法将分形增长的扩散特性引入到算法粒子的搜索过程,增加算法探索和开发优化问题空间能力。相比一些经典的算法,如粒子群算法、蚁群算法和遗传算法等,该方法在约束和无约束优化问题上,以及单峰和多峰问题上,都表现较高优势,其中包括收敛速度以及解的质量。
SFS算法中的两个主要过程是:扩散过程和更新过程。在第一个过程中,与分形搜索类似,每个粒子围绕其当前位置扩散,以满足强化(开发)特性。这个过程增加了找到全局极小值的机会,也防止了陷入局部极小值。 在后一个过程中,该算法模拟组中的一个点如何根据组中其他点的位置更新其位置。这意味着扩散过程中产生的最佳粒子是唯一被考虑的粒子,其余的粒子被丢弃。除了有效探索问题空间外,SFS还使用一些随机方法作为更新过程。换句话说,SFS中的更新过程导致我们在元启发式算法中具有多样化(探索)特性。
在随机分形搜索算法中,用莱维飞行来量化增长性质,即:
L
(
x
)
=
1
π
∫
0
∞
exp
(
−
α
q
β
)
cos
(
q
x
)
d
x
(1)
L(x)=\frac1\pi \int_0^\infty {\exp\left(-\alpha q^\beta\right)\cos(qx)} \,{\rm d}x\tag{1}
L(x)=π1∫0∞exp(−αqβ)cos(qx)dx(1)其中,
β
\beta
β是分布指数,
α
\alpha
α是分布规模因子。将这种量化方式引入到算法粒子移动过程中,得到以下粒子进化公式:
G
W
1
=
G
a
u
s
s
i
a
n
(
μ
B
P
,
G
)
+
(
ε
×
B
P
−
ε
′
×
P
i
)
(2)
GW_1=Gaussian(\mu_{BP},G)+(\varepsilon\times BP-\varepsilon'\times P_i)\tag{2}
GW1=Gaussian(μBP,G)+(ε×BP−ε′×Pi)(2)
G
W
2
=
G
a
u
s
s
i
a
n
(
μ
P
,
G
)
(3)
GW_2=Gaussian(\mu_{P},G)\tag{3}
GW2=Gaussian(μP,G)(3)其中,
ε
\varepsilon
ε和
ε
′
\varepsilon'
ε′服从均均分布,且分布的区间为
[
0
,
1
]
[0,1]
[0,1]。对于一维问题,
G
a
u
s
s
i
a
n
(
a
,
b
)
Gaussian(a,b)
Gaussian(a,b)表示均值为
a
a
a、标准差为
b
b
b的正态分布函数。对于多维问题,
a
a
a和
b
b
b以及
G
a
u
s
s
i
a
n
(
a
,
b
)
Gaussian(a,b)
Gaussian(a,b)的输出均为矢量。
B
P
BP
BP和
P
P
P分别表示当前适应度值最好的粒子和第
i
i
i个粒子。在式(2)中,
μ
B
P
=
B
P
\mu_{BP}=BP
μBP=BP;在式(3)中,
μ
P
=
P
i
\mu_P=P_i
μP=Pi。
σ
\sigma
σ的取值是以迭代信息进行确定,其表达式如下:
σ
=
∣
ln
(
g
)
g
×
(
P
i
−
B
P
)
∣
(4)
\sigma=\left|\frac{\ln(g)}{g}\times(P_i-BP)\right|\tag{4}
σ=∣∣∣∣gln(g)×(Pi−BP)∣∣∣∣(4)其中,
g
g
g是当前的迭代代数;
ln
(
g
)
g
\frac{\ln(g)}{g}
gln(g)是用来实现随着迭代次数的增加,降低正态分布模拟的波动幅度。
对于一个维度为
D
D
D的全局优化问题。在初始化过程中,通过指定最小和最大边界,根据问题约束随机初始化每个点。第
j
j
j个点
P
j
P_j
Pj的初始化方程如下所示:
P
j
=
L
B
+
ε
×
(
U
B
−
L
B
)
(5)
P_j=LB+\varepsilon\times(UB-LB)\tag{5}
Pj=LB+ε×(UB−LB)(5)其中
L
B
LB
LB和
U
B
UB
UB分别是上下问题约束向量。如前式所述,
ε
\varepsilon
ε是一个均匀分布的随机数,限制在
[
0
,
1
]
[0,1]
[0,1]连续区间内。初始化所有点后,计算每个点的适应度函数,以获得所有点中的最佳点(
B
P
BP
BP)。根据扩散过程中的开发性质,所有点都围绕其当前位置扰动,以开发问题搜索空间。另一方面,由于空间探索的性质,考虑了两种旨在增加更好空间探索的统计方法,其中,第一个统计方法对每个向量索引执行,第二个统计方法应用于所有点。
对于第一个统计过程:首先,所有的点都是基于适应度函数值进行排序的。然后赋予种群中的每个点
i
i
i一个概率值,该概率值服从简单的均匀分布,如下式所示:
P
a
i
=
r
a
n
k
(
P
i
)
N
(6)
Pa_i=\frac{rank(P_i)}{N}\tag{6}
Pai=Nrank(Pi)(6)其中,
r
a
n
k
(
P
i
)
rank(P_i)
rank(Pi)是点
P
i
P_i
Pi的秩,
N
N
N是组中所有点的数目。式(6)想要说明,点越好,概率越高。该方程用于增加改变未获得良好解的点位置的机会。另一方面,在下一代中通过好的解决方案的机会将增加。对于组中的每个点
P
i
P_i
Pi,根据
P
a
i
<
ε
Pa_i<\varepsilon
Pai<ε的条件是否满足,
P
i
P_i
Pi的第
j
j
j个分量根据式(7)进行更新,否则保持不变。
P
i
′
(
j
)
=
P
r
(
j
)
−
ε
×
(
P
t
(
j
)
−
P
i
(
j
)
)
(7)
P_i'(j)=P_r(j)-\varepsilon\times(P_t(j)-P_i(j))\tag{7}
Pi′(j)=Pr(j)−ε×(Pt(j)−Pi(j))(7)其中,
P
i
′
P_i'
Pi′是
P
i
P_i
Pi更新后的位置,
P
r
P_r
Pr和
P
t
P_t
Pt是组中的随机选择点,
ε
\varepsilon
ε是从连续区间
[
0
,
1
]
[0,1]
[0,1]中选择的随机数。
第二个统计更改的目的是考虑到组中其他点的位置来更改点的位置。这种特性提高了探索质量,满足了多样化属性。在开始第二个过程之前,再次根据式(6)对从第一个统计过程获得的所有点进行排名。与第一个统计过程类似,如果新点
P
i
′
P_i'
Pi′满足条件
P
a
i
<
ε
Pa_i<\varepsilon
Pai<ε,则
P
i
′
P_i'
Pi′将根据式(8)和(9)进行更新,否则不会更新。式(8)和(9)如下所示:
P
i
′
′
=
P
i
′
−
ε
^
×
(
P
t
′
−
B
P
)
,
ε
′
≤
0.5
(8)
P_i''=P_i'-\hat{\varepsilon}\times(P_t'-BP),\quad\varepsilon'\leq0.5\tag{8}
Pi′′=Pi′−ε^×(Pt′−BP),ε′≤0.5(8)
P
i
′
′
=
P
i
′
+
ε
^
×
(
P
t
′
−
P
r
′
)
,
ε
′
>
0.5
(9)
P_i''=P_i'+\hat{\varepsilon}\times(P_t'-P_r'),\quad\,\,\,\,\varepsilon'>0.5\tag{9}
Pi′′=Pi′+ε^×(Pt′−Pr′),ε′>0.5(9)其中,
P
r
′
P_r'
Pr′和
P
t
′
P_t'
Pt′是从第一个过程中获得的随机选择点,
ε
^
\hat\varepsilon
ε^是由高斯正态分布生成的随机数。如果新的点
P
i
′
′
P_i''
Pi′′的适应度函数值优于
P
i
′
P_i'
Pi′,则将其替换为
P
i
′
P_i'
Pi′。
2、SFS算法流程图
SFS算法流程图如下图所示。
二、仿真实验与分析
将SFS与SSA、WOA、MFO、GSA和GWO进行对比,以文献[1]中表1的F1、F2(单峰函数)、F9、F10(多峰函数)、F18、F19(固定维度多峰函数)为例,实验设置种群规模为30,最大迭代次数为500,每种算法独立运算30次,结果显示如下:
函数:F1
SSA:最差值: 2.4144e-06, 最优值: 1.9698e-08, 平均值: 2.4134e-07, 标准差: 4.7728e-07, 秩和检验: 1.2118e-12
WOA:最差值: 2.3124e-71, 最优值: 5.0054e-85, 平均值: 7.7469e-73, 标准差: 4.2212e-72, 秩和检验: 1.2118e-12
MFO:最差值: 10002.0878, 最优值: 0.80373, 平均值: 1341.3292, 标准差: 3454.9569, 秩和检验: 1.2118e-12
GSA:最差值: 1.9019e-15, 最优值: 8.9893e-17, 平均值: 2.9826e-16, 标准差: 3.3643e-16, 秩和检验: 1.2118e-12
GWO:最差值: 1.1618e-26, 最优值: 3.2161e-29, 平均值: 1.5909e-27, 标准差: 2.2528e-27, 秩和检验: 1.2118e-12
SFS:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
函数:F2
SSA:最差值: 4.852, 最优值: 0.21838, 平均值: 1.8072, 标准差: 1.2879, 秩和检验: 3.0199e-11
WOA:最差值: 4.5905e-49, 最优值: 8.6553e-59, 平均值: 1.7595e-50, 标准差: 8.3693e-50, 秩和检验: 3.0199e-11
MFO:最差值: 80.0042, 最优值: 10.0614, 平均值: 33.2714, 标准差: 18.5708, 秩和检验: 3.0199e-11
GSA:最差值: 3.6733, 最优值: 3.528e-08, 平均值: 0.67238, 标准差: 1.1019, 秩和检验: 3.0199e-11
GWO:最差值: 5.1861e-16, 最优值: 2.1785e-17, 平均值: 8.9919e-17, 标准差: 9.0297e-17, 秩和检验: 3.0199e-11
SFS:最差值: 1.7081e-296, 最优值: 5.5566e-314, 平均值: 6.4655e-298, 标准差: 0, 秩和检验: 1
函数:F9
SSA:最差值: 106.4603, 最优值: 22.884, 平均值: 53.8272, 标准差: 21.5944, 秩和检验: 1.2118e-12
WOA:最差值: 1.1369e-13, 最优值: 0, 平均值: 5.6843e-15, 标准差: 2.2884e-14, 秩和检验: 0.1608
MFO:最差值: 249.094, 最优值: 107.564, 平均值: 170.0057, 标准差: 35.9297, 秩和检验: 1.2118e-12
GSA:最差值: 80.5911, 最优值: 16.9143, 平均值: 38.4385, 标准差: 13.5555, 秩和检验: 1.2118e-12
GWO:最差值: 12.3413, 最优值: 5.6843e-14, 平均值: 2.0182, 标准差: 3.4212, 秩和检验: 1.1651e-12
SFS:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
函数:F10
SSA:最差值: 3.7857, 最优值: 1.3404, 平均值: 2.4908, 标准差: 0.57477, 秩和检验: 1.2118e-12
WOA:最差值: 7.9936e-15, 最优值: 8.8818e-16, 平均值: 4.7962e-15, 标准差: 2.158e-15, 秩和检验: 8.0416e-11
MFO:最差值: 19.9665, 最优值: 1.5264, 平均值: 15.7493, 标准差: 6.1152, 秩和检验: 1.2118e-12
GSA:最差值: 0.9313, 最优值: 8.8197e-09, 平均值: 0.09313, 标准差: 0.28417, 秩和检验: 1.2108e-12
GWO:最差值: 1.5721e-13, 最优值: 7.9048e-14, 平均值: 1.0605e-13, 标准差: 1.8226e-14, 秩和检验: 1.1275e-12
SFS:最差值: 8.8818e-16, 最优值: 8.8818e-16, 平均值: 8.8818e-16, 标准差: 0, 秩和检验: NaN
函数:F18
SSA:最差值: 3, 最优值: 3, 平均值: 3, 标准差: 2.7057e-13, 秩和检验: 9.3482e-12
WOA:最差值: 3.0004, 最优值: 3, 平均值: 3, 标准差: 7.0791e-05, 秩和检验: 9.3482e-12
MFO:最差值: 3, 最优值: 3, 平均值: 3, 标准差: 2.2554e-15, 秩和检验: 4.0134e-06
GSA:最差值: 4.3331, 最优值: 3, 平均值: 3.0444, 标准差: 0.24339, 秩和检验: 6.3179e-11
GWO:最差值: 3.0003, 最优值: 3, 平均值: 3, 标准差: 6.5926e-05, 秩和检验: 9.3482e-12
SFS:最差值: 3, 最优值: 3, 平均值: 3, 标准差: 1.986e-15, 秩和检验: 1
函数:F19
SSA:最差值: -3.8628, 最优值: -3.8628, 平均值: -3.8628, 标准差: 8.1952e-11, 秩和检验: 1.2118e-12
WOA:最差值: -3.8146, 最优值: -3.8628, 平均值: -3.8546, 标准差: 0.01067, 秩和检验: 1.2118e-12
MFO:最差值: -3.8628, 最优值: -3.8628, 平均值: -3.8628, 标准差: 2.7101e-15, 秩和检验: NaN
GSA:最差值: -2.6198, 最优值: -3.8412, 平均值: -3.2177, 标准差: 0.28265, 秩和检验: 1.2118e-12
GWO:最差值: -3.8549, 最优值: -3.8628, 平均值: -3.8612, 标准差: 0.0026449, 秩和检验: 1.2118e-12
SFS:最差值: -3.8628, 最优值: -3.8628, 平均值: -3.8628, 标准差: 2.7101e-15, 秩和检验: NaN
实验结果表明:SFS算法在避免陷入局部极小值和寻找全局极小值方面的性能明显优于其他著名的元启发式算法。
三、参考文献
[1] Hamid Salimi. Stochastic Fractal Search: A powerful metaheuristic algorithm[J]. Knowledge-Based Systems, 2015, 75: 1-18.
[2] 赵冰. 基于EEMD和随机分形算法的SVR在网络舆情预测上的应用研究[D]. 广州: 广东工业大学, 2019.