基于疯狂自适应的樽海鞘群算法
文章目录
摘要: 针对樽海鞘群算法求解精度不高和收敛速度慢等缺点,提出一种基于疯狂自适应的樽海鞘群算法. 引入Tent混沌序列生成初始种群,以增加初始个体的多样性;在食物源位置上引入疯狂算子,增强种群的多样性;在追随者位置更新公式中引入自适应惯性权重,使算法的全局搜索和局部搜索能力得到更好的平衡。
1.樽海鞘群算法
基础樽海鞘群优化算法算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/107767869
2.基于疯狂自适应樽海鞘群算法
2.1 Tent映射的种群初始化
樽海鞘群体的初始化对SSA算法的收敛速度与寻优精度至关重要. 在樽海鞘群初始时,由于没有任何先验知识可使用,基本上大部分群智能算法的初始位置均采用随机生成.
混沌序列具有随机性、遍历性和规律性等特点,通过其产生的樽海鞘群体有较好的多样性. 基本思路是通过映射关系在[0,1]区间产生混沌序列,将混沌序列转化到个体的搜索空间. 产生混沌序列的模型有许多,Tent映射比Logistic映射能够生成更好的均匀序列 . 本文采用Tent映射生成的混沌序列初始化樽海鞘群算法群体,其数学表达式为:
y
j
+
1
i
=
{
μ
y
j
i
,
y
j
i
<
0.5
μ
(
1
−
y
j
i
)
,
y
j
i
⩾
0.5
(6)
y_{j+1}^{i}=\left\{\begin{array}{l} \mu y_{j}^{i}, y_{j}^{i}<0.5 \\ \mu\left(1-y_{j}^{i}\right), y_{j}^{i} \geqslant 0.5 \end{array}\right. \tag{6}
yj+1i={μyji,yji<0.5μ(1−yji),yji⩾0.5(6)
其中:
μ
∈
(
0
,
2
]
\mu∈ (0,2]
μ∈(0,2]为混沌参数,
μ
\mu
μ越大,混沌性越好,本文
μ
=
2
\mu= 2
μ=2;
i
=
1
,
2
,
.
.
.
,
N
i = 1,2,...,N
i=1,2,...,N表示种群规模;
j
=
1
,
2
,
.
.
.
,
d
j = 1,2,...,d
j=1,2,...,d表示混沌变量序号.Tent混沌映射对初始值的选取非常敏感,为式(6)选取d个具有微小差异的初始值,可得到d个混沌,序列
y
j
i
y^i_j
yji ,将其作逆映射到相应的个体搜索空间得到变量
x
j
i
x ^i_j
xji ,有:
x
j
i
=
l
b
i
+
(
u
b
i
−
l
b
i
)
y
j
i
(7)
x_{j}^{i}=\mathrm{lb}_{i}+\left(\mathrm{ub}_{i}-\mathrm{lb}_{i}\right) y_{j}^{i} \tag{7}
xji=lbi+(ubi−lbi)yji(7)
其中
[
l
b
i
,
u
b
i
]
[lb_i ,ub_i ]
[lbi,ubi]为
x
j
i
x^i_j
xji 的搜索范围.
2.2 疯狂算子
在樽海鞘群算法中,种群的食物源位置有重要作用,引导着群体向最优解移动,但若食物源位置陷入局部最优,则容易导致群体出现搜索停止,即群体内多样性缺失. 樽海鞘在移动的过程中,食物源不可能一直保持其位置不变,它们可能会突然变换位置,以此来增加种群的意外行为. 本文采用“疯狂”因素来描述这种行为,其核心思想是通过疯狂变量对其进行建模. 为了减少SSA算法出现早熟的收敛现象,本文提出在樽海鞘群算法领导者的位置更新公式中引入一个疯狂算子,确保樽海鞘在预先设定的疯狂概率下,对食物源位置产生一定扰动,以此维持个体的多样性. 新的领导者更新公式如下:
x
j
i
=
{
F
j
+
P
(
c
4
)
sign
(
c
4
)
x
craziness
+
c
1
(
(
u
b
j
−
l
b
j
)
c
2
+
l
b
j
)
,
c
3
⩾
0.5
F
j
+
P
(
c
4
)
sign
(
c
4
)
x
craziness
−
c
1
(
(
u
b
j
−
l
b
j
)
c
2
+
l
b
j
)
,
c
3
<
0.5
(8)
x_{j}^{i}=\left\{\begin{array}{l} F_{j}+P\left(c_{4}\right) \operatorname{sign}\left(c_{4}\right) x_{\text {craziness }}+ \\ c_{1}\left(\left(\mathrm{ub}_{j}-\mathrm{lb}_{j}\right) c_{2}+\mathrm{lb}_{j}\right), c_{3} \geqslant 0.5 \\ F_{j}+P\left(c_{4}\right) \operatorname{sign}\left(c_{4}\right) x_{\text {craziness }}- \\ c_{1}\left(\left(\mathrm{ub}_{j}-\mathrm{lb}_{j}\right) c_{2}+\mathrm{lb}_{j}\right), c_{3}<0.5 \end{array}\right.\tag{8}
xji=⎩⎪⎪⎨⎪⎪⎧Fj+P(c4)sign(c4)xcraziness +c1((ubj−lbj)c2+lbj),c3⩾0.5Fj+P(c4)sign(c4)xcraziness −c1((ubj−lbj)c2+lbj),c3<0.5(8)
其中:
c
4
c_4
c4 为服从[0,1]间均匀分布的随机数;
x
c
r
a
z
i
n
e
s
s
x_{craziness}
xcraziness通常取较小的常数;
P
(
c
4
)
P(c_4 )
P(c4)和
s
i
g
n
(
c
4
)
sign(c_4)
sign(c4)分别定义为:
P
(
c
4
)
=
{
1
,
c
4
⩽
P
c
r
0
,
otherwise
(9)
P\left(c_{4}\right)=\left\{\begin{array}{l} 1, c_{4} \leqslant P_{\mathrm{cr}} \\ 0, \text { otherwise } \end{array}\right. \tag{9}
P(c4)={1,c4⩽Pcr0, otherwise (9)
sign ( c 4 ) = { − 1 , c 4 ⩾ 0.5 1 , otherwise (10) \operatorname{sign}\left(c_{4}\right)=\left\{\begin{array}{l} -1, c_{4} \geqslant 0.5 \\ 1, \text { otherwise } \end{array}\right. \tag{10} sign(c4)={−1,c4⩾0.51, otherwise (10)
P c r P_{cr} Pcr 为设定的疯狂概率, x c r a z i n e s s x_{craziness} xcraziness为一个非常小的值(= 0.0001). 樽海鞘在移动过程中食物源位置发生移动的可能性较小,在这种情况下,如果 P c r P_cr Pcr 取值较小(= 0.3),则随机数 c 4 c_4 c4 将有很大概率大于 P c r P_{cr} Pcr ,疯狂因子 P ( c 4 ) P(c_4 ) P(c4)也将为0.
在求解测试函数优化问题中,搜索范围变化较大. 为了使樽海鞘群算法前期搜索具有更好的全局性和随机性,本文选取多个领导者进行更新,但领导者太多,算法随机性较强,会导致算法稳定性降低,因此,为了权衡算法的随机性和稳定性,选取一半的樽海鞘个体作为领导者.
2.3自适应惯性权重
惯性权重ω体现的是追随者继承前一个樽海鞘位置的能力. 文献[14]将惯性权重ω 引入PSO算法中,分析指出:当惯性权重值较大时,有助于提升探索能力;当惯性权重较小时,有助于具体开发能力. 由式(5)追随者位置更新公式可知,第i只樽海鞘位置会根据第i和第i − 1只樽海鞘位置进行更新,对先前个体依懒性较强. 若追随者的位置是局部最优解,则会容易陷入局部最优,出现停滞. 为了更好地权衡樽海鞘群算法的探索能力与开发能力,引入线性递减的惯性权重,它决定了先前个体对当前个体的影响程度. 新的追随者位置公式为:
x
j
i
=
1
2
(
x
j
i
+
ω
(
t
)
x
j
i
−
1
)
(11)
x_{j}^{i}=\frac{1}{2}\left(x_{j}^{i}+\omega(t) x_{j}^{i-1}\right) \tag{11}
xji=21(xji+ω(t)xji−1)(11)
ω ( t ) = ω s ( ω s − ω e ) ( T max − t ) / T max (12) \omega(t)=\omega_{s}\left(\omega_{s}-\omega_{e}\right)\left(T_{\max }-t\right) / T_{\max } \tag{12} ω(t)=ωs(ωs−ωe)(Tmax−t)/Tmax(12)
其中: ω s ω_s ωs 为初始惯性权重, ω e ω_e ωe 为更迭至最大更迭代数时的惯性权重, t t t为当前更迭代数, T m a x T_{max} Tmax 为最大更迭代数. 惯性权重 ω s = 0.9 , ω e = 0.4 ω_s = 0.9,ω_e = 0.4 ωs=0.9,ωe=0.4时算法具有最佳性能,因此随着更迭的进行,惯性权重从0.9线性递减至0.4,更迭开始较大的惯性权重使算法保持较好的探索能力,而更迭后期较小的惯性权重有助于算法具有更好的开发能力.
3.实验结果
4.参考文献
[1]张达敏,陈忠云,辛梓芸,张绘娟,闫威.基于疯狂自适应的樽海鞘群算法[J].控制与决策,2020,35(09):2112-2120.