Skip to content

粒子群优化(Particle Swarm Optimization, PSO)

粒子群优化将候选解表示为在搜索空间中的一群「粒子」,通过速度—位置迭代,使粒子既跟随自身曾发现的优良区域,又跟随群体曾发现的优良区域,从而在 中搜索。属群体式元启发式,见 元启发式总览。经典连续 PSO 由 Kennedy 与 Eberhart 在 1995 年前后提出,最初思想来自对鸟群觅食、鱼群等「社会性协调」的简化模拟:个体根据局部信息与群体信息同时调整运动。


核心概念

粒子与状态:下标 表示第 个粒子。第 维上(), 为第 代时位置, 为同代速度。向量形式记为 。分量形式用于写出第 维上的速度、位置式。

个体极值 pbest:粒子 自搜索开始至今、使 最优(最小化时最小、最大化时取最大)的解,记为 ;在分量上写为 。它相当于「我走过的最好点」。

群体极值(gbest 或 lbest):在全局 PSO 中,用全体粒子的 pbest 中使 最优者作为 (分量为 ),即「全群已知的最好点」。在局部 PSO 中, 可改为只由若干邻居粒子的 pbest 竞争得到,以减轻早收敛。下文如未另说明, 指全群 gbest 对应的位置。


标准速度式与位置式(标量-分量写法)

在最小化、且采用全局 的写法下,常把第 维上的更新写为

其后更新位置

惯性项:式中 保留上一步运动趋势; 较大时粒子更敢沿原方向冲,探索性增强; 较小时更依赖后两项拉向 pbest 与 gbest,细调性增强。许多实现中令 随时间线性或分段下降,使前期偏探索、后期偏压紧到优区。

认知项:式中 将粒子 从当前 向自己的历史最优点 拉动,系数 控制「对自己经验的信任度」, 上均匀随机,使每次迭代带有随机性,减少全体粒子同步卡在相同局部图样的可能。

社会项:式中 将当前位置向当前的群体最优 拉动, 控制「对群体信息的信任度」, 独立同分布,作用与认知项类似,但指向全局(或邻域)共识。

为标量时,每一代内各维共用同一对随机数,实现简单;更常见是 为与位置同维的向量、各维独立均匀随机,此时三项写成向量形式,随机项与 用 Hadamard 积 相乘。两种约定搜索随机性不同,写实验报告时应写明采用的是哪一种。


向量形式

对粒子 ,令 为向量。一步更新为

其中 上独立且各分量 i.i.d. 均匀。 表示分量为乘。若 在一代内对所有 取同一全群最优,则上式即全局 gbest PSO。更新完 后,在最小化中若 ;再在所有 上更新


参数与工程注意

惯性、认知与社会系数(

  • 略小于 常较稳; 常在 内,文献中常见在 2.0 附近取初值。
  • 过大:速度每步放大,易越界或数值溢出。
  • 过小:过早贴紧当前 ,早熟。实践中常将 从较大值随时间线性减到较小值。
  • 大:更信个体经验,多样性常稍好。
  • 大:更信群体,更快贴向当前 。与 可配合压缩因子等稳定迭代(以所读文献与所用库为准)。

的拓扑

  • 最简:全群共用一个 gbest。
  • 粒子多时:每只只在环形、Von Neumann 等邻接集内比 pbest,用 lbest 代替全局 ,减轻早收敛。

可行与边界:越界时可投影回盒、将 、反弹、或对不可行用罚函数;须与实现一致、便于复现比较。

离散/组合 PSO 为排列、整数向量时,加法和 需重定义(概率扰动、交换子、与 GA 算子混用等),本页连续式不直接成立,宜单独实现编码与算子。


主循环(最小化、全局 gbest,示意框)

设目标 在盒约束或 上可计算。 为粒子的个体最优, 为全群 gbest 位置。下框在每一外代中:用当前 做速度、位置更新,再计算 并回写 pbest 与 gbest,直至外终止条件满足。

▶ 粒子群优化 主循环(速度—位置、全局 g)

1. 初始化

在可行域上随机或启发式设置各粒子的 。评价各 。令 (在粒子集合上取 最小者所对应位置;并列时任取一约定)。

2. 每一代(外循环未终止前重复执行)

对全体粒子下标 更新( 的遍历顺序实现可定稿;单线程下无竞态;若并行更新 需规定读写规则):

  • 速度更新: 为惯性权重; 为非负常数; 上独立均匀随机向量,与 同维, 为逐分量相乘; 为当前全体最优位置。
  • 位置与边界:。若存在盒约束或域边界,对 做截断或反弹等,以保持可行或满足实现约定。
  • 评价与极值:若 ,令 ;若 产生新的群体最优,则更新
    若仍未达最大代数/评价次数/时间/无改进等外终止条件,回到本步再次执行一代;否则进入下一步。

3. 输出

输出 (或使 最小的 与记录)。

:同一代里也可先据 更新 pbest、gbest 再按公式改 ;与框中「先改 再评 并更 pbest、gbest」时, 在一代里被读取的时刻不同。实现中择一并在可复现说明里与代码写清。

个人笔记