粒子群优化(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」时, 在一代里被读取的时刻不同。实现中择一并在可复现说明里与代码写清。