发布网友 发布时间:2022-04-22 01:15
共1个回答
热心网友 时间:2023-12-02 07:58
微粒群算法中比较重要的几个参数为:惯性权重ω(或压缩因子χ)、学习因子c1和c2、速度*Vmax、位置*Xmax、种群大小和初始种群。有研究者固定其他参数,研究单个参数对算法的影响;也有研究者同时研究多个参数对算法的影响。Shi对PSO算法中的参数选择进行了最早的讨论。
当前的研究普遍认为惯性权重对微粒群算法性能的影响最大,因此这方面的研究最多。王俊伟对PSO算法中的惯性权重进行了系统的实验,分析了固定权重与时变权重的选择问题,并从问题依赖性、种群大小和拓扑结构等方面详细分析了惯性权重对于算法性能的影响。结果表明,惯性权重的问题依赖性较小,随着种群的增大,其取值应适当减小,局部版本下惯性权重的选择具有更大的自由度。陈贵敏提出了开口向下抛物线、开口向上抛物线和指数曲线等非线性惯性权重递减策略并与线性递减策略进行比较,试验结果表明,凹函数递减策略优于线性策略,而线性策略优于凸函数策略。
一般认为,在微粒群算法中,惯性权重用于平衡全局和局部搜索能力,较大的惯性权重更倾向于全局搜索,而较小的惯性权重适于局部搜索。因此惯性权重的取值应随时间逐渐减小,而Zheng声称递增的惯性权重性能更好,但是在该文中使用了一组不同于标准PSO算法的学习因子,并且在该文中没有说明这对性能的影响。
由于固定的惯性权重往往无法获得好的效果,因此出现了惯性权重在搜索过程中随迭代代数线性下降、模糊自适应变化、按非线性函数下降、按余弦规律下降、按双曲线规律下降、按Sugeno函数规律下降的PSO算法。与此同时,还有很多种惯性权重随某种评价指标自适应变化的方法,如根据搜索的成功历史、微粒平均速度、种群多样性、目标函数平整性的变化、微粒群进化速度和聚集程度、个体搜索能力(ISA)来动态调整惯性权重。Liu根据Metropolis准则来确定是否接受惯性权重的变化。
也有人使用随机惯性权重,如将其设定为[0.5+(Rnd/2.0)]、取为在[0,1]区间均匀分布的随机数。Jiang在惯性权重的选取过程中引入混沌机制,使得惯性权重的取值能够遍历[0, 1]区间。
学习因子c1和c2代表了将每个微粒拉向pBest和gBest(或nBest)位置的随机加速项的权重。从心理学的角度而言,认知项(Cognition term)代表了个体复制已被证明是成功的过去行为的趋势,而社会项(Social term)代表了追从他人成功经验的趋势。c1和c2很多时候被设定为2.0,显而易见的原因是它将使得搜索覆盖以pBest和gBest为中心的区域。另一个常用的值为1.49445,它可以确保PSO算法的收敛。Carlisle通过大量实验,提出一套比较好的参数设置为将c1和c2分别设定为2.8和1.3,且该参数设置的性能在[182]中得到进一步肯定。受时变惯性权重的思想启发,出现了多种学习因子随时间变化的PSO算法变种,如学习因子随时间线性下降、根据微粒的演化状态动态调整、根据适应值持续变差的次数和种群的分散程度来动态调整。高鹰建立了学习因子和微粒群中所有微粒的平均适应度与整体最优位置适应度之差的一种非线性函数关系,通过非线性时变的学习因子自适应地调整“认知”部分和“社会”部分对微粒的影响,从而提高算法的收敛速度和精度。
在大多数情况下,两个学习因子的取值相同,从而使得社会搜索和认知搜索有相同的权重。Kennedy研究了两个极端情况:只有社会项的模型和只有认知项的模型,结论是这两个部分对微粒群搜索的成功而言都很关键,对非对称的学习因子尚无确定的结论报告。Depuy等分析了最大速度、社会学习因子和认知学习因子对微粒群算法在搜索空间中找到最优点的能力的影响,但是分析过于简单。
还有的研究同时确定惯性权重和学习因子。有很多研究者采用各种优化技术来动态确定惯性权重和学习因子,如遗传算法、混沌寻优方法、演化算法、微分演化算法、自适应校正设计(Adaptive CriticDesign)技术。Silva基于共生机制,使用另外一个PSO算法来动态确定原算法的参数。Krohling将惯性权重设置为零,同时用两个服从分布的随机变量来取代c1r1和c2r2,其中为期望为0、方差为1的高斯分布。Arumugam根据一个由pBest和gBest确定的函数来动态地确定惯性权重和学习因子。Breaban将速度更新公式中的各项解释为算子的操作,并引入了一些新的算子,据此来同时自适应地确定惯性权重和学习因子。Ueno对微粒采用多组参数值,并利用微粒速度的平均值来动态确定惯性权重和学习因子。Khosla使用Taguchi方法来确定算法参数。Kuo采用十七个低维函数优化问题,针对单个极小和多个极小的情况研究了惯性权重和学习因子的取值范围。
微粒的速度可以受一个最大速度Vmax的*,由此作为一种约束来控制微粒群的全局探索能力。在最初的原始PSO算法中,采用的参数为,,微粒的速度经常会快速地增长到非常大的值,这样会影响算法的性能,所以需要对微粒速度进行*。后来,Clerc指出速度*并非必须的,引入收缩因子同样可以实现*微粒速度的目的。不过,即便采用收缩因子,试验表明如果同时加以速度*能够获得更好的结果,因此速度*一直被保留下来。一般而言,Vmax被设置为每个变量的动态范围的值,一般为固定值,但也可以随时间线性递减或者根据搜索的成功历史来动态减小。
微粒的位置可以受最大位置Xmax的*,避免微粒飞出有物理意义的解空间之外。Zhang提出一种周期性模式的边界处理方法。Robinson提出了三种控制技术,分别为吸引墙、反射墙和不可见墙。一旦微粒的某一维碰到解空间的边界,则吸引墙方法将速度设为零,反射墙方法改变速度方向,由此这两种方法最终都可以将微粒拉回到允许的解空间范围内。而不可见墙方法对飞出边界的微粒不计算适应值,以节约计算时间并避免影响其它微粒的运动。但是,这三种边界条件下PSO算法的性能受问题的维度以及全局最优点与搜索空间边界的相对位置影响很大。为解决这一问题,Huang综合吸收墙和反射墙的特点,在其基础上提出一种混合的阻尼边界,以获得鲁棒且一贯的性能。而Mikki将硬位置*和吸引墙、反射墙技术结合起来,试验表明能够获得更好的效果。
种群大小的选择与问题相关,但是对问题并不十分敏感。20-50是比较常见的选择。在某些情况下,可能会使用较大的种群来适应特殊需要。
种群的初始化也是一个很重要的问题。一般情况下初始种群都是随机产生,但是也有多种智能化的种群初始化方法,如使用非线性单纯形法(NSM),重心Voronoi划分、正交设计、均匀设计等方法来确定PSO算法的初始种群,以使得初始种群的分布尽可能均匀,帮助算法更有效地探索搜索空间并找到更好的解。Robinson指出PSO算法和GA算法可以顺序使用,将PSO算法完成优化之后的种群作为GA算法的初始种群,或者反之,将GA算法完成优化之后的种群作为PSO算法的初始种群,都能得到很好的结果。
此外,还有人通过灵敏度分析、回归树、计算统计学等方法来调节PSO算法的参数,以提高算法性能,求解实际问题。