计算机研究与发展JournalofC冶1llputerR巴犯archandL吮veloPmentISN1000一1239/CNll一1777lTP
44(Suppl.):339一343,2007
基于禁忌搜索的混合粒子群优化算法张世勇’.2熊忠阳‘‘(重庆大学计算机学院重庆4o0044)2(重庆工商大学理学院重庆400067)(:瓦s-y@163.com)
HybridParticleSwarm0PtimizationAlgorithmBasedonTabooSearchingzhangshi扣ngl,Zandxiongzhongyangl1(叙2怪粥of肠m加te。&ience,cho”ggingun£ ̄艺ty,〔决。”gqing4004)2(叙2绍‘of反扮nce,以on朋ingT阮hnol卿a耐Bus£nes价£ ̄1妙,以on乡ng400o67)
AbstractParticleswarmoptimization(PSO)hassomedefects,suchasimmersionlocaloptimization,slowconvergencevelocityandlowprecisionsolution.Inthispapertal朋searchalgorithmandpenaltythinkingareincorporatedintotheparticleswarmoptimizationtoincreasethediversityofparticleswarm.InertialweightofPSOismended.UsingthePenaltyfunctionreconstructthefitnessfunction.AnewhybridPS(〕algorithmbasedontaboosearching(THPSO)isproposed.ThecomputationalexperimentalresultsonsixbenchmarkfunctionsshowthattheTHPSOhasbetterglobesearchcapability,fasterconve堪encevelocityandcanattainhigherprecisionvaluethanthePS0algorithm.
Keywordstaboosearch;PSOal即rithm;globaloptimization
摘要在粒子群优化算法中引入禁忌搜索思想从而增加粒子群的多样性,改进惯性权重,添加罚函数重新构造适应度函数.在此基础上提出一种基于禁忌搜索的混合粒子群优化算法(THPSO).通过6个标准测试函数实验,结果表明提出的算法比基本粒子群优化算法(PSO)具有更好的全局寻优能力、更快的收数速度以及获得更高精度的解的能力.
关键词禁忌搜索;粒子群优化算法;全局优化中图法分类号TP301.6
粒子群优化(particleswarmoptimization,PSo)算法是在研究群智能(swarmintelligence)演化计算技术的背景下,由Eberhart和Kennedy在受到自然生物群体行为研究结果的启发下于1995年提出的一种演化计算技术〔‘一2].由于其简单、有效、收敛速度较快并且有深厚的智能基础等特点,使得该算法不仅适合科学研究,而且又特别适合工程应用〔3〕,因此近年来受到学术界的高度关注,目前该算法已经在函数优化、神经网络训练、模式分类、模糊系统控制等领域中得到广泛应用.但是粒子群优化算法具有容易陷人局部最优值、最终解的精度低和后期收敛速度慢的缺点.目前已经有众多学者针对这一缺点提出了不同的改进算法,改进主要集中在以下几个方面:基于惯性权重[4]、学习因子等控制参数的改进【5];基于个体极值和全局极值的选取方式的改进;基于引人其他算法的思想的改进.其中基于引人其他算法的思想的改进最多,比如引人模拟退火算法思想的改进[“〕、引人遗传算法的改进等等f7〕.这些改进,在不同程度上提高了算法的收敛速度和精度,但效果并不十分理想.本文主要是采用改进参数与引人禁忌思想相结合的方式来改进粒子群优化算法,给出了基于禁忌搜索的混合粒子群优化算
收稿日期:2007一03一05
万方数据计算机研究与发展2007,44(增刊)法,该算法结合了粒子群优化算法具有全局寻优能力、实现简单的特点以及禁忌搜索算法具有的跳出局部最优解的能力,从而避免了粒子群优化算法易于陷入局部极值点的缺点,提高了进化后期算法的收敛速度和解的精度.6个基准测试函数的对比实验结果说明所提出的基于禁忌搜索的混合粒子群优化算法优于基本粒子群优化算法.1粒子群优化算法 Eberhart和Kennedy提出的粒子群算法也称为基本粒子群算法〔‘一幻.它跟遗传算法类似,是一种基于迭代的优化算法.算法开始时,把优化问题解空间的每个解都看成是搜索空间中的一只鸟即一个“粒子”,每个粒子有一个位置(一个向量)来决定粒子在搜索空间中所处的位置,每个粒子有一个速度(跟位置同维数的一个向量)来决定粒子飞翔的方向和距离,所有的粒子都有一个由被优化的函数或者构造的目标函数决定的适应度值,在每一次迭代中每一个粒子有一个个体极值,在每一次迭代中所有粒子共同拥有一个全局极值,粒子就追随个体极值和全局极值在解空间中搜索并找到最优解.设解向量为m维变量,则当算法迭代到第k次时,第1个粒子的位置、速度和适应度函数可以分别表示为对=(x少;,x轰,…,x氖),v季=(v季1,v九,…,v氮),(1)(2) 第2步.根据适应度函数计算每个粒子的适应度值;判断结束条件是否满足,如果满足结束条件则停止,否则进行第3步. 第3步.对每个粒子,比较当前位置和个体极值,若更好,则更新;对每个粒子,比较当前位置和全局极值,若更好,则更新. 第4步.根据粒子的速度式(4)和位置式(5)调整粒子的速度和位置.然后重复第2步. v懊+‘=。v全+clrl(p汾‘一x全)+
cZrZ(9沪‘一x季),(4) x飞+1=x季+v飞+‘,(5)在式(4)和式(5)中,k+1表示第k+1次迭代;1表示第1个粒子;v飞+’表示第1个粒子第k十1次迭代的速度;式十‘表示第1个粒子第k+1次迭代的位置;。是惯性权重,其取值范围在闭区间〔0,11;。1,。2学习因子,其取值都为2;rl,rZ是取值在闭区间【0,1]上的随机函数,p汁,表示第1个粒子第k次迭代时的最优位置即个体极值,9皆‘表示种群第k次迭代时的全局极值.由速度式(4)可以看出,当迭代到一定的次数以后,粒子的位置与个体极值和全局极值的差距越来越小,当k足够大时它们的差值趋于0,此时粒子的速度主要靠惯性权重和上一次的速度来改变,如果。是一个小于1的常数,则经过一定的迭代次数以后,粒子的速度会趋于0,这样粒子移动的距离就为0,此时粒子就陷人了局部极值.
fitnes(x‘),(3)其中,x轰是第1个粒子第k次迭代中在解空间中的第,维,即第1个粒子的第,维待优化变量.vft是第1个粒子在第k次迭代中的第t维速度分量.fitnes(x、)是适应度函数,根据应用领域的不同该函数具有不同的表达式。 个体极值表示为p汾,,所有粒子共同惟一的全局极值表示为9沪‘.其中个体极值是一个粒子从算法开始到当前迭代的过程中获得最优适应度值所对应的自己的位置。全局极值是整个粒子种群从算法开始到当前迭代过程中获得最优适应度值所对应的粒子的位置,即所有个体极值中取得最优适应度函数值的那个个体极值. n个粒子的种群(population)表示为一个m行n列的矩阵A氮、。,代表n个候选解. PSO算法的描述: 第1步.初始化粒子群.2禁忌搜索 禁忌搜索(taboosearch)是由Gfover提出的一种智能启发式的全局性邻域搜索算法,它模拟人类具有记忆功能的寻优特征,通过局部邻域搜索机制和相应的禁忌准则来避免迁回搜索,并通过特赦准则来释放一些被禁忌的优良状态,进而保证多样化的有效搜索.研究表明它可以克服如遗传算法等演化算法的容易陷人早熟的缺陷,并最终实现全局优化.该算法涉及到邻域(neigh肠rl刀分)、禁忌表(tah刀lst)、禁忌长度(tabolength)等概念,目前禁忌搜索算法多用来跟演化算法结合以增强演化算法的全局优化性能,本文主要是采用其跳离局部最优的思想,使用中长期记忆方法来改进粒子群优化算法.3混合粒子群优化算法
由上面分析可知,要克服PSO的上述缺点,可
万方数据张世勇等:基于禁忌搜索的混合粒子群优化算法以从多方面人手.本文对两个方面进行改进,首先对。进行改进.较大的。有助于算法在解空间中大范围的探测,有助于算法跳离局部极值点,但不利于算法的收敛并降低解的精度;较小的。有助于算法在解空间中小范围内开拓,可以帮助算法加快收敛速度以及提高解的精度,但如果从算法开始。就一直比较小,那么算法很容易陷入局部极值点.因此在文中首先引人一个均值等于0的正态随机变量,然后设置与迭代次数相关的对称积分区间,使用该随机变量在某个对称变化区间上的概率来作为。,其表达式如下:T一孟十口一(T一k+a) l
厂布-,_eV‘兀口
鑫,(6)
初始化各粒子的初始位置和初始速度、初始化个体极值和全局极值和禁忌表. 第2步.访问禁忌表,根据适应度函数式(9)计算每个粒子的适应度值. 第3步.对每个粒子,比较当前适应度值和它经历过的最好位置的适应度值.若更好,则更新;对每个粒子,比较当前适应度值和群体所经历的最好位置的适应度值.若更好,则更新. 第4步.根据粒子的速度式(4)和位置式(5)调整粒子的速度和位置,判断是否达到最大迭代次数或者满足最小误差,如果终止条件满足则输出结果并结束算法,否则重复第2步.尸! -- 田
这里T是迭代的最大次数,k是当前迭代次数,口是标准差,a是一个用于调整。的最小值的常数.这样在算法开始时积分区间大,。值比较大(小于等于0.95),进化后期积分区间小,田比较小(大于0.2),在一定程度克服PSO算法的缺点,加快算法后期的收敛速度并增加最终解的精度.其次对全局极值的选取方式进行改进.首先构造一个长度与粒子个数相等的向量(禁忌表)来记录种群中每个粒子在最近的100次中作为全局极值的次数,然后以禁忌表的分量作为自变量来构造罚函数
4.仿真实验 为了验证算法的有效性,文中使用6个经典的测试函数(Benchmarkfunction)来对算法进行测试,这6个函数是:Ackley,Griewallk,R倪tlbrock,Rastrigln,Sphere,Schaffer.下面给出这些函数的定义、全局极值以及在测试时所使用搜索空间.
Ackley函数:20+e一 120e一了2才_