- 多段扰动共享型乌鸦算法
- 1.乌鸦搜索算法
- 2.基于多段扰动的共享型乌鸦算法
- 2.1 加入共享机制的位置更新方式
- 2.2 加入扰动策略更新最优藏食位置
- 4.实验结果
- 5.参考文献
- 6.Matlab代码
- 7.python代码
摘要:乌鸦搜索算法作为新提出的元启发式智能算法,其寻优方式模拟了乌鸦间相互跟随窃食的行为。为了提高 算法的收敛精度、后期搜索能力等,基于传统乌鸦搜索算法提出一种新的混合乌鸦搜索算法,其核心思想是在算法 中加入共享机制,改进原始算法中随机追踪的位置更新方式,降低搜索盲目性,提高收敛速度;在不同的迭代阶段对 全局最优位置进行大小不同的扰动操作,有效提高了跳出局部最优的概率,保证算法全局搜索能力与局部搜索能力 的平衡。 1.乌鸦搜索算法
基础乌鸦搜索算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/108800505
2.基于多段扰动的共享型乌鸦算法 2.1 加入共享机制的位置更新方式在乌鸦算法中,乌鸦 (
i
i
i) 以随机方式跟踪某一乌鸦 (
j
j
j) 进行位置更新,这样的更新方式可以在迭代的前期 保持种群较好的多样性,但是也会使算法的盲目性较 大,收敛速度变缓,无法在较短时间收敛到最优值。 1995 年 Kennedy 学者提出了粒子群算法(PSO), 通过群体内个体之间的信息共享来对问题的解进行协 同搜索,即粒子的飞行速度不仅参考自身历史最优位 置,也会参考群体中最优粒子的位置进行动态调整,这 使算法具有收敛速度快的特点。因此为了增强算法的 领导能力,在乌鸦搜索算法的位置更新部分引入粒子群 算法中向最优粒子学习的思想,使乌鸦种群共享出环境 中最优的藏食位置,即在随机跟随某一个体的同时也参 考种群中最优藏食位置来进行自身更新。乌鸦种群在 最优藏食位置的领导下,算法大大地提高了收敛速度。 新的位置更新公式如下:
s
m
=
r
i
×
s
×
(
m
gbest
,
iter
−
x
i
,
iter
)
s m=r_{i} times s timesleft(m^{text {gbest }, text { iter }}-x^{i, text { iter }}right)
sm=ri×s×(mgbest , iter −xi, iter )
x i , iter + 1 = x i , iter + r i × f l × ( m j , iter − x i , iter ) + s m x^{i, text { iter }+1}=x^{i, text { iter }}+r_{i} times f l timesleft(m^{j, text { iter }}-x^{i, text { iter }}right)+s m xi, iter +1=xi, iter +ri×fl×(mj, iter −xi, iter )+sm
其中, s m sm sm 表示共享机制的公式, m g b e s t , i t e r m^{gbest,iter} mgbest,iter 表示全局最优 藏食位置; s s s 表示共享因子,决定了最优藏食位置对当 前乌鸦位置影响程度。改进后,乌鸦 i i i每一次移动都会 离最优位置进一步,有效提高算法的收敛速度。
2.2 加入扰动策略更新最优藏食位置CSA是一种非贪婪型算法,即当前解如果不优于上 一代则不会被保留。因此,乌鸦搜索算法到了迭代后期 极易陷入局部最优。特别是在应用于较复杂的多峰函 数中时,收敛过早且精度低下的缺点更为明显。对此本文引入赵新超等提出的多段扰动策略用于更新最优藏食位置
m
g
b
e
s
t
,
i
t
e
r
m^{gbest,iter}
mgbest,iter, 即对全局最优藏食位置根据方差可调的正态随机分布 进行扰动得到新的全局最优藏食位置
m
g
b
e
s
t
′
,
i
t
e
r
m^{gbest',iter}
mgbest′,iter ,速度更 新公式如下:
m
gbest’, iter
=
N
(
m
gbest
,
iter
,
δ
)
m^{text {gbest', iter }}=Nleft(m^{text {gbest }, text { iter }}, deltaright)
mgbest’, iter =N(mgbest , iter ,δ)
其中 δ 表示正态随机分布的方差, δ 的更新方式如下:
δ
=
{
δ
1
,
α
1
T
<
t
<
α
2
T
δ
2
,
t
>
α
2
T
delta=left{begin{array}{l} delta_{1}, alpha_{1} T
其中,
δ
δ
δ 表示正态扰动的半径参数且
δ
1
>
δ
2
δ_1 >δ _2
δ1>δ2 ;
α
1
,
α
2
α_1 ,α_2
α1,α2 是半径变化的控制参数,且
α
1
<
α
2
α_1 <α_2
α1<α2 ;
t
t
t 是当前函数值计算次数,
T
T
T是最大函数计算次数。在迭代早期
δ
1
δ_1
δ1 取值较大,群体会向全局最优藏食位置较大的邻域内搜索;在迭代后期干扰半径
δ
2
δ_2
δ2 取值较小,则在全局最优藏食位置较小的邻域进行搜索,使得当前解几乎不再从较优区域跳出保证算法群体仅向全局最优解学习,从而保证算法具有较好的收敛性。
[1]辛梓芸,张达敏,陈忠云,张绘娟,闫威.多段扰动的共享型乌鸦算法[J].计算机工程与应用,2020,56(02):55-61.
6.Matlab代码 7.python代码


