1、粒子群算法的简介与描述
1.1粒子群算法的简介
粒子群优化(PSO, particle swarm optimization)算法是计算智能领域,除了蚁群算法,鱼群算法之外的一种群体智能的优化算法,该算法最早由Kennedy和Eberhart在1995年提出的,该算法源自对鸟类捕食问题的研究。
它的基本核心是将模型中的栖息地比作所求问题的解空间中可能解的位置,通过信息传递,引导群体向可能解的方向运动。模型中个体被抽象为没有质量和体积的“微粒”,通过“微粒”之间的互相协作和信息共享,把“微粒”的不断运动视为在复杂的解空间中寻找最优解的过程。
1.2粒子群算法的简单描述
如前所述,粒子群算法是模拟鸟群的捕食行为,下面有一个例子能让我们更加直观的理解粒子群算法的基本思想。
假设一个情景:试着想一下一群鸟在寻找食物,在这个区域中只有一只虫子,所有的鸟都不知道虫子在哪。但是它们知道自己的当前位置距离虫子有多远,同时它们知道离虫子最近的鸟的位置。想一下这时候会发生什么?
A:我是离虫子最近的。 A:我刚才的位置好像靠近食物,我要沿着那
B、C、D:我得赶快去找A。 个方向继续找更近的位置。
所以,粒子群算法就是把鸟看成一个个粒子,并且他们拥有位置和速度这两个属性,然后根据自身已经找到的离食物最近的解和参考整个共享于整个集群中找到的最近的解去改变自己的飞行方向,最后我们会发现,整个种群大致向同一个地方聚集。而这个地方是离食物最近的区域,条件好的话就会找到食物。
2、粒子群算法的原理与流程
2.1粒子群算法的基本原理
PSO算法首先在可行解空间中初始化一群粒子,每个粒子都代表极值优化问题的一个潜在最优解,用位置、速度和适应度值三项指标表示该粒子特征。
粒子在解空间中运动,通过跟踪个体极值(Pbest)和群体极值(Gbest)更新个体位置,个体极值Pbest是指个体所经历位置中计算得到的适应度值最优位置,群体极值Gbest是指种群中的所有粒子搜索到的适应度最优位置。
粒子每更新一次位置,就计算一次适应度值,并且通过比较新粒子的适应度值和个体极值、群体极值的适应度值更新个体极值Pbest和群体极值Gbest位置。
2.2粒子群算法的流程
1)初始化一群微粒(群体规模为N),包括随机位置和速度;
粒子i位置:xi=(xi1,xi2,…xiD)
粒子i速度:vi=(vi1,vi2,…viD),1≤i≤n,1 ≤d ≤D
2)评价每个微粒的适应度;
3)对每个微粒,将其适应度值与个体其经过的最好位置pbest的适应度值作比较,如果较好,则将其作为个体当前的最好位置pbest;
4)对每个微粒,将其适应值与群体其经过的最好位置gbest的适应值作比较,如果较好,则将其作为群体当前的最好位置gbest;
5)根据公式(2)、(3)调整微粒速度和位置;
6)未达到结束条件则转第2步,直到满足终止条件(达到迭代次数或者两代之间的偏差在指定范围内)。
PSO初始化为一群随机粒子(随机解)。然后通过迭代找到最优解。在每一次的迭代中,粒子通过跟踪两个“极值”(pbest,gbest)来更新自己。在找到这两个最优值后,粒子通过下面的两个公式来更新自己的速度和位置。
在公式(1)、(2)中,i=1,2,…,N,N是此种群中粒子的总数。
Vi:当时粒子的速度,
Xi:粒子的当前位置,
rand():0-1之间的随机数,
C1、C2是学习因子,通常C1=C2=2。
公式(1)的第一部分称为【记忆项】,表示上次速度大小和方向的影响;
公式(1)的第二部分称为【自身认知项】,是从当前点指向粒子自身经历过的最好点的一个矢量,表示粒子的动作来源于自己经验的部分;
公式(1)的第三部分称为【群体认知项】,是一个从当前点指向种群最好点的矢量,反映了粒子间的协同合作和知识共享。粒子就是通过自己的经验和同伴中最好的经验来决定下一步的运动。
以上面两个公式为基础,我们再看一个公式:
所以公式(2)和公式(3)被视为标准的PSO算法。
2.3认识参数
种群数量:一般取 20–40。不过对于比较难的问题或者特定类别的问题, 粒子数可以取到100 或 200;
迭代次数:太少解不稳定,太多浪费时间。对于复杂问题,进化代数可以相应地提高;
惯性权重w:该参数反映了粒子继承上一次迭代速度的能力,一般取0.5~1;
学习因子C1,C2:一般取0~4,此处要根据自变量的取值范围来定,并且学习因子分为个体和群体两种;
空间维数D:粒子搜索的空间维数即为自变量的个数;
位置限制:限制粒子搜索的空间,即自变量的取值范围;
速度限制:如果粒子飞行速度过快,很可能直接飞过最优解位置,但是如果飞行速度过慢,会使得收敛速度变慢,因此设置合理的速度限制就很有必要了。
2.4粒子群算法的流程图
3、粒子群算法的优缺点
3.1粒子群算法的优点
3.2 粒子群算法的缺点
4、粒子群算法的改进
针对PSO中所存在的一些缺点和不足,算法的改进目的主要是:增强算法自适应、增强收敛性、增强种群多样性、加强局部搜索等。
5、粒子群算法的应用方向
5.1标准粒子群算法的应用方向
(1)神经网络的训练:
PSO用于神经网络的训练中,主要包括4个方面:连接权重、网络拓扑结构、传递函数及学习规则。每个粒子包含神经网络的所有参数,通过迭代来优化这些参数,从而达到训练的目的。
与BP算法相比,使用PSO训练神经网络的优点在于不使用梯度信息,可使用不可微的传递函数。多数情况下其训练结果优于BP算法,而且训练速度非常快。
(2)模式识别和图像处理:
PSO算法已在图像分割、图像配准、图像融合、图像识别、图像压缩和图像合成等方面发挥作用。
(3)组合优化:
许多组合优化问题中存在程序结构如何表达以及约束条件如何处理等问题。研究者们根据问题的不同,提出了相应问题的粒子表达式,或通过重新定义迭代公式中的算子来解决不同的问题。目前,已提出了多种解决TSP、VRP以及车间调度等问题的方案。
(4)其他应用:
除了以上领域外,PSO在多目标优化、自动目标检测、生物信号识别、决策调度、系统识别以及游戏训练等方面也取得了一定的成果。
注释:是本人学习之余整理的资料,如有不对的地方还请指教,十分感谢!