融合差分变异策略和自适应调整权重的改进蝴蝶优化算法
2021/7/11 17:06:16
本文主要是介绍融合差分变异策略和自适应调整权重的改进蝴蝶优化算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- 一、理论基础
- 1、基本蝴蝶优化算法
- 2、DMABOA改进算法
- (1)引入非线性惯性权重
- (2)加入具有全局自适应特征的F分布随机变异
- (3)融入差分定向变异策略的局部搜索
- 3、DMABOA算法流程
- 二、复杂函数优化问题实验结果分析
- 三、参考文献
- 四、Matlab仿真程序
一、理论基础
1、基本蝴蝶优化算法
请参考这里。
2、DMABOA改进算法
(1)引入非线性惯性权重
针对基本蝴蝶算法对于复杂函数收敛速度慢、寻优精度低的缺点,本文在全局搜索阶段引入自适应惯性权重,该权重随着进化代数的增加非线性递减,提出的惯性权重函数如下: w = 1 [ ( t + 1 ) ( α + β ) ] 3 ⋅ ( α ⋅ t α N i t e r α + β ⋅ t β N i t e r β ) (1) w=\frac1{[{(t+1)^{(\alpha+\beta)}}]^3}\cdot\left(\frac{\alpha\cdot t^\alpha}{N_{iter}^\alpha}+\frac{\beta\cdot t^\beta}{N_{iter}^\beta}\right)\tag{1} w=[(t+1)(α+β)]31⋅(Niterαα⋅tα+Niterββ⋅tβ)(1)其中, α \alpha α和 β \beta β为权重系数,且 α = 3 \alpha=3 α=3, β = 5 \beta=5 β=5。分析上式可以得出,惯性权重 w w w的值在 [ 0 , 1 ] [0,1] [0,1]之间,取值随着迭代次数的增加呈减速递减趋势,即在进化前期,权重值较大,算法的全局搜索能力较强、探测范围较大,有利于算法跳出局部最优,而随着迭代次数的增加权重值减小,此时蝴蝶在最优值附近进行精细挖掘,使得算法的寻优精度提升和收敛速度加快。而后期不断减速的递减趋势,也在提升挖掘能力的同时,平衡了一定的搜索能力,维持了适当的种群活跃性和跳离局部极值点的能力。改进后的全局位置更新公式为: X i t + 1 = w ⋅ X i t + ( r 2 ⋅ g ∗ − X i t ) ⋅ f i (2) X_i^{t+1}=w\cdot X_i^t+(r^2\cdot g^*-X_i^t)\cdot f_i\tag{2} Xit+1=w⋅Xit+(r2⋅g∗−Xit)⋅fi(2)
(2)加入具有全局自适应特征的F分布随机变异
本文为提高蝴蝶种群的活跃性,将自适应随机变异引入全局公式中,使算法在全局搜索时,下一代蝴蝶位置的更新不仅由当前蝴蝶位置和全局最优蝴蝶位置决定,也有当代种群中随机蝴蝶位置的参与,从而增加了蝴蝶种群的多样性,提高了算法在全局阶段的搜索能力。自适应随机变异公式如下: Ra = ε ⋅ ( X j t − X k t ) (3) \text{Ra}=\varepsilon\cdot(X_j^t-X_k^t)\tag{3} Ra=ε⋅(Xjt−Xkt)(3) ε = ε 0 + fpdf() ⋅ ( 1 − ε 0 ) ⋅ ( N i t e r − t N i t e r ) (4) \varepsilon=\varepsilon_0+\text{fpdf()}\cdot(1-\varepsilon_0)\cdot\left(\frac{N_{iter}-t}{N_{iter}}\right)\tag{4} ε=ε0+fpdf()⋅(1−ε0)⋅(NiterNiter−t)(4)式(3)中, X j t X_j^t Xjt和 X k t X_k^t Xkt是当代种群内部随机产生的随机解, ε \varepsilon ε为变异算子,其计算公式如式(4)所示。 其中 ε 0 \varepsilon_0 ε0是初始变异算子,经大量测试, ε 0 \varepsilon_0 ε0为0.1时,算法改进效果最好。 fpdf() \text{fpdf()} fpdf()为服从F分布产生的随机数,自由度为 μ \mu μ和 λ \lambda λ,经反复测试, μ = 3 , λ = 4 \mu=3,\lambda=4 μ=3,λ=4时,算法在全局搜索时能力最强,收敛速度最快。此时全局搜索的公式如下所示: X i t + 1 = w ⋅ X i t + ( r 2 ⋅ g ∗ − X i t + Ra ) ⋅ f i (5) X_i^{t+1}=w\cdot X_i^t+(r^2\cdot g^*-X_i^t+\text{Ra})\cdot f_i\tag{5} Xit+1=w⋅Xit+(r2⋅g∗−Xit+Ra)⋅fi(5)
(3)融入差分定向变异策略的局部搜索
蝴蝶优化算法求得高质量全局最优解的关键是算法能否摆脱局部极值,若只是单一加入定向变异策略则在加快收敛速度的同时也会增加算法落入局部极值的可能。为了降低这一风险,DMABOA算法在定向差分策略的基础上,利用判定系数 ξ \xi ξ在当前蝴蝶位置与当前代全局最优蝴蝶位置二者之间进行选择,如果决策随机数大于判定系数,就基于当前蝴蝶位置进行随机游走;若决策随机数小于等于该系数,则基于当前代全局最优蝴蝶位置进行随机游走。定向变异策略表达式如下: X i t + 1 = { X i t + ( r 2 ⋅ X j t − X k t ) ⋅ f i , rand > ξ η ⋅ g ∗ + θ ⋅ ( X j t − X k t ) ⋅ f i , rand ≤ ξ (6) X_i^{t+1}=\begin{dcases}X_i^t+(r^2\cdot X_j^t-X_k^t)\cdot f_i,\quad\,\,\, \text{rand}>\xi\\\eta\cdot g^*+\theta\cdot(X_j^t-X_k^t)\cdot f_i,\quad \text{rand}≤\xi\end{dcases}\tag{6} Xit+1={Xit+(r2⋅Xjt−Xkt)⋅fi,rand>ξη⋅g∗+θ⋅(Xjt−Xkt)⋅fi,rand≤ξ(6)其中, θ \theta θ为黄金比例系数, r r r是 [ 0 , 1 ] [0,1] [0,1]之间的均匀分布随机数, g ∗ g^* g∗是当前全局最优解,可以使新解朝着最优解方向移动,加快收敛速度。经大量实验反复测试, ξ = 0.9 \xi=0.9 ξ=0.9时,算法局部搜索能力最强,且更容易跳出局部极值; η \eta η为扰动因子,是为了防止因当前最优值的引入而导致在局部搜索时算法陷入局部极值,进一步提高算法的寻优性能,找到全局最优解, η \eta η的计算公式如下: η = 1 + gamrnd() ⋅ tan ( π ⋅ ( rand − 1 2 ) ) (7) \eta=1+\text{gamrnd()}\cdot\tan\left(\pi\cdot(\text{rand}-\frac12)\right)\tag{7} η=1+gamrnd()⋅tan(π⋅(rand−21))(7)其中, gamrnd() \text{gamrnd()} gamrnd()是伽马随机数, gamrnd() \text{gamrnd()} gamrnd()随机数取值的跳跃性有助于算法跳出局部最优值,并使得扰动因子 η \eta η的取值更加灵活多样。
3、DMABOA算法流程
DMABOA算法描述如下:
适应度函数f(x),x=(x1, x2, ..., xdim) 初始化蝴蝶种群 xi(i=1, 2, ..., n) 初始化各参数 c, a, p, ε0, Niter 计算所有个体适应度值, 并进行排序, 找到当前最优值 WHILE(t <= Niter) 由式(1)计算非线性惯性权重 由式(4)计算随机变异算子 FOR i =1∶ n 由式(1)计算蝴蝶的香味浓度 f IF rand < p 由式(3)计算全局随机变异 按式(5)进行全局搜索 ELSE IF rand > ξ 根据式(6)进行基于当前位置的随机游走 ELSE 由式(7)计算扰动因子 根据式(6)进行基于最优位置的随机游走 END IF END IF 计算新的适应度值,确定当前最优值和最优值位置 END FOR 更新香味浓度的感觉形态c END WHILE 输出结果
二、复杂函数优化问题实验结果分析
将本文算法DMABOA与基本蝴蝶算法BOA进行对比分析,通过10个CEC 2017基准测试函数进行仿真对比测试,具体测试函数如文献[1]的表1所示。对比算法采用相同软、硬件平台,且运行次数、种群规模、空间维度和最大迭代次数都保持一致,即
N
=
30
N=30
N=30,
d
i
m
=
100
dim=100
dim=100,
N
i
t
e
r
=
500
N_{iter}=500
Niter=500,每种算法分别独立运行50次。以F1、F3、F5、F7、F9为例。
结果显示如下:
函数:F1 DMABOA:最优值: 0,最差值:0,平均值:0,标准差:0 BOA:最优值: 1.3342e-11,最差值:1.8014e-11,平均值:1.5927e-11,标准差:1.1835e-12 函数:F3 DMABOA:最优值: 0,最差值:0,平均值:0,标准差:0 BOA:最优值: 1.124e-11,最差值:1.4984e-11,平均值:1.307e-11,标准差:9.4101e-13 函数:F5 DMABOA:最优值: 0,最差值:0,平均值:0,标准差:0 BOA:最优值: 0,最差值:1.416e-09,平均值:4.8717e-11,标准差:2.367e-10 函数:F7 DMABOA:最优值: 0,最差值:0,平均值:0,标准差:0 BOA:最优值: 0,最差值:2.0742e-07,平均值:4.4981e-09,标准差:2.9312e-08 函数:F9 DMABOA:最优值: 0,最差值:0,平均值:0,标准差:0 BOA:最优值: 4.8246e-12,最差值:1.5509e-11,平均值:1.0661e-11,标准差:2.6922e-12
上述实验说明DMABOA算法较好解决了蝴蝶优化算法在求解高维复杂函数极值优化问题上寻优精度不高、易陷入局部极值、收敛速度较慢的缺点,具有很好的寻优能力和维度适应性,本文对算法的改进是成功和有效的。
三、参考文献
[1] 刘景森, 马义想, 李煜. 改进蝴蝶算法求解多维复杂函数优化问题[J]. 电子学报, 2021, 49(6): 1068-1076.
四、Matlab仿真程序
下载地址:
https://download.csdn.net/download/weixin_43821559/20197826
这篇关于融合差分变异策略和自适应调整权重的改进蝴蝶优化算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-07面向对象编程基础:初学者指南
- 2024-09-07数据结构入门:了解基础概念与简单应用
- 2024-09-07面向对象编程入门:掌握基本概念与实践
- 2024-09-07数据结构入门:从基础概念到基本操作
- 2024-09-07从零开始学数据库:入门级指南与实操技巧
- 2024-09-07综合设备故障分析与预防:实例代码与优化策略
- 2024-09-07数据库入门:轻松掌握数据管理基础
- 2024-09-07面向对象入门:快速掌握对象编程基础
- 2024-09-07数据库教程:入门与实践指南
- 2024-09-07面向对象开发教程 - 从零基础到实践应用的进阶之路