模拟退火粒子群算法 (SAPSO) 优化工具箱
1. 项目介绍
本项目实现了一种混合优化算法——模拟退火粒子群算法(SAPSO)。该算法结合了粒子群优化算法(PSO)的高效寻优速度与模拟退火算法(SA)的概率跳变特性。通过在粒子更新逻辑中引入 Metropolis 准则,本工具箱能够有效避免标准 PSO 算法在处理复杂多峰函数时容易陷入局部最优(早熟收敛)的问题。项目通过动态调整惯性权重和模拟退火温度,实现了搜索初期的大范围全局探索与搜索后期的精细化局部开发。
2. 功能特性
- 混合跳变机制:引入 Metropolis 准则,以一定概率接受劣质解,增强算法脱离局部极值的能力。
- 动态参数调节:采用线性递减惯性权重策略,平衡算法的收敛速度与搜索精度。
- 温度衰减模型:实现几何退火方案,随着迭代进行,接受差解的概率逐渐降低,确保收敛至全局最优。
- 速度与边界约束:具备严格的速度限制(搜索空间的15%)与位置边界检查,保证决策变量在可行域内演化。
- 多维非线性寻优:默认配置处理 30 维 Rastrigin 复杂函数,能够应对高度非线性的寻优挑战。
- 收敛可视化:程序内置收敛曲线统计功能,并使用对数坐标系直观展现寻优过程。
3. 实现逻辑说明
项目的核心逻辑分为初始化、迭代搜索、概率跳转与降温四个阶段:
- 参数初始化:
* 设定种群规模为 50,维度为 30。
* 初始化初始温度 $T_0 = 100$,降温系数 $alpha = 0.95$。
* 随机生成粒子的初始位置,并将速度初始化为零。
- 速度与位置更新:
* 计算当前迭代的惯性权重 $w$,从 0.9 线性减小到 0.4。
* 根据个体最优位置(pbest)和社会最优位置(gbest)更新粒子速度。
* 对速度进行截断处理,防止粒子飞出搜索区域。
- Metropolis 概率接受逻辑:
* 当粒子移动到新位置后,计算新位置的适应度值。
* 如果新位置优于当前的个体最优($f_{new} < f_{pbest}$),则直接接受该位置。
* 如果新位置变差,则计算能量差(适应度增量) $Delta E$。
* 通过公式 $P = exp(-Delta E / T)$ 计算接受概率,若 $rand < P$,则粒子依然会跳转到该较差位置。这一步是跳出局部最优的关键。
- 全局最优修正与降温:
* 在所有粒子更新完成后,严格选取所有个体最优中最优的解作为全局最优位置。
* 执行温度衰减 $T = T times alpha$,进入下一轮迭代。
4. 关键函数与算法细节分析
- 目标函数定义:采用了典型的 Rastrigin 函数,该函数包含大量的局部极小值点,公式为 $f(x) = 10n + sum (x_i^2 - 10cos(2pi x_i))$,用于验证算法的稳健性。
- 惯性权重调整:程序通过
w_max - (w_max - w_min) * (t / max_iter) 实现,这保证了算法在开始阶段具有较强的探索能力,在结束阶段具有较强的开发能力。 - 速度限制逻辑:代码中将速度上限设置为
(ub - lb) * 0.15,这种比例缩放有效地控制了单次迭代的步长,防止因步长过大导致的算法震荡。 - 结果可视化逻辑:使用
semilogy 函数绘制收敛曲线,由于适应度值在后期可能非常小,对数坐标能更清晰地观察算法在后期的微弱改进。
5. 系统要求
- 软件环境:MATLAB R2016a 或更高版本。
- 硬件要求:无特殊硬件需求,标准消费级 CPU 即可在秒级完成 500 次迭代计算。
6. 使用方法
- 打开 MATLAB 软件。
- 将包含算法逻辑的脚本代码放入当前工作空间。
- 在命令行窗口直接运行该主脚本函数。
- 程序将自动启动优化流程,实时打印运行耗时、全局最优适应度值以及最优决策变量的前 5 维结果。
- 运行结束后将自动弹出收敛特性曲线图。