改进粒子群算法在多模态函数优化中的应用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

文章编号:1001-4098(2010)11-0110-06

改进粒子群算法在多模态函数优化中的应用

邓铁永1,2,张世文2,李智勇2

(1.天津大学管理学院,天津 300072; 2.湖南大学计算机与通信学院,湖南长沙 410082)

摘 要:针对多模态函数寻优问题,本文融合了启发式智能算法改进粒子群算法和快速收敛能力的非线性Po well直接法、轴向搜索法,提出两种融合算法:一种是基于改进的PSO算法、Pow ell直接法相融合的算法;

另一种是基于改进的PSO算法、轴向搜索法相融合的算法。通过函数测试结果,比对其他文献,该算法切实提高了多模态函数寻优的精度。

关键词:改进粒子群算法;Po w ell直接法;轴向搜索法;多模态

中图分类号:T P301 文献标识码:A

多模态函数求极值问题,其算法的目的是求得所有的最优解以及尽可能多的局部解,这种思想与生物的进化思想有着相似之处。在描述粒子的运动轨迹以及如何保证它们向着最优解方向移动,最终求得函数的最优解这个思想的引导下可以借鉴粒子群算法。

粒子群优化算法[1]是一种非常有效而被广泛应用的迭代优化算法。其基本思想是通过群体中个体之间的协作和信息共享来寻找最优解。PSO自提出来以后,因其概念简单、容易实现、搜索速度快等优点,而受到了广泛的研究与关注。在基本的P SO算法的后期,粒子群会向局部最优或全局最优收敛,但是,粒子群优化算法并不保证一定能找到最优解。这是由于P SO算法在优化过程中存在着一些问题,这些问题使得粒子在搜索过程中易陷入局部最优,导致算法“早熟”。

经典算法例如最速下降法、共轭梯度法、New to n法、轴向搜索法等,对于连续可微函数,具有收敛速度快、精度高的特点。既然P SO具有容易陷入局部最优情况,而经典算法则具有收敛速度快,并且具有局部搜索能力,本文在前人的基础上,尝试将改进的粒子群算法与经典算法结合起来,提出两种算法融合的方案:一种是PSO与P ow ell直接法;另外一种是PSO与ZX。通过利用经典测试函数来做实验,比对测试数据,发现这两种方法都提高了算法精度和收敛速度,并且能够克服P SO算法的易陷入局部最优值和“早熟”的现象,而且还能遍历多模态函数的所有峰。两种方法使用同峰判断可以消除PSO算法陷入局部最优的隐患。

1 粒子群优化算法及其改进

1.1 标准的PSO算法

标准PSO算法[2]首先初始化一群随机微粒(初始解),然后进化(迭代)找到最优解。每个微粒通过跟踪两个“极值”来更新自己:一个极值是微粒本身找到的最优解,这个位置称为个体极值pbest;另一个极值是所有微粒找到的最优位置,通常称作g best。

标准P SO算法的数学描述为:设在一个n维的搜索空间中,由m个微粒组成的种群X={x1,x2,…,x m}。其中第i个微粒位置为x i={x i1,x i2,…,x in}T,速度为v i={v i1,v i2,…,v in}T.该微粒迄今为止搜索到的最好位置记为p best= {p best i1,p best i2,…,p best in}T,所有微粒迄今为止搜索到的最好位置为gbest={gbest i1,gbest i2,…,gbest in}T,微粒i的速度和位置更新公式[3]分别为:

 v k+1

id

=w v k

id

+c1rand()(p id-x k

id

)+c2r and()(p gd-x k

id

)(1)

x k+1

id

=x k

id

+v k+1

id

(2)式中,d=1,2,3,…,n(n为搜索空间维数,即待优化的变量个数);i=1,2,3,…,m(m为种群规模);t为当前进化代数;c1、c2表示正的加速常数,其中c1反映了微粒飞行过程中所记忆的最好位置(pbest)对微粒飞行速度的影响,又被称为“认知系数”,c2则反映了整个微粒群所记忆的最

第28卷第11期(总第203期) 系 统 工 程Vo l.28,N o.11 2010年11月 Systems Engineering N ov.,2010

收稿日期:2010-08-08

基金项目:教育部留学回国人员科研启动基金资助项目(2009-1001);湖南省自然科学基金资助项目(10J J5068)

作者简介:邓铁永(1972-),男,湖南湘乡人,博士研究生,研究方向:优化决策,经济管理。

好位置(g best)对微粒飞行速度的影响,又称为“社会学习系数”;r and()表示(0,1)之间的均匀分布随机数; 为惯性权重,它决定了微粒先前速度对当前速度的影响程度。

1.2 粒子群算法的优缺点

粒子群算法具有原理和机制简单、可调用参数少、收敛速度快,易实现等优点,但算法中粒子的初始位置、速度和算法的一些参数是被随机初始化的,因此算法每一次寻优的结果可能并不相同,有时会差别很大,这样会导致算法优化结果的不稳定。由于P SO算法在优化过程中存在着一些问题,这些问题使得粒子在搜索过程中易陷入局部最优,导致算法“早熟”。

1.3 粒子群认知模型的改进

PSO收敛快,在算法早期也存在着精度较低,易发散等缺点[4]。同时算法收敛到一定精度时,无法继续优化,所能达到的精度也比G A低。所以通过以下途径改善P SO的缺点。

(1)参数的改进

惯性权重法

Shi等提出了惯性权重的方法。惯性权重w是与前一次速度相关的一个比例因子。用惯性权重来控制前面的速度对当前速度的影响,较大的w可以加强PSO的全局搜索能力,而较小的w可以加强局部搜索能力。

模糊惯性权重法

Shi等提出用模糊控制器来动态自适应地改变惯性权重的技术[5]。模糊法能预测使用什么样的w更合适。

压缩因子

压缩因子有助于确保PSO算法收敛,且可以有效搜索不同的区域,该法能得到高质量的解。

(2)增加多样性的改进

空间临域法[6]

基本的局部版PSO中粒子的临域是基于粒子序号划分的。Sug anthan提出了基于粒子的空间位置划分的方案。

加入混沌初始化

利用混沌初始化粒子初始种群,可以增加种群的多样性。

动态目标函数法

很多实现优化问题的目标函数是随时间变化的。

(3)“粒子进化”和“多粒子群”[7]

“粒子进化”的思想来源于自然界适者生存[8]的法则,在粒子群算法进行时,如果某个粒子在陷入局部最优后不能够跳出,这就表明这个粒子不能在该区域内继续搜索更好的点,因此可认为该粒子在搜索过程中处于劣势,应当被淘汰;而其他的粒子则不受其淘汰的影响,继续在空间寻优。当陷入局部最优的粒子需要淘汰时,就会有新的粒子加入,而且刚加入的粒子有很强的搜索能力,使整个算法在搜索的中期和后期仍然能保持好的收敛方向。粒子的淘汰和填补过程称为“粒子进化”。但是,所有自理的趋向同一有可能使种群失去多样性,导致算法在后期的收敛速度明显减慢。因此在改进算法避免陷入局部最优的同时也要保证粒子种群的多样性。“多粒子群”就是在迭代的后期重新应用混沌算法,重新初始化粒子的位置以及速度。

(4)混沌算法初始化粒子群[9]

混沌是自然界一种看似杂乱、其实暗含内在规律性的常见非线性现象。研究表明,粒子群初始化对算法性能产生一定影响,混沌微粒初始化利用混沌运动遍历性、随机性和规律性等特点。在算法的初始化阶段,利用混沌运动的遍历性以粒子群的历史最佳位置为基础产生混沌序列,并将此序列中的最优位置随机替代粒子群中的某个粒子的位置。在算法运行过程中,对粒子的位置进行混沌更新和粒子群更新相结合的更新方式,使全局收敛和局部收敛达到一定平衡。混沌微粒群算法提高对多维空间局部搜索能力,可有效避免早熟收敛现象。

2 Pow ell直接法以及

PSO与Powell的融合

2.1 Pow ell直接法

po well法实际上是一种改进的共轭梯度法,求极小值很有用,所谓非线性是因为初始点的搜索方向不是固定的,随着初始点位置的变化其加速方向会改变,并不是沿着一条直线进行搜索的。该算法的具体算法步骤如下: 选定初始值x0和初始查找方向。一般是选择n个有顺序的线性独立方向p1,p2,…,p n,即取N维空间(e1,e2,…,e n)。

由x0出发沿p1方向进行一维查询,求的x1,x2,…, x n极小值依次求得所有点。

在上述查找过程中,f k=f(x k)表示点x k上的目标函数值,并比较前后两次目标函数值的差值,即比较f0-f1,f1-f2,…,用 m=f m-1- m表示前后两次目标函数差值最大值。

将x0-x n的距离延长一倍,计算2x n-x0.求这个新点上的目标函数值,表示为:延长方向寻查的目标函数极小点大于原方向各次迭代的目标函数的差值,所以下次的迭代式从当时点算起的。

重复以上步骤,直到前后两次迭代的目标函数值达到给定精度为止: f(x-*)-f(x-0) < 。

(1)黄金分割法(求Po well的步长t1)[10]

为了进行一维搜索,比较F ibo nacci和黄金分割法,我们保留了Fibo nacci的优点:

如果缩小的区域包含原来的试点,则该试点在下一步被利用。

效率最高,有限个试点的情况下,将最优点所在的区域缩小到最小。黄金分割法(m inHJ),我们保留了

111

第11期 邓铁永,张世文等:改进粒子群算法在多模态函数优化中的应用

相关文档
最新文档