MATLAB 向量和矩阵一:向量
粒子群优化算法(Particle Swarm Optimization, PSO)学习笔记
1. 算法核心思想 🐦
粒子群优化算法是一种模拟鸟群觅食行为的群体智能启发式搜索算法。
- 原理:鸟群在寻找食物时,并没有单只鸟知道食物的具体位置,但它们能感知到“哪只鸟距离食物最近”。
- 机制:整个种群通过信息共享与自我经验的结合,共同向当前已知的最优区域靠拢,从而逐步找到全局最优解。
2. 粒子的“思考”逻辑 🧠
每个粒子代表解空间中的一个潜在解,它在每次迭代中通过更新位置和速度来“飞行”。粒子的决定受到三个维度的力量牵引:
- 惯性 (Inertia):保持之前的运动方向(过去的惯性速度 $v$)。
- 个体经验 (Individual Memory):飞向自身历史找到的最佳位置($pbest$)。
- 群体智慧 (Social Influence):飞向整个种群历史找到的最佳位置($gbest$)。
位置与速度更新公式
\[v_{i}^{(t+1)} = w \cdot v_{i}^{(t)} + c_1 \cdot r_1 \cdot (pbest_i - x_i^{(t)}) + c_2 \cdot r_2 \cdot (gbest - x_i^{(t)})\] \[x_{i}^{(t+1)} = x_i^{(t)} + v_{i}^{(t+1)}\]- $w$:惯性权重,决定了粒子的探索能力($w$ 大倾向于全局搜索,$w$ 小倾向于局部精细微调)。
- $c_1, c_2$:学习因子,$c_1$ 决定对个体经验的偏向(自我思考),$c_2$ 决定对群体经验的偏向(从众效应)。
- $r_1, r_2$:$[0, 1]$ 之间的随机数,增加算法的随机探索性。
3. 优点与局限性 ⚖️
优点
- 收敛速度快:通过直接追踪 $gbest$,粒子能迅速聚集到优质区域。
- 参数简单:相比遗传算法等,没有复杂的交叉和变异逻辑,易于编码实现。
- 非常适合连续优化:特别适合连续数值空间的求极值问题(如函数优化、参数拟合)。
局限性(早熟收敛 Trap)
- 易陷入局部最优:如果 $gbest$ 不幸落入了局部极小值的“小坑”,所有粒子会迅速围拢过去,失去进一步探索其他区域的能力,导致整个算法陷入停滞。
4. 与其他启发式算法的横向对比 📊
| 算法名称 | 核心机制 | 优势 | 适用场景 |
|---|---|---|---|
| 粒子群 (PSO) | 追踪 $pbest$ 和 $gbest$ | 收敛快,逻辑简单 | 连续空间极值搜索、参数调优 |
| 遗传算法 (GA) | 选择、交叉、变异 | 鲁棒性高,解空间覆盖广 | 离散组合优化、复杂多目标优化 |
| 模拟退火 (SA) | 梅特罗波利斯准则(概率接受差解) | 擅长跳出局部最优 | 处理极度崎岖/非连续的搜索空间 |
| 蚁群算法 (ACO) | 信息素正反馈与挥发 | 路径搜索能力极强 | 图论问题、TSP 路径规划、调度问题 |
5. 算法演进:引入模拟退火(SA + PSO)🚀
为了克服 PSO 易陷入局部最优的缺点,通常会引入 模拟退火(SA) 的冒险机制进行混合(Hybrid PSO):
- 随机跳跃:当更新后的粒子位置变差时,不再是直接丢弃,而是按 Metropolis 准则 $P = \exp(-\Delta E / T)$ 给予其一定概率被接受。
- 局部再加热:当检测到种群连续多代 $gbest$ 停滞不前(早熟)时,升高温度 $T$,赋予粒子更大的扰动幅度,强制其跳出局部陷阱。
本文由作者按照 CC BY 4.0 进行授权