一.PSO算法来源
自然界以群体为单位生存的动物的共同行为特征是(以鸟类为例):他们同步的向着一个方向飞行,即使在飞行的过程中遇到意外情况突然改变了飞行方向,分散开来一段时间后,仍然能够很好的聚集在一起,然后朝同一个方向飞行。这就是POS算法的理论基础。
粒子群优化算法,是在计算机上模拟鸟群觅食行为过程。鸟群在一定空间内搜寻食物,此间鸟个体之间是传递信息已达到最快寻求到食物的目的。在模拟空间中,有许多没有质量和体积的粒子相当于鸟个体,每个粒子都被设定与鸟类运动具有相似简单行为的规则,粒子群体的整体行为则表现出鸟群寻觅食物行为的规则。现实中,鸟个体之间随时交换交换信息。粒子群优化算法将它们交换的信息简化为两种表示,一种是自己目前所能找到的最好位置pbest,另一种是鸟群目前所能找到的最好位置gbest。并且,认为在这两种最好位置的共同作用下鸟群不断的在趋近于在最好位置周围搜寻食物。
二.PSO算法的基本原理
PSO算法來源于对鸟群社会模式的研究和行为的模拟,鸟群在天空中飞行,每只鸟被抽象成没有质量和体积的粒子,这些粒子具有两个属性:速度和位置。粒子在飞行过程中是受到两个极值的作用來调整速度和位置的,这两个极值中,一个是粒子个体历史最优经验pbest,另一个是群体历史最优经验gbest。全体粒子通过迭代进化,逐步向优秀的个体接近,找出优化问题的解。
假设在一个D维的搜索空间中,有N个粒子组成的群体,其中第i个粒子的两个属性分别表示为:位置=(,......),速度=(,......);粒子个体历史最优pbest位置=(,......),群体历史最优gbest位置=(,......)。寻优时,每个粒子两个属性值的更新(速度和位置)按如下公式进行迭代进化:
其中,i=(1,2,......N),d=(1,2,......D);和为加速常数(也称加速因子或学习因子),加速常数可调整个体自身经验和群体经验对粒子运动影响的大小;w为惯性权重,对算法全局搜索和局部搜索有平衡作用;、为相互独立的随机数,服从(0,1)分布;为粒子i迭代至第t代时的速度,为粒子i迭代至第t+1代时的速度;为粒子i迭代至第t代时的位置,为粒子i迭代至第t+1代时的位置。
粒子速度的迭代更新是按公式(2.1)进行,从社会角度来看,其中的第一部分表示粒子当前速度是下一时刻速度的进化基础;第二部分为粒子与自身最优位置间的距离,表示粒子的自身经验的影响,称为认知部分;第三部分为粒子与全群最好位置之间的距离,表示群体粒子间的信息共享与合作,称为社会部分。由此可知,粒子在飞向最优位置的运动过程中,不仅受粒子个体曾经经历的最优位置影响,也受群体粒子中曾经经历过的最优位置的影响,通过这两个作用力,导引全体粒子飞向全局最优位置。
公式(2.2)是粒子位置的更新方程,表示粒子迭代进化至t+1代时的位置是在第t代位置的基础上加上粒子迭代一次飞行的距离*1。
三.PSO算法流程
PSO算法在对问题优化求解时,群体中的粒子是通过迭代逐步飞向问题的解的,算法的流程简卑,其流程为:
STEP1:初始化粒子群,对算法各参数做好初始化设置,所有粒子的个体最优pbest设为粒子初始位置,比较找出群体最优gbest。
STEP2:根据适应度函数和每个粒子的位置,计算出各粒子的适应度值。
STEP3:将各粒子当前适应度值与粒子个体历史最优适应度值比较,若个体当前适应度值比个体历史最优适应度值更优,则替换个体历史最优pbest。
STEP4:将各粒子个体历史最优pbest的适应度值与当前群体历史最优gbest比较,如果优于gbest则替换之。
STEP5:各粒子的速度更新按公式(2.1)进行,各粒子的位置更新按公式(2-2)进行。
STEP6:判断算法是否终止迭代(一般为找到了满意解或者最大迭代次数已到),如果满足终止迭代条件,则输出最优解;否则转向STEP2继续执行。
PS2算法具体流程图如下图所示:
四.PSO算法的特点
PSO算法的良好性能与它的特点如下:
(1)PSO算法实现容易,原理简单,参数较少,控制一些关键参数对算法的寻优性能影响较大。
(2)PS0算法群体搜索。算法在搜索过程中,利用个体的记忆力,共享信息和相互协作的共同追寻最优解。
(3)PSO算法求解模式具有分布式特点。个体存在是分布形式的,不存在集中控制特点,不完全依赖于问题信息,有较强的鲁棒性。
PSO算法虽然有这些优点,但它的进化方式同样会带来缺点:基本粒子群优化算法在搜索过程中,当一个粒子发现当期最优位置,其它粒子迅速向该位置靠拢,导致后期粒子种群多样性降低,一旦该位置为局部最优点,所有粒子很难逃离这个局部极值点,所以存在易陷入局部最优,不能找到全局最优点的缺点。当粒子在这个局部最优位置或者附近很难逃离,粒子就做无效的重复搜索,影响了算法的收敛速度和效率。
五.粒子群算法的改进
1.带惯性权重的PSO算法
2.带收缩因子的PSO算法
3.二进制离散的PSO算法
4.混合PSO算法
5.混沌PSO算法