山上起了浓雾,你和几十位驴友组成的旅行团被困在连绵群山里,谁也没有整片山的地图。大家唯一能做的,是站上各自的采风点,报出自己的“视野评分”——谁的位置风景好,谁的位置望出去灰蒙蒙一片。这时惊喜来了:每个人都能悄悄记住自己这辈子见过的最美机位(哪怕已经走远了),还可以在对讲机里听到全团公认的顶流打卡点。于是你一边按自己的步伐惯性继续走,一边被“自己最满意的机位”和“全团最满意的机位”两股力量牵引着,朝下一个可能的风景点迈进。 这就是粒子群优化(PSO)的缩影。它把每一个候选解当作一个“粒子”,用一群粒子的协作搜索来逼近最优解:粒子按速度飞行、按位置被评分、记住个体最优、共享全局最优。1995 年,Kennedy 和 Eberhart 从鸟群觅食行为中获得灵感,提出了这套简单却强大的群体智能算法。它不需要梯度、不需要函数解析式,只靠群体协作和几个简单公式,就能在连续、非线性的复杂搜索空间里找到很好的解。本文就沿着这条“旅行团寻景”的主线,把 PSO 的原理、公式、参数、变种、收敛性、早熟问题与应用边界一次讲透。

岗位关联

掌握 PSO 是进入群体智能与元启发式优化的第一课;它简单、易实现、通用性强,是算法工程师做参数搜索与工程寻优时顺手好用的工具箱。

目录
  1. 可视化演示
  2. 算法原理:旅行团的寻景规则
  3. 数学建模:把挪窝写成公式
  4. 核心参数:调节旅行团的脾气
  5. 算法变种:装备升级之路
  6. 收敛性分析:旅行团会停在哪
  7. 早熟问题:全团扎堆的困局
  8. 应用场景:旅行团接活记
  9. 局限讨论:旅行团的短板
  10. AI 应用场景
  11. Python 演示
  12. 常见误区
  13. 面试题

可视化演示

展示系统处理流水线、实时性能指标曲线及多方案对比分析,包含数据流转、吞吐延迟监控与方案评估。

本节配有交互动效(进入视口后自动加载,约 3KB)。

系统可视化 处理流程:输入→处理→模型→输出 性能监控:实时指标 P=L×T

算法原理:旅行团的寻景规则

旅行团的第一课,是弄明白“谁在找路”。浓雾里几十位游客各自站在一个机位,手里没有地图,只有一部能测“视野评分”的相机。每个人都不知道哪座山头最漂亮,但每个人都知道自己当前位置的评分,也能通过喊话知道别人哪里风景好。

在 PSO 里,游客就是“粒子”。一个粒子对应一个候选解,游客站的位置就是解向量,相机的评分就是适应度函数,而“下一步往哪走”的意向就是粒子的速度。所谓优化,就是让这一群粒子在搜索空间里协作游走,最终落在评分最高的区域附近。

每轮迭代,每个粒子做三件事:第一,评估当前位置的适应度,若好于自己历史最优,就更新“个体最优 pbest”——相当于私藏的机位;第二,从群体中取出评分最高的位置作为“全局最优 gbest”——相当于群里口碑顶流机位;第三,综合当前速度、个体最优和全局最优,更新自己的速度和位置。通常 20~50 个粒子就足够支撑一次搜索。

正是这套“保留私藏、共享口碑、向前迈步”的简单规则,让旅行团不需要地图,也能在几十次“挪窝”后逼近最美的观景台。这也是 PSO 最迷人的地方:复杂的行为,可以由极简单的规则涌现出来。

数学建模:把挪窝写成公式

规则讲清楚了,下一步是把“挪窝”翻译成数学语言。旅行团里每个人做决定时,其实受三股力量拉扯:自身步伐的惯性、对私藏机位的留恋、以及群里顶流口碑的召唤。PSO 的核心,就是把这三股力量写进一条速度更新公式。

vid(t+1)=w vid(t)+c1r1(pid(t)−xid(t))+c2r2(gd(t)−xid(t))v_{id}^{(t+1)} = w\,v_{id}^{(t)} + c_1 r_1 \left(p_{id}^{(t)} - x_{id}^{(t)}\right) + c_2 r_2 \left(g_{d}^{(t)} - x_{id}^{(t)}\right)

具体地,设第 $i$ 个粒子在第 $d$ 维的位置为 $x_{id}$,速度为 $v_{id}$;$p_{id}$ 记个体最优,$g_d$ 记全局最优;$r_1$、$r_2$ 是 $[0,1]$ 均匀随机数,起抖动作用,避免粒子机械地直线冲向某一点。

1. 速度符号:$v_{id}^{(t+1)}$ 是第 $i$ 个粒子、第 $d$ 个维度、第 $t+1$ 轮的速度,决定游客下一步迈多远、朝哪个方向。

2. 惯性项:$w\,v_{id}^{(t)}$ 保留上一轮的速度,$w$ 是惯性权重——按老习惯大步走,还是谨慎慢行。

3. 认知项:$c_1 r_1 \left(p_{id}^{(t)} - x_{id}^{(t)}\right)$ 把自己拉向私藏的最美机位,$c_1$ 是对自己经验的信任度,$r_1$ 是随机扰动。

4. 社会项:$c_2 r_2 \left(g_{d}^{(t)} - x_{id}^{(t)}\right)$ 把自己拉向全团公认的顶流机位,$c_2$ 是对群体口碑的信任度。

有了新速度,位置更新就顺理成章了:

xid(t+1)=xid(t)+vid(t+1)x_{id}^{(t+1)} = x_{id}^{(t)} + v_{id}^{(t+1)}

有了这两条公式,旅行团的每次移动都有了明确指令:先算三股合力定速度,再沿速度方向迈一步,循环往复直到评分不再明显改善,或达到预设轮数。这个“评分不再变化”或“到达最大轮数”的条件,就是迭代终止条件——领队喊一声收工,全团就停下来。

vid(t+1)\displaystyle v_{id}^{(t+1)}
w vid(t)\displaystyle w\,v_{id}^{(t)}
c1r1(pid(t)−xid(t))\displaystyle c_1 r_1 \left(p_{id}^{(t)} - x_{id}^{(t)}\right)
c2r2(gd(t)−xid(t))\displaystyle c_2 r_2 \left(g_{d}^{(t)} - x_{id}^{(t)}\right)
直觉:位置更新就是“旧位置 + 速度”,速度本质上是每一轮的位移增量。
  1. 当前位置$x_{id}^{(t)}$ 是游客现在的机位坐标,一切移动都以它为起点。
    xid(t)\displaystyle x_{id}^{(t)}
  2. 位移叠加把新速度当作一步的位移加上去,就得到新位置 $x_{id}^{(t+1)}$。
    xid(t+1)=xid(t)+vid(t+1)\displaystyle x_{id}^{(t+1)} = x_{id}^{(t)} + v_{id}^{(t+1)}

核心参数:调节旅行团的脾气

同一个旅行团,换一个领队,走法可能完全不同。PSO 的脾气,由几个核心参数决定,它们直接左右“探索”与“开发”的平衡——也就是走远路找新地方,还是留在原地精雕细琢。

第一个是惯性权重 $w$。$w$ 较大时,粒子保留上一轮速度的比例高,飞得远、满山跑,偏全局探索;$w$ 较小时,速度衰减快,粒子很快停在附近小范围微调,偏局部开发。常用经验值在 $0.4 \sim 0.9$ 之间,很多实现会在迭代过程中让 $w$ 从大变小,先撒网后收网。

第二个是学习因子 $c_1$、$c_2$。$c_1$ 大,粒子更相信自己走过的路;$c_2$ 大,粒子更盲从群体口碑。两者之和过大,粒子会被拉得来回乱窜;通常都取 $1.5 \sim 2.0$ 附近。

此外还有种群规模和最大速度限制。粒子数太少容易早熟,太多则每轮评估成本线性上涨,20~50 个通常够用;最大速度限制则像给旅行团大巴装上的限速器,防止某一步迈出太远、直接冲出搜索边界。调参的本质,就是给旅行团调出一个既敢探索、又稳得住的性格。

算法变种:装备升级之路

标准 PSO 只是“全班人马”,各种变种则是给旅行团逐代升级装备。最常见的升级,是让惯性权重不再是固定值,而是随迭代递减——前期步子迈大到处撒网,后期步子放小精细雕琢,这就是线性递减权重法:

w=wmax⁡−tTmax⁡(wmax⁡−wmin⁡)w = w_{\max} - \frac{t}{T_{\max}}\left(w_{\max} - w_{\min}\right)

1. 权重上下界:$w_{\max}$ 和 $w_{\min}$ 是惯性权重的上下界,通常取 $0.9$ 和 $0.4$。

2. 迭代进度:$t / T_{\max}$ 表示当前轮次在总轮次中的占比,从 $0$ 逐渐走到 $1$。

3. 整体递减:$w$ 从 $w_{\max}$ 线性降到 $w_{\min}$,搜索策略由“大范围探索”平滑过渡到“局部精修”。

另一个经典升级是 Clerc 等人在 2002 年提出的压缩因子法。它给速度更新整体乘上一个小于 1 的收缩系数 $\chi$,等于给粒子装了一个“内置刹车”:

χ=2∣2−φ−φ2−4φ∣,φ=c1+c2>4\chi = \frac{2}{\left|2 - \varphi - \sqrt{\varphi^2 - 4\varphi}\right|}, \quad \varphi = c_1 + c_2 > 4

除此之外,还有自适应权重变种(根据群体多样性实时调整 $w$)和混合改进策略(与遗传算法交叉变异、模拟退火等结合,取长补短)。装备越换越好,旅行团既跑得远,又停得稳。

wmax⁡,  wmin⁡\displaystyle w_{\max},\; w_{\min}
tTmax⁡\displaystyle \frac{t}{T_{\max}}
wmax⁡−tTmax⁡(wmax⁡−wmin⁡)\displaystyle w_{\max} - \frac{t}{T_{\max}}\left(w_{\max} - w_{\min}\right)
直觉:压缩因子像一个内置刹车,让速度整体收缩,不必担心冲过头。
  1. 协作强度$\varphi = c_1 + c_2 > 4$ 表示两类学习拉力之和,代表群体协作的整体强度。
    φ=c1+c2>4\displaystyle \varphi = c_1 + c_2 > 4
  2. 收缩系数由 $\varphi$ 构造的 $\chi$ 小于 1,是速度的“刹车”,保证步长不会无限增大。
    χ=2∣2−φ−φ2−4φ∣\displaystyle \chi = \frac{2}{\left| 2 - \varphi - \sqrt{\varphi^2 - 4\varphi} \right|}
  3. 应用方式速度更新整体乘以 $\chi$,在不需要单独设置最大速度的情况下也能稳定收敛。
    vid(t+1)=χ[vid(t)+c1r1(pid(t)−xid(t))+c2r2(gd(t)−xid(t))]\displaystyle v_{id}^{(t+1)} = \chi \left[ v_{id}^{(t)} + c_1 r_1 \left(p_{id}^{(t)} - x_{id}^{(t)}\right) + c_2 r_2 \left(g_{d}^{(t)} - x_{id}^{(t)}\right) \right]

收敛性分析:旅行团会停在哪

变着花样升级之后,一个根本问题浮现出来:这一群人和这一群粒子,最终到底停在哪里?这就是收敛性分析。PSO 的迭代不是无限持续的,参数选得不好,全团可能永远停不下来。

0<w<1,φ=c1+c2<4(1+w)0 < w < 1, \quad \varphi = c_1 + c_2 < 4(1 + w)

1. 惯性范围:$0 < w < 1$ 保证上一轮速度被“打折”而不是放大,避免速度无限积累。

2. 学习上限:$\varphi < 4(1 + w)$ 要求两股学习拉力的合力不能太大,防止粒子来回冲撞。

3. 综合结论:两个条件同时满足时,简化模型下粒子轨迹的特征值落在单位圆内,粒子群稳定收敛。

需要说明的是,这是对随机项取平均后的简化分析,实际使用时要留出余量。直观地看:$w$ 接近 0 时粒子很快“刹停”,容易错过远处高峰;$w$ 接近 1 且 $\varphi$ 又大,粒子高速振荡甚至发散。与此同时,收敛速度与收敛精度是一对矛盾:收敛太快容易扎进局部最优,收敛太慢则浪费大量轮次。理解这个权衡,才能为具体问题选择合适的参数区间——旅行团要在“到处找”与“原地停”之间找到合适节奏。

0<w<1\displaystyle 0 < w < 1
φ<4(1+w)\displaystyle \varphi < 4(1 + w)
φ=c1+c2<4(1+w),0<w<1\displaystyle \varphi = c_1 + c_2 < 4(1 + w), \quad 0 < w < 1

早熟问题:全团扎堆的困局

最让旅行团头疼的事发生了:对讲机里突然安静,所有人都挤向了同一个普通机位,评分再也升不上去。这就是早熟收敛——粒子群过早聚集,群体失去继续前进的动力。

之所以会早熟,根源在于全局最优 gbest 的引力太强。一旦某个粒子发现了稍好的位置,其他粒子都会被快速拉拢过去,粒子之间的差异越来越小,多样性丢失。当所有粒子几乎重叠在同一个局部极值附近时,搜索退化成原地微调,再也跳不出陷阱。就像全团都涌向一个“还不错的机位”,没有人愿意再走进浓雾里探路。

应对早熟,有几类常用策略。第一,增大或自适应调高惯性权重,让粒子“壮胆”继续大步探索;第二,随机重新初始化部分粒子,相当于派几个大胆的队员去远处侦察;第三,保持群体多样性,例如改用环形拓扑、小生境技术,让信息不完全连通,避免所有粒子只听一个“顶流”的意见;第四,引入变异算子,让个别粒子随机跳离当前位置。聪明的领队会在全团快扎堆时喊一声“再探探远处”——早熟不是无解,关键是在群体层面始终保持多样性。

应用场景:旅行团接活记

学会了原理和防翻车技巧,旅行团就可以接商业单了。凡是“候选解多、评估函数可算、又找不到解析式”的优化问题,几乎都能请 PSO 出手。

连续优化是 PSO 的主场。非线性、不可导的目标函数求极值,只需要写好适应度函数即可驱动搜索,不需要梯度信息。工程优化中,天线尺寸、机械结构参数、电路元件取值这类“黑盒仿真 + 多参数耦合”的问题,PSO 尤其好用——仿真软件算一次评分,粒子群负责搜参数,二者配合默契。

在 AI 领域,机器学习超参数调优是近年最热的落地场景之一。把学习率、正则化系数、树的深度等编码成粒子的位置,用验证集指标当作适应度评分,几十轮迭代就能逼近不错的超参组合,比手动试错高效得多。组合优化(调度、布局、路径规划)则通过离散编码、取整或映射到连续空间,同样能套用 PSO 的框架。无论哪种场景,本质都是同一套“私藏 + 口碑 + 惯性”的规则在工作——旅行团只是换了一份地图,走路的路子还是老路子。

局限讨论:旅行团的短板

再能干的旅行团也有短板。PSO 在高维、多峰、大规模问题上容易早熟且收敛变慢;参数 $w$、$c_1$、$c_2$ 对结果相当敏感,换一个优化问题往往需要重新调参,这给新手带来了不小的门槛。

与遗传算法(GA)相比,二者的性格差异很明显。PSO 参数少、实现简单、收敛快,适合快速拿到不错的解;GA 依靠交叉与变异维持种群多样性,全局搜索更稳健,但参数更多、调起来更繁琐。实际工程中,两者常被混合使用:先用 GA 类算子保持多样性,再用 PSO 的快收敛做局部精修。

未来的改进方向也很清晰:自适应参数让算法自己调脾气;多目标 PSO 同时优化多个冲突指标;拓扑结构改进让信息传播更有层次;与深度学习结合做网络结构搜索等。认识局限不是为了否定它,而是为了知道什么时候该请这支旅行团,什么时候该换别的队伍——选对工具,本身就是算法工程师的核心能力。

AI 应用场景

机器学习超参数自动调优

阶段:模型训练与超参数搜索阶段

解决的问题:传统网格搜索随超参数维度指数爆炸,手动试错依赖经验且耗时。PSO 把一组超参数当作一个粒子,把验证集指标当作适应度,用“私藏 + 口碑”的协作机制快速逼近较优组合。

具体案例:某推荐系统团队用 PSO 搜索 LightGBM 的学习率、叶子数、正则化系数,把原先 2000 组网格搜索缩减为 100 轮内完成,离线 AUC 提升了 1.2 个百分点。

工程结构参数优化

阶段:工程仿真与设计优化阶段

解决的问题:天线、机械臂、电路设计参数多且相互耦合,手工试凑在仿真软件里效率极低。PSO 不要求目标函数可导,黑盒评估即可驱动搜索,适合“仿真软件算分、粒子群找参”的配合模式。

具体案例:天线工程师用 PSO 优化贴片天线的 5 个尺寸参数,以电磁仿真增益为适应度,约 80 轮迭代后增益提升了 1.6 dB,显著缩短了设计周期。

特征选择与组合优化

阶段:数据预处理与特征工程阶段

解决的问题:高维数据中存在大量冗余特征,逐一验证会导致组合爆炸。把特征子集编码成二进制粒子,用分类准确率当适应度,即可用 PSO 搜索优选特征组合。

具体案例:金融风控场景用 PSO 从 200 个候选特征中选出 30 个,建模效果接近全量特征,训练时间缩短约 70%。

Python 演示

python56 行
import mathimport random  def peak(x, y, cx, cy, s, height):    d2 = (x - cx) ** 2 + (y - cy) ** 2    return height * math.exp(-d2 / s)  def fitness(pos):    # 两个山峰: 全局峰在 (7,7), 局部峰在 (2,2)    x, y = pos[0], pos[1]    return peak(x, y, 7, 7, 8, 1.0) + peak(x, y, 2, 2, 2, 0.7)  class Particle:    def __init__(self, dim, low, high):        self.position = [random.uniform(low, high) for _ in range(dim)]        self.velocity = [0.0] * dim        self.pbest_pos = self.position[:]        self.pbest_fit = fitness(self.position)     def update(self, w, c1, c2, gbest_pos):        for d in range(len(self.position)):            r1, r2 = random.random(), random.random()            cognitive = c1 * r1 * (self.pbest_pos[d] - self.position[d])            social = c2 * r2 * (gbest_pos[d] - self.position[d])            self.velocity[d] = w * self.velocity[d] + cognitive + social            self.position[d] += self.velocity[d]        current_fit = fitness(self.position)        if current_fit > self.pbest_fit:            self.pbest_fit = current_fit            self.pbest_pos = self.position[:]  def run_pso(swarm_size=30, dim=2, low=-10, high=10, w=0.7, c1=1.5, c2=1.5, rounds=120):    swarm = [Particle(dim, low, high) for _ in range(swarm_size)]    gbest_pos = swarm[0].pbest_pos[:]    gbest_fit = swarm[0].pbest_fit    for p in swarm:        if p.pbest_fit > gbest_fit:            gbest_pos = p.pbest_pos[:]            gbest_fit = p.pbest_fit    for _ in range(rounds):        for p in swarm:            p.update(w, c1, c2, gbest_pos)            if p.pbest_fit > gbest_fit:                gbest_pos = p.pbest_pos[:]                gbest_fit = p.pbest_fit    return gbest_pos, gbest_fit  if __name__ == "__main__":    best_pos, best_fit = run_pso()    print("best position:", [round(v, 3) for v in best_pos])    print("best fitness:", round(best_fit, 4))
目的:用 30 个粒子在双峰函数上跑 120 轮标准 PSO,验证粒子群协作能否避开局部峰、逼近全局最优。
  1. class Particle:每个粒子保存位置、速度、个体最优位置与个体最优评分,对应旅行团里每位游客的全套记忆。
  2. self.pbest_fit = fitness(self.position)初始化时就记住自己的私藏机位,作为后续比较的基准。
  3. cognitive = c1 * r1 * (self.pbest_pos[d] - self.position[d])认知项:把自己拉向个体最优位置。
  4. social = c2 * r2 * (gbest_pos[d] - self.position[d])社会项:把自己拉向全局最优位置。
  5. self.velocity[d] = w * self.velocity[d] + cognitive + social三股力量合成新速度,惯性、认知、社会缺一不可。
  6. self.position[d] += self.velocity[d]位置叠加速度,粒子向前迈出一步。
  7. if p.pbest_fit > gbest_fit:每轮结束后同步全局最优,让口碑信息在全团传播。
  8. if __name__ == "__main__":脚本入口,运行一次完整搜索并打印最终结果。

常见误区

误区只要让 PSO 迭代足够多轮,就一定能找到全局最优解,找不到只是因为轮数不够。

正解标准 PSO 没有“全局收敛”的理论保证。它的搜索靠向 gbest 靠拢,如果群体过早扎堆到一个局部较优点,后续轮次基本在原地打转。就像旅行团全挤进一个普通机位,拍再久也看不到山顶。要逼近全局最优,通常需要配合变种改进或多次随机重启。

为何常见:每轮 pbest/gbest 的评分确实在提升,迭代曲线一直变好,看起来很“收敛”,于是误以为再跑一会儿就能到全局最优。

误区惯性权重 w 越大越好,速度大、跑得远,收敛当然更快。

正解w 控制的是“保留上一轮速度的比例”。w 太大,粒子会来回振荡、甚至飞出搜索边界,像爬山时油门踩满刹不住车;w 太小,群体又早早停下、探索不足。常用做法是让 w 从 0.9 线性递减到 0.4 左右。

为何常见:把“速度快”直观等同于“搜索效率高”,忽略了过冲与发散的风险。

误区粒子数量越多,PSO 覆盖的空间越密,效果一定越好。

正解粒子数从 10 增到 50 效果提升明显,但从 50 增到 200 收益很小,而每轮适应度评估成本线性增长。如果评估一次仿真要几分钟,粒子数翻倍等于时间翻倍。旅行团人再多,也还是按同一套规则移动,盲目加大人数不如调好参数。

为何常见:人多力量大的直觉,忽略了群体行为趋同与计算成本的问题。

误区PSO 的速度和位置公式都是实数向量,所以只能处理连续优化,离散组合问题没法用。

正解连续向量只是默认表示。组合优化可以通过二进制编码、置换编码、取整或映射到连续空间来套用 PSO。调度、布局、路径规划等经典组合问题都有成熟的 PSO 求解方案。

为何常见:公式用实数书写,让人误以为算法被限制在连续空间里,忽略了表示的灵活性。

面试题

Q1. 粒子群优化的核心灵感来源于什么?

单选题 · easy

  • A.蚂蚁搬运食物的路线
  • B.鸟群觅食的群体协作← 正确答案
  • C.蜜蜂采蜜的舞蹈信号
  • D.鱼群躲避天敌的游动

答案:B。1995 年 Kennedy 和 Eberhart 正是受鸟群觅食时“个体经验 + 群体信息”协作机制的启发提出 PSO。蚂蚁、蜜蜂对应蚁群算法、蜂群算法等,鱼群对应人工鱼群算法,它们同属群体智能但并非 PSO 的直接灵感来源。就像 PSO 的“出生证明”上写的就是鸟群。

Q2. 在粒子群优化中,一个粒子主要代表什么?

单选题 · easy

  • A.一组候选解向量← 正确答案
  • B.一个固定学习率
  • C.一个网络层结构
  • D.一个训练数据集

答案:A。每个粒子在搜索空间里就是一个候选解,位置就是解向量,适应度函数评价它的好坏。学习率、网络层是神经网络概念,数据集是训练素材,都不是候选解。就像旅行团里每位游客代表一条可能的路线,而不是某个背包或相机。

Q3. 粒子的适应度值是通过什么得到的?

单选题 · easy

  • A.适应度函数计算← 正确答案
  • B.粒子速度叠加
  • C.粒子数量相乘
  • D.随机数生成器

答案:A。适应度值就是把粒子位置代入适应度函数算出的评分,这个评分驱动所有更新决策。速度是更新手段,数量是规模参数,随机数只是更新中的扰动,都不是“评分”的来源。好比相机的视野评分必须拍一张才算得出来。

Q4. 在速度更新公式中,w 乘上一轮速度这一项表示什么?

单选题 · mid

  • A.保持飞行的惯性← 正确答案
  • B.强制停下不动
  • C.直接跳到最优
  • D.随机改变方向

答案:A。w·v 项原样保留上一轮速度,体现粒子的飞行惯性;若 w=0,粒子速度每轮只由两股学习拉力决定,很快失去“动量”。惯性就像你习惯的走路节奏,刹车太狠反而容易站不稳。

Q5. 惯性权重 w 较大时,粒子群整体倾向哪种行为?

单选题 · mid

  • A.偏向全局搜索探索← 正确答案
  • B.偏向局部区域开发
  • C.直接停止位置更新
  • D.沿梯度方向下降

答案:A。w 大意味着保留上轮速度多,粒子飞得远、不易被局部峰值勾住,倾向全局探索;w 小则速度衰减快,粒子在小范围精修。因此许多策略让 w 从大到小变化。就像旅行团先大步跑遍山野,再停下来细品好机位。

Q6. 早熟收敛现象的典型表现是什么?

单选题 · mid

  • A.粒子群过早聚于局部最优← 正确答案
  • B.粒子群围绕全局最优振动
  • C.粒子群初始速度持续增大
  • D.粒子群适应度始终为零

答案:A。早熟收敛指群体多样性骤降、全部粒子挤在某个局部极值附近,评分不再上升。围绕全局最优振动是理想状态,速度持续增大是发散症状。全团挤进一个普通机位再也不动,就是早熟。

Q7. 下列哪些因素会影响 PSO 的收敛效果?

多选题 · mid

  • A.惯性权重 w 的设定← 正确答案
  • B.学习因子 c1 与 c2← 正确答案
  • C.粒子群的数量规模← 正确答案
  • D.输出结果的小数位数

答案:ABC。w、c1/c2、种群规模分别控制惯性、信任拉力和群体覆盖度,是影响收敛的核心参数。输出结果的小数位数只影响显示,不影响搜索过程。旅行团的步法、信任和人数都影响能否找到好机位,但相机精度只影响照片呈现。

Q8. 关于学习因子之和 φ 与稳定性,下列说法正确的是?

单选题 · hard

  • A.φ 过大会使轨迹发散失稳← 正确答案
  • B.φ 过大会让收敛速度变慢
  • C.φ 等于零时效率最高
  • D.φ 对稳定性没有影响

答案:A。稳定性分析中,学习拉力之和 φ 过大会使系统特征值超出单位圆,粒子轨迹发散震荡。φ 存在由 w 决定的临界上限(如 φ < 4(1+w))。拽得太猛,风筝线会绷断。

Q9. 下列哪些策略能缓解 PSO 的早熟收敛问题?

多选题 · hard

  • A.动态调整惯性权重大小← 正确答案
  • B.重新初始化部分粒子← 正确答案
  • C.保持种群多样性机制← 正确答案
  • D.一次性调大所有速度上限

答案:ABC。动态调整 w、重新初始化部分粒子、保持多样性都是对抗早熟的标准手段;单纯调大速度上限不能缓解扎堆,反而可能引发发散。给扎堆的旅行团派“侦察兵”出去探路才是正解。

Q10. 压缩因子法引入系数 χ 的核心意图是什么?

单选题 · extreme

  • A.无速度上限时稳定收敛← 正确答案
  • B.让粒子速度不断增大
  • C.把连续问题变成离散问题
  • D.完全替代原适应度函数

答案:A。压缩因子法(Clerc, 2002)让速度更新整体乘上小于 1 的 χ,在数学上保证轨迹收敛,因此可以不设置最大速度上限。它不改变粒子数、不放大速度、也不替代适应度函数。χ 就是旅行团大巴上的限速器,油门再大也不会失控。