柯西变异和自适应权重优化的蝴蝶算法-附代码

融合正弦余弦和无限折叠迭代混沌映射的蝴蝶优化算法


摘要:针对基本蝴蝶优化算法(Butterfly Optimization Algorithm,BOA)存在的收敛精度较低、容易陷入局部最优解的问题,提出柯西变异和自适应权重优化的蝴蝶算法(Cauchy variation and adaptive Weight Butterfly Optimization Algorithm,CWBOA)。通过在全局位置更新处引入柯西分布函数进行变异,在局部位置更新处引入自适应权重因子,改进了蝴蝶算法的局部搜索能力;并且引入动态切换概率p来权衡全局探索与局部开发过程的比重。

1.蝴蝶优化算法

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

2. 改进蝴蝶优化算法

2.1 柯西变异

蝴蝶个体受局部的极值点约束力在进行柯西变异后下降, 并且 柯西分布函数的峰值相对较小, 蝴蝶个体在变异后会使 用相对较少的时间来搜索相邻区间, 把更多的时间放在 搜寻全局最优值上, 使得改进的蝴蝶优化算法在寻找全 局的最优值方面具备很好的调节能力。用柯西变异进 行随机扰动有利于增加种群的多样性从而避免算法陷 入局部最优, 提高全局搜索最优值的能力。柯西分布的 特征使其能够产生与原点相距较远的随机数, 这意味着 经过柯西变异后的蝴蝶个体具备了能够迅速逃离局部 极值的能力。另外, 柯西分布函数的峰值较低, 该特点 能够缩短变异后的蝴蝶个体在邻域周围搜索的时间。 因此在求得当前最优解后, 本文使用公式 (5)所示的更 新公式对当前全局最优解进行变异处理。
x newbest  = x best  + x best  × Cauchy ⁡ ( 0 , 1 ) (5) x_{\text {newbest }}=x_{\text {best }}+x_{\text {best }} \times \operatorname{Cauchy}(0,1) \tag{5} xnewbest =xbest +xbest ×Cauchy(0,1)(5)

2.2 自适应权重

惯性权重因子是很重要的一个参数, 当惯性权重比 较大时, 算法全局搜索能力较强, 能够增加种群多样性, 可以搜索较大的区域; 当惯性权重比较小时, 算法局部 搜索能力较强, 可以在最优解周围精细搜索, 加快收玫 速度。蝴蝶进行局部寻优时, 是以公式 (3) 进行局部搜 索的, 其中当蝴蝶以公式 (3) 向局部最优解靠近时, 这时 只能靠近局部最优解, 而不能进行更好的局部寻优 [ 12 ] { }^{[12]} [12], 针对这个问题受文献[13]、文献[14]的启发, 提出了新的 自适应权重方法, 蝴蝶接近食物的时候, 采用较小的自 适应权重改变此时最优的蝴蝶的位置, 使得蝴蝶局部寻 优能力得到提高。自适应权重公式如式(6)所示:
w = sin ⁡ ( π ⋅ t ( 2 ⋅ i tmax ⁡ ) + π ) + 1 (6) w=\sin \left(\frac{\pi \cdot t}{(2 \cdot i \operatorname{tmax})}+\pi\right)+1 \tag{6} w=sin((2itmax)πt+π)+1(6)
式 (6) 中, t t t 为当前迭代次数, itmax 是最大迭代次数。 改进式 (3)的公式如(7)所示:
x i t + 1 = w ⋅ x i t + ( r 2 × x j t − x k t ) × f i (7) x_{i}^{t+1}=w \cdot x_{i}^{t}+\left(r^{2} \times x_{j}^{t}-x_{k}^{t}\right) \times f_{i} \tag{7} xit+1=wxit+(r2×xjtxkt)×fi(7)
通过融合自适应权重因子 w w w, 使蝴蝶个体具有更 好的局部寻优能力。

2.3动态切换概率策略

在基本蝴蝶优化算法中, 局部搜索和全局寻优过程 用常量切换概率 p ∈ [ 0 , 1 ] p \in[0,1] p[0,1] 来控制, 一个合理的搜索过程 在算法的前期应该进行较强烈的全局搜索, 迅速定位搜 索空间中全局最优解所在范围, 在探索后期局部开采能 力应增强, 以提升算法的寻优精度。本文引入动态切换 概率来平衡局部开采和全局开采的比重, 来实现更好的 寻优策略。动态切换概率 p p p 的公式如下:
p = 0.6 − 0.1 × (  MaxIter  − t ) /  MaxIter  (8) p=0.6-0.1 \times(\text { MaxIter }-t) / \text { MaxIter }\tag{8} p=0.60.1×( MaxIter t)/ MaxIter (8)

请添加图片描述

3.实验结果

请添加图片描述

4.参考文献

[1]高文欣,刘升,肖子雅,于建芳.柯西变异和自适应权重优化的蝴蝶算法[J].计算机工程与应用,2020,56(15):43-50.

5.Matlab代码

6.Python代码

猜你喜欢

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