微粒群优化算法综述Word格式.docx

上传人:b****3 文档编号:18256001 上传时间:2022-12-14 格式:DOCX 页数:19 大小:137.07KB
下载 相关 举报
微粒群优化算法综述Word格式.docx_第1页
第1页 / 共19页
微粒群优化算法综述Word格式.docx_第2页
第2页 / 共19页
微粒群优化算法综述Word格式.docx_第3页
第3页 / 共19页
微粒群优化算法综述Word格式.docx_第4页
第4页 / 共19页
微粒群优化算法综述Word格式.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

微粒群优化算法综述Word格式.docx

《微粒群优化算法综述Word格式.docx》由会员分享,可在线阅读,更多相关《微粒群优化算法综述Word格式.docx(19页珍藏版)》请在冰豆网上搜索。

微粒群优化算法综述Word格式.docx

2.1来源和背景

为了说明微粒群优化算法的发展和形成背景,首先介绍一下早期的简单模型,即Boid(Bird-oid)模型。

这个模型是为了模拟鸟群的行为而设计的,它也是微粒群优化算法的直接来源。

一个最简单的模型是这样的:

每一个鸟的个体用直角坐标系上的点表示,随机地给它们赋一个初速度和初位置,程序运行的每一步都按照“最近邻速度匹配”规则,使某个个体的最近邻点的速度变得与它一样,如此迭代计算下去,很快就会使得所有点的速度变得一样。

因为这个模拟太简单而且远离真实情况,于是在速度项中增加了一个随机变量,即在迭代的每一步,除了满足“最近邻速度匹配”之外,每一步速度还要添加一个随机变化的量,这样使得整个模拟看起来更为真实。

Heppner设计了一个“谷地模型”来模拟鸟群的觅食行为[37]。

假设在平面上存在一个“谷地”,即食物所在地,鸟群开始时随机地分散在平面上,为了寻觅食物所在地,它们按照如下规则运动:

首先假设谷地的位置坐标为

,单个鸟的位置和速度坐标分别为

,用当前位置到谷地的距离:

(2-1)

来衡量当前位置和速度的“好坏程度”,离谷地的距离越近,则越“好”,反之越“坏”。

假设每一个鸟具有记忆能力,能够记住曾经达到的最好位置,记作pBest,并记a为系统规定的速度调节常数,rand为一个[0,1]间的随机数,设定速度项按照下述规则变化:

然后假设群体之间可以以某种方式通讯,每个个体能够知道并记住到当前为止整个群体的最好位置,记为gBest,记b为系统规定的速度调节常数,Rand为一个[0,1]间的随机数,则速度项在经过以上调整后,还必须按照下述规则变化:

在计算机上模拟的结果显示:

当a/b较大时,所有的个体很快地聚集到“谷地”上;

反之,微粒缓慢地摇摆着聚集到“谷地”的四周。

通过这个简单的模拟,发现群体能很快地找到一个简单函数(2-1)的最优点。

受该模型启发,Kennedy和Eberhart设计出了一种演化优化算法,并通过不断的试验和试错,最后将此算法的基本型固定为:

(2-2)

(2-3)

其中符号的意义同上。

研究者认为每个个体被抽象为没有质量和体积,而仅仅具有速度和位置的微粒,故将此方法称为“微粒群”优化算法。

图2-1微粒群优化算法流程图

据此,可对微粒群算法小结如下:

微粒群算法是一种基于种群的搜索过程,其中每个个体称作微粒,定义为在D维搜索空间中待优化问题的潜在解,保存有其历史最优位置和所有微粒的最优位置的记忆,以及速度。

在每一演化代,微粒的信息被组合起来调整速度关于每一维上的分量,继而被用来计算新的微粒位置。

微粒在多维搜索空间中不断改变它们的状态,直到到达平衡或最优状态,或者超过了计算限制为止。

问题空间的不同维度之间唯一的联系是通过目标函数引入的。

很多经验证据已经显示该算法是一个非常有效的优化工具。

微粒群优化算法的流程图见图2-1。

以下给出微粒群算法的比较完整的形式化表述。

在连续空间坐标系中,微粒群算法的数学描述如下:

设微粒群体规模为N,其中每个微粒在D维空间中的坐标位置向量表示为

,速度向量表示为

,微粒个体最优位置(即该微粒经历过的最优位置)记为

,群体最优位置(即该微粒群中任意个体经历过的最优位置)记为

不失一般性,以最小化问题为例,在最初版本的微粒群算法中,个体最优位置的迭代公式为:

(2-4)

群体最优位置为个体最优位置中最好的位置。

速度和位置迭代公式分别为:

(2-5)

(2-6)

由于初始版本在优化问题中应用时效果并不太好,所以初始算法提出不久之后就出现了一种改进算法[38],在速度迭代公式中引入了惯性权重ω,速度迭代公式变为:

(2-7)

虽然该改进算法与初始版本相比复杂程度并没有太大的增加,但是性能却有了很大的提升,因而被广泛使用。

一般的,将该改进算法称为标准微粒群算法,而将初始版本的算法称为原始微粒群算法。

通过分析PSO算法的收敛行为,Clerc介绍了一种带收缩因子的PSO算法变种[4],收缩因子保证了收敛性并提高了收敛速度。

此时的速度迭代公式为

(2-8)

显然,迭代公式(2-7)和(2-8)并无本质区别,只要适当选取参数,二者完全相同。

微粒群算法有两种版本,分别称为全局版本和局部版本。

在全局版本中,微粒跟踪的两个极值为自身最优位置pBest和种群最优位置gBest。

对应的,在局部版本中,微粒除了追随自身最优位置pBest之外,不跟踪种群最优位置gBest,而是跟踪拓扑邻域中的所有微粒的最优位置nBest。

对于局部版本,速度更新公式(2-7)变为:

(2-9)

其中

为局部邻域中的最优位置。

图2-2微粒迭代示意图

每一代中任意微粒迭代的过程见图2-2所示。

从社会学的角度来看速度迭代公式,其中第一部分为微粒先前速度的影响,表示微粒对当前自身运动状态的信任,依据自身的速度进行惯性运动,因此参数ω称为惯性权重(InertiaWeight);

第二部分取决于微粒当前位置与自身最优位置之间的距离,为“认知(Cognition)”部分,表示微粒本身的思考,即微粒的运动来源于自己经验的部分,因此参数c1称为认知学习因子(也可称为认知加速因子);

第三部分取决于微粒当前位置与群体中全局(或局部)最优位置之间的距离,为“社会(Social)”部分,表示微粒间的信息共享与相互合作,即微粒的运动来源于群体中其他微粒经验的部分,它通过认知模拟了较好同伴的运动,因此参数c2称为社会学习因子(也可称为社会加速因子)。

自从PSO算法被提出以来,由于它直观的背景,简单而容易实现的特点,以及对于不同类型函数广泛的适应性,逐渐得到研究者的注意。

十余年来,PSO算法的理论与应用研究都取得了很大的进展,对于算法的原理已经有了初步的了解,算法的应用也已经在不同学科中得以实现。

PSO算法是一种随机的、并行的优化算法。

它的优点是:

不要求被优化函数具有可微、可导、连续等性质,收敛速度较快,算法简单,容易编程实现。

然而,PSO算法的缺点在于:

(1)对于有多个局部极值点的函数,容易陷入到局部极值点中,得不到正确的结果。

造成这种现象的原因有两种,其一是由于待优化函数的性质;

其二是由于微粒群算法中微粒的多样性迅速消失,造成早熟收敛。

这两个因素通常密不可分地纠缠在一起。

(2)由于缺乏精密搜索方法的配合,PSO算法往往不能得到精确的结果。

造成这种问题的原因是PSO算法并没有很充分地利用计算过程中获得的信息,在每一步迭代中,仅仅利用了群体最优和个体最优的信息。

(3)PSO算法虽然提供了全局搜索的可能,但是并不能保证收敛到全局最优点上。

(4)PSO算法是一种启发式的仿生优化算法,目前还没有严格的理论基础,仅仅是通过对某种群体搜索现象的简化模拟而设计的,但并没有从原理上说明这种算法为什么有效,以及它适用的范围。

因此,PSO算法一般适用于一类高维的、存在多个局部极值点而并不需要得到很高精度解的优化问题。

目前针对PSO算法开展的研究工作种类繁多,经归纳整理分为如下八个大类:

(1)对PSO算法进行理论分析,试图理解其工作机理;

(2)改变PSO算法的结构,试图获得性能更好的算法;

(3)研究各种参数配置对PSO算法的影响;

(4)研究各种拓扑结构对PSO算法的影响;

(5)研究离散版本的PSO算法;

(6)研究PSO算法的并行算法;

(7)利用PSO算法对多种情况下的优化问题进行求解;

(8)将PSO算法应用到各个不同的工程领域。

以下从这八大类别着手,对PSO算法的研究现状作一梳理。

由于文献太多,无法面面俱到,仅捡有代表性的加以综述。

2.2理论分析

目前对微粒群算法开展的理论研究主要集中在微粒群算法的原理方面,即微粒之间是如何相互作用的,为什么微粒群算法对于很多优化问题是有效的,而对于有些问题则效果不是很明显。

具体来说,这个问题的研究又分为三个方面,其一是单个微粒的运动轨迹;

其二是收敛性问题;

其三是整个微粒系统随时间的演化和分布。

对简化微粒行为的第一个分析由Kennedy给出[39],通过仿真给出了一系列设计选择的情况下不同的微粒轨迹。

对简化微粒群算法的第一个理论分析由Ozcan给出[40-41],作者在文中指出,在一个简化的一维PSO系统中,微粒沿着一条由正弦波定义的路径前进,随机确定其幅度和频率。

但是,他们的分析仅限于没有惯性权重的简单PSO模型,并且假定Pid和Pgd保持不变。

事实上,Pid和Pgd会频繁变化,于是微粒轨迹由很多不同幅度和频率的正弦波合成,整个轨迹看起来仍然是无序的。

这使得他们的结论的有效性大打折扣。

对算法稳定性质的第一个形式化分析由Clerc给出[4],但是该分析需要将随机系数视作常数,从而将标准随机PSO算法简化为一个确定型动态系统。

这样得到的系统是一个二阶线性动态系统,其稳定性依赖于系统的极点或状态矩阵的特征根。

vandenBergh对基于确定型版本的PSO算法进行了类似的分析,并确定了在参数空间中保证稳定性的区域[3]。

在文献[5]和[42]中也提出了关于收敛性和参数选择的内容,但是作者承认他们并没有考虑算法的随机特性,因此其结果有局限性。

类似的还有对连续时间版本的PSO算法所作的分析[43]。

Blackwell针对球形对称局部邻域的函数,对PSO算法中多样性缺失的速度进行了理论分析和实验验证[44]。

Kennedy系统地研究了速度对PSO算法的影响,有助于理解速度对算法性能的贡献[45]。

Kadirkamanathan等采用李雅普诺夫稳定性分析和被动系统(PassiveSystem)的概念,对微粒动力学的稳定性进行了分析[46]。

该分析中没有假定所有参数均为非随机的限制,得出了稳定的充分条件,并给出示例。

仿真结果验证了理论的预期,微粒动力学的稳定需要在惯性权重减小时,增大随机参数的最大值。

该分析是基于随机微粒动力学的,将微粒动力学表达为一个非线性反馈控制系统。

该系统有一个确定型线性部分和一个非线性部分,以及/或在反馈路径上的时变增益。

该文虽然考虑了随机分量的影响,但是其稳定性分析是针对最优位置所进行的(群体最优和个体最优相同),其结论不能直接应用到非最优的微粒。

Clerc研究了处于停滞阶段的微粒群算法的迭代过程,对迭代过程中的各随机系数进行了详细的研究,给出了各随机系数的概率密度函数[47]。

Jiang将微粒群算法中每一演化步骤时的微粒位置量视作一个随机向量,考查了微粒群算法中惯性权重ω和学习因子c1、c2等参数对算法收敛性的影响,并采用随机过程理论分析了标准微粒群算法的随机收敛性[10]。

原始PSO算法即使能够收敛,也只能收敛到群体所搜索到的最好解,而不能保证该收敛解是最优解,甚至不能保证它是局部最优解。

vandenBergh提出一种保证收敛的PSO算法,其策略是对全局最优微粒采用一个新的更新方程,使其在全局最好位置附近产生一个随机搜索,而其他微粒仍用原方程更新。

该算法能够保证微粒群算法收敛到局部最优解,其代价为收敛速度加快,在多模问题中性能不如标准PSO算法[48]。

2.3算法结构

对微粒群算法结构的改进方案有很多种,对其可分类为:

采用多个子种群;

改进微粒学习对象的选取策略;

修改微粒更新迭代公式;

修改速度更新策略;

修改速度限制方法、位置限制方法和动态确定搜索空间;

与其他搜索技术相结合;

以及针对多模问题所作的改进。

第一类方案是采用多个子种群。

柯晶考虑优化问题对收敛速度和寻优精度的双重要求并借鉴多群体进化算法的思想,将寻优微粒分成两组,一组微粒采用压缩因子的局部模式PSO算法,另一组微粒采用惯性权重的全局模式PSO算法,两组微粒之间采用环形拓扑结构[49]。

对于高维优化问题,PSO算法需要的微粒个数很多,导致计算复杂度常常很高,并且很难得到好的解。

因此近来,出现了一种协作微粒群算法(CooperativeParticleSwarmOptimizer,CPSO-H)[50],将输入向量拆分成多个子向量,并对每个子向量使用一个微粒群来进行优化。

虽然CPSO-H算法使用一维群体来分别搜索每一维,但是这些搜索结果被一个全局群体集成起来之后,在多模问题上的性能与原始PSO算法相比有很大的改进。

Chow使用多个互相交互的子群,并引入相邻群参考速度[51]。

冯奇峰提出将搜索区域分区,使用多个子群并通过微粒间的距离来保持多样性[52]。

陈国初将微粒分成飞行方向不同的两个分群,其中一分群朝最优微粒飞行,另一分群微粒朝相反方向飞行;

飞行时,每一微粒不仅受到微粒本身飞行经验和本分群最优微粒的影响,还受到全群最优微粒的影响[53]。

Niu在PSO算法中引入主—从子群模式,提出一种多种群协作PSO算法[54]。

Seo提出一种多组PSO算法(MultigroupedPSO),使用N组微粒来同时搜索多模问题的N个峰[55]。

Selleri使用多个独立的子群,在微粒速度的更新方程中添加了一些新项,分别使得微粒向子群历史最优位置运动,或者远离其他子群的重心[56]。

王俊年借鉴递阶编码的思想,构造出一种多种群协同进化PSO算法[57]。

高鹰借鉴生态学中环境和种群竞争的关系,提出一种基于种群密度的多种群PSO算法[58]。

第二类方案是改进微粒学习对象的选取策略。

Al-kazemi提出多阶段PSO算法,将微粒按不同阶段的临时搜索目标分组,这些临时目标允许微粒向着或背着它自己或全局最好位置移动[59]。

Ting对每个微粒的pBest进行操作,每一维从其他随机确定的维度学习,之后如果新的pBest更好则替换原pBest;

该文还比较了多种不同学习方式对应的PSO算法的性能[60]。

Liang提出一种新颖的学习策略CLPSO,利用所有其他微粒的历史最优信息来更新微粒的速度;

每个微粒可以向不同的微粒学习,并且微粒的每一维可以向不同的微粒学习[61]。

该策略能够保持群体的多样性,防止早熟收敛,可以提高PSO算法在多模问题上的性能;

通过实验将该算法与其它几种PSO算法的变种进行比较,实验结果表明该算法在解决多模复杂问题时效果很好[62]。

Zhao在PSO算法中使用适应值最好的n个值来代替速度更新公式中的gBest[63]。

Abdelbar提出一种模糊度量,从而使得每个邻域中有多个适应值最好的微粒可以影响其它微粒[64]。

Wang也采用多个适应值最好的微粒信息来更新微粒速度,并提出一种模糊规则来自适应地确定参数[65]。

崔志华提出一种动态调整的改进PSO算法,在运行过程中动态调整极限位置,使得每个微粒的极限位置在其所经历的最好位置与整体最好位置所形成的动态圆中分布[66]。

与原始PSO算法相反,有一类方法是远离最差位置而非飞向最优位置。

Yang提出在算法中记录最差位置而非最优位置,所有微粒都远离这些最差位置[67]。

与此类似,Leontitsis在微粒群算法中引入排斥子的概念,在使用个体最优位置和群体最优位置信息的同时,在算法中记录当前的个体最差位置和群体最差位置,并利用它们将微粒排斥到最优位置,从而让微粒群更快地到达最优位置[68]。

孟建良提出一种改进的PSO算法,在进化的初期,微粒以较大的概率向种群中其他微粒的个体最优学习;

在进化后期,微粒以较大的概率向当前全局最优个体学习[69]。

Yang在PSO算法中引入轮盘选择技术来确定gBest,使得所有个体在进化早期都有机会引领搜索方向,从而避免早熟[70]。

第三类方案是修改微粒更新公式。

Hendtlass在速度更新方程中给每个微粒添加了记忆能力[71]。

He在速度更新方程中引入被动聚集机制[72]。

曾建潮通过对PSO算法的速度进化迭代方程进行修正,提出一种保证全局收敛的随机PSO算法[73]。

Zeng在PSO算法中引入加速度项,使得PSO算法从一个二阶随机系统变为一个三阶随机系统,并使用PID控制器来控制算法的演化[74]。

为了改进PSO算法的全局搜索能力,Ho提出一种新的微粒速度和位置更新公式,并引入寿命(Age)变量[75]。

第四类方案是修改速度更新策略。

Liu认为过于频繁的速度更新会弱化微粒的局部开采能力并减慢收敛,因此提出一种松弛速度更新(RVU)策略,仅当微粒使用原速度不能进一步提高适应值时才更新速度,并通过试验证明该策略可以大大减小计算量并加速收敛[76]。

罗建宏对同步模式和异步模式的PSO算法进行了对比研究,试验结果表明异步模式收敛速度显著提高,同时寻优效果更好[77]。

Yang在微粒的更新规则中引入感情心理模型[78]。

Liu采用一个最小速度阈值来控制微粒的速度,并使用一个模糊逻辑控制器来自适应地调节该最小速度阈值[79]。

张利彪提出了对PSO算法增加更新概率,对一定比例的微粒并不按照原更新公式更新,而是再次随机初始化[80]。

Dioşan利用遗传算法(GA)来演化PSO算法的结构,即微粒群中各微粒更新的顺序和频率[81]。

第五类方案是修改速度限制方法、位置限制方法和动态确定搜索空间。

Stacey提出一种重新随机化速度的速度限制和一种重新随机化位置的位置限制[82]。

Liu在[76]的基础上,在PSO算法中引入动量因子,来将微粒位置限制在可行范围内[83]。

陈炳瑞提出一种根据微粒群的最佳适应值动态压缩微粒群的搜索空间与微粒群飞行速度范围的改进PSO算法[84]。

第六类方案是通过将PSO算法与一些其他的搜索技术进行结合来提高PSO算法的性能,主要目的有二,其一是提高种群多样性,避免早熟;

其二是提高算法局部搜索能力。

这些混合算法包括将各种遗传算子如选择[12,85]、交叉[86]、变异[82,87-90]引入PSO算法,来增加种群的多样性并提高逃离局部最小的能力。

Krink通过解决微粒间的冲突和聚集来增强种群多样性,提出一种空间扩展PSO算法(SpatialExtensionPSO,SEPSO)[91];

但是SEPSO算法的参数比较难以调节,为此Monson提出一种自适应调节参数的方法[92]。

用以提高种群多样性的其他方法或模型还包括“吸引—排斥”[93]、捕食—被捕食模型[94-95]、耗散模型[96-97]、自组织模型[98]、生命周期模型(LifeCyclemodel)[99]、贝叶斯优化模型[100]、避免冲突机制[101]、拥挤回避(CrowdAvoidance)[102]、层次化公平竞争(HFC)[103]、外部记忆[104]、梯度下降技术[105-106]、线性搜索[107]、单纯形法算子[108]、爬山法[109-110]、劳动分工[111]、主成分分析技术[112]、卡尔曼滤波[113]、遗传算法[114-117]、随机搜索算法[118]、模拟退火[119-121]、禁忌搜索[122-123]、蚁群算法(ACO)[124-126]、人工免疫算法[127-128]、混沌算法[129-130]、微分演化[131-132]、遗传规划[133-135]等。

还有人将PSO算法在量子空间进行了扩展[136-139]。

Zhao将多主体系统(MAS)与PSO算法集成起来,提出MAPSO算法[140]。

Medasani借鉴概率C均值和概率论中的思想对PSO算法进行扩展,提出一种概率PSO算法,让算法分勘探和开发两个阶段运行[141]。

第七类方案专门针对多模问题,希望能够找到多个较优解。

为了能使PSO算法一次获得待优化问题的多个较优解,Parsopoulos使用了偏转(Deflection)、拉伸(Stretching)和排斥(Repulsion)等技术,通过防止微粒运动到之前已经发现的最小区域,来找到尽可能多的最小点[142]。

但是这种方法会在检测到的局部最优点两端产生一些新的局部最优点,可能会导致优化算法陷入这些局部最小点。

为此,Jin提出一种新的函数变换形式,可以避免该缺点[143]。

基于类似思想,熊勇提出一种旋转曲面变换方法[32]。

保持种群多样性最简单的方法,是在多样性过小的时候,重置某些微粒或整个微粒群。

vbjerg在PSO算法中采用自组织临界性作为一种度量,来描述微粒群中微粒相互之间的接近程度,来确定是否需要重新初始化微粒的位置[144]。

Clerc提出了一种“Re-Hope”方法,当搜索空间变得相当小但是仍未找到解时(No-Hope),重置微粒群[145]。

Fu提出一种带C-Pg变异的PSO算法,微粒按照一定概率飞向扰动点而非Pg[146]。

赫然提出了一种自适应逃逸微粒群算法,限制微粒在搜索空间内的飞行速度并给出速度的自适应策略[147]。

另一种变种是小生境PSO算法,同时使用多个子种群来定位和跟踪多个最优解[148-149]。

Brits还研究了一种通过调整适应值计算方式的方法来同时找到多个最优解[150]。

Li在PSO算法中引入适应值共享技术来求解多模问题[151]。

Zhang在PSO算法中采用顺序生境(SequentialNiching)技术[152]。

在小生境PSO算法的基础上,还可以使用向量点积运算来确定各个小生境中的候选解及其边界,并使该过程并行化,以获得更好的结果[153-154]。

但是,各种小生境PSO算法存在一个共同的问题,即需要确定一个小生境半径,且算法性能对该参数很敏感。

为解决该问题,Bird提出一种自适应确定niching参数的方法[155]。

Hendtlass在PSO算法中引入短程力的概念,并基于此提出一种WoSP算法,可以同时确定多个最优点[156]。

刘宇提出一种多模态PSO算法,用聚类算法对微粒进行聚类,动态地将种群划分成几个类,并且使用微粒所属类的最优微粒而非整个种群的最好微粒来更新微粒的速度,从而可以同时得到多个近似最优解[157]。

Li在PSO算法中引入物种的概念[158],但是由于其使用的物种间距是固定的,该方法只适用于均匀分布的多模问题;

为此,Yuan对该算法进行扩展,采用多尺度搜索方法对物种间距加以自适应的调整[159]。

此外,也有研究者将PSO算法的思想引入其他算法中

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1