栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

基于改进螺旋更新位置模型的鲸鱼优化算法-附代码

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

基于改进螺旋更新位置模型的鲸鱼优化算法-附代码

基于改进螺旋更新位置模型的鲸鱼优化算法

文章目录
  • 基于改进螺旋更新位置模型的鲸鱼优化算法
    • 1.鲸鱼优化算法
    • 2. 改进鲸鱼优化算法
      • 2.1 基于对立学习的种群初始化
      • 2.2 随机调整控制参数策略与正态变异算子
        • 2.2.1 随机调整控制参数策略
        • 2.2.2 正态变异算子
      • 2.3 改进信息交流强化机制
      • 2.4 改进螺旋更新位置模型
    • 3.实验结果
    • 4.参考文献
    • 5.Matlab代码
    • 6.Python代码

摘要:针对鲸鱼算法后期种群的多样性丢失问题,通过螺旋更新位置模型的改进并结合对立学习策略、随机调整参数、正态变异操作等已有方法改进鲸鱼优化算法.采用对立学习策略对鲸鱼种群初始化,为全局搜索奠定基础;利用随机调整控制参数的策略,避免了算法后期陷入局部最优;正态变异算子与改进螺旋更新位置对鲸鱼种群进行干扰,避免种群后期向某个最优区域靠拢,增大算法的全局搜索能力.

1.鲸鱼优化算法

基础鲸鱼算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/107559167

2. 改进鲸鱼优化算法 2.1 基于对立学习的种群初始化

起点的优劣往往影响着结果的好坏, 对于群体迭代的智能优化算法也是一样, 特别是对于一个多峰函数 莱说, 若随机生成的初始化种群都集中于某一个区域或分散于其他各峰, 则经过多次迭代以后很可能陷入局 部最优. 因此, 一个良好的初始种群可以大大的提高算法的求解精度与收玫速度. 为了获得良好的初始种群, 龙文等人在文献中引入对立学习策略 (简称 O B L mathrm{OBL} OBL ). 该策略是近年来计算领域出现的一种新技术, 并在文 献中都得到了很好的应用.
定义 1 对立点 (opposite point) . 假设在 [ l , u ] [l, u] [l,u] 上存在数 x x x, 则 x x x 的对立点定义为 x ′ = l + u − x x^{prime}=l+u-x x′=l+u−x. 若 将对立点的定义扩展到 d d d 维空间, 设 X ⃗ = ( x 1 , x 2 , ⋯   , x d ) vec{X}=left(x^{1}, x^{2}, cdots, x^{d}right) X =(x1,x2,⋯,xd) 是 d d d 维空间中的一个点, 其中, x j ∈ [ l j , u j ] , j = x^{j} inleft[l^{j}, u^{j}right], j= xj∈[lj,uj],j= 1 , 2 , ⋯   , d 1,2, cdots, d 1,2,⋯,d, 则其对立点为 X ⃗ ′ = ( x 1 ′ , x 2 ′ , ⋯   , x d ′ ) vec{X}^{prime}=left(x^{1 prime}, x^{2 prime}, cdots, x^{d prime}right) X ′=(x1′,x2′,⋯,xd′), 其中 x j ′ = l j + u j − x j , j = 1 , 2 , ⋯   , d x^{j prime}=l^{j}+u^{j}-x^{j}, j=1,2, cdots, d xj′=lj+uj−xj,j=1,2,⋯,d.
由上述定义, 假设鲸鱼的种群数量为 N N N, 第 i i i 个鲸鱼所在的空间位置为 X ⃗ i = ( x i 1 , x i 2 , ⋯   , x i d ) , x i j ∈ vec{X}_{i}=left(x_{i}^{1}, x_{i}^{2}, cdots, x_{i}^{d}right), x_{i}^{j} in X i​=(xi1​,xi2​,⋯,xid​),xij​∈ [ l i j , u i j ] , i ∈ 1 , 2 , ⋯   , N , j ∈ 1 , 2 , ⋯   , d left[l_{i}^{j}, u_{i}^{j}right], i in 1,2, cdots, N, j in 1,2, cdots, d [lij​,uij​],i∈1,2,⋯,N,j∈1,2,⋯,d, 于是, 假设随机产生的第 i i i 个鲸鱼在第 j j j 维空间中的位置表示如下:
X i j = l i j + rand ⁡ ⋅ ( u i j − l i j ) , (7) X_{i}^{j}=l_{i}^{j}+operatorname{rand} cdotleft(u_{i}^{j}-l_{i}^{j}right), tag{7} Xij​=lij​+rand⋅(uij​−lij​),(7)
由对立点的定义, 可得第 i i i 个鲸鱼的对立位置如下:
X i j ′ = l i j + u i j − X i j . (8) X_{i}^{j prime}=l_{i}^{j}+u_{i}^{j}-X_{i}^{j} . tag{8} Xij′​=lij​+uij​−Xij​.(8)

2.2 随机调整控制参数策略与正态变异算子 2.2.1 随机调整控制参数策略

在 WOA 算法中, 我们知道 (2) 式中参数 a a a 是随迭代次数的增加而线性减小的, 这种线性递减的方式很 有可能使算法陷入局部最优且效率低下. 而由文献 [7] 提出的随机调整控制参数策略, 收玫因子 a a a 不受迭代 次数的约束, 而是随机选择参数 a a a 的值, 使算法跳出局部最优, 数学公式如下:
a ( t ) = ( a max ⁡ − a min ⁡ ) ⋅ rand ⁡ + σ ⋅ randn ⁡ . (9) a(t)=left(a_{max }-a_{min }right) cdot operatorname{rand}+sigma cdot operatorname{randn} . tag{9} a(t)=(amax​−amin​)⋅rand+σ⋅randn.(9)
其中, a max  a_{text {max }} amax ​ 和 a min ⁡ a_{min } amin​ 分别为控制参数 a a a 的最大值和最小值. rand 是 [ 0 , 1 ] [0,1] [0,1] 上的随机数, randn 是正态分布的随 机数, σ sigma σ (方差) 是用来衡量随机变量收玫因子 a a a 与其数学期望间的偏离程度, 可以控制取值中的控制参数误 差.

2.2.2 正态变异算子

群体智能优化算法在迭代的后期都有一个共同的缺点, 即随着迭代次数的增加, 种群不断向某一个最优 个体区域靠拢, 从而失去探索空间其他位置的机会, 也就是种群的多样性丧失使得算法很容易陷入局部最优. 这时, 我们就需要在每一次迭代之后对种群做一个干扰, 以保证种群的多样性, 进而尽可能搜索全局最优.
在文献 中已经证明了正态分布具有良好的干扰作用和搜索能力. 在文献 中也用来改进了 WOA 算法, 且得到了不错的收敛效果. 其数学表达式定义如下:
X best  j = X best  j + N ⋅ X best  j (10) X_{text {best }}^{j}=X_{text {best }}^{j}+N cdot X_{text {best }}^{j} tag{10} Xbest j​=Xbest j​+N⋅Xbest j​(10)
其中, X best  j X_{text {best }}^{j} Xbest j​ 表示当前搜索空间第 j j j 维上的最优搜索代理. N N N 是一个服从均值为 0 , 方差为 1 的随机标准正 态分布数.
在本文改进的鲸鱼算法中, 我们将结合以上改进方法, 即: 采用基于对立学习的种群初始化获得质量较 好的初始种群; 采用随机调整控制参数策略与正态变异算子对种群进行合理的干扰, 避免种群多样性减少.

2.3 改进信息交流强化机制

在文献 [7] 中, 作者曾引入灰狼算法中的信息交流强化机制 [ 17 ] { }^{[17]} [17], 在该方法中, 引入了全局最优个体 X ⃗ best  vec{X}_{text {best }} X best ​ 以及邻域半径 r r r 范围内的最优个体 X ⃗ localbest  vec{X}_{text {localbest }} X localbest ​ 作为辅助坐标. 人工鲸鱼通过 X ⃗ best  vec{X}_{text {best }} X best ​ 与 X ⃗ localbest  vec{X}_{text {localbest }} X localbest ​ 的个体强化交 流坐标信息后, 有助于定位食物的理论最优位置 X ⃗ best  ′ vec{X}_{text {best }}^{prime} X best ′​. X ⃗ best  ′ vec{X}_{text {best }}^{prime} X best ′​ 坐标帮助人工鲸鱼修正主导航坐标 X ⃗ rand  vec{X}_{text {rand }} X rand ​ 在 受食方向上的偏差, 使得人工鲸鱼在游走受食的过程中更加精确地找到食物的位置 X ⃗ t + 1 vec{X}_{t+1} X t+1​. 其计算公式如下:
X ⃗ ( t + 1 ) = X ⃗ ( t ) + A ⋅ D ⃗ rand  + r 1 ⋅ D ⃗ best  + r 2 ⋅ D ⃗ localbest  (11) vec{X}(t+1)=vec{X}(t)+A cdot vec{D}_{text {rand }}+r_{1} cdot vec{D}_{text {best }}+r_{2} cdot vec{D}_{text {localbest }} tag{11} X (t+1)=X (t)+A⋅D rand ​+r1​⋅D best ​+r2​⋅D localbest ​(11)
其中, A A A 是区间 [ − 2 , 2 ] [-2,2] [−2,2] 上的随机数, r 1 r_{1} r1​ 和 r 2 r_{2} r2​ 是区间 [ 0 , 1 ] [0,1] [0,1] 上的随机数, D ⃗ localbest  = ∣ E ⋅ X ⃗ localbest  − X ⃗ t ∣ vec{D}_{text {localbest }}=left|E cdot vec{X}_{text {localbest }}-vec{X}_{t}right| D localbest ​=∣ ∣​E⋅X localbest ​−X t​∣ ∣​ 是 个体 X X X 与其领域半径 r ( r r(r r(r 是区间 [ 0 , ( N − 1 ) / 2 ] [0,(N-1) / 2] [0,(N−1)/2] 上的随机非零整数, N N N 为种群规模) 范围内最优个体的距 离. E E E 是区间 [ 0 , 2 ] [0,2] [0,2] 上的随机数.
为了能解决超大规模的优化问题, 考虑大规模的变量优化问题复杂而繁多的计算会给程序运行时间带来 困扰甚至是求解失败, 在这里, 我们为了能在合理的运行时间内得到满意解, 我们将 “邻域半径 r r r 内的最优个
X ⃗ ( t + 1 ) = X ⃗ ( t ) + A ⋅ D ⃗ rand  + r 1 ⋅ D ⃗ best  + r 2 ⋅ D ⃗ localrand  (12) vec{X}(t+1)=vec{X}(t)+A cdot vec{D}_{text {rand }}+r_{1} cdot vec{D}_{text {best }}+r_{2} cdot vec{D}_{text {localrand }} tag{12} X (t+1)=X (t)+A⋅D rand ​+r1​⋅D best ​+r2​⋅D localrand ​(12)

2.4 改进螺旋更新位置模型

从 (5) 式中我们可以看到, 原 WOA 算法的螺旋更新位置模型, 后期可使种群快速的聚集在一起, 这虽 然可以加快后期的收玫速度, 但是却会使种群的多样性丢失, 从而增大陷入局部最优解的几率. 因此, 我们对 螺旋位置更新模型 (5) 做如下改进:
X i j ( t + 1 ) = D i j ′ ⋅ r 3 ⋅ e b l ⋅ cos ⁡ ( 2 π l ) + sin ⁡ ( X i j ( t ) ) + X i j ∗ ( t ) , i = 1 , 2 , ⋯   , N , j = 1 , 2 , ⋯   , d (13) X_{i}^{j}(t+1)=D_{i}^{j prime} cdot r_{3} cdot mathrm{e}^{b l} cdot cos (2 pi l)+sin left(X_{i}^{j}(t)right)+X_{i}^{j *}(t), i=1,2, cdots, N, j=1,2, cdots, d tag{13} Xij​(t+1)=Dij′​⋅r3​⋅ebl⋅cos(2πl)+sin(Xij​(t))+Xij∗​(t),i=1,2,⋯,N,j=1,2,⋯,d(13)
其中, D i j ′ = ∣ X i j ∗ ( t ) − X i j ( t ) ∣ D_{i}^{j prime}=left|X_{i}^{j *}(t)-X_{i}^{j}(t)right| Dij′​=∣ ∣​Xij∗​(t)−Xij​(t)∣ ∣​ 表示第 i i i 只鲸鱼个体在第 j j j 维的空间位置时与当前最优个体之间的距离, r 3 r_{3} r3​ 是 控制余弦局部开发的区域范围, 其计算式子是: r 3 = a − a ⋅ ( t / t max ⁡ ) , a r_{3}=a-a cdotleft(t / t_{max }right), a r3​=a−a⋅(t/tmax​),a 为常数, t t t 为当前迭代次数, t max ⁡ t_{max } tmax​ 为 最大迭代次数, r 3 r_{3} r3​ 随着迭代次数的增加而减小, 逐渐缩小余弦的搜索范围, 最终收敛到一个最优解 [ 7 ] { }^{[7]} [7]. 由于 (5)式的模型, 在算法的后期容易使种群快速聚集到一起, 从而使得向其他区域搜索的机会大大减少, 使结果 陷人局部最优, 因此, 这里正弦 sin ⁡ ( X i j ( t ) ) sin left(X_{i}^{j}(t)right) sin(Xij​(t)) 在 [ − 1 , 1 ] [-1,1] [−1,1] 范围内则起到一个干扰和辅助的作用, 增大算法空间搜 索范围, 从而更有利于搜索全局最优解. 正弦和余弦的共同作用, 相辅相成, 使人工鲸鱼最终收玫到一个全局最优解, 防止算法早熟, 提高收敛精度.

3.实验结果

4.参考文献

[1]吴泽忠,宋菲.基于改进螺旋更新位置模型的鲸鱼优化算法[J].系统工程理论与实践,2019,39(11):2928-2944.

5.Matlab代码 6.Python代码
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1029304.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号