正弦余弦指引的乌鸦搜索算法-附代码

正弦余弦指引的乌鸦搜索算法


摘要:乌鸦搜索算法模拟乌鸦觅食行为对个体位置进行更新与搜索,为降低基本乌鸦搜索位置更新策略本身存在 的盲目性,将正弦余弦作为局部优化算子嵌入到基本算法中,提出了正弦余弦指引的乌鸦搜索算法。该算法通过正 弦余弦操作使每一个乌鸦个体都可以充分吸收自身与最优个体的位置差信息,有效指引乌鸦个体沿最优值方向趋近 最优值,改善算法的收敛效果和寻优精度。

1.乌鸦搜索算法

基础乌鸦搜索算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/108800505

2.正弦余弦指引的乌鸦搜索算法

2.1 代际信息交流机制

针对CSA位置更新策略一存在的盲目性,引入代际 信息交流机制,将原始算法中乌鸦个体 i i i追随位置随机 产生的乌鸦 j j j的位置更新策略改为乌鸦个体 i i i以第 i i i只乌鸦的在上一次迭代时的食物藏匿点 M i T M_i^T MiT为导向的位 置追踪更新策略,即改进后的乌鸦 i i i位置更新公式如下:
X i ( T + 1 ) = { X i T + r 1 × L i T × ( M i T − X i T ) , r 2 ⩾ A P  a rand position, otherwise  \boldsymbol{X}_{i}^{(T+1)}=\left\{\begin{array}{l} \boldsymbol{X}_{i}^{T}+r_{1} \times \boldsymbol{L}_{i}^{T} \times\left(\boldsymbol{M}_{i}^{T}-\boldsymbol{X}_{i}^{T}\right), r_{2} \geqslant A P \\ \text { a rand position, otherwise } \end{array}\right. Xi(T+1)={XiT+r1×LiT×(MiTXiT),r2AP a rand position, otherwise 
对乌鸦搜索算法进行的这种改进调整在一定程度 上避免了 r 2 ≥ A P r_2 ≥ AP r2AP 情况下的乌鸦个体位置更新的盲目 性,使得乌鸦 i 每次向着上一代个体最优位置移动,从 而提高算法收敛速度。

2.2正弦余弦指引机制

CSA 参数少、结构简单,使用时一般将 A P AP AP L i T L^T_i LiT 设置为固定值,缺乏动态参数,算法缺乏适应性。经实验本文取 A P = 0.1 AP = 0.1 AP=0.1 L i T = 2 L^T_i = 2 LiT=2 A P = 0.1 AP = 0.1 AP=0.1 使得算法倾向于 局部搜索,这虽然可以加快收敛速度,但也会使得种群 个体在解的空间内迅速的聚集,从而陷入局部最优。 L i T = 2 L^T_i = 2 LiT=2时,算法倾向于全局搜索,但也使得算法的收敛性降低,导致搜索效率 不高。固定的参数设置使得 CSA 的搜索能力受限,为 进一步优化 CSA算法协调全局的探索与局部开发的能 力,本文引入正弦余弦指引机制,将正弦余弦算法 (Sine Cosine Algorithm,SCA)作为局部优化算子嵌 入乌鸦搜索算法,即在迭代后期对整个乌鸦个体进行正 弦余弦的操作指引乌鸦个体更新到新的乌鸦位置,操作方式为:
X i ( T + 1 ) = { X i T + R 1 × sin ⁡ ( R 2 ) × ∣ R 3 × M i T − X i T ∣ , R 4 ⩽ 0.5 X i T + R 1 × cos ⁡ ( R 2 ) × ∣ R 3 × M i T − X i T ∣ , R 4 > 0.5 \boldsymbol{X}_{i}^{(T+1)}=\left\{\begin{array}{l} \boldsymbol{X}_{i}^{T}+R_{1} \times \sin \left(R_{2}\right) \times\left|R_{3} \times \boldsymbol{M}_{i}^{T}-\boldsymbol{X}_{i}^{T}\right|, R_{4} \leqslant 0.5 \\ \boldsymbol{X}_{i}^{T}+R_{1} \times \cos \left(R_{2}\right) \times\left|R_{3} \times \boldsymbol{M}_{i}^{T}-\boldsymbol{X}_{i}^{T}\right|, R_{4}>0.5 \end{array}\right. Xi(T+1)=XiT+R1×sin(R2)×R3×MiTXiT,R40.5XiT+R1×cos(R2)×R3×MiTXiT,R4>0.5
式中存在四个参数$R_1 、R_2 、R_3 $和 R 4 R_4 R4 R 1 R_1 R1 决定下一次 迭代第 i i i个个体的位置更新方向,不同的 R 1 R_1 R1 对解的搜 索范围有着不同的影响, R 1 = a − T × a / T m a x R_1 = a - T × a/T_{max} R1=aT×a/Tmax ,随着迭代次 数自适应调整,缩小乌鸦个体的搜索范围,保证了算法 的收敛性,使之最终收敛于一个最优解, a a a为常数,本文中取 a = 2 a = 2 a=2 R 2 R_2 R2 是属于[0,2π]的随机数,决定下一次迭代 中个体的移动距离; R 3 R_3 R3 为随机权重取值范围为[0,2], R 3 > 1 R_3 > 1 R3>1 时, M i T M_i^T MiT 对下一次迭代中个体位置有较明显的影响,否则无明显影响效果; R 4 ∈ [ 0 , 1 ] R_4 ∈ [0,1] R4[01]为一个随机数,其 大小决定位置更新方式选择余弦还是正弦操作。

正弦余弦指引机制的引入,一方面可以极大地弥补 CSA算法位置更新策略存在盲目性缺点,这是由于不管 是正弦操作还是余弦操作,乌鸦个体都会与最优个体进 行信息交流,促进信息在种群中快速传播,每一个乌鸦 个体都可以充分吸收自身与最优个体的位置差信息,以 引导一般个体逐步接近最优个体,在这个过程中参数 R 1 R_1 R1 R 2 R_2 R2 ,也可以有效控制个体的搜索方向和距离。另 一方面,正弦余弦指引机制使得乌鸦个体进 一步在同一个空间的不同区域范围内进行全局搜索和 局部寻优,并最终收敛于同一个最优解即目标函数值。 正弦操作保证全局搜索避免错过潜在最优解以减少余 弦开发的寻优盲点,减少个体在局部最优中停滞的可能 性,而余弦操作促进局部开发弥补正弦全局搜索收敛速 度慢的缺陷,提高搜索效率,加快收敛速度。正弦余弦 相互配合,共同促进算法性能的改进。

算法流程图如下:

请添加图片描述

4.实验结果

请添加图片描述

5.参考文献

[1]肖子雅,刘升,韩斐斐,于建芳.正弦余弦指引的乌鸦搜索算法研究[J].计算机工程与应用,2019,55(21):52-59.

6.Matlab代码

7.python代码

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智能算法研学社(Jack旭)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值