2023年CCF-C NCA:自适应麻雀搜索算法MASSA,深度解析+性能实测

目录


1.摘要

麻雀搜索算法(SSA)是一种受麻雀觅食策略启发的元启发式算法,尽管SSA性能竞争力强,但仍存在开发与探索不平衡,容易陷入局部最优的问题。本文提出改进自适应麻雀搜索算法(MASSA),其通过引入混沌反向学习技术增加种群多样性,并通过动态自适应权重来平衡算法的开发与探索能力。此外,自适应螺旋搜索策略进一步提升了MASSA的性能。

2.麻雀搜索算法SSA原理

【智能算法】麻雀搜索算法(SSA)原理及实现

3.改进策略

自适应混沌反向学习

种群多样性与个体在搜索空间中的分布有关,更均匀的个体分布意味着更好的多样性。混沌映射具有随机选择和遍历的特点,有助于生成新的解。自适应混沌反向学习策略:
X i c o = L B + U B − λ i X i t X_{i}^{co}=\mathrm{LB}+\mathrm{UB}-\lambda_{i}X_{i}^{t} Xico=LB+UB−λiXit

随着算法的推进,采用混沌反向学习策略会导致大量无效搜索,这不仅增加了计算成本,还不利于算法的收敛,采用线性递减种群方法:
P o p = r o u n d ( ( p o p min ⁡ − p o p max ⁡ ) ⋅ t M + p o p max ⁡ ) \mathrm{Pop}=\mathrm{round}\left(\frac{(\mathrm{pop}{\min}-\mathrm{pop}{\max})\cdot t}{M}+\mathrm{pop}_{\max}\right) Pop=round(M(popmin−popmax)⋅t+popmax)

自适应螺旋搜索策略

对于发现者将原始搜索策略与自适应螺旋搜索策略相结合:
X i t + 1 = ∣ X i t − X p b e s t t ∣ β + X p b e s t t \mathbf{X}i^{t+1}=\left|\mathbf{X}i^t-\mathbf{X}{\mathrm{pbest}}^t\right|\beta+\mathbf{X}{\mathrm{pbest}}^t Xit+1= Xit−Xpbestt β+Xpbestt

其中,
β = e a l ⋅ cos ⁡ ( 2 π a ) \beta=e^{al}\cdot\cos(2\pi a) β=eal⋅cos(2πa)

每个跟随者在更新位置时不仅考虑最优个体,还应参考其前方的一个个体:
X i t + 1 = X p t + ∣ X i t − X p t ∣ ⋅ β + r 1 ⋅ ( X i − 1 t − X i t ) \mathbf{X}_i^{t+1}=\mathbf{X}_p^t+\left|\mathbf{X}_i^t-\mathbf{X}p^t\right|\cdot\beta+r_1\cdot(\mathbf{X}{i-1}^t-\mathbf{X}_i^t) Xit+1=Xpt+ Xit−Xpt ⋅β+r1⋅(Xi−1t−Xit)

动态自适应权重

为了解决发现者在迭代过程初期就接近全局最优而导致的搜索范围不足和精度下降问题,我们引入了前一代全局最优解至发现者的位置更新公式中。采用惯性权重实现从全局搜索向局部搜索的平滑过渡:
w = 1 − ( ( e t / M − 1 ) / e − 1 ) 2 w=1-\left((e^{t/M}-1)/e-1\right)^2 w=1−((et/M−1)/e−1)2
X i t + 1 = ∣ X p b e s t t − X i t ∣ ⋅ w ⋅ r a n d + X i t \mathbf{X}i^{t+1}=\left|\mathbf{X}{\mathrm{pbest}}^t-\mathbf{X}_i^t\right|\cdot w\cdot\mathrm{rand}+\mathbf{X}_i^t Xit+1= Xpbestt−Xit ⋅w⋅rand+Xit

伪代码

4.结果展示

PS:效果一般



5.参考文献

1 Geng J, Sun X, Wang H, et al. A modified adaptive sparrow search algorithm based on chaotic reverse learning and spiral search for global optimizationJ. Neural Computing and Applications, 2023, 35(35): 24603-24620.

6.代码获取

相关推荐
易小尊10 分钟前
Dixon-Coles 的 τ 函数,我写错了三次
算法
凯瑟琳.奥古斯特1 小时前
力扣1015C++解法技巧
c++·算法·leetcode·链表·职场和发展
seowmt1 小时前
GEO效果该什么时候看数据:从立项到复盘的时间线复盘
算法·ip·seo·geo·faq
悠仁さん1 小时前
【算法C++】双指针(一)
数据结构·c++·算法
小豆庄1 小时前
本地视频脱敏的追踪系统踩坑——车牌过滤、转场误判与ID冲突排查
人工智能·算法·目标检测·音视频·视频·敏捷流程·纹理贴图
忆挽篱笙歌1 小时前
进程替换函数与shenll命令行解释器
前端·javascript·算法
YukiRinLL1 小时前
字符串存储与 BF、KMP 匹配算法
数据结构·算法
小超人诞生日记2 小时前
Linux:环境变量 & 进程虚拟地址空间
linux·算法
小白起 v2 小时前
【算法学习 · 01】深入理解大 O 表示法:从「能跑就行」到「专业评估」算法性能
算法
梦帮科技2 小时前
脑机接口(BCI)与神经系统安全:EEG 神经电信号欺骗注入、神经闭环解码算法与生物黑客反制
算法·安全