收敛因子非线性变化的鲸鱼优化算法-附代码

收敛因子非线性变化的鲸鱼优化算法


摘要:针对基本鲸鱼优化算法在处理复杂全局优化问题时存在解精度低和收敛速度慢等缺点,提出一种收敛因子随进化迭代次数非线性变化的改进鲸鱼优化算法.该算法利用混沌方法替代随机方法初始化种群,使群体具有较好的多样性.受粒子群算法惯性权重启发,设计出一种随进化迭代次数增加而非线性变化的收敛因子更新公式,以平衡算法的全局搜索和局部搜索能力.对当前最优鲸鱼个体执行混沌扰动策略以扩大其搜索范围。

1.鲸鱼优化算法

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

2. 改进鲸鱼优化算法

2.1 基于混沌序列的种群初始化

本文采用混沌序列来生成初始种群.产生混沌序列的混沌模型有很多,本文选取Skew Tent映射模型产生混沌序列用来进行种群初始化.Skew Tent映射是分段线性的一维映射,其数学表达式为:
{ x k + 1 = x k / φ , 0 < x k < φ x k + 1 = ( 1 − x k ) / ( 1 − φ ) , φ < x k < 1 (7) \begin{cases}x_{k+1}=x_{k} / \varphi, & 0<x_{k}<\varphi \\ x_{k+1}=\left(1-x_{k}\right) /(1-\varphi), & \varphi<x_{k}<1\end{cases} \tag{7} { xk+1=xk/φ,xk+1=(1xk)/(1φ),0<xk<φφ<xk<1(7)
其中, 当 φ ∈ ( 0 , 1 ) \varphi \in(0,1) φ(0,1) x ∈ [ 0 , 1 ] x \in[0,1] x[0,1] 时, 系统 (7) 处于混 沌状态. 与 Logistic 映射相比, Skew Tent 映射具有 均匀的概率密度、理想的相关特性和更快的迭代速 度.

2.2 收敛因子非线性变化策略

WOA算法在进化搜索过程中却是非线 性变化的, 收敛因子 a a a 线性递减策略不能完全体现 出算法实际的优化搜索过程. 受 PSO 算法惯性权重 设置的启发, 本文提出一种收敛因子 a a a 随进化迭代 次数增加非线性变化策略:
a ( t ) = ( a initial  − a final  ) ⋅ ( t max ⁡ − t t max ⁡ ) m (8) a(t)=\left(a_{\text {initial }}-a_{\text {final }}\right) \cdot\left(\frac{t_{\max }-t}{t_{\max }}\right)^{m} \tag{8} a(t)=(ainitial afinal )(tmaxtmaxt)m(8)
其中: a initial  a_{\text {initial }} ainitial  a final  a_{\text {final }} afinal  分别为收敛因子 a a a 的初始值和终 止值; t t t 为当前迭代次数; t max ⁡ t_{\max } tmax 为最大迭代次数, m ∈ m \in m ( 0 , 1 ) (0,1) (0,1) 为非线性调节系数. 由式 (8) 可知, 收敛因子 a a a 的值随进化迭代次数 t t t 增加非线性动态变化, 从而 平衡 WOA算法的全局搜索和局部搜索能力.

2.3混沌扰动策略

与其他群体智能优化算法相似, 基本 WOA 算 法在迭代后期也存在易陷入局部最优的缺陷. 为了 克服这个缺点, 本文利用混沌序列的遍历性、规律性 和随机性对当前最优个体执行混沌扰动, 可使 W O A \mathrm{WOA} WOA 算法跳出局部最优, 从而提高算法的全局搜 索能力和求解精度.
混沌扰动策略如下:
y k ′ = ( 1 − τ ) y ∗ + τ y k (9) y_{k}^{\prime}=(1-\tau) y^{*}+\tau y_{k} \tag{9} yk=(1τ)y+τyk(9)
其中: y k ′ y_{k}^{\prime} yk 为添加扰动后形成的混沌变量; y ∗ y^{*} y 为当前 最优个体映射到 [ 0 , 1 ] [0,1] [0,1] 后形成的混沌变量; y k y_{k} yk 为迭 代 k k k 次后的混沌变量; τ ∈ [ 0 , 1 ] \tau \in[0,1] τ[0,1] 为扰动强度,即
τ = 1 − ( ( k − 1 ) / k ) N (10) \tau=1-((k-1) / k)^{N} \tag{10} τ=1((k1)/k)N(10)
k k k 为迭代次数, N N N 为种群规模.

综上所述, 本文所提出的改进 WOA(IWOA)算 法步骤如算法 2 所示.
算法 2 收敛因子非线性变化的 WOA 算法 设置种群规模 N N N, 利用算法 1 产生初始化鲸鱼种群 { X i , i = 1 , 2 , ⋯   , N } \left\{X_{i}, i=1,2, \cdots, N\right\} { Xi,i=1,2,,N};
计算群体中每个个体的适应度值 { f ( X i ) , i = 1 , 2 \left\{f\left(X_{i}\right), i=1,2\right. { f(Xi),i=1,2, ⋯   , N } \cdots, N\} ,N},并记录当前最优个体及位置;
while ( t < t max ⁡ ) \left(t<t_{\max }\right) (t<tmax) do
for i = 1 i=1 i=1 to N N N do
根据式 (8) 计算收敛因子 a a a 的值;
更新其他参数 A 、 C 、 l A 、 C 、 l ACl p p p 的值;
if ( p < 0.5 ) (p<0.5) (p<0.5) do
if ( ∣ A ∣ < 1 ) (|\boldsymbol{A}|<1) (A<1) do
根据式 (1)更新每个个体的位置;
else if ( ∣ A ∣ ⩾ 1 ) (|\boldsymbol{A}| \geqslant 1) (A1) do
在群体中随机选择一个个体 ( X rand  ) \left(X_{\text {rand }}\right) (Xrand ); 根据式 (6)更新每个个体的位置;
end
else if ( p ⩾ 0.5 ) (p \geqslant 0.5) (p0.5) do
根据式 (5)更新每个个体的位置;
end
end
对当前群体中最优个体执行混沌扰动策略;
计算群体中个体的适应度值 { f ( X i ) , i = 1 , 2 , ⋯   \left\{f\left(X_{i}\right), i=1,2, \cdots\right. { f(Xi),i=1,2,,
N } \} };
更新当前最优个体及位置;
t = t + 1 t=t+1 t=t+1;
end

3.实验结果

请添加图片描述

4.参考文献

[1]龙文,伍铁斌,唐斌.收敛因子非线性变化的鲸鱼优化算法[J].兰州理工大学学报,2017,43(06):102-107.

5.Matlab代码

6.Python代码

猜你喜欢

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