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

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


摘要: 针对鲸鱼算法在迭代后期种群多样性减少问题,本文提出一种基于阈值控制的改进鲸鱼优化算法(简记为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}, \cdots\right. 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}-1\right) \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=(RNUMi1)×N(ubj1 bj)+rand(0,Nubj1 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}, \cdots\right. 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+lbXij,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),XijMjrand(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(ublb),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(f\left(X_{i}\right), f\left(\bar{X}_{2}\right)\right)\right), \\ f\left(X_{i}(t)\right)-f\left(X_{i}(t-s)\right) \neq 0 \\ \bar{X}_{i}, \quad f\left(X_{i}(t)\right)-f\left(X_{i}(t-s)\right)=0 \end{array}\right. \tag{13} Xi+1= f1(min(f(Xi),f(Xˉ2))),f(Xi(t))f(Xi(ts))=0Xˉi,f(Xi(t))f(Xi(ts))=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)) f1(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 ) ) f\left(X_{i}(t)\right)-f\left(X_{i}(t-s)\right) f(Xi(t))f(Xi(ts)) ≠ 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), \\ f\left(X^{*}(t)\right)-f\left(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) \\ f\left(X^{*}(t)\right)-f\left(X^{*}(t-s)\right)=0 \end{array}\right. \tag{14} Xij(t)= D˙eblcos(2πl)+X(t),f(X(t))f(X(ts))=0D˙eblcos(2πl)+Xij(t)+sin(Xij(t))f(X(t))f(X(ts))=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 \leq t_{\max } \end{cases}\tag{15} a= (T1t1)2+1,21(tmaxT1tT1)2+0.5,1tTT<ttmax(15)

T = f l o o r ( t max ⁡ / 50 ) (16) T=f l o o r\left(t_{\max } / 50\right) \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, & f\left(X^{*}(t)\right)-f\left(X^{*}(t-p)\right) \neq 0 \\ 0, & f\left(X^{*}(t)\right)-f\left(X^{*}(t-p)\right)=0\end{cases} \tag{17} P={ 1,0,f(X(t))f(X(tp))=0f(X(t))f(X(tp))=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代码

猜你喜欢

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