文章目录
一、理论基础
1、基本BOA
请参考这里。
2、ORBOA
2.1 基于改进Tent混沌映射的蝴蝶位置初始化
本文将改进的Tent混沌映射融入到算法初始阶段,使蝴蝶个体位置分布更加均匀,从而利于算法初期在空间内进行更好的搜索。
Tent混沌映射函数公式可表示为:
Z
k
+
1
=
{
2
Z
k
,
0
≤
Z
k
<
0.5
2
(
1
−
Z
k
)
,
0.5
≤
Z
k
≤
1
(1)
Z_{k+1}=\begin{dcases}2Z_k,\quad\quad\quad\,\,\, 0\leq Z_k<0.5\\2(1-Z_k),\quad 0.5\leq Z_k\leq1\end{dcases}\tag{1}
Zk+1={2Zk,0≤Zk<0.52(1−Zk),0.5≤Zk≤1(1)其中,
k
k
k为映射次数;
Z
k
Z_k
Zk为第
k
k
k次映射函数值。
改进Tent公式可表示为:
Z
k
+
1
=
{
2
(
Z
k
+
0.1
⋅
rand
(
0
,
1
)
)
,
0
≤
Z
k
<
0.5
2
−
2
(
Z
k
+
0.1
⋅
rand
(
0
,
1
)
)
,
0.5
≤
Z
k
≤
1
(2)
Z_{k+1}=\begin{dcases}2(Z_k+0.1\cdot\text{rand}(0,1)),\quad\quad\,\,\,\, 0\leq Z_k<0.5\\2-2(Z_k+0.1\cdot\text{rand}(0,1)),\quad 0.5\leq Z_k\leq1\end{dcases}\tag{2}
Zk+1={2(Zk+0.1⋅rand(0,1)),0≤Zk<0.52−2(Zk+0.1⋅rand(0,1)),0.5≤Zk≤1(2)改进Tent逆映射可表示为:
X
k
=
l
k
+
(
u
k
−
l
k
)
⋅
Z
k
(3)
X_k=l_k+(u_k-l_k)\cdot Z_k\tag{3}
Xk=lk+(uk−lk)⋅Zk(3)其中,
u
k
u_k
uk、
l
k
l_k
lk分别为优化变量区间中的最大值、最小值。
2.2 混合最优邻域扰动策略和透镜成像反向学习策略
混合最优邻域扰动策略和透镜成像反向学习策略引入BOA中,以丰富种群多样性,提高收敛精度,改善算法易陷入局优的缺陷。
2.2.1 最优邻域扰动策略
在全局位置更新时对最优位置处的邻域进行扰动,增强对其邻域空间的搜索,使之能够在全局搜索时更好地跳出局部最优,寻找到全局最优解,提高算法的收敛速度,避免算法早熟。最优邻域扰动公式为:
X
~
(
t
)
=
{
X
∗
(
t
)
+
0.5
⋅
rand
1
⋅
X
∗
(
t
)
,
rand
2
<
0.5
X
∗
(
t
)
,
rand
2
≥
0.5
(4)
\widetilde X(t)=\begin{dcases}X^*(t)+0.5\cdot\text{rand}_1\cdot X^*(t),\quad \text{rand}_2<0.5\\X^*(t),\quad\quad\quad\quad\quad\quad\quad\quad\quad\,\,\,\,\, \text{rand}_2\geq0.5\end{dcases}\tag{4}
X
(t)={X∗(t)+0.5⋅rand1⋅X∗(t),rand2<0.5X∗(t),rand2≥0.5(4)其中,
X
~
(
t
)
\widetilde X(t)
X
(t)为生成的新位置;
X
∗
(
t
)
X^*(t)
X∗(t)为全局更新时的最优位置;
rand
1
\text{rand}_1
rand1、
rand
2
\text{rand}_2
rand2为
[
0
,
1
]
[0,1]
[0,1]内均匀产生的随机数。
通常在进行最优邻域扰动后会得到较多个新生成的邻域位置,此时需用贪婪策略进行收缩排选,判断是否保留。贪婪策略公式为:
X
∗
(
t
1
)
=
{
X
~
(
t
)
,
f
(
X
~
(
t
)
)
<
f
(
X
∗
(
t
)
)
X
∗
(
t
)
,
f
(
X
∗
(
t
)
)
≤
f
(
X
~
(
t
)
)
(5)
X^*(t1)=\begin{dcases}\widetilde X(t),\quad f(\widetilde X(t))<f(X^*(t))\\X^*(t),\,\,\,\, f(X^*(t))\leq f(\widetilde X(t))\end{dcases}\tag{5}
X∗(t1)={X
(t),f(X
(t))<f(X∗(t))X∗(t),f(X∗(t))≤f(X
(t))(5)其中,
X
∗
(
t
1
)
X^*(t1)
X∗(t1)为贪婪策略收缩排选后的最优位置;
f
(
x
)
f(x)
f(x)为
x
x
x的位置适应值。若生成的位置比原位置更好,则取代原位置成为全局最优解;若不如原位置,则全局最优解位置不发生改变。
2.2.2 透镜成像反向学习策略
由于光的折射现象和直线传播,凸透镜能够在光的折射下成像,该原理称为透镜成像原理,将该原理应用在算法搜索阶段,可以更好地跳出局部最优,提高收敛精度和收敛速度。
通过变换得出
D
D
D维空间中的反向点位置为:
X
best
∗
(
t
)
=
a
j
+
b
j
2
+
a
j
+
b
j
2
n
−
X
best
(
t
)
n
(6)
X^*_{\text{best}}(t)=\frac{a_j+b_j}{2}+\frac{a_j+b_j}{2n}-\frac{X_{\text{best}}(t)}{n}\tag{6}
Xbest∗(t)=2aj+bj+2naj+bj−nXbest(t)(6)其中,
n
n
n为缩放因子。
2.3 随机惯性权重
虽然BOA局部搜索能力较强,但在迭代后期仍然容易陷入局部最优,因此在局部搜索时加入随机惯性权重以增强跳出局优的能力。本文提出了一种新的随机惯性权重:
ω
=
μ
min
+
(
μ
max
−
μ
min
)
⋅
rand
(
)
+
sin
(
π
t
2
T
max
+
π
)
(7)
\omega=\mu_{\min}+(\mu_{\max}-\mu_{\min})\cdot\text{rand}()+\sin\left(\frac{\pi t}{2T_{\max}}+\pi\right)\tag{7}
ω=μmin+(μmax−μmin)⋅rand()+sin(2Tmaxπt+π)(7)其中,
μ
min
\mu_{\min}
μmin和
μ
max
\mu_{\max}
μmax分别为随机惯性权重的最小值和最大值;
T
max
T_{\max}
Tmax为最大迭代次数;
rand
(
)
\text{rand}()
rand()为
[
0
,
1
]
[0,1]
[0,1]的随机数。
改进后的BOA算法局部搜索阶段公式可表示为:
X
i
t
+
1
=
ω
X
i
t
+
(
γ
2
⋅
X
j
t
−
X
k
t
)
⋅
f
i
(8)
X_i^{t+1}=\omega X_i^t+(\gamma^2\cdot X_j^t-X_k^t)\cdot f_i\tag{8}
Xit+1=ωXit+(γ2⋅Xjt−Xkt)⋅fi(8)
2.4 动态转换概率( P 2 P_2 P2)
在BOA中,切换概率起着决定采用全局搜索还是局部搜索的作用。基本BOA中的 P 1 P_1 P1往往采用1个固定常数作为转换概率的触发条件,在算法后期不能快速地收敛到最优个体,因此本文采用动态转换概率来随机切换全局和局部搜索模式,以提高算法后期的收敛速度,更好地平衡全局搜索与局部搜索之间的切换概率。该转换概率公式为: P 2 = 0.6 − 0.1 ⋅ MaxIter − t MaxIter (9) P_2=0.6-0.1\cdot\frac{\text{MaxIter}-t}{\text{MaxIter}}\tag{9} P2=0.6−0.1⋅MaxIterMaxIter−t(9)其中, t t t、 MaxIter \text{MaxIter} MaxIter分别为当前迭代次数和最大迭代次数。当 P 2 > r P_2>r P2>r时,算法采用混合最优邻域扰动策略和透镜成像反向学习策略的全局位置更新公式进行位置更新;反之,算法采用引入随机权重的局部位置更新公式。
2.5 ORBOA基本流程
由于BOA算法本身收敛精度不高,易陷入局部最优,因此引入了改进Tent混沌映射、最优邻域扰动策略和透镜成像反向学习策略,以及在局部搜索阶段引入随机惯性权重,使其能够更好地均匀分布和进行全局寻优。具体算法步骤为:
步骤1 参数初始化。设置初始参数中的种群规模(
N
N
N)、搜索空间维度(
D
D
D)、最大迭代次数(MaxIter)、感觉模态(
c
c
c)、幂指数(
a
a
a)、动态转换概率(
P
2
P_2
P2)、初始值上下界
(
u
b
,
l
b
)
(u_b,lb)
(ub,lb)。
步骤2 应用改进Tent混沌序列对初始状态下的种群位置重新分布,生成
N
N
N个
D
D
D维向量
Z
i
Z_i
Zi,并将其各分量载波到原问题控制变量的取值范围内,对蝴蝶初始个体位置进行重分布。
步骤3 计算每只蝴蝶的适应度(
f
i
f_i
fi),选出当前最优适应度(
f
g
f_g
fg)和其所对应的位置(
X
b
X_b
Xb)。同时随机产生1个随机数(
r
r
r)。
步骤4 若
P
2
>
r
P_2>r
P2>r,则根据最优邻域扰动策略(式(4))和透镜成像反向学习策略(式(6))对其进行全局位置更新,产生反向解;若更新后的位置更优,则替代原位置成为全局最优位置并采用贪婪机制(式(5))对产生的新位置进行收缩;若不如原来位置则原来位置保持不变。
步骤5 若
P
2
≤
r
P_2\leq r
P2≤r则采用局部随机惯性权重(式(8))进行局部位置更新。
步骤6 判断算法是否达到最大迭代次数或者求解精度。若是,循环结束,输出全局最优解;否则返回到步骤3重新进行寻优。
二、仿真实验与结果分析
将ORBOA与BOA、SSA、GWO和WOA这4种算法进行比较,设置种群规模为30,最大迭代次数为500,每个函数独立运行50次,以文献[1]中表1的6个30维的测试函数为例,结果显示如下:
函数:F1
SSA:最差值: 1.0201e-06, 最优值: 2.7918e-08, 平均值: 1.7683e-07, 标准差: 2.2666e-07, 秩和检验: 3.3111e-20
GWO:最差值: 7.5883e-27, 最优值: 8.7798e-30, 平均值: 1.1979e-27, 标准差: 1.7014e-27, 秩和检验: 3.3111e-20
BOA:最差值: 1.4672e-11, 最优值: 1.1079e-11, 平均值: 1.3089e-11, 标准差: 8.5538e-13, 秩和检验: 3.3111e-20
WOA:最差值: 4.5319e-70, 最优值: 2.8367e-86, 平均值: 1.0268e-71, 标准差: 6.4284e-71, 秩和检验: 3.3111e-20
ORBOA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
函数:F2
SSA:最差值: 6.9511, 最优值: 0.068147, 平均值: 2.3448, 标准差: 1.6995, 秩和检验: 3.3111e-20
GWO:最差值: 4.065e-16, 最优值: 8.2343e-18, 平均值: 1.0182e-16, 标准差: 8.2431e-17, 秩和检验: 3.3111e-20
BOA:最差值: 5.9414e-09, 最优值: 1.3054e-09, 平均值: 4.2585e-09, 标准差: 1.3917e-09, 秩和检验: 3.3111e-20
WOA:最差值: 2.4058e-49, 最优值: 4.3533e-58, 平均值: 6.1619e-51, 标准差: 3.4161e-50, 秩和检验: 3.3111e-20
ORBOA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
函数:F3
SSA:最差值: 0.54769, 最优值: 0.058656, 平均值: 0.17787, 标准差: 0.089304, 秩和检验: 7.0661e-18
GWO:最差值: 0.0088545, 最优值: 0.00050171, 平均值: 0.0019388, 标准差: 0.0013433, 秩和检验: 7.5041e-18
BOA:最差值: 0.0029791, 最优值: 0.00046065, 平均值: 0.0014843, 标准差: 0.00063359, 秩和检验: 7.9688e-18
WOA:最差值: 0.01416, 最优值: 0.000116, 平均值: 0.0026981, 标准差: 0.0028216, 秩和检验: 4.9596e-15
ORBOA:最差值: 0.00050355, 最优值: 3.9414e-07, 平均值: 0.00015054, 标准差: 0.0001266, 秩和检验: 1
函数:F4
SSA:最差值: 93.5259, 最优值: 20.8941, 平均值: 52.0363, 标准差: 18.2647, 秩和检验: 3.3111e-20
GWO:最差值: 25.8404, 最优值: 0, 平均值: 2.6807, 标准差: 4.9166, 秩和检验: 1.088e-19
BOA:最差值: 205.4265, 最优值: 0, 平均值: 27.455, 标准差: 68.6706, 秩和检验: 7.1392e-15
WOA:最差值: 203.9157, 最优值: 0, 平均值: 4.0783, 标准差: 28.838, 秩和检验: 0.15939
ORBOA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
函数:F5
SSA:最差值: 6.0561, 最优值: 0.93163, 平均值: 2.7897, 标准差: 1.0341, 秩和检验: 3.3111e-20
GWO:最差值: 1.501e-13, 最优值: 7.5495e-14, 平均值: 9.8801e-14, 标准差: 1.8386e-14, 秩和检验: 3.0202e-20
BOA:最差值: 7.0823e-09, 最优值: 3.6587e-09, 平均值: 5.8872e-09, 标准差: 6.9461e-10, 秩和检验: 3.3111e-20
WOA:最差值: 7.9936e-15, 最优值: 8.8818e-16, 平均值: 4.1567e-15, 标准差: 2.0097e-15, 秩和检验: 1.4011e-15
ORBOA:最差值: 8.8818e-16, 最优值: 8.8818e-16, 平均值: 8.8818e-16, 标准差: 0, 秩和检验: NaN
函数:F6
SSA:最差值: 0.07796, 最优值: 0.0002683, 平均值: 0.016769, 标准差: 0.01602, 秩和检验: 3.3111e-20
GWO:最差值: 0.028265, 最优值: 0, 平均值: 0.0045677, 标准差: 0.0086249, 秩和检验: 0.00025398
BOA:最差值: 1.1855e-11, 最优值: 1.2346e-12, 平均值: 4.3966e-12, 标准差: 2.3202e-12, 秩和检验: 3.3111e-20
WOA:最差值: 0.18839, 最优值: 0, 平均值: 0.0037679, 标准差: 0.026643, 秩和检验: 0.32709
ORBOA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
结果表明:ORBOA具有更高的收敛速度、收敛精度和跳出局优的能力。
三、参考文献
[1] 李彦苍, 卜英乔, 朱海涛, 等. 融合最优邻域扰动和反向学习策略的蝴蝶优化算法[J]. 中国科技论文, 2021, 16(11): 1181-1188.