看到这篇论文标题的时候,我第一反应是:又是一个给粒子群换壳做局部搜索的改进工作?但真正把 LDS 初始化、CG 局部搜索和异构综合学习粒子群算法放在同一个框架里走一遍实验后,我的看法变了。这篇 SEVC 二区工作本质上不是做加法,而是把“初始采样质量”“进化轮次分工”和“后期精修策略”三个相对独立的环节,用非常克制的节奏串了起来。适合正在做群体智能算法改进的研究生,也适合想拿 PSO 做连续优化工程的算法工程师阅读。下面我会把算法的设计动机、核心实现细节、以及我自己按同样配置复现出来的性能数据,全部拆开讲。
1. 异构综合学习框架的瓶颈与新组合思路
1.1 从原始 PSO 到异构双群综合学习的演进
很多新手容易把 PSO 想成一个万能优化器,实际跑起来就会发现经典 PSO 在单峰函数上收敛很快,可一到 Rastrigin、Griewank 这类多峰函数上,经常在迭代中期就陷入局部最优。根本原因在于所有粒子共享同一个全局最优 gbest,社会项会把整个种群迅速拉向当前找到的最好位置,一旦这个位置是局部陷阱,整个种群几乎没有自救能力。
后续改进主要沿着两个方向走:一是让粒子不要只向 gbest 学习,CLPSO 提出综合学习策略,每个粒子的每一维都可以独立地从其他粒子的历史最优中学习,相当于把“跟风”变成“选择性借鉴”。二是引入异构种群,HCLPSO 把种群分成勘探子群和开发子群,勘探组主要负责大范围搜索,开发组专注于局部细化。这样设计的好处是勘探子群不需要被全局最优束缚,能给开发组持续提供多样化的候选区域。
HCLPSO 在 CEC 测试集上比 CLPSO 有明显进步,但依然存在两个容易被忽略的短板。第一,初始种群仍然靠均匀随机分布生成,高维空间里伪随机数的分布非常不稳定,不同运行之间种群覆盖率差异很大。第二,开发子群虽然负责精细搜索,但 PSO 的速度-位移更新本质上是在做一阶信息融合,粒子很难在高维空间中精确滑入极小值点。这就是论文引入低差异序列和共轭梯度法的直接动机。
1.2 用低差异序列提升“第一公里”的种群质量
绝大多数 PSO 改进都在修改速度更新公式,却很少有人质疑初始种群是怎么产生的。标准做法是从均匀分布 U(0,1) 里抽取随机数,乘以边界范围生成初始坐标。这个做法本身不坏,但在高维空间里有个很麻烦的特点:伪随机数会产生聚集和空洞,某些区域粒子扎堆,某些区域几乎没人探索。
低差异序列和普通伪随机数的本质区别在于:它生成的样本不是“看起来随机”,而是刻意追求空间分布上的均匀性。Halton 序列、Sobol 序列都属于这一类。比如在二维平面生成 100 个点,伪随机数分布有明显空隙,Sobol 序列却能让每个子区域的点数大体一致。把这种均匀性放到 30 维问题里,初始种群对搜索空间的覆盖会更完整,后续进化也就不容易因为开局偏置而漏掉一些潜在最优区域。
论文用低差异序列替代随机初始化,本质上是在改善粒子群算法的“第一公里”。这一步的收益在单次运行中往往看不明显,但如果你把相同算法跑 30 次再对比平均值和标准差,就会发现初代种群的方差显著下降,算法整体的稳定性好了很多。这个特性对 SCI 级别的实验统计非常关键,因为审稿人最讨厌看到的就是高方差、不可复现的结果。
1.3 用共轭梯度法补上“最后一公里”的收敛精度
粒子群这类基于群体的算法适合做全局勘探,却不擅长在极小值附近做精细收敛。原因很直观:速度更新依赖惯性权重和历史最优,粒子会在最优解附近来回震荡,很难像牛顿法那样精准定位。梯度下降虽然局部收敛能力强,但普通最速下降法在病态函数上会出现锯齿形路径,收敛速度极慢。
共轭梯度法正好处在两者之间,它只需要一阶导数信息,却能通过构造一组共轭方向避免最速下降的反复震荡。论文的设计思路是:在 HCLPSO 主循环运行若干代之后,从当前全局最优位置出发执行若干次共轭梯度迭代,让粒子学会沿着更有效的方向逼近局部极小。相当于让勘探过程负责“找到山”,让共轭梯度负责“爬到山顶”。
这里需要强调的是,CG 局部搜索不能全程频繁开启,否则会抢占大量适应度评估次数。论文里设计的触发逻辑非常关键:不能每代都对 gbest 做 CG 精修,而是只在整个种群开始收敛或全局最优连续多代没有改善时启用。这样才能把额外的评估次数花在刀刃上。
