|
粒子群优化(Particle Swarm
Optimization,PSO)算法是Kennedy和Eberhart博士于1995年提出的,
PSO起源于对一个简单社会模型的仿真,它和人工生命理论以及鸟类或鱼类的群集现象有十分明显的联系.动物行为学家曾仔细观察过蚂蚁的觅食行为,发现不管初始时同一蚁巢的蚂蚁从蚁巢到食物的觅食路径是如何的随机,随着觅食的蚂蚁往返次数的增加,蚁群总能找到最短的觅食路径.著名的蚁群算法正是受蚁群觅食行为的启发而产生的.同样,粒子群算法也是源于对鸟类捕食行为的研究而提出的.设想这样一个场景:一群鸟在随机搜寻食物,在这个区域里只有一块食物,所有鸟都不知道食物在哪里,那么找到食物的最优策略是什么呢?最简单有效的方法就是搜寻目前离食物最近的鸟的周围区域。PSO算法就是从这种模型中得到启示并用于解决优化问题的.在PSO算法中,每个优化问题的潜在解都是搜索空间中的一只鸟,称之为“粒子”。所有的粒子都有一个由被优化的函数决定的适应值(Fitness
Value),每个粒子还有一个速度决定它们飞翔的方向和每一步的位移。然后粒子们就追随当前的最优粒子在解空间中搜索。PSO算法需要初始化一群随机粒子(随机解),然后通过迭代找到最优解,在每一次迭代中,粒子通过跟踪两个“极值”来更新自己。第一个就是粒子本身所找到的最优解,这个解称为个体极值。另一个是整个种群目前找到的最优解,这个解称为全局极值.
假设在一个N维的目标搜索空间中,有m个粒子组成一个群落,将第i个粒子表示为一个N维的向量 
即第i个粒子在N维搜索空间中的位置是  。每一个粒子都是潜在的解,将  带入一个目标函数就可以计算出其适应值,根据适应值的大小衡量  的优劣。第i个粒子的“飞翔”速度也是一个N维的向量,记为  ,速度决定粒子在搜索空间单位迭代次数的位移。
记第i个粒 子群迄今为止搜索到的最优位置为 
整个粒子群迄今为止搜索到的最优位置为
粒子根据以下公式来更新其速度和位置:
其中,i=1,2,...m,
n=1,2,...N;学习因子c1,c2是非负常数,r1,和r2是介于[0,1]之间的随机数,  是常数,由用户设定.迭代中止条件一般选为最大迭代次数或粒子群迄今为止搜索到的最优化位置满足适应阂值。因为  是整个粒子群的最优值,因此上述PSO算法也称为全局PSO算法.也可以把第i个粒子的邻居粒子搜索到的最优位置作为  ,则上述方法又称为局部PSO算法.全局PSO算法收敛速度快,但有时会陷入局部最优,而局部PSO收敛速度稍微慢一点,但相对不易陷入局部最优.
|