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,1xn,1x1,2x2,2xn,2x1,dx2,dxn,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={Xijtexp(αitermaxi)Xijt+QLif R2<STif R2ST
其中,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={Qexp(i2XworsttXijt)Xpt+1+XijtXpt+1A+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+βXijtXbesttXijt+K((fifw)+εXijtXworstt)if fi>fgif fi=fg
其中,XbestX_{\text{best}}Xbest 为全局最优位置,β\betaβKKK 为控制步长的随机数,fif_ififgf_gfgfwf_wfw 分别为当前麻雀、全局最佳和最差适应度值,ε\varepsilonε 为极小常数避免除零错误。当 fi>fgf_i > f_gfi>fg 时,边缘麻雀移向中心;否则,中心麻雀随机移动以靠近邻居。

2.5 算法框架

SSA 通过迭代执行以下步骤,确保全局探索和局部开发的平衡:

  1. 初始化种群参数,包括种群大小 nnn、发现者比例 PDPDPD、危险感知比例 SDSDSD 等。
  2. 在每次迭代中,排序适应度值。
  3. 更新发现者、加入者和危险感知麻雀的位置。
  4. 评估新位置并保留更优解。
  5. 最终返回全局最优位置 XbestX_{\text{best}}Xbest 和适应度值 fgf_gfg

3 CEC2005

CEC2005(IEEE Congress on Evolutionary Computation 2005 基准测试函数集)是由 IEEE 计算智能协会组织的顶级会议 CEC 在 2005 年发布的一套标准测试函数集,主要用于评估和比较各类元启发式优化算法(如遗传算法、粒子群算法、差分进化、灰狼优化器、麻雀搜索算法等)的性能。核心目标是为全球优化算法研究者提供一个统一、公平、具有挑战性的测试平台,以客观地比较不同算法在解决复杂优化问题时的收敛精度、速度、鲁棒性和可扩展性。CEC2005 共包含 23 个测试函数(编号为 F1-F23):
在这里插入图片描述

  • 由于 CEC2005 函数的复杂性,如何绘制并呈现函数曲面成为难点之一,下面展示 SSA 在 CEC2005 测试集上的运行结果。

4 SSA 在 CEC2005 测试集上的运行结果

4.1 绘制 CEC2005 函数 3D 曲面并保存

F1-F12 函数曲面
在这里插入图片描述
F13-F23 函数曲面
在这里插入图片描述
单独保存函数曲面
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述
注意,当实际维度大于 2D 时,搜索历史并不准确。

4.3 SSA 在 CEC2005 函数上的运行结果(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] Suganthan P N, Hansen N, Liang J J, et al. Problem definitions and evaluation criteria for the CEC 2005 special session on real-parameter optimization[J]. KanGAL report, 2005, 2005005(2005): 2005.

6 MATLAB 代码

1、麻雀搜索算法(Sparrow Search Algorithm,SSA)论文和作者给出的代码已存放在工粽号(却相迎的小屋),回复 2020-SSA,诸君自取!
2、麻雀搜索算法(Sparrow Search Algorithm,SSA)在 CEC2005 测试集上的运行结果文件夹包括(却相迎的小屋):

  • CEC2005 测试集 PDF 文档
  • 麻雀搜索算法(Sparrow Search Algorithm,SSA)在 CEC2005 测试集上的运行代码(包括函数绘制、收敛曲线、等高线与搜索历史、箱线图和 3D 粒子轨迹图)
  • 注意:存在以下三点需在此说明:一是搜索历史显示仅在 2D 时为真实搜索历史;二是很多组合函数和混合函数没有 2D 时的数据;三是 3D 粒子轨迹图仅在维度等于 2D 时显示。

更多推荐