基于高斯映射和小孔成像学习策略的鲸鱼优化算法 -附代码

基于高斯映射和小孔成像学习策略的鲸鱼优化算法


摘要: 针对鲸鱼优化算法( WOA) 容易陷入局部最优解、收敛速度慢等缺陷,提出一种基于小孔成像反向学习策略的鲸鱼优化算法。首先采用高斯映射生成的混沌序列取代原始算法中随机产生的初始种群,增加种群的多样性; 其次,提出了一种小孔成像反向学习策略,并结合最优最差反向学习思想,增加了寻优位置的多样性,提高了算法跳出局部最优的能力; 最后,在算法中加入了一个非线性收敛因子和一个对数形式的概率阈值,在保留鲸鱼算法优点的前提下,协调了算法的全局搜索和局部开发能力。

1.鲸鱼优化算法

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

2. 改进鲸鱼优化算法

2.1 Gauss 映射

混沌是在非线性动力系统中发现的一种确定性的、随机 的、非周期的、非收敛的方法。在数学上, 混沌系统可以看做是 随机的来源 [ 13 ] { }^{[13]} [13], 可以利用混沌的特点来提高算法的性能, 其主 要思想是利用混沌运动的随机性和遍历性等特点, 将变量映射 到混沌变量空间的取值区间内, 最后将得到的解线性地转换到 优化变量空间。目前优化领域中存在多种不同的混沌映射 ,主要有 logistic 映射、正弦映射和 Gauss 映射等。本文 采用高斯映射来产生分布更加均匀的种群,使算法拥有更快的 收玫速度, Gauss 映射定义如下:
x n + 1 = { 0 x n = 0 1 x n   m o d   ( 1 ) = 1 x n − [ 1 x n ] x n ≠ 0 (7) x_{n+1}= \begin{cases}0 & x_{n}=0 \\ \frac{1}{x_{n} \bmod (1)}=\frac{1}{x_{n}}-\left[\frac{1}{x_{n}}\right] & x_{n} \neq 0\end{cases}\tag{7} xn+1={ 0xnmod(1)1=xn1[xn1]xn=0xn=0(7)
因为鲸鱼算法的参数少、模型简单, 而且容易实现, 而 Gauss 映射遍历性和随机性的特点使得算法拥有更加广泛的 搜索范围。用 Gauss 映射产生的初始种群代替原算法中随机 产生的种群, 提高了种群的多样性, 使得改进的算法更容易摆 脱局部极值, 从而提高了算法的寻优性能。

2. 2 混合反向学习策略

为解决算法容易陷入局部最优的问题,有学者提出了反向学习的概念,同时大量研究表明大多数精英粒子的反向解比普通解的反向解更靠近最优解,能够有效跳出局部最优解,本文通过结合透镜成像反向学习策略[17]和最优最差反向学习策略,提出了一种混合反向学习的方法,对WOA中每次更新后的鲸鱼领导者位置进行反向学习操作,一定程度上给算法提供更多的选择条件,进而增加算法避免早熟的概率。

2.2.1 透镜成像反向学习策略

当前解决局部最优问题主要有两种方案,一是在当前最优位置上向其它区域进行寻优,二是放弃当前最优位置,转而向新的区域进行搜索。本文选择第一种手段,引入透镜成像原理来帮助算法跳出局部最优区域.

假设某一空间中, 全局最优位置 X best  X_{\text {best }} Xbest  是将一个高度为 h h h 的个体 P P P 投影到 x x x 轴上得到的, 坐标轴的上下限为 a j a_{j} aj b j b_{j} bj 表示当前解第 j j j 维的上下限, 在原点 o o o 上放一个焦距为 f f f 的凸透镜, 通过凸透镜成像可以得到一个高度为 h ∗ h^{*} h P ∗ P^{*} P, 此时在 x x x 轴得到通过成像产生的最优位置 X best  ∗ X_{\text {best }}^{*} Xbest  (反向点)。 所以由透镜成像原理可以得出
( a j + b j ) / 2 − X best  ( t ) X be:t  ∗ ( t ) − ( a j + b j ) / 2 = h h ∗ (8) \frac{\left(a_{j}+b_{j}\right) / 2-X_{\text {best }}(t)}{X_{\text {be:t }}^{*}(t)-\left(a_{j}+b_{j}\right) / 2}=\frac{h}{h^{*}} \tag{8} Xbe:t (t)(aj+bj)/2(aj+bj)/2Xbest (t)=hh(8)
h / h ∗ = n h / h^{*}=n h/h=n, 通过变换得到 X ∗ X^{*} X, 表达式如下
X best  ∗ ( t ) = ( a j + b j ) 2 + ( a j + b j ) 2 n − X best  ( t ) n (9) X_{\text {best }}^{*}(t)=\frac{\left(a_{j}+b_{j}\right)}{2}+\frac{\left(a_{j}+b_{j}\right)}{2 n}-\frac{X_{\text {best }}(t)}{n} \tag{9} Xbest (t)=2(aj+bj)+2n(aj+bj)nXbest (t)(9)
由式(12)可以看出, 当 n = 1 n=1 n=1 时的透镜成像反向学习 策略就是一般意义上的反向学习策略, 通过调节 n n n 值来寻 找位置更好的个体, 本文设置 n n n 1.2 × 1 0 4 1.2 \times 10^{4} 1.2×104 。由于精英个 体比普通个体拥有更加广阔的搜索区域, 所以当 WOA 陷 人局部最优解时, 对其采用上述透镜成像反向学习机制, 提高算法摆脱局部极值的能力。

2.2.2 最优最差反向学习策略

为增加种群中鲸鱼领导者位置的多样性, 提高算法的 搜索能力, 对全局最差位置的鲸鱼采用随机反向学习的策 略, 公式如下
X worst  ∗ ( t ) = a j + rand ⁡ ⋅ ( b j − X worst  ( t ) ) (13) X_{\text {worst }}^{*}(t)=a_{j}+\operatorname{rand} \cdot\left(b_{j}-X_{\text {worst }}(t)\right) \tag{13} Xworst (t)=aj+rand(bjXworst (t))(13)
式中: X worst  X_{\text {worst }} Xworst  表示当前最差位置向量, rand 是服从 [ 0 , 1 ] [0,1] [0,1] 分布的随机数。
算法每迭代一次, 都通过式(12)和式(13)进行位 置笑选, 通过对比反向学习前后的适应度值大小, 对最优 位置和适应度值进行更新。与精英反向学习相比, 本文选 择的是当前种群中位置最优和最差的两个个体来进行处理, 而精英反向学习中常采用种群中前几个个体进行位置缩放, 但几个差异不大的个体对增加算法跳出局部最优区域的可 能性影响不会很大, 反而会增加算法计算的复杂性, 与最 优最差反向学习策略中固定搜索边界相比, 本文采用动态变化的边界使算法具备更有效的搜索范围,一定程度上能够改善算法寻优精度。

2.3 非线性收敛因子

在原始WOA 中, 参数 A ∈ [ − a , a ] A \in[-a, a] A[a,a] 用来平衡算法的全局 搜索能力和局部开发能力,而 a a a 随着迭代次数的增加呈线性递 减, 这种线性递减的因子不能准确反映实际的迭代过程。为了 平衡算法的全局和局部搜索能力, 本文引进了一个非线性收玫 因子, 公式为
a = 2 − 2 e 2 − 1 × ( e 2 t  max  i t e r − 1 ) (12) a=2-\frac{2}{\mathrm{e}^{2}-1} \times\left(\mathrm{e}^{\frac{2 t}{\text { max } i t e r}}-1\right)\tag{12} a=2e212×(e max iter2t1)(12)
其中: t t t 为迭代次数; max_iter 为最大迭代次数, 随着迭代次数 的增加; a a a 从 2 非线性递减至 0 。在迭代初期 a a a 减小比较缓慢, 此时 a > 1 a>1 a>1 所占迭代次数比例更大, 从而优化了算法的全局搜索能力。

2.4 自适应阈值

为了同步包围和螺旋行进过程, 原始算法设置概率阈值均 为 0.5 0.5 0.5, 通过随机生成的 p p p 值与概率阈值作比较来选择狩猎策 略。随着迭代次数增加, 这种等概率的捕食方式会导致算法陷 入局部最优等问题, 本文提出了一个对数形式的自适应概率阈 值 p ′ p^{\prime} p 来平衡全局搜索和局部开发的能力。表达式如下:
p ′ = 1 − log ⁡ 2 ( 1 + t m a x _ i t e r ) (13) p^{\prime}=1-\log _{2}\left(1+\frac{t}{ { max\_iter }}\right) \tag{13} p=1log2(1+max_itert)(13)
其中: max_iter 为最大迭代次数; t t t 为当前迭代次数。在迭代初 期, 自适应概率阈值较大, 此时 p ⩽ p ′ p \leqslant p^{\prime} pp, 算法以大概率且较快的 速度完成全局搜索; 在迭代后期, 随着概率阈值非线性减小至 0 , 由于 p > p ′ p>p^{\prime} p>p, 此时算法将大概率以螺旋行进更新位置, 从而提 高算法的局部搜索能力, IWO 算法不断更新概率阈值, 使鲸鱼不 断向最优解靠近, 从而提升算法的寻优精度。算法公式如下:
X ( t + 1 ) = X ( t ) − A ⋅ D    ∣ A ∣ < 1 , p < p ′ (14) X(t+1)=X(t)-A \cdot D \,\,|A|<1, p<p^{\prime}\tag{14} X(t+1)=X(t)ADA<1,p<p(14)

X ( t + 1 ) = X rand  − A ⋅ D ∗    ∣ A ∣ ⩾ 1 , p < p ′ (15) X(t+1)=X_{\text {rand }}-A \cdot D^{*} \,\, |A| \geqslant 1, p<p^{\prime} \tag{15} X(t+1)=Xrand ADA1,p<p(15)

X ( t + 1 ) = D ′ × e b l × cos ⁡ ( 2 π l ) + X ∗ ( t )    p ⩾ p ′ (16) X(t+1)=D^{\prime} \times \mathrm{e}^{b l} \times \cos (2 \pi l)+X^{*}(t) \,\, p \geqslant p^{\prime}\tag{16} X(t+1)=D×ebl×cos(2πl)+X(t)pp(16)

流程图如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J2yCaXSp-1657677006277)(D:\Self\文献复现\48.基于高斯映射和小孔成像学习策略的鲸鱼优化算法(IWOA)]\流程图.png)

3.实验结果

请添加图片描述

4.参考文献

[1]徐航,张达敏,王依柔,宋婷婷,王栎桥.基于高斯映射和小孔成像学习策略的鲸鱼优化算法[J].计算机应用研究,2020,37(11):3271-3275.

5.Matlab代码

6.Python代码

猜你喜欢

转载自blog.csdn.net/u011835903/article/details/125757468
今日推荐