2020-麻雀搜索算法(Sparrow Search Algorithm,SSA)在 CEC2017 测试集上的运行结果(包括函数绘制、收敛曲线、等高线与搜索历史、箱线图和 3D 粒子轨迹图)
1 论文简介
《A novel swarm intelligence optimization approach: sparrow search algorithm》是由 Jiankai Xue 和 Bo Shen 于 2020 年发表在 Systems Science & Control Engineering 期刊上的一篇论文。该论文针对工程应用中常见的全局优化问题(如数据聚类、路径规划和机器人控制),指出现有群智能优化算法(如蚁群优化(ACO)和粒子群优化(PSO))存在搜索速度慢或易陷入局部最优的缺陷。为此,作者提出了一种新颖的麻雀搜索算法(SSA),其灵感来源于麻雀群体的觅食和反捕食行为。通过模拟麻雀的角色分工(如发现者和加入者)和群体智慧,SSA 设计出高效的搜索机制,平衡了全局探索与局部开发能力。该方法在 19 个基准测试函数上验证了优越性能,并与灰狼优化(GWO)、粒子群优化(PSO)和引力搜索算法(GSA)进行对比。结果显示,SSA 在精度、收敛速度、稳定性和鲁棒性方面均表现突出。此外,SSA 被成功应用于 Himmelblau 非线性优化问题和减速器设计问题,展示了其在复杂工程优化中的实用价值,为全局优化领域提供了新的解决方案,并具有较高的学术影响力和应用前景。
2 算法原理
2.1 位置与适应度表示
假设种群中有 nnn 只麻雀,待优化问题的维度为 ddd,麻雀的位置用矩阵表示,适应度值用向量表示。位置矩阵 XXX 和适应度向量 FXF_XFX 定义如下:
X=[x1,1x1,2⋯x1,dx2,1x2,2⋯x2,d⋮⋮⋱⋮xn,1xn,2⋯xn,d]
X = \begin{bmatrix}
x_{1,1} & x_{1,2} & \cdots & x_{1,d} \\
x_{2,1} & x_{2,2} & \cdots & x_{2,d} \\
\vdots & \vdots & \ddots & \vdots \\
x_{n,1} & x_{n,2} & \cdots & x_{n,d}
\end{bmatrix}
X=x1,1x2,1⋮xn,1x1,2x2,2⋮xn,2⋯⋯⋱⋯x1,dx2,d⋮xn,d
FX=[f(x1,1,x1,2,⋯ ,x1,d)f(x2,1,x2,2,⋯ ,x2,d)⋮f(xn,1,xn,2,⋯ ,xn,d)]
F_X = \begin{bmatrix}
f(x_{1,1}, x_{1,2}, \cdots, x_{1,d}) \\
f(x_{2,1}, x_{2,2}, \cdots, x_{2,d}) \\
\vdots \\
f(x_{n,1}, x_{n,2}, \cdots, x_{n,d})
\end{bmatrix}
FX=f(x1,1,x1,2,⋯,x1,d)f(x2,1,x2,2,⋯,x2,d)⋮f(xn,1,xn,2,⋯,xn,d)
其中,每行代表一个麻雀的位置,fff 为适应度函数,算法通过迭代更新位置以优化适应度。
2.2 发现者位置更新
发现者在每次迭代中根据警报值 R2R_2R2 和安全阈值 STSTST 更新位置。更新公式为:
Xijt+1={Xijt⋅exp(−iα⋅itermax)if R2<STXijt+Q⋅Lif R2≥ST
X_{ij}^{t+1} = \begin{cases}
X_{ij}^t \cdot \exp\left(\frac{-i}{\alpha \cdot \text{iter}_{\max}}\right) & \text{if } R_2 < ST \\
X_{ij}^t + Q \cdot L & \text{if } R_2 \geq ST
\end{cases}
Xijt+1={Xijt⋅exp(α⋅itermax−i)Xijt+Q⋅Lif R2<STif R2≥ST
其中,ttt 为当前迭代,itermax\text{iter}_{\max}itermax 为最大迭代数,α\alphaα 和 QQQ 为随机数,LLL 为全 1 矩阵。当 R2<STR_2 < STR2<ST 时,发现者进行广泛搜索;否则,群体快速转移至安全区域。
2.3 加入者位置更新
加入者根据发现者位置和自身状态更新位置。更新公式为:
Xijt+1={Q⋅exp(Xworstt−Xijti2)if i>n/2Xpt+1+∣Xijt−Xpt+1∣⋅A+⋅Lotherwise
X_{ij}^{t+1} = \begin{cases}
Q \cdot \exp\left(\frac{X_{\text{worst}}^t - X_{ij}^t}{i^2}\right) & \text{if } i > n/2 \\
X_p^{t+1} + |X_{ij}^t - X_p^{t+1}| \cdot A^+ \cdot L & \text{otherwise}
\end{cases}
Xijt+1={Q⋅exp(i2Xworstt−Xijt)Xpt+1+∣Xijt−Xpt+1∣⋅A+⋅Lif i>n/2otherwise
其中,XpX_pXp 为发现者的最优位置,XworstX_{\text{worst}}Xworst 为全局最差位置,AAA 为元素随机为 1 或 -1 的矩阵,A+=AT(AAT)−1A^+ = A^T (AA^T)^{-1}A+=AT(AAT)−1。当 i>n/2i > n/2i>n/2 时,表示饥饿的加入者可能飞往其他地方。
2.4 危险感知麻雀位置更新
假设 10%–20% 的麻雀感知危险,其位置更新公式为:
Xijt+1={Xbestt+β⋅∣Xijt−Xbestt∣if fi>fgXijt+K⋅(∣Xijt−Xworstt∣(fi−fw)+ε)if fi=fg
X_{ij}^{t+1} = \begin{cases}
X_{\text{best}}^t + \beta \cdot |X_{ij}^t - X_{\text{best}}^t| & \text{if } f_i > f_g \\
X_{ij}^t + K \cdot \left( \frac{|X_{ij}^t - X_{\text{worst}}^t|}{(f_i - f_w) + \varepsilon} \right) & \text{if } f_i = f_g
\end{cases}
Xijt+1={Xbestt+β⋅∣Xijt−Xbestt∣Xijt+K⋅((fi−fw)+ε∣Xijt−Xworstt∣)if fi>fgif fi=fg
其中,XbestX_{\text{best}}Xbest 为全局最优位置,β\betaβ 和 KKK 为控制步长的随机数,fif_ifi、fgf_gfg 和 fwf_wfw 分别为当前麻雀、全局最佳和最差适应度值,ε\varepsilonε 为极小常数避免除零错误。当 fi>fgf_i > f_gfi>fg 时,边缘麻雀移向中心;否则,中心麻雀随机移动以靠近邻居。
2.5 算法框架
SSA 通过迭代执行以下步骤,确保全局探索和局部开发的平衡:
- 初始化种群参数,包括种群大小 nnn、发现者比例 PDPDPD、危险感知比例 SDSDSD 等。
- 在每次迭代中,排序适应度值。
- 更新发现者、加入者和危险感知麻雀的位置。
- 评估新位置并保留更优解。
- 最终返回全局最优位置 XbestX_{\text{best}}Xbest 和适应度值 fgf_gfg。
3 CEC2017
CEC2017(IEEE Congress on Evolutionary Computation 2017 基准测试函数集)是由 IEEE 计算智能协会组织的顶级会议 CEC 在 2017 年发布的一套标准测试函数集,主要用于评估和比较各类元启发式优化算法(如遗传算法、粒子群算法、差分进化、灰狼优化器、麻雀搜索算法等)的性能。核心目标是为全球优化算法研究者提供一个统一、公平、具有挑战性的测试平台,以客观地比较不同算法在解决复杂优化问题时的收敛精度、速度、鲁棒性和可扩展性。CEC2017 共包含 30 个测试函数(编号为 F1-F30),分为 4 大类(F2 已经被剔除):

注意:
- 单峰函数(F1、F3):只有一个全局最优值,无局部最优值,测试算法收敛速度和开发能力,好的算法应能快速、准确地找到最优点。
- 简单多峰函数(F4-F10):有多个局部最优值,但数量相对可控,测试算法跳出局部最优的探索能力。
- 混合函数:(F11-F20):由多个不同的基本函数(如椭圆函数、Rastrigin 函数等)通过某种方式拼接、组合而成,不同子区域具有不同特性,测试算法处理复杂、非均匀搜索空间的能力,是 CEC2017 的亮点和难点之一。
- 复合函数:(F21-F30):比混合函数更复杂,整个搜索空间由一个“外套函数”进行全局整形,内部再嵌入多个不同的基础函数,并加上偏置、旋转和位移,使得问题高度非线性、不可分。
- 维度: 默认推荐维度为 2D,10D, 30D, 50D, 100D。允许研究者测试算法在不同维度下的可扩展性。
- 搜索范围: 通常为 [−100,100]D[-100, 100]^D[−100,100]D。
- 由于 CEC2017 函数的复杂性,如何绘制并呈现函数曲面成为难点之一,下面展示 SSA 在 CEC2017 测试集上的运行结果。
4 SSA 在 CEC2017 测试集上的运行结果
所有函数曲面绘制与原文章显示一致,但是 F11-F20、F29 和 F30 原文章并未给出实际函数曲面(高纬度函数无法绘制),博主采取将其它维度赋值为 0 的形式显示。
4.1 绘制 CEC2017 函数 3D 曲面并保存
F1-F10 函数曲面

F11-F20 函数曲面

F21-F30 函数曲面

单独保存函数曲面

4.2 SSA 在 CEC2017 函数上的运行结果(包括函数绘制、收敛曲线、等高线与搜索历史、箱线图)


注意,当实际维度大于 2D 时,搜索历史并不准确。
4.3 SSA 在 CEC2017 函数上的运行结果(3D 粒子轨迹图)

注意,当实际维度大于 2D 时,不显示 3D 粒子轨迹图。
5 参考文献
[1] Xue J, Shen B. A novel swarm intelligence optimization approach: sparrow search algorithm[J]. Systems science & control engineering, 2020, 8(1): 22-34.
[2] Wu G, Mallipeddi R, Suganthan P N. Problem definitions and evaluation criteria for the CEC 2017 competition on constrained real-parameter optimization[J]. National University of Defense Technology, Changsha, Hunan, PR China and Kyungpook National University, Daegu, South Korea and Nanyang Technological University, Singapore, Technical Report, 2017, 9: 2017.
6 MATLAB 代码
1、麻雀搜索算法(Sparrow Search Algorithm,SSA)论文和作者给出的代码已存放在工粽号(却相迎的小屋),回复 2020-SSA,诸君自取!
2、麻雀搜索算法(Sparrow Search Algorithm,SSA)在 CEC2017 测试集上的运行结果文件夹包括(却相迎的小屋):
- CEC2017 测试集 PDF 文档
- input_data 数据
- 麻雀搜索算法(Sparrow Search Algorithm,SSA)在 CEC2017 测试集上的运行代码(包括函数绘制、收敛曲线、等高线与搜索历史、箱线图和 3D 粒子轨迹图)
- 注意:存在以下三点需在此说明:一是搜索历史显示仅在 2D 时为真实搜索历史;二是很多组合函数和混合函数(F11-F20、F29、F30)没有 2D 时的数据;三是 3D 粒子轨迹图仅在维度等于 2D 时显示。
更多推荐
所有评论(0)