具有扰动机制和强化莱维飞行的蝗虫优化算法

一、理论基础

1、蝗虫优化算法

蝗虫算法[1]是在研究蝗虫在自然界的群行为基础上而提出的一种基于交互力的元启发式智能算法。算法仿生原理是将幼虫期蝗虫的小范围移动行为映射为短步长的局部开发,成虫期的蝗虫大范围移动行为映射为长步长的全局探索,搜索食物源的过程即为算法的寻优过程。蝗虫的群行为可以用式(1)的数学模型来描述: X i d = c ( ∑ j = 1 j ≠ i N c u b d − l b d 2 s ( ∣ x j d − x i d ∣ ) x j − x i d i j ) + T d ^ (1) X_i^d=c\left(\sum_{\scriptstyle j = 1\atop\scriptstyle j≠i}^N c\frac{ub_d-lb_d}{2}s\left(|x_j^d-x_i^d|\right)\frac{x_j-x_i}{d_{ij}}\right)+\hat{T_d}\tag{1} Xid=cj=ij=1Nc2ubdlbds(xjdxid)dijxjxi+Td^(1)其中,式(1)中 X i d X_i^d Xid表示第 i i i只蝗虫在第 d d d维时所在位置, d d d是维度, u b d ub_d ubd l b d lb_d lbd分别是第 i i i只蝗虫在第 d d d维变量的上下界; T ^ \hat T T^为蝗虫群的目标位置,其他参数同上所述。 c = c m a x − t c m a x − c m i n T m a x (2) c=c_{max}-t\frac{c_{max}-c_{min}}{T_{max}}\tag{2} c=cmaxtTmaxcmaxcmin(2)其中,式(2)系数为线性递减,在式(1)中,外侧的系数 c c c与PSO中的惯性权重 w w w原理相似,决定蝗虫的搜索范围,为了平衡算法的全局探索和局部开发;内侧的系数 c c c决定蝗虫间之间吸引、排斥、舒适区域。式(2)中 t t t表示当前迭代次数, T m a x T_{max} Tmax为最大迭代次数, c m a x c_{max} cmax c m i n c_{min} cmin分别为参数 c c c的最大值和最小值。

2、DLGOA算法

(1)自适应曲线函数

为解决易陷入局部最优这一问题,提出一种曲线函数 c ( t ) c(t) c(t)取代参数 c c c,使算法的全局探索和局部开发能力得到更好的平衡,函数定义如下: c ( t ) = ( − c m a x ) × csch ( α t ) 2 (3) c(t)=(-c_{max})×\text{csch}(\alpha t)^2\tag{3} c(t)=(cmax)×csch(αt)2(3) α = 1 T m a x ln ⁡ ( c m a x c m i n ) (4) \alpha=\frac 1{T_{max}}\ln\left(\frac{c_{max}}{c_{min}}\right)\tag{4} α=Tmax1ln(cmincmax)(4)其中, t t t是当前迭代次数, α \alpha α是中间量。从式(3)可以看出, c ( t ) c(t) c(t)仍是递减函数,根据双曲函数性质, c ( t ) c(t) c(t)前期取值较大、下降慢,能让算法在迭代前期以较大步长进行全局探索;同时在迭代后期取值较小、下降快,使得算法加快收敛速度。

(2)位置更新策略

为提升算法优化性能,本节引入扰动机制,通过扰动因子 v v v改变位置更新步长,使蝗虫在算法前期在较大范围内探索目标位置,更新范围也随着迭代次数的增加而随之减小,后期围绕目标值均匀分布。扰动因子能够提升寻优精度,加快DLGOA收敛速度,从而获得最优解。根据文献[2]中狮子移动方式的启发,扰动因子定义如下: v = exp ⁡ ( 1 − cos ⁡ ( τ ⋅ ( t T m a x ) ) ) (5) v=\exp\left(1-\cos\left(\tau\cdot\left(\frac{t}{T_{max}}\right)\right)\right)\tag{5} v=exp(1cos(τ(Tmaxt)))(5)其中, τ \tau τ表示扰动系数,经多次实验 τ \tau τ取值为30时,算法具有最好寻有能力。算法加入扰动因子的蝗虫位置更新的公式数学模型如式(6)。 X i d = v ⊕ [ c ( t ) ( ∑ j = 1 j ≠ i N c ( t ) u b d − l b d 2 s ( ∣ x j d − x i d ∣ ) x j − x i d i j ) + T d ^ ] (6) X_i^d=v\oplus\left[c(t)\left(\sum_{\scriptstyle j = 1\atop\scriptstyle j≠i}^N c(t)\frac{ub_d-lb_d}{2}s\left(|x_j^d-x_i^d|\right)\frac{x_j-x_i}{d_{ij}}\right)+\hat{T_d}\right]\tag{6} Xid=vc(t)j=ij=1Nc(t)2ubdlbds(xjdxid)dijxjxi+Td^(6)

(3)莱维飞行

GOA在求解非线性优化问题时易陷入局部收敛,全局搜索能力不足,因此在GOA中引入莱维飞行机制,基本的莱维飞行机制在寻最优过程中虽然增加了算法的全局搜索能力,但是还会存在陷入局部最优的问题,若步长因子 α \alpha α的值取值较大,虽增强了全局搜索能力,却不能求得高精度的解, α \alpha α的值设定较小,若想寻到算法理论值,算法则需要更多的迭代次数,算法的效率随之降低。
针对以上所述问题,本文提出强化搜索的莱维飞行机制,步长 α \alpha α由固定值改为随迭代次数改变的动态步长因子,步长因子 α \alpha α定义如下: α ( t ) = t T m a x sinh ⁡ ( 1 − t T m a x ) ⋅ r (7) \alpha(t)=\frac{t}{T_{max}}\sinh(1-\frac{t}{T_{max}})\cdot r\tag{7} α(t)=Tmaxtsinh(1Tmaxt)r(7)其中, t t t是当前迭代次数, T m a x T_{max} Tmax是最大迭代次数, r r r为调节参数。经过多次实验可知当调价参数取 r = 3.83 r=3.83 r=3.83时可满足 α ( t ) ∈ [ 0 , 1 ] \alpha(t)\in[0,1] α(t)[0,1]的变化条件且强化莱维飞行策略寻到最优值。
莱维飞行服从莱维分布,变异后的莱维飞行机制数学模型如公式(9)所示。 x i t + 1 = x i t + α ( t ) φ × μ ∣ ν ∣ 1 λ ( x i t − x b e s t ) (8) x_i^{t+1}=x_i^t+\alpha(t)\frac{\varphi×\mu}{|\nu|^{\frac1\lambda}}(x_i^t-x_{best})\tag{8} xit+1=xit+α(t)νλ1φ×μ(xitxbest)(8)其中, x i t x_i^t xit表示蝗虫在当前迭代次数的位置, x i t + 1 x_i^{t+1} xit+1表示蝗虫下一代位置, x b s e t x_{bset} xbset为当前最优解, λ \lambda λ取值为 ( 1 , 3 ) (1,3) (1,3),本文中 λ = 1.5 \lambda=1.5 λ=1.5 μ \mu μ ν \nu ν服从正态随机分布, φ \varphi φ的表达式为: φ = [ Γ ( 1 + λ ) × s i n ( π × λ 2 ) Γ ( 1 + λ 2 ) × λ × 2 λ − 1 2 ] 1 / λ (9) \varphi=\left[\frac{\Gamma(1+\lambda)×sin(\pi×\frac{\lambda}{2})}{\Gamma(\frac{1+\lambda}{2})×\lambda×2^{\frac{\lambda-1}{2}}}\right]^{1/\lambda}\tag{9} φ=[Γ(21+λ)×λ×22λ1Γ(1+λ)×sin(π×2λ)]1/λ(9)
在这里插入图片描述

图1 动态步长因子 α ( t ) \alpha(t) α(t)的变化曲线

由图1所示,由于引入动态调节搜索步长,在算法中前期,因子变化率随着迭代次数成正比关系,实现种群由子空间到整体解空间进行莱维全局搜索,当算法到后期的因子变化率逐渐变小时,全局搜索减弱,局部开发能力增强,实现了莱维飞行机制的强化搜索,通过动态地调整步长,如果出现算法陷入局部最优、搜索停滞的情况,较大的步长可以使得停滞现象消失,帮助算法脱离局部极值;当蝗虫的个体接近最优解的位置时,较小取值的步长因子能使得个体加速收敛, 提升率算法效率以及寻优精度。
虽然经过莱维飞行搜索产生的新位置能够摆脱局部最优,但并不能保证更新后的位置均匀分布在最优位置附近,故在莱维飞行机制中增加了高斯随机分布函数作为约束因子,使蝗虫种群更加均匀的分布在探索空间。约束因子定义如下: γ = N ( 0 , δ ) (10) \gamma=N(0,\delta)\tag{10} γ=N(0,δ)(10)其中, δ \delta δ为尺度参数,取值为 t / T m a x t/T_{max} t/Tmax,随着迭代次数的增加动态改变尺度参数的大小,合理的控制位置的分布。故莱维飞行的最终的位置更新方式如下: x i t + 1 = γ ( x i t + α ( t ) φ × μ ∣ ν ∣ 1 λ ( x i t − x b e s t ) ) (11) x_i^{t+1}=\gamma\left(x_i^t+\alpha(t)\frac{\varphi×\mu}{|\nu|^{\frac1\lambda}}(x_i^t-x_{best})\right)\tag{11} xit+1=γ(xit+α(t)νλ1φ×μ(xitxbest))(11)本文为使算法能够摆脱局部最优,增加种群多样性,提出服从高斯均匀分布且具有双重搜索功能的莱维飞行策略,但由于策略的随机性,更新后的位置相比于原位置未必更为优秀,策略最后通过贪婪算法的原理去判断是否更新后的位置比原位置好,如果更新位置更加有价值才更新,否则保留原位置,不执行更新。

二、DLGOA算法的实现

综上所述,DLGOA是在原始GOA的基础上进行改进的,通过改进参数 c c c,使之更合理的平衡全局探索和局部开发;引进扰动因子改变位置更新方式使算法产生种群多样性,最大化的遍历更多的搜索空间;针对最优位置无更新的缺陷,加入改进的莱维飞行机制,根据最优位置的引导作用,使算法不再在局部最优值附近停滞,从而使得算法的收敛速度和精度得到一定的提高。DLGOA的主要流程图如图2所示。
在这里插入图片描述

图2 DLGOA流程图

三、实验仿真与分析

为验证本文提出的改进算法的性能有效性,实验通过使用7个具有单峰与多峰等不同特征的经典测试函数在维度从5维到100维不等的环境进行验证。
测试函数信息如表1所示,其中函数F1到F4是单峰函数即只有一个最优值,全局最优值与局部最优值相同,主要作用来测试收敛速度,从F5到F7为多峰函数,函数具有一个全局最优值以及多个局部极最优值,作用于测试求解精度。

表1 测试函数

在这里插入图片描述为验证本文提出的改进算法的有效寻优能力以及鲁棒性,将DLGOA与标准的GOA算法对比,以及其他群智能算法如蚁狮算法(ALO)、灰狼优化算法(GWO)、樽海鞘群算法(SSA)在7个测试函数作比较,其中ALO、GWO和SSA的参数设置如表2所示,为避免实验的偶然性,7个测试函数每个独立运行30次,每次运行迭代500次。

表2 参数设置

在这里插入图片描述下图分别为F1~F7的对比曲线。
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述5种算法的最大值、最小值、平均值及标准差显示如下:

函数:F1
DLGOA:最大值: 0,最小值:0,平均值:0,标准差:0
GOA:最大值: 1.073e-07,最小值:1.7843e-09,平均值:1.9858e-08,标准差:2.141e-08
GWO:最大值: 2.3095e-108,最小值:9.9771e-117,平均值:2.0997e-109,标准差:5.2645e-109
ALO:最大值: 1.04e-09,最小值:8.4468e-11,平均值:4.4824e-10,标准差:2.3788e-10
SSA:最大值: 2.77e-10,最小值:2.4202e-11,平均值:1.168e-10,标准差:7.4797e-11
函数:F2
DLGOA:最大值: 0,最小值:0,平均值:0,标准差:0
GOA:最大值: 1.1067,最小值:0.00017726,平均值:0.048935,标准差:0.20332
GWO:最大值: 7.1488e-36,最小值:3.6577e-39,平均值:5.5919e-37,标准差:1.412e-36
ALO:最大值: 12.2131,最小值:1.7735e-05,平均值:0.79474,标准差:2.3738
SSA:最大值: 1.7382,最小值:4.874e-06,平均值:0.058307,标准差:0.31728
函数:F3
DLGOA:最大值: 0,最小值:0,平均值:0,标准差:0
GOA:最大值: 128033.0586,最小值:22415.6347,平均值:70715.1826,标准差:27608.2538
GWO:最大值: 15706.4614,最小值:1105.5037,平均值:7238.9247,标准差:4206.2046
ALO:最大值: 117645.3825,最小值:43595.4675,平均值:73690.5692,标准差:18375.0711
SSA:最大值: 70161.7313,最小值:26012.6058,平均值:48173.7517,标准差:11516.4866
函数:F4
DLGOA:最大值: 0,最小值:0,平均值:0,标准差:0
GOA:最大值: 32.9264,最小值:17.2011,平均值:22.7723,标准差:3.318
GWO:最大值: 1.3017,最小值:0.013917,平均值:0.14249,标准差:0.24164
ALO:最大值: 34.8224,最小值:17.7242,平均值:24.2902,标准差:3.8981
SSA:最大值: 28.3476,最小值:14.1615,平均值:20.4866,标准差:4.0111
函数:F5
DLGOA:最大值: 0,最小值:0,平均值:0,标准差:0
GOA:最大值: 251.7836,最小值:37.548,平均值:98.2283,标准差:44.4438
GWO:最大值: 142.5752,最小值:3.6104,平均值:26.5268,标准差:23.8058
ALO:最大值: 138.2987,最小值:30.8454,平均值:80.3937,标准差:24.8776
SSA:最大值: 101.4856,最小值:28.8538,平均值:58.0392,标准差:19.7758
函数:F6
DLGOA:最大值: 8.8818e-16,最小值:8.8818e-16,平均值:8.8818e-16,标准差:0
GOA:最大值: 3.0271,最小值:0.00049961,平均值:1.1566,标准差:1.0966
GWO:最大值: 4.4409e-15,最小值:8.8818e-16,平均值:1.2434e-15,标准差:1.084e-15
ALO:最大值: 2.0133,最小值:1.9007e-05,平均值:0.19905,标准差:0.53316
SSA:最大值: 2.3168,最小值:1.0046e-05,平均值:0.44684,标准差:0.79269
函数:F7
DLGOA:最大值: 0,最小值:0,平均值:0,标准差:0
GOA:最大值: 0.7208,最小值:0.15776,平均值:0.33984,标准差:0.14689
GWO:最大值: 0.067406,最小值:0,平均值:0.013424,标准差:0.018273
ALO:最大值: 0.054994,最小值:0.00051234,平均值:0.020235,标准差:0.013656
SSA:最大值: 0.076091,最小值:5.4393e-08,平均值:0.019514,标准差:0.018644

结果验证,本文的算法具有较强的鲁棒性,早熟现象的发生被有效地避免,改进了蝗虫算法求解精度不高的问题,同时算法的有效性和稳定性也得到了验证。

四、参考文献

[1] Saremi S, Mirjalili S, Lewis A. Grasshopper Optimisation Algorithm: Theory and application[J]. Advances in Engineering Software, 2017, 105: 30-47.
[2] 刘生建, 杨艳, 周永权. 一种群体智能算法——狮群算法[J]. 模式识别与人工智能, 2018, 31(5): 431-441.
[3] 杨文珍, 何庆, 杜逆索. 具有扰动机制和强化莱维飞行的蝗虫优化算法[J]. 小型微型计算机系统, 2022, 43(2): 247-253.

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心️升明月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值