APP下载

全局扰动和互利因子作用的飞蛾扑火优化算法

2023-09-13靳储蔚李姗鸿张琳娜张达敏

计算机工程与设计 2023年8期
关键词:互利测试函数飞蛾

靳储蔚,李姗鸿,张琳娜,张达敏+

(1.贵州大学 大数据与信息工程学院,贵州 贵阳 550025;2.贵州大学 机械工程学院,贵州 贵阳 550025)

0 引 言

群智能优化算法[1]是受自然界生物种群的运动、捕食等行为所启发而提出的一类算法,当前,国内外已经提出了大量的群智能算法,且根据没有免费的午餐(no-free-lunch,NFL)定理[2],即过去、现在或未来都不会出现一种算法能够很好地解决所有的优化问题,因此只有不断地提出新的群智能算法才能够解决这些现实优化问题。近几年已经出现了较多新颖的群智能算法[3-7],这类算法的使用简单方便、参数少、运行时间短等特点,为其能够广泛运用在实际问题上提供了先决条件。

飞蛾扑火优化(moth-flame optimization,MFO)[8]算法是Mirjalili等提出的新型群智能算法,其基本思想是受飞蛾在夜间飞行所启发,但同其它智能优化算法相似,MFO算法也具有收敛速度慢、求解的精度不高无法找到理论值、容易陷入局部最优不再随着迭代的进行向理论更优的位置搜索等问题。在MFO算法提出之后,不断的有研究者使用MFO算法对工程问题进行优化,文献[9]使用MFO算法优化认知无线电系统的参数;文献[10]用差分进化改进的MFO算法求解电力系统负荷经济调度;文献[11]使用差分进化改进的MFO算法进行特征选择。同时也有研究者在其原始算法基础上进行改进,如文献[12]将Lévy飞行引入飞蛾扑火优化算法以提高算法的收敛速度和求解精度;文献[13]将融合折射原理的反向学习引入MFO算法,提高种群的多样性跳出局部最优解;文献[14]使用二进制编码改进MFO算法以解决实际问题,虽然上述改进算法的求解精度和寻优能力相对原始算法有所提升,但其收敛速度以及求解精度仍然存在着较大的改进空间,因此本文提出一种基于全局扰动和互利因子的飞蛾扑火优化算法(DBMFO)。在算法初始化阶段使用Bernoulli混沌映射代替原始算法中随机产生的初始种群,使得初始化的种群具有更优的多样性;在算法更新公式中增加一个全局扰动因子,增加算法的全局搜索能力,避免算法陷入局部最优;采用互利因子增加种群多样性,获得更好的最优解。

1 飞蛾扑火优化算法

飞蛾扑火优化MFO[8]算法是模拟飞蛾在自然界的群体行为而提出的元启发式智能算法,在MFO算法中,飞蛾飞行的空间即为目标问题的解的空间,一只飞蛾即为目标问题的一个解,火焰的位置即是目标问题的一个较优解,虽然两者都作为MFO算法中的解,但两者之间存在区别,火焰的位置代表着MFO局部找到的一个最优位置,在每一次迭代中,飞蛾的位置可能发生改变,但火焰的位置即上一次迭代的最优位置不会随着飞蛾的飞行而消失。在MFO算法中,飞蛾与火焰的位置分别用矩阵表示,飞蛾和火焰的适应度值分别用向量表示,向量中按适应度值的大小对飞蛾和火焰进行排序,飞蛾位置及火焰周围空间如图1所示。

图1 对数螺旋以及火焰周围空间

MFO算法中飞蛾的螺旋线飞行更新公式如下

S(Mi,Fj)=Di·ebt·cos(2πt)+Fj

(1)

Di=|Fj-Mi|

(2)

其中,Mi为第i只飞蛾的位置,Fj是第j个火焰的位置,Di为当次迭代中飞蛾与火焰之间的距离,b为对数螺旋线系数,在本文中为1。在更新结束飞蛾的位置之后,使用式(3)使得火焰的数量随着迭代减少

flameno=round(N-L·N-1T)

(3)

式中:N为最大的火焰数量,L为当前迭代数,T是最大迭代次数,随着迭代的进行,火焰的数量逐步减少,在迭代末期,飞蛾仅根据最优的火焰位置更新位置。

2 改进的飞蛾扑火优化算法

2.1 Bernoulli混沌映射

目前在群智能算法中使用的混沌映射[15]进行初始化种群,混沌有很多种,其主要使用Logistic混沌映射、Tent混沌映射等[16],但Logistic映射对初始参数敏感,而且遍历性较差,而Tent映射的混沌序列又存在小周期、不确定周期点等方面的不足。综上,本文采用Bernoulli混沌映射来初始化更加均匀的初始种群,相比传统初始化,使用Bernoulli混沌映射进行初始化可以在搜索空间中遍历得更加均匀,帮助算法更好的收敛,Bernoulli混沌映射的定义如式(4)

X(i+1)={X(i)1-λ,X(i)∈(0,1-λ]

X(i)-1+λλ,X(i)∈(1-λ,1)

(4)

式(4)中当λ的值取0.5时,混沌性最好。由于MFO算法的模型简单,参数少,容易实现,而Bernoulli映射遍历性和随机性的特点使得算法拥有更加广泛的搜索范围。使用Bernoulli混沌映射代替传统MFO算法的随机生成初始化种群,提高了种群的多样性,使得初始的飞蛾种群分布更好,同时让改进算法有更多机会摆脱局部极值,从而在一定程度上提高了算法的性能。

2.2 全局扰动因子

传统MFO算法里,算法后期的收敛速度较慢,且随着火焰数量随着迭代次数不断减少,在迭代末期,算法容易受到火焰位置控制,这表明火焰位置会影响每只飞蛾的下一个位置,可知MFO全局搜索能力相对不足,也就是说MFO易陷入之前迭代的局部最优值,为了解决MFO算法的这个缺陷,本节引入全局扰动机制,从而增加飞蛾种群在迭代过程中的多样性以及随机性,全局扰动因子μ定义如式(5)所示

μ=tTmax·tanh(1-tTmax)·rand

(5)

其中,t是当前迭代次数,Tmax是MFO算法的最大迭代次数,由式(5)可以看出全局扰动因子的影响,其扰动的趋势为迭代初期扰动力度逐渐增加,到达迭代中期扰动力度达到顶峰,此时算法的全局搜索能力最好局部搜索能力最弱,最后到迭代末期,扰动力度逐渐降低并且随着迭代次数到达最大,扰动最后消失,在这一阶段算法的全局搜索能力逐渐降低,局部搜索能力逐步提高,且由于每次迭代都会随机生成一个介于0~1之间的随机数作为随机系数对全局扰动因子进行影响,这更增加了全局扰动因子对MFO算法更新公式的影响的随机性和多样性。全局扰动因子的变化趋势如图2所示。

图2 全局扰动因子μ变化曲线

图2中,左图代表没有受到随机系数影响的全局扰动因子,其曲线较为光滑,对全局扰动因子的影响缺乏随机性,右图代表受到随机系数影响的全局扰动因子,其随着迭代次数的增加,按其原有光滑曲线变化的趋势,不断波动,使得全局扰动因子更具随机性与多样性

S(Mi,Fj)=μ·(Di·ebt·cos(2πt)+Fj)

(6)

式(6)为引入了全局扰动因子后的位置更新公式,与原来位置更新式(1)只使用螺旋线飞行方式产生的新飞蛾位置直接替换原飞蛾位置相比,增加了MFO算法的随机性和多样性,以获得比较不错的全局最优解。

2.3 互利因子

标准MFO算法的飞蛾的螺旋线飞行更新公式产生的新飞蛾位置直接替换原飞蛾位置,存在以下缺点:第i只飞蛾的位置会根据螺旋线飞行方式选择第j个火焰的位置和当前种群最优飞蛾位置进行更新,对随机选择的第j个火焰的位置个体依赖性较强,缺乏与其它个体学习的部分。在引入了2.2节中所提出的全局扰动因子之后,新的MFO算法的随机性与多样性得到了提升,但算法在对于部分测试函数的优化效果欠佳,因此引入互利因子[17]进行完善,互利因子对完成全局扰动后的位置再次进行更新,之后对改进后的新位置与改进前位置进行比较,选择其间更为优秀的位置,如下

δ=t/Tmax

(7)

b=MA+MB2

(8)

S(Mi,Fj)new=S(Mi,Fj)+δ·(FBest-b·r)

(9)

其中,式(7)的δ为收缩因子,对互利因子更新公式的影响进行收缩,保证更新后的位置处于一个合理的范围内,避免存在过大的偏差;式(8)中的b为互利因子,代表在搜索空间中,随机两个飞蛾的位置的共生量,即通过两个随机的位置找到一个新的位置;式(9)为引入了被收缩因子收缩之后的互利因子后的位置更新公式,r为位于区间1到2之间的随机数,与全局扰动的MFO位置更新式(6)相比,引入收缩因子和互利因子,使其不再局限在前一个火焰位置搜索,即增加了飞蛾的种群多样性,以获得最好的全局最优解。

2.4 DBMFO算法步骤

由2.1、2.2、2.3可得基于全局扰动和互利因子的飞蛾扑火优化算法(DBMFO)的步骤如下:

玉皇大帝曾赐给汉人竹片片,让汉人记录他们的历史、言行,也给了傈僳人獐皮,用以写信等。但是,领獐皮的是一个小孩,他想獐皮这样笨重难拿,不如吃了还可以饱肚子。于是,在一块玉米地里偷偷地吃了,回到家里说獐皮被人抢走了,或者在遇到人时说玉帝什么也没给,因此,傈僳无记录之纸,也就不能创造文字了。[注]李永宪、马云喜:《盐边县岩门公社傈僳族调查报告》,编写组:《四川省苗族傈僳族傣族白族满族社会历史调查》,四川省社会科学院出版社,1986年。

步骤1 初始化算法参数,建立搜索空间的矩阵。

步骤2 在搜索空间中使用Bernoulli混沌映射初始化飞蛾种群,计算飞蛾的适应度值并进行排序。

步骤3 使用改进后的更新式(6)对飞蛾的位置进行更新,更新火焰位置及其适应度值。

步骤4 使用互利因子影响的更新位置式(9)对步骤3的结果再一次进行更新,并判断该步骤是否使飞蛾位置更优秀,若结果更好则使用新的位置,否则保持步骤3的位置。

步骤5 判断迭代次数是否达到上限,若是则停止迭代,得到最优位置以及其适应度值,否则重复执行步骤3~步骤5,直到满足终止迭代条件,算法流程如图3所示。

图3 算法流程

3 仿真实验和结果分析

3.1 函数选取与参数设置

本文采用MATLAB R2018a进行实验仿真,运行环境为64位Windows 10操作系统,处理器类型为Intel Core i7-6700。

表1 测试函数

实验中的10个基准测试函数如表1所示。实验中各算法的基本参数见表2。

表2 算法参数

本文所提出的DBMFO算法同其它传统算法以及本文提出的各种策略对应的算法相比较的数据结果见表3。

表3 不同算法的结果比较

由表3可以看出,在与其它的传统群智能优化算法相比时,F1到F4这4个单峰函数上DBMFO算法的表现都是远超过其它的传统群智能算法,且其寻优都到达了最优值,且其寻优稳定性好,在30次实验中均未出现个别寻优值偏离理论值的现象;在F5和F6这两个单峰函数上,虽然DBMFO算法没有找到测试函数的理论值,但其优化的精度相比于传统的MFO算法、SCA、SSA都有至少2个数量级的提升,且相比于优化性能较为优秀的BOA,本文提出的改进算法也能与之优化精度持平;在F7与F9这两个多峰函数上,DBMFO算法同样能够找到测试函数的理论值,值得注意的是虽然函数F7的维度是200维,但DBMFO算法并没有因此受到过多的影响,同时在寻得理论值的同时,30次数据的标准差为0,即其寻优过程非常稳定;在F8与F10这两个多峰函数上,虽然DBMFO算法没有搜索到算法的理论值,但其相比与其它的几个传统算法有着较大的改进,其中在F8函数上,在30次实验中每一次都在迭代后期陷入了局部最优值8.88E-16,其寻优精度相比于除BOA以外的其它传统算法提高了16个数量级,相比于BOA,其精度提高了7个数量级,在F10函数上其精度相比于BOA以外的其它算法提高了至少7个数量级,对于BOA仅提高了2个数量级;综上,虽然相比于其它的各种传统群智能算法DBMFO算法对各个测试函数精度以及稳定性的提升不尽相同,但总的来说,DBMFO算法在求解各种基准函数都具有一定的优势。

其次,在算法的改进策略里,由表3可以清楚地看到,仅引入全局扰动这一策略主导了DBMFO算法的效果,虽然DMFO算法相比于传统的MFO算法已经有了相当可观的精度提升,但其在一些单峰函数上如F2和F4,单一的全局扰动策略在500次迭代下不足以找到测试函数的最优值,在进行进一步测试后发现,DMFO算法在测试函数F2上要达到DBMFO算法所达到的效果在30次实验里最多需要1195次迭代,在测试函数F4上需要1216次迭代,虽然其500次迭代的精度超过了E-150,但这相比于DBMFO的效果仍有一定的差距,若算法未来解决实际问题,这样细微的差距可能会造成不利的影响。反观BMFO算法,从表3可以看到,仅仅使用互利因子对于传统MFO算法的改进并不明显,BMFO算法在多峰函数上运行的耗时非常高,且其在测试函数F4上,甚至陷入了局部最优,虽然BMFO对算法的寻优精度和寻优稳定性有着诸多的不利影响,但当互利因子与全局扰动因子相结合后,所得的DBMFO算法在部分函数上的寻优精度以及寻优稳定性取得了明显的提升,同时,由于全局扰动因子改进后的更新公式更新的位置有利于互利因子的应用,DBMFO算法在高维、多峰的测试函数上的运行并没有过多的运行时间,其运行时间相比BMFO算法有减少。综上,全局扰动因子与互利因子的结合是有一定意义且有必要的,改进后的DBMFO算法有效地解决了传统MFO算法寻优精度、寻优速度、鲁棒性不足的缺点。

3.2 测试函数收敛曲线

根据实验所得数据,各个算法以及策略分别10个测试函数独立运行30次的平均收敛曲线如图4所示。

图4 不同算法的平均收敛曲线

3.3 Wilcoxon秩和检验

虽然在30次独立实验所得到的平均值与标准差虽然有一定的参考意义,但在多次实验中,可能会出现某一次实验的效果极优或极差的情况,这是实验数据的平均值与标准差无法体现的,因此在评估改进的算法的性能时,仅仅依据平均值与标准差是不够的,进行统计检验来验证本文所提出的改进算法是非常有必要的,在5%的显著性水平下进行Wilcoxon秩和检验[18]从而判断DBMFO算法在某些特定问题上有显著的性能提升。

表4列出所有测试函数中DBMFO算法与其它算法的Wilcoxon秩和检验的p值,其中,每个数据代表DBMFO算法与该数据对应的算法在对应的测试函数中相比的p值,由于改进算法无法与算法本身进行比较,因此表中第二列均为N/A,由于p小于0.05即可认为是拒绝零假设的有利证据,即认为“改进算法与其对比的算法是有显著区别”这一说法是错误的概率小于5%,因此,在表中的数据越小就越能够验证改进的算法与之对比的算法区别越大,结合表3的数据,即可综合判断改进算法的效果,在表中唯有DBMFO算法与BOA在F7上的Wilcoxon秩和检验的p值大于0.05,这是由于虽然DBMFO算法在F7上已经稳定寻找到了理论值,但传统BOA在30次独立实验中也有找到理论值,由于秩和测试的定义,两者数据的差别不太大,因此导致秩和检验的p值大于0.05,除此之外,DBMFO算法与其它算法在各个测试函数的Wilcoxon秩和检验的p值均小于0.05,验证本文所提出的改进算法在统计上是具有优越性的。

表4 Wilcoxon秩和检验的p值

4 结束语

针对传统MFO算法的缺点,首先引进Bernoulli混沌映射初始化飞蛾种群,使得搜索范围内种群分布更加均匀,提高种群的多样性;然后引入全局扰动因子,增加飞蛾种群在迭代过程中的多样性和随机性,提高算法的寻优精度和寻优稳定性;最后,使用互利因子与全局扰动因子结合,进一步地提高算法的寻优精度、寻优速度以及寻优稳定性。通过对比实验证明,改进的算法在具有良好的全局以及局部寻优能力的同时,也具有较好的鲁棒性。在未来的研究中,计划将改进的算法应用于认知无线电系统的参数优化问题上,改进算法的实际应用。

猜你喜欢

互利测试函数飞蛾
可爱的你
Trolls World Tour魔发精灵2
飞蛾说
中민영기업,한국과 협력해 ‘호리공영 ( 互利共赢)’
开启互利合作的新征程
具有收缩因子的自适应鸽群算法用于函数优化问题
带势函数的双调和不等式组的整体解的不存在性
勇敢的小飞蛾
约束二进制二次规划测试函数的一个构造方法
探底基层 互动互利