基于坠落机制的混沌麻雀算法(SSACD)-附代码

基于坠落机制的混沌麻雀算法(SSACD)


摘要:首先,引入Sinusoidal混沌映射和变尺度混沌策略对种群进行初始化,提高种群多样性使算法具备跳出局部最优解的能力;其次,引入动态黄金正弦策略增强算法发现者位置更新方式;然后,提出一种坠落机制增强种群随机性;

1.麻雀优化算法

基础麻雀算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/108830958

2. 改进麻雀算法

2.1 变尺度混沌策略

为了增强算法初始化种群的多样性, 本文引人 Sinusoidal 混沌映射完成麻雀种群初始化, 混沌映 射公式为
x n + 1 = a x n 2 sin ⁡ ( π x n ) (4) x_{n+1}=a x_n^2 \sin \left(\pi x_n\right) \tag{4} xn+1=axn2sin(πxn)(4)
其中:本文取 a = 2.3 、 x 1 = 0.7 a=2.3 、 x_1=0.7 a=2.3x1=0.7 。迭代次数为 1000 次 的混沌状态种群初始化如图 2 所示。由图 2 可知, 使用 Sinusoidal 混沌映射初始化的种群分布更加均 匀, 能够获得比随机初始化更加稳定分布的初始 化解。
在搜索空间减小的问题上, 混沌映射表现较好。 当搜索空间较大时, 混沌映射可能存在失效的情况,因此在混沌映射公式中加人尺度变换来增强其在较 大搜索空间上的表现性能。引人尺度变换的混沌映 射公式为
x n + 1 = ( t / T max ⁡ ) × a x n 2 sin ⁡ ( π x n ) (5) x_{n+1}=\left(t / T_{\max }\right) \times a x_n^2 \sin \left(\pi x_n\right) \tag{5} xn+1=(t/Tmax)×axn2sin(πxn)(5)
其中: t t t 为当前迭代次数, T max  T_{\text {max }} Tmax  为最大迭代次数。 当最优值在迭代 10 次还为发生变化时, 可以认定 为算法进人搜索停滞状态。此时需要将种群再次通 过混沌映射进行扰动, 增加种群的随机性, 使算法 跳出搜索停滞状态。

2.2 动态黄金正弦策略

发现者的搜索范围较小的问题导致 SSA 算法存 在易于陷人局部最优和搜索停滞的缺陷。式 (1) 中的 exp ⁡ ( − i / ( α T max  ) ) \exp \left(-i /\left(\alpha T_{\text {max }}\right)\right) exp(i/(αTmax )) 起到决定发现者勘探能力的作用, 令 p = exp ⁡ ( − i / ( α T max  ) ) p=\exp \left(-i /\left(\alpha T_{\text {max }}\right)\right) p=exp(i/(αTmax )), 则其变化曲线如图 3 所示。根 据 i i i 值的不同, p p p 的值总是落在 [ 0.9 , 1 ] [0.9,1] [0.9,1], 从而导致 发现者的位置搜索范围较小, 并且在迭代过程中种 群不断的趋近于 0 , 由于发现者起着引领种群的特 点, 因此将导致整个种群在不断的趋向于非原点。 当 R 2 ⩾ S T R_2 \geqslant S T R2ST 时, 发现者所使用的正态随机数的扰动策 略效果有效。为了增强麻雀搜索算法的全局搜索能 力, 本文通过引人动态调整的黄金正弦 [ 8 ] { }^{[8]} [8] 策略来改 进发现者全局搜索公式, 增强发现者全局搜索能力 和全局寻优速度。改进后的发现者更新公式为
x i , j t + 1 = x i , j t ⋅ ∣ sin ⁡ ( r 1 ) ∣ − r 2 ⋅ sin ⁡ ( r 1 ) ⋅ ∣ c 1 x P t − c 2 x i , j t ∣ (6) x_{i, j}^{t+1}=x_{i, j}^t \cdot\left|\sin \left(r_1\right)\right|-r_2 \cdot \sin \left(r_1\right) \cdot\left|c_1 x_P^t-c_2 x_{i, j}^t\right| \tag{6} xi,jt+1=xi,jtsin(r1)r2sin(r1) c1xPtc2xi,jt (6)
其中: x P x_P xP 为当前迭代中最优适应度个体位置, r l r_l rl r 2 r_2 r2 分别为取值 [ 0 , 2 π ] [0,2 \pi] [0,2π] [ 0 , π ] [0, \pi] [0,π] 的随机数, c 1 c_1 c1 c 2 c_2 c2 表示 黄金分割系数, c 1 = a ( 1 − g ) + b g 、 c 2 = a g + b ( 1 − g ) c_1=a(1-g)+b g 、 c_2=a g+b(1-g) c1=a(1g)+bgc2=ag+b(1g) 、黄金 分割率 g = 0.618 , c l g=0.618, c_l g=0.618,cl c 2 c_2 c2 缩小了搜索空间, 在迭代 过程当中可以引导麻雀个体向全局最优位置移动。
受引人惯性权重思想的启发, 为了 更好的平衡算法全局搜索和局部寻优能力, 改善算法在迭代后期陷人搜索停滞状态的问题, 在黄金正 弦更新公式中引人非线性自适应权重 w w w, 表达式为
w = 0.7 [ cos ⁡ ( π t / T max ⁡ ) + 0.9 ] / 2 + 0.3 (7) w=0.7\left[\cos \left(\pi t / T_{\max }\right)+0.9\right] / 2+0.3 \tag{7} w=0.7[cos(πt/Tmax)+0.9]/2+0.3(7)
非线性惯性权重保证算法在迭代初期全局探索 范围更大且更快的递减速度有利于减少算法全局探 索的迭代次数。随着迭代次数的增多, 探索范围逐 渐收玫切收玫速度减缓, 更有利于算法进行局部挖 掘, 解决算法后期因为范围减小带来的搜索停滞问 题。加人非线性自适应权重的发现者位置更新公 式为
x i , j t + 1 = x i , j t ⋅ ∣ sin ⁡ ( r 1 ) ∣ − w ⋅ r 2 ⋅ sin ⁡ ( r 1 ) ⋅ ∣ c 1 x P t − c 2 x i , j t ∣  ( 8)  x_{i, j}^{t+1}=x_{i, j}^t \cdot\left|\sin \left(r_1\right)\right|-w \cdot r_2 \cdot \sin \left(r_1\right) \cdot\left|c_1 x_P^t-c_2 x_{i, j}^t\right| \quad \text { ( 8) } xi,jt+1=xi,jtsin(r1)wr2sin(r1) c1xPtc2xi,jt  ( 8) 

2.3 坠落机制

在标准 SSA 算法中, 发现者位置更新的正态分 布随机数扰动的效果随着迭代的增加效果有限, 为 了增加 SSA 算法的随机性, 本文提出一种坠落机 制, 即麻雀在飞行和受食的过程中有一定概率发生 坠落或者被其他大型鸟类捕食的现象。为了确保经 过坠落后的种群数量不变, 我们通过麻雀的位置和麻 雀下降的步长来建立坠落机制模型, 其具体模型为
x i , j t + 1 = r 3 x i , j t − r 4 x r , j t + r 5 x seep  x_{i, j}^{t+1}=r_3 x_{i, j}^t-r_4 x_{r, j}^t+r_5 x_{\text {seep }} xi,jt+1=r3xi,jtr4xr,jt+r5xseep 
其中: r 3 、 r 4 r_3 、 r_4 r3r4 r 5 r_5 r5 为取值区间 ( 0 , 1 ) (0,1) (0,1) 的随机数, x step  x_{\text {step }} xstep  为麻雀的坠落步长,其具体定义如下。
x step  = ( u b − l b ) exp ⁡ ( − C 2 t / T max ⁡ ) C 2 = 2 W f × n W f = 0.1 − 0.05 t / T max ⁡ \begin{gathered} x_{\text {step }}=(u b-l b) \exp \left(-C_2 t / T_{\max }\right) \\ C_2=2 W_f \times n \\ W_f=0.1-0.05 t / T_{\max } \end{gathered} xstep =(ublb)exp(C2t/Tmax)C2=2Wf×nWf=0.10.05t/Tmax
其中: u b u b ub l b l b lb 为第 i i i 维度的取值上界和下界, n n n 为 问题的维度, C 2 C_2 C2 为步长因子, 可以看出步长因子受 迭代次数和最大迭代次数的边界影响。麻雀坠落的 概率 W f W_f Wf 从迭代前期的 0.1 逐渐减少到 0.05 , 表明在 优化过程当中, 随着麻雀靠近最优值解危险逐渐 降低。

3.实验结果

在这里插入图片描述

4.参考文献

[1]李一铭,王跟成.基于坠落机制的混沌麻雀算法AGV路径规划[J].制造技术与机床,2023,No.727(01):102-108.DOI:10.19287/j.mtmt.1005-2402.2023.01.016.

5.Matlab代码

6.Python代码

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

智能算法研学社(Jack旭)

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

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

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

打赏作者

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

抵扣说明:

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

余额充值