本发明涉及一种基于模拟退火与高斯扰动的烟花算法。
背景技术:
:
烟花算法(FWA)是谭营教授于2010年因受到烟花在夜空中爆炸的启发而提出的一种群体智能算法。FWA通过模拟烟花在空中爆炸的这种行为建立相应的数学模型,通过引入随机因素和选择策略形成一种并行爆炸式搜索方式,进而发展为能够求解复杂问题最优解的全局概率搜索方法。FWA与一般群体智能优化算法类似,首先随机初始化N个烟花,然后每个烟花经历爆炸和变异操作,并应用映射规则保证变异后的个体仍然在可行域内,最后保留最优的烟花,然后应用选择策略从剩下的烟花中选择出N-1个烟花,同最优的烟花组成群体进行下一次迭代。目前,烟花算法已被应用到许多实际优化问题求解中,应用领域包括方程组求解、非负矩阵分解的计算、垃圾邮件检测算法中参数优化等。
烟花算法的基本原则:若烟花对应的适应度函数值越小,则该烟花爆炸产生的火花数量越多,爆炸幅度越小;反之,若烟花对应的适应度函数值越大,则该烟花爆炸产生的火花数量越少,且爆炸幅度越大。
一般地,烟花算法由爆炸算子、变异爆炸、映射规则和选择策略四部分组成。
基于以上的原则,烟花算法的基本步骤可以概括如下:
步骤1随机初始化种群;
步骤2运用爆炸算子产生火花;
步骤3运用变异算子产生火花;
步骤4运用映射规则将越界的火花拉回可行域内;
步骤5利用选择策略从所有的个体(烟花和火花)选出下一代群体;
步骤6是否满足终止条件,满足则停止,不满足则返回步骤2继续搜索。
与其他智能优化算法一样,烟花算法也存在后期收敛速度慢、易陷入局部最优解,并且随着位置偏移的增大,烟花算法的稳定性差等问题,本发明为了解决上述问题,将模拟退火的思想引入到烟花算法中,并对烟花算法中某些单个的烟花个体进行高斯扰动,提出了一种基于模拟退火与高斯扰动的烟花算法(SAFWA)。
技术实现要素:
为了解决烟花算法也存在后期收敛速度慢、易陷入局部最优解,并且随着位置偏移的增大,烟花算法的稳定性差等问题,本发明提出了一种基于模拟退火与高斯扰动的烟花算法,在收敛速度和计算精度以及稳定性发面这种算法均优于烟花算法(FWA)、标准粒子群算法(SPSO)、增强烟花算法。
本发明解决其技术问题所采用的技术方案是:
一种基于模拟退火与高斯扰动的烟花算法,其特征是包括如下步骤:
步骤1:随机给烟花的位置赋值,计算烟花的适应度值,生成初始种群;
步骤2:设置烟花个数N,最大火花数Max,最小火花数Min,需要求解函数的可行域D,高斯变异的火花数Ng,爆炸幅度之和以及最大的函数评估次数Itmax;
步骤3:找出初始种群里面适应值最差的个体,记录其位置信息Pworst;
步骤4:初始化初始温度T0、终止温度Tf、退火系数a和最大迭代次数Imax;
步骤5:对当前适应值最差的个体进行高斯变异,得到一个新解xnew:
xnewk=pworstk*g,k=1,2,...,d
其中,pworstk表示最差个体的第k维,g是服从均值和方差都为1的正态分布,即g~N(1,1),d表示每个个体的设置的维数;
步骤6:比较高斯扰动前后的适应值的大小;
步骤7:如果高斯扰动后的适应度值更优(对最小化问题,更优就是适应度值更小),则接受高斯扰动后的解,并且更新相应的位置;如果高斯扰动后的目标值没有高斯扰动前的优,则以一定的概率p去接受该解:
其中,Δx是高斯扰动后的适应度值和高斯扰动前的适应度值的差值,T为当前的温度,r是随机产生的一个0和1之间的随机数。
步骤8:执行退温操作:
T=T*a
其中T的初始值为T0;
步骤9:若满足停止条件(达到设置的最大迭代次数或者温度达到最低温度),则搜索停止,输出优化后的结果,否则,转到步骤5继续寻找适应度值更优的位置;
步骤10:通过步骤9,即经过模拟退火和高斯扰动得到一个更优的解,用得到的新解去替换初始种群的最差烟花个体,组成一个新的烟花初始种群,新的烟花种群继续执行烟花算法流程进行迭代寻优;
步骤11:通过爆炸算子产生相应个数的火花个体,最大个数不能超过Max,最少不能低于Min;
步骤12:通过变异算子产生Ng个变异烟花;
步骤13:对超出界限的所有烟花(烟花、火花和变异火花)运用映射规则,将其拉回可行域D内;
步骤14:然后通过选择策略(精英-轮盘赌)得到下一代烟花群体,即先选择当前种群最优的烟花的进入下一次寻优,然后依据轮盘赌的方式去选择剩下的N-1个烟花进入下一次寻优;
步骤15:若满足停止条件(达到设置的最大的函数评估次数),则搜索停止,输出最后优化的结果,否则,转到步骤3进行继续寻优。
本发明的有益效果是:
对烟花算法进行了改进,将模拟退火的思想引入到烟花算法中,运用模拟退火进行局部搜索,增加烟花算法的局部搜索性能,提高算法的收敛速度。并在烟花算法中对初始种群中的适应值最差的烟花进行高斯扰动,从而得到一个比最差的烟花个体更好的精英解进一步调整优化的种群;随着温度的逐渐降低,接受差解得几率越来越小,从而提高了算法的收敛速度和计算精度以及稳定性。
附图说明
图1为本发明方法的流程图;
图2为Sphere函数稳定性曲线对比图;
图3为Schwefe函数稳定性曲线对比图。
具体实施方式:
现有的烟花算法存在后期收敛速度慢、易陷入局部最优解,并且随着位置偏移的增大,烟花算法的稳定性差等问题,针对这些问题,对烟花算法进行了改进,将模拟退火的思想引入到烟花算法中,并对烟花算法中某些单个的烟花个体进行高斯扰动。
步骤1:随机给烟花的位置赋值,计算烟花的适应度值,生成初始种群;步骤2:设置烟花个数N=5,最大火花数Max=40,最小火花数Min=2,需要求解函数的可行域D(不同的函数不一样),高斯变异的火花数Ng=5,爆炸幅度之和A=40以及函数最大评估次数Itmax=300000;
步骤3:找出初始种群里面适应值最差的个体,记录其位置信息Pworst;
步骤4:初始化初始温度T0=10000、终止温度Tf=1、退火系数a=0.99和最大迭代次数Imax=500;
步骤5:对当前适应值最差的个体进行高斯变异,得到一个新解xnew:
xnewk=pworstk*g,k=1,2,...,d
其中,pworstk表示最差个体的第k维,g是服从均值和方差都为1的正态分布,即g~N(1,1),d表示每个个体的设置的维数;
步骤6:比较高斯扰动前后的适应值的大小;
步骤7:如果高斯扰动后的适应度值更优(对最小化问题,更优就是适应度值更小),则接受高斯扰动后的解,并且更新相应的位置;如果高斯扰动后的目标值没有高斯扰动前的优,则以一定的概率p去接受该解:
其中,Δx是高斯扰动后的适应度值和高斯扰动前的适应度值的差值,T为当前的温度,r是随机产生的一个0和1之间的随机数。
步骤8:执行退温操作:
T=T*a
其中T的初始值为T0;
步骤9:若满足停止条件(达到设置的最大迭代次数或者温度达到最低温度),则搜索停止,输出优化后的结果,否则,转到步骤5继续寻找适应度值更优的位置;
步骤10:通过步骤9,即经过模拟退火和高斯扰动得到一个更优的解,用得到的新解去替换初始种群的最差烟花个体,组成一个新的烟花初始种群,新的烟花种群继续执行烟花算法流程进行迭代寻优;
步骤11:通过爆炸算子产生相应个数的火花个体,最大个数不能超过Max,最少不能低于Min;
步骤12:通过变异算子产生Ng个变异烟花;
步骤13:对超出界限的所有烟花(烟花、火花和变异火花)运用映射规则,将其拉回可行域D内;
步骤14:然后通过选择策略(精英-轮盘赌)得到下一代烟花群体,即先选择当前种群最优的烟花的进入下一次寻优,然后依据轮盘赌的方式去选择剩下的N-1个烟花进入下一次寻优;
步骤15:若满足停止条件(达到设置的最大的迭代次数),则搜索停止,输出最后优化的结果,否则,转到步骤3进行继续寻优。
此外,分别把烟花算法(FWA)、标准粒子群算法(SPSO)、增强烟花算法(EFWA)和SAFWA在基准测试函数中进行仿真对比,结果表明在收敛速度和计算精度以及稳定性方面SAFWA均优于其他三种算法。
四种算法的参数设置如表1所示,
表1参数设置
由于在测试函数中,许多函数的最优点在原点位置附近,而基本烟花算法存在这一个特点,即具有非常强大的原点位置附近的搜索能力。因此,实验在该测试集合上面增加了位置偏移,位置偏移大小与优化问题的搜索范围有关,如表2所示,其中Max、Min为优化问题的搜索范围,SI表示偏移索引,SV表示偏移值大小。
表2基准测试函数的位置偏移描述
本实验采用的2个典型的基准测试函数均来自全局优化测试函数库。其函数的基本特征如表3所示:
表3基准测试函数基本特征
表4 Sphere函数全局最优平均值对比(SI为偏移索引)
表5 Schwefe函数全局最优平均值对比(SI为偏移索引)
图2是SAFWA为了与EFWA、SPSO和FWA比较在Sphere函数上,随着位置偏移增大的时候各算法的稳定性。
图3是SAFWA为了与EFWA、SPSO和FWA比较在Schwefel函数上,随着位置偏移增大的时各算法的稳定性。
由图2和表4可知,随着函数的位置偏移的变大,SAFWA相对于FWA、EFWA取得了更加明显的性能优势,但是SPSO比SAFWA性能好。
由图3和表5可知,随着函数的位置偏移的不断变大,SPSO和FWA相对于EFWA和SAFWA有很差的性能,且全局最优值也在不断的变大,稳定性差。SAFWA和EFWA都具有稳定性,但是SAFWA比EFWA具有更好的收敛性。
从以上可以得出:本发明提出将模拟退火算法与烟花算法相结合,对适应值最差的烟花进行高斯扰动,从而得到一个比最差的烟花个体更好的精英解;随着温度的逐渐降低,接受差解得几率越来越小,从而提高了算法的收敛性能;通过对2个基准测试函数的仿真实验表明,SAFWA算法收敛性能和计算精度在不同程度上优于FWA算法、EFWA算法和SPSO算法,且随着位移位置的不断增大,SAFWA相对于其他三种算法具有很好的稳定性。