带有选择和自适应变异机制的混合蛙跳算法

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

带有选择和自适应变异机制的混合蛙跳算法
刘悦婷
【摘要】混合蛙跳算法易陷入局部最优,且收敛速度较慢.为此,提出一种带有选择和自适应变异机制的蛙跳算法.引入线性递减的动态惯性权重修正最差青蛙,按照一定的概率选择适应度值较优的青蛙代替较差青蛙,并对每只青蛙个体以不同概率进行自适应变异.仿真结果表明,该算法可以平衡全局搜索和局部搜索,寻优能力强、迭代次数少,解的精度较高,更适合高维复杂函数的优化.%Because of the problems of Shuffled Frog Leaping Algorithm(SFLA) such as local optimality and slow convergence rate, a leapfrog algorithm with selection and adaptive mutation mechanism is presented. This algorithm introduces the linear decreasing adaptive inertia weight to correct the poor frog update strategy. It selects the frog with better fitness value to substitute the poor, and makes very frog adaptively mutate with different probability. Simulation results show that this algorithm can balance the global search and local search, and its optimization ability is stronger, the number of iterations is less, the solution is better, and the suitable for high-dimensional optimization of complex functions is more.
【期刊名称】《计算机工程》
【年(卷),期】2012(038)023
【总页数】6页(P206-210,218)
【关键词】混合蛙跳算法;选择机制;自适应变异;惯性权重;更新策略;全局最优
【作者】刘悦婷
【作者单位】甘肃联合大学电子信息工程学院,兰州730000
【正文语种】中文
【中图分类】TP391
1 概述
混合蛙跳算法(Shuffled Frog Leaping Algorithm,SFLA)是一种群体智能优化算法[1]。

该算法模拟青蛙群体寻找食物时按种群分类进行思想传递的过程,将全局广泛搜索和局部深度搜索相结合,使算法向着全局最优解的方向进行[2]。

与其他优化算法相比,SFLA具有灵活、通用、易于编程实现的特点,因而,既适合理论研究,又适合工程应用。

SFLA作为优化工具已广泛应用于资源网络优化问题、连续优化问题、聚类问题、流水车间调度问题等领域[3]。

而如何提高收敛速度和易陷入局部最优也成为该算法的一个研究热点。

文献[4]对SFLA易陷入局部最优,求解精度低的缺点,提出利用差分进化中的变异思想对SFLA的更新策略进行局部扰动。

文献[5]为提高SFLA收敛效率,提出在SFLA深度搜索方向上融合极值动力学优化算法。

文献[6]在全局搜索中加入自适应logistic序列的混沌变异操作,同时,结合个体适应度和进化代数自适应调整变异尺度,从而提高算法求解最优解的能力。

文献[7]引入遗传操作数增加对局部极值的扰动以避免陷入局部最优,同时,对青蛙移动策略进行了优化,从而提高算法的性能和解的质量。

受此启发,本文提出一种带有选择和自适应变异机制的混合蛙跳算法。

通过引入动态惯性权重设计青蛙更新策略。

2 SFLA介绍
对于d维问题,随机生成F只青蛙(解)组成初始群体,第i只青蛙可以表示为
Xi=(xi1,xi2,···,xid),将种群内青蛙个体按适应度降序排列。

然后将整个群体分为s 个子群,每个子群包含n只青蛙,满足F=s×n。

第 1只青蛙被分入第1个子群,第2只青蛙被分入第2个子群,第s只青蛙被分入第s个子群,且第s+1只青蛙
被分入第1个子群。

依次类推,直到所有青蛙分配完毕[8]。

在每个子群中,具有最好适应度的青蛙记为Xb,最差适应度的青蛙记为Xw,而
整个群体中具有最好适应度的青蛙记为Xg,对每个子群进行局部搜索,每次迭代只更新子群中的最差青蛙,更新策略为:
其中,Di表示分量i上移动的距离;rand()是0~1之间的随机数;Dmax是青蛙允许移动的最大距离。

在经过更新后,如果得到的解Xw优于原来的解Xw(当前位置),则取代原来种群
中的解;否则用Xg取代Xb,重复执行更新策略式(1)、式(2);如果仍然没有改进,则随机产生一个新解取代原来的Xw。

重复这种更新操作,直到设定的迭代次数,就完成一轮各子群的局部搜索。

然后,将所有子群的青蛙重新混合排序,划分子群,进行下一轮的局部搜索,如此反复直到满足终止条件。

3 混合蛙跳算法改进
3.1 改进策略
为了充分体现SFLA群体智能行为的信息共享机制,提高局部搜索效率,借鉴粒子群优化(Particle Swarm Optimization, PSO)算法中粒子更新策略,对SFLA中最差青蛙的移动步长的更新策略进行改进。

借鉴文献[9],在SFLA中引入惯性权重
ω来协调该算法的全局和局部搜索能力。

具体实现是将式(1)的移动步长计算公式
变为式(3),同时,式(2)的位置更新保持不变:
其中,Di'为前一个最差青蛙的移动步长;ω为惯性权重。

3.2 线性递减调整惯性权重
惯性权重ω表示青蛙运动的趋势,在局部最优解附近,ω应取得较大,有利于跳出局部最优解,避免早熟;在全局最优解附近,ω应取得较小,有利于在全局最优解附近更精细地搜索,更迅速找到最优解。

因此,在青蛙刚进入搜索时,ω应取得较大,随着搜索地进行,算法向最优解靠近,此时,ω应取得较小。

据此ω按式(4)进行线性递减调整,ωi( t)表示第t次第i只青蛙的惯性权重;ωmin、
ωmax分别表示惯性权重最小值和最大值;则有:
其中,t=itj×titk ,itj为当前子群内的迭代次数;it为子群内迭代总次数;titk为当前混合迭代次数;tit为混合迭代总次数;j∈[1,it]的整数;k∈ [1,tit]的整数。

3.3 选择机制
用适应度值来衡量解的优劣,受遗传算法中轮盘赌策略启发,提出按青蛙个体的适应度值来确定其选择概率,计算公式为:
其中, Pi为第i只青蛙的选择概率; f( xi)为第i只青蛙的适应度值;为F只青蛙适应度值的总和。

从式(5)可知,青蛙个体的适应度值越小,选择概率越大;反之,选择概率越小。

为了发挥优秀青蛙的作用,让群体向最优解的方向靠近,在SFLA中引入了选择机制,通过式(5)计算每只青蛙的选择概率,再按选择概率将青蛙进行降序排列,让选择概率位于前的青蛙代替后的青蛙,使算法向最优解的方向进行。

3.4 自适应变异
SFLA实质是用函数的适应度值来衡量青蛙的优劣,最差青蛙根据自己的移动经验
及其他青蛙的移动经验,动态调整自己的移动步长,向群体中最好青蛙位置移动,从而使所优化问题得到最优解。

若搜索到的位置对应的解只是优化问题的一个局部最优解,则算法出现早熟现象。

因此,将遗传算法中的自适应变异思想引入混合蛙跳算法中,如下式所示,对于适应度值低于群体平均适应值的个体,对应于较低的变异概率,使该个体得以保护进入下一代;反之,对于适应度值高于群体平均适应值的个体,对应于较高的变异概率,使该个体被淘汰掉。

因此,自适应变异能提供相对于某个解的最佳变异概率:
其中, fmax为群体的最大适应值; favg为群体的平均适应值; f( xi)为第i只青蛙的适应度值;k1、k2为常数。

在算法出现早熟时,让变异操作后的青蛙在解空间的其他区域进行搜索,找到更优的全局解,避免算法陷入局部最优解,对影响最优解的惯性权重ω及群体最优解
进行变异操作,变异方程为:
其中,ω'为变异后的惯性权重;Xg'为变异后群体的最优解;ξ1、ξ2为变异参数;N(0,1)是均值为0且方差为1的随机变数。

3.5 算法流程
带有选择和自适应变异机制的蛙跳算法流程如下:
Step1 参数初始化,青蛙种群数F,子群数s,每个子群内青蛙数n,子群内迭代
总数it,混合迭代总数tit;变异参数ξ1、ξ2,变异常数k1、k2。

Step2 对每只青蛙计算其适应度值 f( xi)(即目标函数值),按照 f( xi)以降序对青蛙
群体进行排序并分为s个子群。

Step3 确定每个子群中的Xb、Xw及群体全局最优Xg,对每个子群中最差青蛙按式(4)动态调整ω,再按式(3)、式(2)进行更新,直到设定的迭代总次数it,对更新
后的子群进行混合,取代原来的群体。

Step4 用式(5)计算每只青蛙的选择概率 Pi,并按降序排列,用位于前的青蛙代替后的青蛙。

Step5 对每只青蛙按式(6)计算其变异概率,根据得到的变异概率用式(7)、式(8)进行变异操作。

Step6 若当前迭代次数达到预定设定的最大次数tit,则迭代停止,输出最优适应度值的相关信息,算法结束,否则转到Step2。

4 仿真实验
为验证新算法的性能,选取 6个经典的连续函数[10]进行测试,并与文献[10](ISFLA1)、标准蛙跳算法 SFLA进行比较,6个测试函数为:
在算法性能测试中,采用文献[11]建议的参数设置,青蛙总数F=200,子群数
s=20,子群内迭代总次数it=10,混合迭代总次数tit=500。

变异参数
ξ1=ξ2=0.5,变异常数k1=0.02、k2=0.08。

4.1 算法收敛性测试
取测试函数维数为 30,预设精度为 10-9,若算法在500次迭代中,最终结果满足精度要求,则该次运算算法收敛,反之不收敛。

算法收敛率为收敛次数与函数运行次数的比值。

称算法收敛时,满足预设精度的迭代次数的最小值为算法的收敛代数,若最终优化结果不满足预设精度的要求,则该次收敛代数为指定迭代次数。

平均收敛代数为各次收敛代数之和与函数运行次数的比值,实验结果如表1所示。

表1 算法收敛性仿真结果函数混合蛙跳算法文献[10]算法本文算法收敛率/(%)平均收敛代数收敛率/(%)平均收敛代数收敛率/(%)平均收敛代数f1(x)49 381 60 324 100 137 f2(x)21 450 47 420 100 130 f3(x)0 500 21 488 100 221 f4(x)0
500 15 496 100 270 f5(x)0 500 0 500 90 337 f6(x)0 500 0 500 88 362
4.2 不同维函数的测试
假设函数维数D=30,预设精度为 10-9,每种算法运行 30次,3种算法对 6个测试函数的实验结果如表 2~表 7所示。

比较表 2~表 7可知,在相同迭代次数及相同精度要求的前提下,本文算法的平均最优适应度值优于其他2种算法,并且标准差和CPU平均运行时间较小。

由此可知本文算法与ISFLA1、SFLA相比有较好的全局搜索能力和较高的收敛精度,有效避免了早熟现象,从而提高了解的质量,可见本文对SFLA进行线性递减、动态调整惯性权重的改进是可行的。

表2 Sphere函数的仿真结果算法维数平均最优适应度值最优适应度值标准差CPU运行时间/s SFLA ISFLA1本文算法2 0.018 316 0.016 263 0.009 214 0.9 30 0.012 404 0.011 481 0.010 513 9.8 2 0.002 879 0.002 598 0.000 026 1.2 30 0.002 670 0.002 204 0.000 054 25.4 2 0.002 069 0.002 013 0.000 047 1.0 30 0.002 004 0.001 927 0.000 041 24.1
表3 Rosebrock函数的仿真结果算法维数平均最优适应度值最优适应度值标准差 CPU运行时间/s SFLA ISFLA1本文算法2 45.316 842 40.302 689 12.166 327 1.9 30 213.612 263 178.023 085 74.344 823 10.7 2 8.493 211 4.915 394 4.131 521 2.1 30 45.985 116 34.253 711 27.263 672 22.4 2 5.010 569 2.989 787 2.102 598 1.8 30 11.935 892 7.125 896 6.112 895 19.0
表4 Rastrigin函数的仿真结果算法维数平均最优适应度值最优适应度值标准差CPU运行时间/s SFLA ISFLA1本文算法2 4.123 614 2.289 641 1.021 103 1.5 30 17.459 959 10.582 341 7.570 295 10.2 2 2.310 211 1.504 852 0.810 113 1.8 30 10.229 316 7.358 214 4.332 496 25.8 2 20.152 314 1.098 675 0.601 589 1.5 30 7.198 724 4.982 654 2.897 624 24.1
表5 Griewank函数的仿真结果算法维数平均最优适应度值最优适应度值标准
差 CPU运行时间/s SFLA ISFLA1本文算法2 0.923 612 0.613 451 0.231 014
0.9 30 0.867 100 0.571 132 0.211 202 9.3 2 0.141 357 0.099 786 0.077 139
1.7 30 0.153 619 0.094 325 0.080 542 26.2 2 0.118 576 0.089 521 0.073 210 1.4 30 0.090 165 0.049 623 0.078 654 25.3
表6 Ackley函数的仿真结果算法维数平均最优适应度值最优适应度值标准差CPU运行时间/s SFLA ISFLA1本文算法2 1.594 532 0.748 952 0.735 642 1.2
30 1.534 676 0.657 951 0.727 352 9.9 2 0.039 458 0.036 138 0.003 692 1.9 30 0.042 733 0.039 476 0.004 903 30.5 2 0.049 257 0.040 162 0.004 015 1.6 30 0.032 914 0.029 581 0.004 458 27.8
表7 Schafferf7函数的仿真结果算法维数平均最优适应度值最优适应度值标准
差 CPU运行时间/s SFLA ISFLA1本文算法2 25.126 891 9.235 648 6.852 143 2.1 30 28.801 496 12.568 213 7.090 330 14.7 2 16.452 687 8.142 638 6.658 234 2.6 30 19.372 518 11.564 582 7.815 644 31.4 2 14.149 862 6.958 234 6.185 239 2.3 30 18.156 971 9.985 624 6.758 261 28.7
4.3 高维函数的测试
为测试本文算法对高维函数的求解能力,取函数变量维数D=100,3种算法对Sphere函数、Rosebrock函数、Rastrigin函数、Griewank函数、Ackley函数、Schafferf7函数进行高维运算能力的测试,从而验证本文对混合蛙跳算法的改进
效果。

3种算法对6个测试函数的适应度的对数值分别如图1~图6所示。

从中可以看出,Ackley函数是一个多峰函数,具有全局最小值0,在搜索后期本文算法快速收敛,能较快地得到最优适应度值;Rastrigin是典型的全局寻优函数,本文算法对该函
数在进化前期收敛性较好,中后期由于引入了线性递减的惯性权重,可以平衡局部和全局的寻优能力,因此,也可求得理想的全局最优解;Griewank函数是多峰函
数,它考察算法的全局寻优能力,由于新算法中引入了选择与自适应变异操作,选择较优解代替较差解,同时,对较优解以较小的概率变异,因此对较差解以较大的概率变异。

从而避免陷于局部最优,对算法的早熟具有很好的抑制作用。

由于新算法能线性递减地动态调整惯性权重,且运用选择与自适应变异机制,因此收敛速度加快,求解的时间明显缩短,解的精度较高。

而ISFLA1中无此改进,所以,在求解过程中所需要的时间较长,容易陷入局部最优。

考察Rosebrock函数从30维~300维变化时,本文算法的优化能力仿真曲线如
图7所示。

可以看出,本文算法的维数从30维~300维变化时,相应的适应度值从7.12增加到8.05,即目标函数的变化范围很小,结果表明,本文算法对高维函数仍有很强的优化能力。

图1 3种算法对Sphere函数适应度的对数值
图2 3种算法对Rosebrock函数适应度的对数值
图3 3种算法对Rastrigin函数适应度的对数值
图4 3种算法对Griewank函数适应度的对数值
图5 3种算法对Ackley函数适应度的对数值
图6 3种算法对Schafferf7函数适应度的对数值
图7 本文算法Rosebrock函数适应度随维数的变化
5 结束语
本文提出一种改进的混合蛙跳算法。

借鉴 PSO算法更新机制,对SFLA的更新策
略进行修正,提高局部搜索效率,线性递减调整惯性权重,根据实际情况选取合适的惯性权重,可以平衡全局搜索和局部搜索,根据适应度值引入选择与自适应变异机制,利用适应度值选择较优的解代替较差解,同时,对较优解以较小的概率变异,而对较差解以较大的概率变异,从而向全局最优解的方向不断优化,提高解的精度。

仿真结果表明,无论是二维还是高维问题,该算法都得到了较好的效果,在高维情
况下其优化能力更强,稳定性更好。

今后将继续研究混合蛙跳算法中参数的设置。

参考文献
[1]Eusuff M M, Lansey K E.Optimization of Water Distribution Network Design Using the Shuffled Frog Leaping Algorithm[J].Journal of Water Sources Planning and Management, 2003, 129(3):210-225.
[2]赵守法.蛙跳算法的研究与应用[D].上海: 华东师范大学,2008.
[3]韩毅, 蔡建湖, 周根贵, 等.随机蛙跳算法的研究进展[J].计算机科学, 2010, 37(7): 16-19.
[4]赵鹏军.基于差分扰动的混合蛙跳算法[J].计算机应用, 2010,30(10): 2575-2577.
[5]骆剑平, 陈泯融.混合蛙跳算法及其改进算法的运动轨迹及收敛性分析[J].信号处理, 2010, 26(9): 1428-1433.
[6]葛宇, 王学平, 梁静.自适应混沌变异蛙跳算法[J].计算机应用研究, 2011, 28(3): 945-947.
[7]何兵, 车林仙, 刘初升.一种蛙跳和差分进化混合算法[J].计算机工程与应用, 2011, 47(18): 4-8.
[8]Babak A, Mohammad F, Maroosi A.Application of Shuffled Frog-leaping Algorithm on Clustering[J].The International Journal of Advanced Manufacturing Technology, 2009, 45(1-2): 199-209.
[9]王俊伟, 汪定伟.粒子群算法中惯性权重的实验与分析[J].系统工程学报, 2005, 20(2): 194-198.
[10]赵鹏军, 刘三阳.求解复杂函数优化问题的混合蛙跳算法[J].计算机应用研究, 2009, 26(7): 2435-2437.
[11]Elbeltagi E, Hegazy T, Grierson parison Among Five Evolutionary-based Optimization Algorithms[J]. Advanced Engineering
Informatics, 2005, 19(1): 43-53.。

相关文档
最新文档