PSO
算法 粒子群优化算法 PSO
1. 常见的群体智能优化算法分类
常见的群体智能优化算法主要有如下几类:
(1)蚁群算法(Ant Colony Optimization,简称ACO)[1992年提出];
(2)粒子群优化算法(Particle Swarm Optimization,简称PSO)[1995年提出](简单易于实现,也是目前应用最为广泛的群体智能优化算法);
(3)菌群优化算法(Bacterial Foraging Optimization,简称BFO)[2002年提出];
(4)蛙跳算法(Shuffled Frog Leading Algorithm,简称SFLA)[2003年提出];
(5)人工蜂群算法(Artificial Bee Colony Algorithm,简称ABC)[2005年提出];
除了上述几种常见的群体智能算法以外,还有一些并不是广泛应用的群体智能算法,比如萤火虫算法、布谷鸟算法、蝙蝠算法以及磷虾群算法等等。
2. 粒子群优化算法思想
粒子群优化算法是在1995年由Eberhart博士和Kennedy博士一起提出的,它源于对鸟群捕食行为的研究。它的基本核心是利用群体中的个体对信息的共享从而使得整个群体的运动在问题求解空间中产生从无序到有序的演化过程,从而获得问题的最优解。我们可以利用一个有关PSO的经典描述来对PSO算法进行一个直观的描述。设想这么一个场景:一群鸟进行觅食,而远处有一片玉米地,所有的鸟都不知道玉米地到底在哪里,但是它们知道自己当前的位置距离玉米地有多远。那么找到玉米地的最佳策略,也是最简单有效的策略就是是搜寻目前距离玉米地最近的鸟群的周围区域。PSO就是从这种群体觅食的行为中得到了启示,从而构建的一种优化模型。
在PSO中,每个优化问题的解都是搜索空间中的一只鸟,称之为“粒子”,而问题的最优解就对应为鸟群要寻找的“玉米地”。所有的粒子都具有一个位置向量(粒子在解空间的位置)和速度向量(决定下次飞行的方向和速度),并可以根据目标函数来计算当前的所在位置的适应值(fitness value),可以将其理解为距离“玉米地”的距离。在每次的迭代中,种群中的粒子除了根据自身的“经验”(历史位置)进行学习以外,还可以根据种群中最优粒子的“经验”来学习,从而确定下一次迭代时需要如何调整和改变飞行的方向和速度。就这样逐步迭代,最终整个种群的粒子就会逐步趋于最优解。
2.1 PSO的缺点
对于有多个局部极值点的函数,容易陷入到局部极值中,得不到正确的结果。此外,由于缺乏精密搜索方法的配合,PSO往往得不到精确的结果。再则,PSO的方法提供了全局搜索的可能,但并不能严格证明它在全局最优点上的收敛性。因此,PSO一般适用于一类高维的、存在多个局部极值点而并不需要得到很高精度的优化问题。
2.2 PSO的优点
- 易于描述,易于理解
- 对优化问题定义的连续性无特殊要求
- 只有非常少的参数需要调整
- 算法实现简单,速度快
- 相对其他的演化算法,只需要很少的的演化群体
- 算法易于收敛,相比其他演化算法,只需要较少的评价函数计算次数就可以达到收敛
- 无集中控制约束,不会因为个体的故障影响整个问题的求解,确保了系统具备很强的鲁棒性
3. 粒子群优化算法的基本框架
3.1 公式
在介绍PSO的算法流程之前,我们写给出PSO中常用的迭代算子的形式。
在D维空间中,有N个粒子:
* Xi=(xi1,xi2,...,xin) 代表粒子 i 的位置向量
*
* 粒子i个体经历过的最好位置:
* 种群所经历过的最好位置: gbest=(g1,g2,...,g)
通常,在第 d(1<=d<=D) 的位置变化范围限定在 [Xmin,d,Xmax,d