分段权重和变异反向学习的蝴蝶优化算法-附代码

分段权重和变异反向学习的蝴蝶优化算法


摘要:针对原始蝴蝶优化算法容易陷入局部最优解、收敛速度慢及寻优精度低等问题,提出分段权重和变异反向学习的蝴蝶优化算法。首先通过飞行引领整策略来矫正邻域内蝴蝶的自身飞行,降低盲目飞行,增强算法跳出局部最优的能力;然后引入分段权重来平衡全局勘探及局部开发的能力,进而实现蝴蝶位置动态更新;最后使用变异反向学习对位置进行扰动,增加种群多样性以及提高算法的收敛速度。

1.蝴蝶优化算法

基础蝴蝶优化算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/107855860

2. 改进蝴蝶优化算法

2.1 飞行引领策略

BOA 算法中,蝴蝶是通过香味传播构建的社会信息共享网络来交互彼此信息用于寻找食物源。寻优过程中,蝴蝶个体具有盲目跟随性,具体表现为蝴蝶个体之间信息交互频率低,可能向某个局部最优个体所在方向飞行,导致算法陷入局部最优。针对 BOA 存在蝴蝶个体盲目飞行的现象,利用当前蝴蝶与最优蝴蝶之间的香味强弱引领种群的寻优方向,进而增强种群跳出局部最优的能力。在种群寻优过程中,计算两者之间适应度幵比较适应度值大小,然后确定当前蝴蝶的飞行模式即若当前蝴蝶个体适应度值小于最优蝴 蝶适应度值种群受当前蝴蝶吸引较大; 反之, 受最优 蝴蝶影响较大, 再利用约束引领蝴蝶个体的飞行方向, 避免种群陷人局部最优。飞行引领策略数学表达式:
x i t = { x i t + b 1 ( x i t − g b ) , f ( x i t ) ≤ f ( g b ) x i t + b 1 ( g b − x i t ) , f ( x i t ) > f ( g b ) (4) x_{i}^{t}=\left\{\begin{array}{l} x_{i}^{t}+b_{1}\left(x_{i}^{t}-g_{b}\right), f\left(x_{i}^{t}\right) \leq f\left(g_{b}\right) \\ x_{i}^{t}+b_{1}\left(g_{b}-x_{i}^{t}\right), f\left(x_{i}^{t}\right)>f\left(g_{b}\right) \end{array}\right. \tag{4} xit={ xit+b1(xitgb),f(xit)f(gb)xit+b1(gbxit),f(xit)>f(gb)(4)

b 1 = − [ e ( − t / T max ⁡ ) − e ( t / T max ⁡ ) e ( − t / T max ⁡ ) + e ( t / T max ⁡ ) + θ ] (5) \begin{gathered} b_{1}=-\left[\frac{e^{\left(-t / T_{\max }\right)}-e^{\left(t / T_{\max }\right)}}{e^{\left(-t / T_{\max }\right)}+e^{\left(t / T_{\max }\right)}}+\theta\right] \end{gathered}\tag{5} b1=[e(t/Tmax)+e(t/Tmax)e(t/Tmax)e(t/Tmax)+θ](5)
x i t x_{i}^{t} xit 表示第 i i i 只蝴蝶在第 t t t 次迭代的位置向量, g b g_{b} gb 表示当前最有个体位置, f ( x i t ) 、 f ( g b ) f\left(x_{i}^{t}\right) 、 f\left(g_{b}\right) f(xit)f(gb) 分别为第 i i i 只 蝴蝶、最优蝴蝶的适应度; b 1 b_{1} b1 引领系数取值范围 ( − 2 , 1 ) (-2,1) (2,1), 主要约束引领方向, θ \theta θ 是矫正因子, 其取值范围为 ( 0 , 1 ) (0,1) (0,1) 之间的随机数, T max ⁡ T_{\max } Tmax 是最大迭代次数。

2.2 分段权重的位置更新策略

由 BOA 的位置更新公式可知, 蝴蝶的位置更新 由蝴蝶之间信息交互以及食物源决定, 因此 BOA 具 有较强的局部开发能力, 但全局搜索的能力明显不足, 这也是导致了 BOA 寻优精度不高、收玫速度慢的主 要原因。为了更好地改善 BOA 存在的缺陷提高算法 的性能, 本节采用分段的思想对算法进行处理。受文 献[13]的非线性分段平衡全局与局部搜索能力的启发, 蝴蝶个体的寻优能力与种群的寻优能力通过分段权重 更好的结合, 确保蝴蝶个体在种群空间中进行广泛搜 索更好克服 B O A \mathrm{BOA} BOA 存在的缺点。具体改进如下:
搜索前半段, 蝴蝶个体需要具备较强全局搜索的 能力, 确保算法能在搜索空间中进行广泛寻优。因此 蝴蝶个体在下一次迭代中需要较大且稳定的权重进行 全局寻优, 采用指数与对数结合权重不仅保证权重进 行变化范围稳定, 也能实现自适应调整, 同时增强种 群跳出局部最优和提高寻优精度的能力, 公式如下:
c ( t ) = 2 + γ + log ⁡ a t + ln ⁡ t (6) c(t)=2+\gamma+\log _{a} t+\ln t \tag{6} c(t)=2+γ+logat+lnt(6)

γ = e ( t / T max ⁡ ) − 10 (7) \begin{gathered} \gamma=e^{\left(t / T_{\max }\right)^{-10}} \end{gathered}\tag{7} γ=e(t/Tmax)10(7)
搜索后半段, 蝴蝶个体需要具备较强的局部搜索 能力, 才能保证种群进行更好的寻优。因此, 蝴蝶个 体需要一个稳定较小的权重帮助种群进行深度挖掘, 采用指数型权重随着迭代的进行自适应调小权重从而 实现种群的深度挖掘, 公式如下:
c ( t ) = 3 T max ⁡ − t T max ⁡ − 2 (8) c(t)=3^{\frac{T_{\max }-t}{T_{\max }}}-2 \tag{8} c(t)=3TmaxTmaxt2(8)
c ( t ) c(t) c(t) 为分段权重, a = 1 / 2 , γ a=1 / 2, \gamma a=1/2,γ ( 0 , 1 ] (0,1] (0,1] 的调节因子, 搜索前半段 c ( t ) c(t) c(t) 的取值范围 ( 0 , 1 ) (0,1) (0,1), 搜索后半段 c ( t ) c(t) c(t) 取值 范围 [ − 1 , 1 ) [-1,1) [1,1)
最终的位置更新公式, 全局搜索公式如下:
x i t + 1 = ( c ( t ) x i t + ( R 1 2 g b − x i t ) f i ) , c 2 < P (9) x_{i}^{t+1}=\left(c(t) x_{i}^{t}+\left(R_{1}^{2} g_{b}-x_{i}^{t}\right) f_{i}\right), c_{2}<P \tag{9} xit+1=(c(t)xit+(R12gbxit)fi),c2<P(9)
局部搜索如下:
x i t + 1 = ( c ( t ) x i t + ( R 2 2 x j t − x k t ) f i ) , c 2 > P (10) x_{i}^{t+1}=\left(c(t) x_{i}^{t}+\left(R_{2}^{2} x_{j}^{t}-x_{k}^{t}\right) f_{i}\right), c_{2}>P \tag{10} xit+1=(c(t)xit+(R22xjtxkt)fi),c2>P(10)
其中, x i t + 1 x_{i}^{t+1} xit+1 表示第 i i i 只蝴蝶在 t + 1 t+1 t+1 次迭代的位置, x j t x_{j}^{t} xjt 表示第 i \mathrm{i} i 只蝴蝶在 t t t 次迭代的位置, R 1 、 R 2 R_{1} 、 R_{2} R1R2 是服从 ( 0 , 1 ) (0,1) (0,1) 均匀分布 1 × dim ⁡ 1 \times \operatorname{dim} 1×dim 的随机矩阵, c 2 c_{2} c2 ( 0 , 1 ) (0,1) (0,1) 之间的随 机数, g b g_{b} gb 表示当前最优个体位置, P \mathrm{P} P 代表转换概率其 范围 ( 0 , 1 ) (0,1) (0,1) 的数, 经测试后 P = 0.8 \mathrm{P}=0.8 P=0.8 对算法最有益, 其余 参数在前面章节均有介绍。

2.3 变异反向学习

本文将变异概率与反向学习结合融入 BOA 算法中,数学表达式:
x new  i t = { l b i + R 3 ( u b i − x i t ) , b 2 ≤ p r l b i + ( u b i − x i t ) , b 2 > p r (12) x_{\text {new } i}^{t}=\left\{\begin{array}{l} l b_{i}+R_{3}\left(u b_{i}-x_{i}^{t}\right), b_{2} \leq p_{r} \\ l b_{i}+\left(u b_{i}-x_{i}^{t}\right), b_{2}>p_{r} \end{array}\right. \tag{12} xnew it={ lbi+R3(ubixit),b2prlbi+(ubixit),b2>pr(12)
其中, R 3 R_{3} R3 服从 ( 0 , 1 ) (0,1) (0,1) 均匀分布 1 × dim ⁡ 1 \times \operatorname{dim} 1×dim 的随机矩阵; b 2 b_{2} b2 ( 0 , 1 ) (0,1) (0,1) 之间的随机数, p r p_{r} pr 变异概率是 ( 0.01 , 0.1 ) (0.01,0.1) (0.01,0.1) 之间 的数, 经测试 p r = 0.08 p_{r}=0.08 pr=0.08 算法性能最好; l b i 、 u b i l b_{i} 、 u b_{i} lbiubi 是搜 索空间的下边界和上边界; x i t x_{i}^{t} xit 代表第i只蝴蝶在 dim ⁡ \operatorname{dim} dim 维 习得到新位置的蝴蝶。当时 b 2 ≤ p r b_{2} \leq p_{r} b2pr, 通过随机反向学 习扩大算法的搜索范围; b 2 > p r b_{2}>p_{r} b2>pr 时, 通过一般反向学 习扩大搜索范围, 同时相对于固定的边界, 动态变化 的 l b i 、 u b i l b_{i} 、 u b_{i} lbiubi 对于算法寻优更有利。
虽然变异反向学习策略产生的新解一定程度上增 虽算法跳出局部最优的能力, 但是不能保证产生的新 解一定优于原位置的解, 因此经过变异反向学习之后,需要比较新旧位置的适应度大小, 使用贪心策略将最 好的位置进人下一次迭代。数学表达:
x i t + 1 = { x n e w i t , f ( x ( n e w i ) t ) ≤ f ( x i t + 1 ) ) x i t + 1 , f ( x ( n e w i ) t ) > f ( x i t + 1 ) (13) x_{i}^{t+1}=\left\{\begin{array}{l} x_{ {new_i }}^{t}, f\left(x_{\left( {new }_{i}\right)}^{t}\right) \leq f\left(x_{i}^{t+1)}\right) \\ x_{i}^{t+1}, f\left(x_{\left(n e w_{i}\right)}^{t}\right)>f\left(x_{i}^{t+1}\right) \end{array}\right. \tag{13} xit+1= xnewit,f(x(newi)t)f(xit+1))xit+1,f(x(newi)t)>f(xit+1)(13)
基于这种动态比较的策略可以促进算法向着目标 位置方向进化, 使得算法获得更好的收玫速度。

请添加图片描述

3.实验结果

请添加图片描述

4.参考文献

[1]李守玉,何庆,杜逆索.分段权重和变异反向学习的蝴蝶优化算法[J/OL].计算机工程与应用:1-11[2021-04-30].http://kns.cnki.net/kcms/detail/11.2127.TP.20210331.0944.004.html.

5.Matlab代码

6.Python代码

猜你喜欢

转载自blog.csdn.net/u011835903/article/details/126374958