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

基于阈值控制的一种改进鲸鱼算法-附代码

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

基于阈值控制的一种改进鲸鱼算法-附代码

基于阈值控制的一种改进鲸鱼算法

文章目录
  • 基于阈值控制的一种改进鲸鱼算法
    • 1.鲸鱼优化算法
    • 2. 改进鲸鱼优化算法
      • 2.1 基于均匀分布空间与伪反向学习策略的种群初始化
      • 2.2 基于正态变异的择优选择
      • 2.3 基于正弦函数的螺旋更新位置
      • 2.4基于正弦函数的螺旋更新位置
      • 2.5 引入阈值判断函数是否达到局部最优解
    • 3.实验结果
    • 4.参考文献
    • 5.Matlab代码
    • 6.Python代码

摘要: 针对鲸鱼算法在迭代后期种群多样性减少问题,本文提出一种基于阈值控制的改进鲸鱼优化算法(简记为TIWOA),将均匀分布空间与伪反向学习策略相结合,对原始种群位置进行初始化,为全局搜索奠定基础;改进了基于正态变异算子的选择种群方案,增加了局部搜索速度;设计了非线性收敛因子,配合改进的基于正弦函数的螺旋位置更新,使算法在迭代后期有更好的全局搜索能力。

1.鲸鱼优化算法

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

2. 改进鲸鱼优化算法 2.1 基于均匀分布空间与伪反向学习策略的种群初始化

对于启发式智能优化算法来说, 初始迭代点的好坏往 往影响着收敛的速度与精度 า า า ר 。原始 WOA算法在初始 化种群个体时使用了随机方法, 使用这种随机方法求解一 个多峰函数时, 若生成的初始种群相对集中在某个区域或 者分散在离最优点较远的峰, 则通过算法进行计算, 很可 能得到局部最优解。因此, 在初始点的选择上, 应尽可能 分布在不同维数的各个位置, 最大程度地提取求解函数中 的信息, 保障初始点的多样性。基于以上考虑, 结合对立 学习策略, 提出了一种均匀分布空间的种群个体随机方 法, 尽可能地将初始点均匀分布在可行域的空间里。具体 方法如下:
令求解函数可行域中, 每个维数的上确界集合为 ub = [ u b 1 , u b 2 , ⋯   , u b d ] =left[u b_{1}, u b_{2}, cdots, u b_{d}right] =[ub1​,ub2​,⋯,ubd​], 下确界集合为 l b = [ l b 1 , l b 2 , ⋯   mathrm{lb}=left[mathrm{lb}_{1}, mathrm{lb}_{2}, cdotsright. lb=[lb1​,lb2​,⋯, 1   b d ] left.1 mathrm{~b}_{d}right] 1 bd​], 则根据均匀分布空间初始化种群的方法, 第 i i i 只鯨 鱼的第 j j j 维的位置初始化公式如下所示:
X i ′ = ( R N U M i − 1 ) × ( u b j − 1   b j ) N + rand ⁡ ( 0 , u b j − 1   b j N ) (8) X_{i}^{prime}=left(mathrm{RNUM}_{i}-1right) times frac{left(mathrm{ub}_{j}-1 mathrm{~b}_{j}right)}{N}+operatorname{rand}left(0, frac{mathrm{ub}_{j}-1 mathrm{~b}_{j}}{N}right) tag{8} Xi′​=(RNUMi​−1)×N(ubj​−1 bj​)​+rand(0,Nubj​−1 bj​​)(8)
R N U M = r a n d p e r m ( N U M ) (9) RNUM =randperm(NUM) tag{9} RNUM=randperm(NUM)(9)

其中, rand ⁡ ( a , b ) operatorname{rand}(a, b) rand(a,b) 表示生成 a a a 到 b b b 之间的随机数, N U M = mathrm{NUM}= NUM= [ N U M 1 , N U M 2 , ⋯   , N U M N ] left[mathrm{NUM}_{1}, mathrm{NUM}_{2}, cdots, mathrm{NUM}_{N}right] [NUM1​,NUM2​,⋯,NUMN​] 表示从 1 到种群个体总数 N N N 的整数组成的数组, 其中 N U M i = i mathrm{NUM}_{i}=i NUMi​=i, randpcrm(NUM) 表 示将数组 NUM 中元萦的顺序随机打乱, 进行重新排列, 重新排列后的数组记为 R N U M = [ R N U M 1 , R N U M N 2 , ⋯   mathrm{RNUM}=left[mathrm{RNUM}_{1}, mathrm{RNUM} mathrm{N}_{2}, cdotsright. RNUM=[RNUM1​,RNUMN2​,⋯, R N U M N ] left.mathrm{RNUM}_{N}right] RNUMN​], 数组 RNUM 依然是由 1 到 N N N 的整数组成。 利用这样的方式, 能够将每个维数的可行域等分成 N N N 个 小区间, 每只鲸鱼个体在随机不重复的在一个小区间上随 机取点, 这样使得初始点在每个维数上的取点更加均匀, 很大程度上减少算法得到局部最优解的概率。
对立学习策略 (opposition-based learning, OBL ) − 177 { }^{-177} −177 是 近年来智能算法领域的一种新技术, 在 PSO 算法等智能 算法中成功应用后, 龙文等 已将该方法用于 W O ∧ W O wedge WO∧ 算 法, 使得初始点的质量有了明显的提高, 但该方案在作用 域对称时, 对立学习的效果会有所淢弱。因此为了提高对 立学习的能力, 黄元春等在改进标准对立学习策略后, 提 出了伪反向学习策略的种群初始化方案 − 187 { }^{-187} −187, 具体步叕如 T:
在利用均匀分布空间的方法随机得到了第 i i i 只鲸鱼 在可行域内的位置 X i = ( X i 1 , X i 2 , ⋯   , X i d ) , i = 1 , 2 , ⋯ X_{i}=left(X_{i}^{1}, X_{i}^{2}, cdots, X_{i}^{d}right), i=1,2, cdots Xi​=(Xi1​,Xi2​,⋯,Xid​),i=1,2,⋯, N N N, 其中 d d d 为维数, 则第 i i i 只鲸鱼伪反向个体 X ˉ i = ( X ˉ i ⊤ bar{X}_{i}=left(bar{X}_{i}^{top}right. Xˉi​=(Xˉi⊤​, X ˉ i 2 , ⋯   , X ˉ i d bar{X}_{i}^{2}, cdots, bar{X}_{i}^{d} Xˉi2​,⋯,Xˉid​ ) 的计算公式如下:
X ~ i j = u b + l b − X i j , j = 1 , 2 , ⋯   , d (10) tilde{X}_{i}^{j}=u b+l b-X_{i}^{j}, quad j=1,2, cdots, d tag{10} X~ij​=ub+lb−Xij​,j=1,2,⋯,d(10)

X ˉ i j = { rand ⁡ ( M j , X ~ i j ) , X i j ≤ M j rand ⁡ ( X ~ i j , M j ) , X i j > M j (11) begin{gathered} bar{X}_{i}^{j}=left{begin{array}{l} operatorname{rand}left(M_{j}, widetilde{X}_{i}^{j}right), X_{i}^{j} leq M_{j} \ operatorname{rand}left(tilde{X}_{i}^{j}, M_{j}right), X_{i}^{j}>M_{j} end{array}right. end{gathered}tag{11} Xˉij​=⎩ ⎨ ⎧​rand(Mj​,X ij​),Xij​≤Mj​rand(X~ij​,Mj​),Xij​>Mj​​​(11)
其中, M j = 0.5 ( u b − l b ) , rand ⁡ ( X ~ i j , M j ) M_{j}=0.5(mathrm{ub}-mathrm{lb}), operatorname{rand}left(tilde{X}_{i}^{j}, M_{j}right) Mj​=0.5(ub−lb),rand(X~ij​,Mj​) 表示 ( X ~ i j , M j ) left(widetilde{X}_{i}^{j}, M_{j}right) (X ij​,Mj​) 内 的随机数。由均匀分布空间与伪反向学习策略初始化种群算法步聚如下:

2.2 基于正态变异的择优选择

正态变异算子 作为一种常见的智能算法干扰方 式, 在迭代前期会加快捜寻最优解的速度, 在迭代后期, 种 群的个体不断向最优个体集中, 导致种群多样性的减少, 利用正态变异算子可以丰富种群的多样性。通过该变异 方案与搜索包围机制, 螺旋更新位置结合, 可以在提高局 部搜索能力的同时,提高全局搜索范围,极大地提高搜寻 到最优解的概率和精度。
在之前的改进中, 钟明辉 等 将正态变异算子应用 于每次迭代后的最优个体, 本算法中的正态变异算子将推 广到对每个个体, 并且将变异后的个体与原个体的适应度 进行比较, 并且择优选择适应度小的个体代替当前个体进 人下一次迭代。再进过分析, 择优选择的方法会减弱全局 捜索能力, 故在全局搜寻阶段, 直接选择变异后的个体作 为当前个体, 不进行择优选择, 故第 i i i 只鲸鱼的第 j j j 维的 正态变异计算公式如下:
X ˉ i j = X i j + N ( 0 , 1 ) ⋅ X i j (12) bar{X}_{i}^{j}=X_{i}^{j}+N(0,1) cdot X_{i}^{j} tag{12} Xˉij​=Xij​+N(0,1)⋅Xij​(12)
选择变异前后的最优个体作为进人下一次迭代的个体, 其 计算公式如下:
X i + 1 = { f − 1 ( min ⁡ ( f ( X i ) , f ( X ˉ 2 ) ) ) , f ( X i ( t ) ) − f ( X i ( t − s ) ) ≠ 0 X ˉ i , f ( X i ( t ) ) − f ( X i ( t − s ) ) = 0 (13) X_{i+1}=left{begin{array}{c} f^{-1}left(min left(fleft(X_{i}right), fleft(bar{X}_{2}right)right)right), \ fleft(X_{i}(t)right)-fleft(X_{i}(t-s)right) neq 0 \ bar{X}_{i}, quad fleft(X_{i}(t)right)-fleft(X_{i}(t-s)right)=0 end{array}right. tag{13} Xi+1​=⎩ ⎨ ⎧​f−1(min(f(Xi​),f(Xˉ2​))),f(Xi​(t))−f(Xi​(t−s))=0Xˉi​,f(Xi​(t))−f(Xi​(t−s))=0​(13)
其中, N ( 0 , 1 ) N(0,1) N(0,1) 表示均值为 0 , 方差为 1 的标准正态分布, f ( X ) f(X) f(X) 表示个体 X X X 的适应度, f − 1 ( min ⁡ ( X , Y ) ) f^{-1}(min (X, Y)) f−1(min(X,Y)) 表示选择 适应度最小的 X X X 或 Y , s Y, s Y,s 表示阈值, 阈值的作用是为了检 验算法是否能够继续提高局部捜索的精度。 X i ( t ) X_{i}(t) Xi​(t) 䘚示当 前个体第 t mathrm{t} t 次迭代后的位置, 若 f ( X i ( t ) ) − f ( X i ( t − s ) ) fleft(X_{i}(t)right)-fleft(X_{i}(t-s)right) f(Xi​(t))−f(Xi​(t−s)) ≠ 0 neq 0 =0, 表示算法依然在有效的搜寻最优点以及提高局部搜 索的精度; 否则,说明算法在该局部的精度可能达到当前 算法方案的极限, 需要提高局部搜索和全局搜索能力。阈 值的取值林当重要, 若阈值太大, 则订算达到算法的极限 精度时,需要经过 s s s 次迭代后, 才能检测到计算达到该精 度。

2.3 基于正弦函数的螺旋更新位置

在 W O ∧ W O wedge WO∧ 算法中,螺旋更新位置是一种不断靠近当前 最优个体, 并且在最优个体附近进行捜索的方法。若陷人 局部最优解, 仅仅通过正态变异算子进行干扰很难跳出局 部最优解, 相对于 W ∧ ∧ mathrm{W} wedge wedge W∧∧ 算法的收缩包围机制, 根据 ∣ A ∣ |A| ∣A∣ 值可以向最优点进行局部搜索, 或者向随机点进行全局搜 索。根据上述思路, 吴泽忠等提出了一种基于正弦函数螺 旋更新位置的方案 − 137 { }^{-137} −137, 这种方法使得最优点可以向当前 迭代点进行包围搜索, 加强其全局搜索能力, 并且正弦函 数也能提高局部搜索的精度, 但是减弱了前期的收敛速 度。结合以上方案, 在保证收敛速度的前提下, 希望能在 局部搜索时对精度有更好的探索, 则改进的基于正弦函数 的螺旋更新位置计算公式为:
X i j ( t ) = { D ˙ ′ e b l cos ⁡ ( 2 π l ) + X ∗ ( t ) , f ( X ∗ ( t ) ) − f ( X ∗ ( t − s ) ) ≠ 0 D ˙ ′ e b l cos ⁡ ( 2 π l ) + X i j ( t ) + sin ⁡ ( X i j ( t ) ) f ( X ∗ ( t ) ) − f ( X ∗ ( t − s ) ) = 0 (14) X_{i}^{j}(t)=left{begin{array}{r} dot{D}^{prime} e^{b l} cos (2 pi l)+X^{*}(t), \ fleft(X^{*}(t)right)-fleft(X^{*}(t-s)right) neq 0 \ dot{D}^{prime} e^{b l} cos (2 pi l)+X_{i}^{j}(t)+sin left(X_{i}^{j}(t)right) \ fleft(X^{*}(t)right)-fleft(X^{*}(t-s)right)=0 end{array}right. tag{14} Xij​(t)=⎩ ⎨ ⎧​D˙′eblcos(2πl)+X∗(t),f(X∗(t))−f(X∗(t−s))=0D˙′eblcos(2πl)+Xij​(t)+sin(Xij​(t))f(X∗(t))−f(X∗(t−s))=0​(14)
其中, D ˙ ′ = ∣ X i ( t ) − X ∗ ( t ) ∣ dot{D}^{prime}=left|X_{i}(t)-X^{*}(t)right| D˙′=∣Xi​(t)−X∗(t)∣ 表示第 i i i 条鲸鱼到当前最优 个体的直线距离。 s s s 表示阈值, 其数值与公式(13)相同。 当算法依然在有效地提高局部搜索的精度时, 利用基本 woa算法的螺旋更新位置进行搜索; 当在该局部的精度 可能达到当前算法方案的极限时, 利用改进的基于正弦函 数的螺旋更新位置进行搜索。

2.4基于正弦函数的螺旋更新位置

本文提出的 T I W O Λ mathrm{TIWO Lambda} TIWOΛ 算法, 通过正态变异算子, 基于 正弦函数的螺旋更新位置两种方案, 提高了后期的局部搜 索能力与全㟃搜索能力。通过实验发现由于前期迭代收 敛较快, 导致了随机搜索方法 (式 (7))更难得到适应度更 优的个体, 所以在前期迭代应使收敛因子 a a a 大于 1 , 并且 快速减少到 1 以下, 故在 TIWOA算法中, 设计了一种收 敛因子 a a a 非线性从 2 减少到 0.5 , a 0.5, a 0.5,a 减小的速度先快后 慢, 这样的设计使得前期能进行全局搜索的同时, 加快局 部捜索的速度,得到改进的非线性收敛因子公式为:
a = { ( t − 1 T − 1 ) 2 + 1 , 1 ≤ t ≤ T 1 2 ( t − T − 1 t max ⁡ − T − 1 ) 2 + 0.5 , T < t ≤ t max ⁡ (15) a= begin{cases}left(frac{t-1}{T-1}right)^{2}+1, & 1 leq t leq T \ frac{1}{2}left(frac{t-T-1}{t_{max }-T-1}right)^{2}+0.5, & T

T = f l o o r ( t max ⁡ / 50 ) (16) T=f l o o rleft(t_{max } / 50right) tag{16} T=floor(tmax​/50)(16)
其中, floor ( x ) (x) (x) 表示对 x x x 向下取整, 即不大于 x x x 的整数。 这里的 T T T 值为收敛因子 a a a 的分界线,当迭代次数小于 T T T 时, 收敛因子 a > 1 a>1 a>1; 当迭代次数大于 T T T 时, 收敛因子 a < a< a< 1.

2.5 引入阈值判断函数是否达到局部最优解

TIWOA 算法利用阈值 p p p 来判断算法是否达到了局部最优 解, 判断的方式如下:
P = { 1 , f ( X ∗ ( t ) ) − f ( X ∗ ( t − p ) ) ≠ 0 0 , f ( X ∗ ( t ) ) − f ( X ∗ ( t − p ) ) = 0 (17) P= begin{cases}1, & fleft(X^{*}(t)right)-fleft(X^{*}(t-p)right) neq 0 \ 0, & fleft(X^{*}(t)right)-fleft(X^{*}(t-p)right)=0end{cases} tag{17} P={1,0,​f(X∗(t))−f(X∗(t−p))=0f(X∗(t))−f(X∗(t−p))=0​(17)
其中, P = 1 P=1 P=1 时,算法根据式 (13)、式 (11)的判断条件来执 行对应的等式, 若 P = 0 P=0 P=0 时, 式 (13)、式 (11) 的判断条件强 制失效, 并强行执行情况(2)的方案。这样的改进能够更 好地调整算法方案, 增加迭代速度与求解精度。

3.实验结果

4.参考文献

[1]黄飞,吴泽忠.基于阈值控制的一种改进鲸鱼算法[J].系统工程,2020,38(02):133-148.

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

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

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