12.3.1  PSO算法的基本原理

12.3.1 PSO算法的基本原理

粒子群优化(Particle Swarm Optimization,PSO)是由Kennedy和Eberhart等人在1995年首次提出来的方法,此算法被提出后就立即吸引了广大国内外学者对其进行研究,到现在已经有了多种改进增强版本,下面将对其原理进行详细概述。

粒子群优化算法来源于动物群体的生活行为,通过对鸟群飞行活动的分析,发现鸟在飞行时只要跟着它附近的邻居鸟就行了,但是在空中我们能够注意到整个鸟群就像绕着某个中心在进行有方向、有序的飞行活动。简单地说就是一些全局行为都是由一些简单而不复杂的准则通过它们之间相互作用产生的,这就是群智能的主要意义。本节中PSO算法主要是源于鸟群在群体觅食中的行为,一群鸟在空中寻找食物的时候,为了能够最快地找到食物,它们会对含有食物区域内的鸟群进行搜寻,这样就能找到食物。PSO算法就是通过上述对鸟类习性的研究产生的,并被用于解决一些优化问题。PSO的基本思想就是先在相应的空间找到一颗粒子的位置,此时这颗粒子不是静止而是运动的,它们会不断改变自己的状态,它们有自己的速度,此外还需要一个目标函数对相应的适应值进行决策。当找到这些粒子后,它们自身是有记忆的,而且它们会在相应的解空间中自动地去找当前它们觉得最优的粒子,如果此时它们找到了一个更好解,接下来会基于这个解再寻找下一个更好解。在迭代过程中,粒子会利用空间中两个所谓的“极值”来对自己当前位置进行更新处理,这两个“极值”可以分为个体极值点pbest和全局极值点gbest,个体极值点是粒子本身搜寻到的最好解,全局极值点是该粒子所在群的极值点,粒子就是根据这两个极值点来调整自身的搜寻方向和速度,使之达到最佳状态。

假设存在一个大小为D维的搜寻空间,而且在此空间中存在一个大小为N的粒子群,那么这个D维空间向量与空间中粒子群的关系就可表示如下(下式中的i都表示群中对应的粒子的位置):

Xi=(xi1xi2,…,xiD),i=1,2,…,N(12-13)

在群空间中,其中粒子对应的速度如下:

Vi=(vi1vi2,…,viD),i=1,2,…,3(12-14)

粒子本身通过搜寻得到的最好解即为上述提到的个体极值,其可定义为

pbest=(pi1,pi2,…,piD),i=1,2,…,N(12-15)

该粒子所在群得到的极值点即是上述提到的全局极值,其可定义为

gbest=(pg1,pg2,…,pgD)(12-16)

当粒子在得到上述相应的两个极值时,此时粒子会对自身相应的速度与位置做出有效的更新,它的更新表达式如下:

vid=wvid+c1r1pid-xid)+c2r2pgd-xid)(12-17)

xid=xid+vid(12-18)式中,c1c2是更新过程中的学习因子;r1r2表示在[0,1]区间内的随机数;wvid在物理学中可定义为“动量(momentum)”,即粒子对自身速度控制的能;c1r1pid-xid)是粒子群中粒子的局部“认知(cognition)”,即粒子对历史的记载,通过这样的记载来达到向最佳位置进行有效的逼近;c2r2pgd-xid)描述在粒子群中粒子间相互作用的记载,体现了粒子自身能够向粒子群进行有效逼近的能力。