全局优化的改进鸡群算法
摘要: 在基本鸡群算法的基础上提出了一种改进版鸡群算法( ECSO) ,在公鸡位置的更新过程中引入自适应变异策略用于平衡算法迭代后期下降的种群多样性,提升收敛速度; 在母鸡移动过程中引入偏好随机游动策略来平衡算法的开发与探索阶段,增强算法的稳定性; 在小鸡位置更新时引入领导者策略,减少算法搜索的盲目性;
1.鸡群优化算法
基础鸡群优化的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/108333906
2.全局优化的改进鸡群算法
2.1自适应策略
公鸡更新过程本质是一个个体变异的过程,高斯变异的过程有助于增强种群的多样性,但是前期和后期的搜索个体变异能力是保持不变的。众所周知,算法迭代的过程中种群的多样性是不断下降的,因此后期应当增强种群个体的变异能力,使得变异算子呈现递增的趋势。将公鸡位置更新的方式修改为maxt/2 之后为柯西变异。柯西变异是一种变异能力强于高斯变异的变异算子,后期较强的变异能力使得原先丢失的种群多样性能够得到一定的弥补;同时,为了增加算法后期的寻优收敛速度,整体采用线性递减策略,具体实现如下:
x
i
j
(
t
+
1
)
=
{
maxt
−
t
maxt
×
x
i
j
(
t
)
×
(
1
+
randn
(
0
,
σ
2
)
)
0
<
t
⩽
maxt
2
maxt
−
t
maxt
×
x
i
j
(
t
)
×
(
1
+
cauchy
(
0
,
σ
2
)
)
maxt
2
<
t
<
maxt
(7)
x_{i}^{j}(t+1)=\left\{\begin{array}{ll} \frac{\operatorname{maxt}-t}{\operatorname{maxt}} \times x_{i}^{j}(t) \times\left(1+\operatorname{randn}\left(0, \sigma^{2}\right)\right) & 0<t \leqslant \frac{\operatorname{maxt}}{2} \\ \frac{\operatorname{maxt}-t}{\operatorname{maxt}} \times x_{i}^{j}(t) \times\left(1+\operatorname{cauchy}\left(0, \sigma^{2}\right)\right) & \frac{\operatorname{maxt}}{2}<t<\operatorname{maxt} \end{array}\right.\tag{7}
xij(t+1)={maxtmaxt−t×xij(t)×(1+randn(0,σ2))maxtmaxt−t×xij(t)×(1+cauchy(0,σ2))0<t⩽2maxt2maxt<t<maxt(7)
2.2 偏好随机游动
偏好随机游动过程出现在众多算法中,最典型的算法是布谷鸟算法。随机偏好游动本质是一种权重因子,本文引入式(9)来增强个体对自身的学习,借鉴自身的个体位置信息使得个体具有记忆性。
x
i
j
(
t
+
1
)
=
ω
(
t
)
×
x
i
j
(
t
)
+
S
1
×
rand
×
(
x
r
1
j
(
t
)
−
x
i
j
(
t
)
)
+
S
2
×
rand
×
(
x
r
2
j
(
t
)
−
x
i
j
(
t
)
)
(8)
\begin{array}{c} x_{i}^{j}(t+1)=\omega(t) \times x_{i}^{j}(t)+S_{1} \times \operatorname{rand} \times\left(x_{r 1}^{j}(t)-x_{i}^{j}(t)\right)+ S_{2} \times \operatorname{rand} \times\left(x_{r 2}^{j}(t)-x_{i}^{j}(t)\right) \end{array} \tag{8}
xij(t+1)=ω(t)×xij(t)+S1×rand×(xr1j(t)−xij(t))+S2×rand×(xr2j(t)−xij(t))(8)
ω ( t ) = ω min + ( ω max − ω min ) × exp ( − k × ( t maxt ) 2 ) (9) \omega(t)=\omega_{\min }+\left(\omega_{\max }-\omega_{\min }\right) \times \exp \left(-k \times\left(\frac{t}{\operatorname{maxt}}\right)^{2}\right) \tag{9} ω(t)=ωmin+(ωmax−ωmin)×exp(−k×(maxtt)2)(9)
大量实验证明,综合考虑算法的各项性能来看, ω m a x = 9 , ω m i n = 0 . 4 , k = 1000 ω_{max} =9,ω_{min}=0. 4,k = 1 000 ωmax=9,ωmin=0.4,k=1000 时改进的算法寻优综合性能最好。线性递减是一种减幅保持不变的递减模式,变化的幅度是固定的,无法更好地平衡前后期的开发与探索。本文设计了一种非线性递减策略,通过式(9)可以看出,寻优的前期保持一个较大的权重值可以拓展寻优空间,保持全局寻优性能良好;后期较小的惯性权重可以增强局部开发能力,使得算法快速收敛,较好地平衡了算法的两个阶段,增加了算法的稳定性。
2.3 定向变异策略
差分进化算法中有多种变异策略,在这里简单介绍两种,文中小鸡的更新策略类似于 DE/rand/1。2015 年,Zheng 等人提出了一种定向变异策略(target mutation),该策略要优于 DE/rand/1 和 DE/best/1,将小鸡的更新方式修改为:
x
i
j
(
t
+
1
)
=
best
+
F
L
×
(
x
m
j
(
t
)
−
x
i
j
(
t
)
)
(10)
x_{i}^{j}(t+1)=\text { best }+F L \times\left(x_{m}^{j}(t)-x_{i}^{j}(t)\right)\tag{10}
xij(t+1)= best +FL×(xmj(t)−xij(t))(10)
这种改进策略较于基本 CSO 来说,新的个体位置更新方式充分借鉴了最优个体的位置,也就是说在小鸡寻优时是存在一个领导者带领着其他个体进行寻优,这样就大大降低了算法搜索的盲目性。
综合上述三种优化算子,针对公鸡、母鸡和小鸡群体分别进行优化,maxt/2 代之后的柯西变异策略可以弥补下降的种群多样性;偏好随机游动策略平衡了算法的前后期的开发与探索,保持了算法的稳定性;定向变异策略使得群体存在领导者,降低了个体寻优的盲目性。
综合以上分析,可以将 ECSO 寻优步骤描述如下:
a)初始化种群,并将种群按比例进行分割。
b)随机给出一个最优位置,并计算其适应度值。
c)使用式(7)(8)(10)分别更新公鸡、母鸡、小鸡的位置,并将最优个体保留下来。
d)记录鸡群中最优个体的位置和适应度值。
e)检测是否满足最优条件,若满足,迭代终止;否则,返回步骤 c)。
3.实验结果
4.参考文献
[1]韩斐斐,赵齐辉,杜兆宏,刘升.全局优化的改进鸡群算法[J].计算机应用研究,2019,36(08):2317-2319+2327.