粒子群优化算法综述.docx
《粒子群优化算法综述.docx》由会员分享,可在线阅读,更多相关《粒子群优化算法综述.docx(10页珍藏版)》请在冰豆网上搜索。
![粒子群优化算法综述.docx](https://file1.bdocx.com/fileroot1/2022-11/29/46d34026-5f01-4d6a-9b25-d41787ac0ffa/46d34026-5f01-4d6a-9b25-d41787ac0ffa1.gif)
粒子群优化算法综述
粒子群优化(PSO)算法
[摘要]粒子群优化(PSO)算法是一种新兴的优化技术,其思想来源于人工生命和演化计算理论。
PSO通过粒子追随自己找到的最优解和整个群的最优解来完成优化。
该算法简单易实现,可调参数少,已得到广泛研究和应用。
详细介绍了PSO的基本原理、其特点、各种改进方式及其应用等,并对其未来的研究进行展望。
[关键词]群体智能;优化算法;粒子群优化
1、前言
从20世纪90年代初,就产生了模拟自然生物群体(swarm)行为的优化技术。
Dorigo等从生物进化的机理中受到启发,通过模拟蚂蚁的寻径行为,提出了蚁群优化方法;Eberhart和Kennedy于1995年提出的粒子群优化算法是基于对鸟群、鱼群的模拟。
这些研究可以称为群体智能(swarmintelligence)。
通常单个自然生物并不是智能的,但是整个生物群体却表现出处理复杂问题的能力,群体智能就是这些团体行为在人工智能问题中的应用。
粒子群优化(PSO)最初是处理连续优化问题的,目前其应用已扩展到组合优化问题。
由于其简单、有效的特点,PSO已经得到了众多学者的重视和研究。
粒子群算法在求解优化函数时,表现出较好的寻优能力。
特别是针对复杂的工程问题,通过迭代寻优计算,能够迅速找到近似解,因而粒子群算法在工程计算中被广泛应用。
2、PSO基本原理
粒子群优化算法是基于群体的演化算法,其思想来源于人工生命和演化计算理论。
Reynolds对鸟群飞行的研究发现,鸟仅仅是追踪它有限数量的邻居,但最终的整体结果是整个鸟群好像在一个中心的控制之下,即复杂的全局行为是由简单规则的相互作用引起的。
PSO即源于对鸟群捕食行为的研究,一群鸟在随机搜寻食物,如果这个区域里只有一块食物,那么找到食物的最简单有效的策略就是搜寻目前离食物最近的鸟的周围区域。
PSO算法就是从这种模型中得到启示而产生的,并用于解决优化问题。
另外,人们通常是以他们自己及他人的经验来作为决策的依据,这就构成了PSO的一个基本概念。
PSO求解优化问题时,问题的解对应于搜索空间中一只鸟的位置,称这些鸟为“粒子”(particle)或“主体”(agent)。
每个粒子都有自己的位置和速度(决定飞行的方向和距离),还有一个由被优化函数决定的适应值。
各个粒子记忆、追随当前的最优粒子,在解空间中搜索。
每次迭代的过程不是完全随机的,如果找到较好解,将会以此为依据来寻找下一个解。
令PSO初始化为一群随机粒子(随机解),在每一次迭代中,粒子通过跟踪两个“极值”来更新自己:
第一个就是粒子本身所找到的最好解,叫做个体极值点(用
表示其位置),全局版PSO中的另一个极值点是整个种群目前找到的最好解,称为全局极值点(用gbest表示其位置),而局部版PSO不用整个种群而是用其中一部分作为粒子的邻居,所有邻居中的最好解就是局部极值点(用
表示其位置)。
在找到这两个最好解后,粒子根据如下的式
(1)和式
(2)来更新自己的速度和位置。
粒子i的信息可以用D维向量表示,位置表示为
_
_________________________________________
以及群体所发现的最佳位置
,通过跟踪这两个最佳位置式
(1)和
(2)分别更新各微粒的速度和位置。
(1)
j=1,…,d
(2)
是加速系数(或称学习因子),分别调节向全局最好粒子和个体最好粒子方向飞行的最大步长,若太小,则粒子可能远离目标区域,若太大则会导致突然向目标区域飞去,或飞过目标区域。
合适的c1,c2可以加快收敛且不易陷入局部最优,通常令
和
为0到1之间均匀分布的随机数。
通过设置微粒的速度区间
〖〗,则可以对微粒的移动进行适当的限制。
基本PSO的流程可以描述为:
Step1初始化初始搜索点的位置X0i及其速度V0i通常是在允许的X围内随机产生的,每个粒子的
坐标设置为其当前位置,且计算出其相应的个体极值(即个体极值点的适应度值),而全局极值(即全局极值点的适应度值)就是个体极值中最好的,记录该最好值的粒子序号,并将
设置为该最好粒子的当前位置。
Step2评价每一个粒子计算粒子的适应度值,如果好于该粒子当前的个体极值,则将
设置为该粒子的位置,且更新个体极值。
如果所有粒子的个体极值中最好的好于当前的全局极值,则将
设置为该粒子的位置,记录该粒子的序
Step3粒子的更新,用式
(1)和式
(2)对每一个粒子的速度和位置进行更新。
Step4检验是否符合结束条件,如果当前的迭代次数达到了预先设定的最大次数(或达到最小错误要求),则停止迭代,输出最优解,否则转到。
PSO的一些特点:
1)基本PSO算法最初是处理连续优化问题的。
2)类似于遗传算法(GA),PSO也是多点搜索。
3)式
(1)的第一项对应多样化(diversification)的特点,第二项、第三项对应于搜索过程的集中化(intensification)特点,因此这个方法在多样化和集中化之间建立均衡。
PSO有全局版和局部版两种,全局版收敛快,但有时会陷入局部最优。
局部版PSO通过保持多个吸引子来避免早熟,假设每一个粒子在大小l的邻域内定义为一个集合从Ni中选出最好的,将其位置作为
代替公式中的
其他与全局版PSO相同。
实验表明,局部版比全局版收敛慢,但不容易陷入局部最优。
在实际应用中,可以先用全局PSO找到大致的结果,再用局部PSO进行搜索。
3、PSO的改进
PSO算法的改进研究可归纳为两个方面:
一方面的研究是讲各种先进理论引入PSO算法,研究各种改进和PSO算法;另一方面是将PSO无案发和其他智能优化算法相结合,研究各种混合优化算法,达到取长补短、改善算法某方面性能的效果。
由于PSO中粒子向自身历史最佳位置和领域或群体历史最佳位置剧集,形成粒子种群的快速趋同效应,容易出现陷入局部极限、早熟收敛或停滞现象。
同时,PSO的性能也依赖于算法参数。
算法具体参数设置不同,结果怒同。
算法具体参数主要依赖于微粒个数、惯性权重、学习因子,以及添加压缩因子等参数。
为了克服上述不足,各国研究人员相继提出了各种改进措施。
本文将这些改进分为4类:
粒子群初始化、邻域拓扑、参数选择和混合策略。
3.1、粒子群初始化
研究表明,粒子群初始化对算法性能产生一定影响[16]。
为了初始种群尽可能均匀覆盖整个搜索空间,提高全局搜索能力,Richard和Ventura[17]提出了基于centroidalvoronoitessellations(CVTs)的种群初始化方法;薛明志等人[18]采用正交设计方法对种群进行初始化;Campana等人[19]将标准PSO迭代公式改写成线性动态系统,并基于此研究粒子群的初始位置,使它们具有正交的运动轨迹;文献[16]认为均匀分布随机数进行初始化实现容易但尤其对高维空间效果差,并另外比较了3种初始化分布方法。
3.2、邻域拓扑
根据粒子邻域是否为整个群体,PSO分为全局模型
和局部模型
[20]。
Kennedy[21]指出,
模型虽然具有较快的收敛速度,但更容易陷入局部极值。
为了克服
全局模型的缺点,研究人员采用每个粒子仅在一定的邻域内进行信息交换,提出各种
局部模型[21,]。
根据现有的研究成果,本文将邻域分为空间邻域(spatialneighborhood)、性能空间(performancespace)邻域和社会关系邻域(sociometricneighborhood)。
空间邻域直接在搜索空间按粒子间的距离(如欧式距离)进行划分,如Suganthan[23]引入一个时变的欧式空间邻域算子:
在搜索初始阶段,将邻域定义为每个粒子自身;随着迭代次数的增加,将邻域X围逐渐扩展到整个种群。
性能空间指根据性能指标(如适应度、目标函数值)划分的邻域,如文献[24]采用适应度距离比值(fitness-distance-ratio)来选择粒子的相邻粒子。
社会关系邻域通常按粒子存储阵列的索引编号进行划分[25],这也是研究最多的一种划分手段,主要有[21]:
环形拓扑(ringorcircletopology)、轮形拓扑(wheeltopology)或星形拓扑(startopology)、塔形拓扑(pyramidtopology)、冯-诺以曼拓扑(VonNeumanntopology)以及随机拓扑(randomtopology)等。
针对不同的优化问题,这些拓扑的性能表现各异;但总的来说,随机拓扑往往对大多数问题能表现出较好的性能,其次是冯-诺以曼拓扑[22]。
M.Clerc[25]对随机拓扑进行了进一步分析,并在2006年版和2007年版的标准PSO[23]中采用了随机拓扑。
此外,文献[21]提出动态社会关系拓扑(Dynamicsociometry),初始阶段粒子采用环形拓扑(ring-typetopology),随着迭代次数的增加,逐渐增加粒子间连接,最后形成星形拓扑(star-typetopology)。
此外,还有其它一些主要对群体进行划分的邻域结构(本文暂称“宏观邻域”;则上述邻域称为“微观邻域”)。
文献[19]引入了子种群,子种群间通过繁殖(Breeding)实现信息交流。
Kennedy[20]提出了社会趋同(Stereotyping)模型,使用簇分析将整个粒子群划分为多个簇,然后用簇中心代替带收缩因子PSO中的粒子历史最佳位置或群体历史最佳位置。
X.Li[21]根据粒子相似性动态地将粒子群体按种类划分为多个子种群,再以每个子种群的最佳个体作为每个粒子的邻域最佳位置。
StefanJanson等人[22]提出等级PSO(hierarchicalparticleswarmoptimizer,HPSO),采用动态等级树作为邻域结构,历史最佳位置更优的粒子处于上层,每个粒子的速度由自身历史最佳位置和等级树中处于该粒子上一个节点的粒子的历史最佳位置决定。
文献[13]采用主-仆模型(master–slavermodel),其中包含一个主群体,多个仆群体,仆群体进行独立的搜索,主群体在仆群体提供的最佳位置基础上开展搜索。
文献[14]将小生境(niche)技术引入到PSO中,提出了小生境PSO(NichingParticleSwarmOptimizer)。
文献[15]采用多群体进行解的搜索。
文献[14]则每间隔一定代数将整个群体随机地重新划分,提出动态多群体PSO。
在标准的PSO算法中,所有粒子仅仅向自身和邻域的历史最佳位置聚集,而没有向邻域内其他个体(即使这些个体很优秀)学习,造成信息资源的浪费,甚至因此而陷入局部极值;考虑到此因素,Kennedy等人[17]提出了全信息粒子群(fullyinformedparticleswarm,FIPS),在FIPS中,每个粒子除了自身和邻域最佳历史位置外,还学习邻域内其他粒子的成功经验。
上述粒子间学习是在整个
维空间中构造邻域进行的,这样当搜索空间维数较高时往往容易遭受“维数灾(curseofdimensionality)”的困扰[14]。
基于这方面的考虑,VandenBergh等人[18]提出了协作PSO(CooperativePSO)算法,其基本思路就是采用协作行为,利用多个群体分别在目标搜索空间中的不同维度上进行搜索,也就是一个优化解由多个独立群体协作完成,每个群体只负责优化这个解矢量部分维上的分量。
Baskar和Suganthan[19]提出一种类似的协作PSO,称为并发PSO(concurrentPSO,CONPSO),它采用两个群体并发地优化一个解矢量。
近来,El-Abd等人[20]结合文献[18,19]的技术,提出了等级协作PSO(hierarchalcooperativePSO)。
J.Liang等人[4]提出了一种既可以进行D-维空间搜索、又能在不同维上选择不同学习对象的新的学习策略,称为全面学习PSO(prehensiveLearningParticleSwarmOptimizer,CLPSO)。
以上的各种邻域结构称之为PSO的被动局部模型。
还有一类局部模型就是主动改变粒子邻域空间,避免碰撞和拥挤,本文称之为PSO的主动局部模型。
Blackwell等人[3]将粒子分为自然粒子和带电粒子,当带电粒子过于接近时产生斥力,使之分开以提高粒子多样性;Løvbjerg等人为每个粒子引入与相邻粒子距离成反比的自组织危险度(self-organizedcriticality)指标,距离越近则危险度越高,当达到一定阈值后,对该粒子进行重新初始化或推开一定距离降低危险度,达到提高群体多样性的目的;文献[15]提出一种带空间粒子扩展的PSO,为每个粒子赋一半径,以检测两个粒子是否会碰撞,并采取随机弹离、实际物理弹离、简单的速度—直线弹离等措施将其分开。
3.3、混合策略
混合策略混合PSO就是将其它进化算法或传统优化算法或其它技术应用到PSO中,用于提高粒子多样性、增强粒子的全局探索能力,或者提高局部开发能力、增强收敛速度与精度。
这种结合的途径通常有两种:
一是利用其它优化技术自适应调整收缩因子/惯性权值、加速常数等;二是将PSO与其它进化算法操作算子或其它技术结合。
文献[16]将蚂蚁算法与PSO结合用于求解离散优化问题;Robinson等人[17]和Juang[18]将GA与PSO结合分别用于天线优化设计和递归神经网络设计;文献[19]将种群动态划分成多个子种群,再对不同的子种群利用PSO或GA或爬山法进行独立进化;Naka等人[10]将GA中的选择操作引入到PSO中,按一定选择率复制较优个体;Angeline[11]则将锦标赛选择引入PSO算法,根据个体当前位置的适应度,将每一个个体与其它若干个个体相比较,然后依据比较结果对整个群体进行排序,用粒子群中最好一半的当前位置和速度替换最差一半的位置和速度,同时保留每个个体所记忆的个体最好位置;El-Dib等人[12]对粒子位置和速度进行交叉操作;Higashi[13]将高斯变异引入到PSO中;Miranda等人[14]则使用了变异、选择和繁殖多种操作同时自适应确定速度更新公式中的邻域最佳位置以及惯性权值和加速常数;Zhang等人[8]利用差分进化(DE)操作选择速度更新公式中的粒子最佳位置;而Kannan等人[18]则利用DE来优化PSO的惯性权值和加速常数。
此外,其它一些搜索技术与PSO结合以提高算法的局部搜索能力,如文献[9]提出一种基于PSO和Levenberg-Marquardt的混合方法;文献[10]将PSO与单纯形法相结合;文献将PSO与序贯二次规划相结合;文献[12]将模拟退火与PSO结合;文献[13]将禁忌技术与PSO结合;文献[8]将爬山法与PSO结合;文献[15]将PSO与拟牛顿法结合。
还有作者引入其它一些机制,以改进PSO的性能。
文献[6]根据耗散结构的自组织性,提出一种耗散粒子群优化算法(dissipativePSO)。
该算法通过附加噪声持续为粒子群引入负熵(negativeentropy),使得系统处于远离平衡态的状态,又由于群体中存在内在的非线性相互作用,从而形成自组织耗散结构,使粒子群能够“持续进化”,抑制早熟停滞。
文献[7]将自然进化过程中的群体灭绝现象引入PSO,在微粒的位置和速度更新之后,按照一个预先定义的灭绝间隔重新初始化所有微粒的速度。
文献[8]通过模拟自然界的被动聚集(PassiveCongregation)行为修改速度更新公式,实现种群内信息充分共享,防止了微粒因缺乏足够的信息而判断失误所导致陷入局部极小。
文献[9]将引力场模型引入到PSO。
此外,还有其它一些混合PSO(如高斯PSO、拉伸PSO、免疫粒子群优化、量子粒子群优化、卡尔曼PSO)。
3.4、参数设置
PSO的参数主要包括最大速度、两个加速常数和惯性常数或收缩因等。
a)最大速度的选择:
如式(2.1)所示的粒子速度是一个随机变量,由粒子位置更新公式(2.2)产生的运动轨迹是不可控的,使得粒子在问题空间循环跳动[3,6]。
为了抑制这种无规律的跳动,速度往往被限制在
内。
增大,有利于全局探索(globalexploration);
减小,则有利于局部开发(localexploitation)[3]。
但是
过高,粒子运动轨迹可能失去规律性,甚至越过最优解所在区域,导致算法难以收敛而陷入停滞状态;相反
太小,粒子运动步长太短,算法可能陷入局部极值[16]。
的选择通常凭经验给定,并一般设定为问题空间的
[3]。
此外,文献[17]提出了的动态调节方法以改善算法性能;而文献[48]提出了
自适应于群体最佳和最差适应度值
的选择方法。
b)加速常数的选择:
式
(1)中的加速常数
和
分别用于控制粒子指向自身或邻域最佳位置的运动。
文献[20]建议
,并通常取
。
Ratnaweera等人[13]则提出自适应时变调整策略,即
随着进化代数从2.5线性递减至0.5,
随着进化代数从0.5线性递增至2.5。
与传统PSO取正数加速常数不同,Riget和Vesterstrom[11]提出一种增加种群多样性的粒子群算法,根据群体多样性指标调整加速常数的正负号,动态地改变“吸引”(Attractive)和“扩散”(Repulsive)状态,以改善算法过早收敛问题。
c)惯性权值或收缩因子的选择:
当PSO的速度更新公式采用式
(1)时,即使
和两个加速因子选择合适,粒子仍然可能飞出问题空间,甚至趋于无穷大,发生群体“爆炸(explosion)”现象[12]。
有两种方法控制这种现象:
惯性常数(inertiaconstant)[3]和收缩因子(constrictionfactor)[12]。
带惯性常数PSO的速度更新公式如下:
(3)
其中为惯性常数。
文献[8]建议随着更新代数的增加从0.9线性递减至0.4。
近来,文献[15]通过采用随机近似理论(stochasticapproximationtheory)分析PSO的动态行为,提出了一种随更新代数递减至0的取值策略,以提高算法的搜索能力。
带收缩因子PSO由Clerc和Kennedy[12]提出,其最简单形式[20]的速度更新公式如下:
(4.2)
其中
,
;通常
从而
,
。
虽然惯性权值PSO和收缩因子PSO对典型测试函数表现出各自的优势[16],但由于惯性常数方法通常采用惯性权值随更新代数增加而递减的策略,算法后期由于惯性权值过小,会失去探索新区域的能力,而收缩因子方法则不存在此不足[18]。
4、PSO的应用
PSO的优势在于算法的简洁性,易于实现,没有很多参数需要调整,且不需要梯度信息。
PSO是非线性连续优化问题、组合优化问题和混合整数非线性优化问题的有效优化工具[1]。
目前已经广泛应用于函数优化、神经网络训练、模糊系统控制以及其他遗传算法的应用领域。
PSO最初应用到神经网络训练上,在随后的应用中,PSO又可以用来确定神经网络的结构。
作为演化神经网络的例子,Eberhart等已经成功用PSO来分析人类的帕金森综合症等颤抖类疾病[21];Tandon用PSO训练控制铣削过程的神经网络[22];文献[23]中用改进的速度更新方程训练模糊神经网络。
Parsopoulos等将PSO用于解决多目标优化问题、最小最大化问题、整数规划问题和定位所有全局极值等问题。
一般说来一般说来,PSO比较有潜力的应用包括系统设计、多目标优化、分类、模式识别、调度、信号处理、决策、机器人应用等。
其中具体应用实例有:
模糊控制器设计、车间作业调度、机器人实时路径规划、自动目标检测、时频分析等[2]。
5、结语
粒子群优化算法是一种新兴的有潜力的演化算法,但还存在一些问题,在这一点上它与遗传算法很类似。
1)PSO在实际应用中被证明是有效的,并没有给出收敛性、收敛速度估计等方面的数学证明。
文献[12,26]中对收敛性等做了一些研究,但是目前其理论和数学基础的研究还很不够。
2)利用不同问题的特点设计出相应有效的算法,是非常有意义的工作。
因此当前针对具体应用问题深化研究PSO算法是值得提倡的工作。
3)应该致力于补充和扩展PSO与其他算法或技术的结合,解决PSO易陷入局部最优的问题。
目前我国已有学者开始了对PSO的研究[7,27],希望PSO可以为优化研究工作带来更多的新思路。
参考文献
[1]KennedyJ,EberhartR.Particleswarmoptimization[A].in:
Proceedingsofthe4thIEEEInternationalConferenceonNeuralNetworks[C],Piscataway:
IEEEServiceCenter,1995,pp.1942-1948.
[2]GarnierS,GautraisJ,TheraulazG.Thebiologicalprinciplesofswarmintelligence[J].SwarmIntelligence,vol.30,no.1,2007,pp.3-31.
[3]EberhartR,ShiY.Particleswarmoptimization:
Developments,applicationsandresources[A].in:
Proc.IEEECongr.Evol.put.[C],vol.1,no.1,2001,pp.81-86.
[4]ParsopoulosK,VrahatisM.Recentapproachestoglobaloptimizationproblemsthroughparticleswarmoptimization[J].Naturalputing,vol.40,no.1,2002,pp.235-306.
[5]谢晓锋,X文俊,杨之廉.微粒群算法综述[J].控制与决策,vol.18,no.2,2003:
129-134.
[6]HuX,ShiY,EberhartR.Recentadvancesinparticleswarm[A].in:
Proc.IEEECongr.Evol.put.[C],vol.1,2004,pp.90-97.
[7]BanksA,VincentJ,AnyakohaC.Areviewofparticleswarmoptimization.PartI:
backgroundanddevelopment[J].Naturalputing,vol.45,no.6,2007,pp.467-484.
[8]王万良,唐宇.微粒群算法的研究现状与展望[J].XX工业大学学报,vol.35,no.2,2007:
136-141.
[9]PoliR,KennedyJ,BlackwellT.Particleswarmoptimization:
Anoverview[J].SwarmIntelligence,vol.1,no.1,2007,pp.33-57.
[10]JelmerVanA,RobertB,BartDeS.Particleswarmsinoptimizationandcontrol[A].in:
Proceedingsofthe17thWorldCongressTheInternationalFederationofAutomaticContr