1 PSO算法的提出
1.1 标准PSO算法
PSO算法最早提出于1995年,是一种基于随机初始解的搜索算法。算法以“群体”和“进化”为基本概念,将每个解看作搜索空间中的一个粒子。每个粒子都有一定的速度,其大小根据自身历史经验和种群经验进行动态调整。粒子通过不断地迭代飞行来寻找空间中最优解的位置,每次迭代,粒子的速度和位置按照下式进行更新。
式中c1和c2表示粒子的学习因子;r1和r2为两个随机数;v和x表示粒子的速度和位置;w为惯性权重。标准PSO的性能很大程度上处决于其各项参数,参数选择不当会导致在算法初期,容易陷入局部最优或在算法后期收敛速度慢、精度低等问题。
1.2 PSO算法的改进思路
标准PSO算法容易陷入局部最优问题主要是由于其惯性权重被固定,不能根据算法实际收敛情况进行调整而导致的。因此,让惯性权重能够根据种群收敛情况进行动态调节是对算法进行改进的主要思路,目前提出的改进粒子群算法也大多是采用这种思路。
2 用PSO算法求函数极值示例
2.1 求一元函数最大(小)值问题
例:求函数下面一元函数在指定区间的最小值
在Matlab中绘制该函数的图像如下:
下面开始在Matlab中求该函数的最小值,具体代码如下:
首先绘制函数图像并显示出粒子的初始分布
%% 绘制函数图像
结果如下:
开始迭代寻优过程,得出结果
%% 进入迭代寻优过程
结果如下:
2.2 求二元函数最大(小)值问题
例:求函数下面二元函数在指定区间的最大值
同样,首先在Matalb中绘制改函数的图像,如下:
绘制函数图像并显示出粒子的初始分布
%% 绘制函数图像
结果如下:
开始迭代寻优过程,得出结果
下图为粒子的适应度变化曲线
3 结束语
PSO算法是一类不确定算法,不确定性体现了自然界生物的生物机制,并且在求解某些特定问题方面优于确定性算法;同时它也是是一类概率型的全局优化算法其优点在于算法能有更多机会求解全局最优解。它不依赖于优化问题本身的严格数学性质,是一种基于多个智能体的仿生优化算法。该算法物理概念明确,收敛性好。但也存在易陷入局部最优、参数依赖性大等不足。