4. 基准测试函数与评估指标

调参之前必须先有一把“尺子”。粒子群优化(PSO)没有梯度信息、没有解析最优路径,算法好坏只能通过在一组已知最优解的测试函数上反复运行来度量。基准测试函数提供“标准答案”,评估指标则把多次运行的原始数据压缩成可比较的数字。本节围绕四个最常用的测试函数和三类核心指标展开,并给出可直接套用的实验记录方式。

一、四个必知测试函数:它们各自“卡”住算法的什么能力

测试函数按地形分为单峰与多峰两类。单峰函数只有一个全局最优,考察的是收敛速度与开发(exploitation)能力;多峰函数存在大量局部最优,考察的是全局探索(exploration)与跳出局部极值的能力。四个函数的标准定义(均以求最小值为例)如下:

  • Sphere:f(x)=Σxi2,最优值 0,位于原点。地形是光滑碗状,无局部陷阱,几乎所有 PSO 变体都能收敛,主要用来观察收敛速度与初期下降斜率。
  • Rosenbrock:f(x)=Σ[100(xi+1−xi2)2+(1−xi)2],最优值 0,位于全 1 向量。存在一条狭长的弯曲山谷,最优解在谷底尽头,算法容易沿谷壁来回震荡、进展缓慢,是检验方向协调性的经典难题。
  • Rastrigin:f(x)=10n+Σ[xi2−10cos(2πxi)],最优值 0,位于原点。余弦项制造出大量规则分布的局部极小,是检验跳出局部最优能力的标准多峰函数。
  • Griewank:f(x)=1+Σxi2/4000−Πcos(xi/√i),最优值 0,位于原点。乘积项使局部极值随维度增加而密集,且各维耦合,用于检验高维下的探索均匀性。

实践中的常见配置是:维度取 10 或 30,搜索空间统一设为 [−5.12, 5.12](Rastrigin、Griewank 常用)或 [−30, 30](Sphere、Rosenbrock 常用),种群规模 30~50,最大评价次数固定为 10000 或 20000。注意:比较不同算法时必须固定评价次数而非迭代代数,否则种群规模大的算法会因每代评价更多而占便宜,结论失真。

四类基准函数:地形特征 → 考察能力 → 典型失败表现 Sphere(单峰) 光滑碗状,唯一最优 考察:收敛速度 与开发能力 失败表现:后期 步长过大,精度不足 Rosenbrock(单峰) 狭长弯曲山谷 考察:方向协调性 失败表现:沿谷壁 震荡,进展缓慢 Rastrigin(多峰) 规则分布的大量局部极小 考察:跳出局部最优 失败表现:早熟收敛 于某个局部谷底 Griewank(多峰) 局部极值随维度密集 考察:高维探索均匀性 失败表现:维度升高 后精度骤降

二、三类评估指标:从一条曲线到一组统计量

收敛曲线是最直观的工具:横轴为评价次数(或迭代代数),纵轴为当前全局最优适应度,通常取对数坐标。单次运行的曲线只能看趋势,规范做法是独立运行 30 次以上,绘制中位数曲线并叠加四分位带,这样既能看出典型收敛速度,也能看出运行间的离散程度。观察要点有三个:初期下降斜率反映探索效率;曲线何时进入平台期反映收敛速度;平台高度反映最终精度。

成功率(Success Rate, SR)定义为达到预设精度阈值的运行次数占总运行次数的比例。阈值必须事先声明,例如对 Sphere 取 f≤1e−6、对 Rastrigin 取 f≤1e−2,不同函数阈值不同,不能混用。SR 回答的是“算法能不能稳定找到足够好的解”,对多峰函数尤其关键。

稳定性用多次运行最终适应度的统计量刻画:均值反映整体水平,标准差或四分位距(IQR)反映波动,最差值与最优值给出边界。一个均值好但标准差大的算法,在工程上往往不如均值稍差但波动小的算法可靠。此外还可记录平均收敛代数(首次达到阈值的评价次数均值),用于比较达到同等精度所需的代价。

建议同时报告“均值±标准差”和“中位数[IQR]”两组统计量。适应度分布常呈右偏(少数运行卡在局部最优),此时均值会被拉高,中位数更能代表典型表现。

三、一次可复现的对比实验怎么做

下面给出一个最小但完整的实验记录结构,可直接作为实验日志模板使用。假设比较标准 PSO 与惯性权重线性递减 PSO(w 从 0.9 降到 0.4),在 30 维 Rastrigin 上各跑 30 次,最大评价次数 20000,阈值 1e−2。

实验配置
  函数: Rastrigin, D=30, 搜索空间 [-5.12, 5.12]
  算法A: PSO, w=0.729, c1=c2=1.494
  算法B: PSO-LDIW, w: 0.9→0.4 线性递减, c1=c2=1.494
  种群: 40, 最大评价次数: 20000, 独立运行: 30 次
  成功阈值: 最终适应度 ≤ 1e-2

记录字段(每次运行一行)
  run_id, algo, best_fitness, evals_to_threshold, success(0/1)

汇总输出
  SR = sum(success)/30
  均值±标准差、中位数[IQR]、最差值
  平均收敛代数(仅统计成功运行)
  收敛曲线: 每 200 次评价采样一次全局最优,取 30 次的中位数与四分位

结果判读时不要只看一个数字。若算法 B 的 SR 明显高于 A,但平均收敛代数也更长,说明它用更多评价换取了可靠性,是否值得取决于实际问题的评价成本。若两者 SR 接近而 B 的 IQR 更小,则 B 在稳定性上占优。若某算法在 Sphere 上曲线漂亮、在 Rastrigin 上平台很高,说明其探索能力不足,调参方向应转向增大惯性权重上限、提高认知/社会系数中的探索分量,或引入重启与变异机制。

常见误区:只跑 5 次就下结论;用不同评价次数比较不同种群规模的算法;对多峰函数只报告最优值而不报告成功率;收敛曲线只画单次运行。这些做法都会让调参结论不可靠,甚至把随机波动误判为参数改进。

把四个函数、三类指标和固定评价次数的实验协议组合起来,就构成了一套可重复的评估基线。后续任何参数调整或算法改进,都应在这套基线上对比,用成功率判断可靠性、用统计量判断稳定性、用收敛曲线判断速度,三者结合才能得出站得住脚的调参结论。