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.代码获取

相关推荐
看我眼色行事^ \/ ^1 小时前
2024.05.11 360春招WEB前端编程题
算法
一只肥瘫瘫1 小时前
编码器 PLL 角度与速度观测器原理
人工智能·算法
Nil2082 小时前
leetcode 146LRU缓存
算法·leetcode·缓存
郝学胜_神的一滴2 小时前
干货版《算法导论》18:遍历增删原理、时间复杂度与集合序列实现全解
数据结构·算法
-dzk-3 小时前
【滑动窗口】LC 3.无重复字符的最长子串
算法·滑动窗口
zzxdear3 小时前
用 OR-Tools CP-SAT 求解最简单的柔性作业车间调度(FJSP)
算法
luj_17683 小时前
变频技术核心原理揭秘
服务器·c语言·开发语言·经验分享·算法
rannn_1113 小时前
【力扣hot100】图论专题+模板|DFS、BFS、拓扑排序...
java·算法·leetcode·深度优先·图论
_Narcissus_3 小时前
B树概念及操作笔记(含完整代码实现)
c语言·数据结构·数据库·c++·笔记·b树·算法
l1258653 小时前
# RAG多轮对话检索设计:Query重写如何让“那它呢“变成完整问题
前端·数据库·人工智能·python·算法·fastapi·milvus