求解大规模优化问题的改进鲸鱼优化算法

2021/12/26 17:10:13

本文主要是介绍求解大规模优化问题的改进鲸鱼优化算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

文章目录

  • 一、理论基础
    • 1、鲸鱼优化算法
    • 2、改进鲸鱼优化(IWOA)算法
      • (1)基于对立学习的种群初始化
      • (2)非线性变化收敛因子
      • (3)多样性变异操作
      • (4)IWOA算法步骤
  • 二、数值实验及分析
  • 三、参考文献

一、理论基础

1、鲸鱼优化算法

请参考这里。

2、改进鲸鱼优化(IWOA)算法

(1)基于对立学习的种群初始化

WOA算法在产生初始种群个体时通常采用随机方法,然而,随机方法所产生的初始群体不能保证其多样性,不能有效地提取搜索空间的有用信息,从而在一定程度上会影响算法的搜索效率。
对立学习(opposition-based learning, OBL)策略是近年来智能计算领域出现的一种新技术,目前已在PSO算法、DE算法等群体智能优化算法中得到了成功的应用。因此,本文将对立学习策略嵌入到WOA算法中进行种群初始化。
定义1 对立点(opposite point)。假设在 [ l , u ] [l,u] [l,u]上存在数 x x x,则 x x x的对立点定义为 x ′ = l + u − x x'=l+u-x x′=l+u−x。将对立点的定义扩展到 d d d维空间,设 p = ( x 1 , x 2 , ⋯   , x d ) p=(x_1,x_2,\cdots,x_d) p=(x1​,x2​,⋯,xd​)为 d d d维空间中的一个点,其中 x i ∈ [ l i , u i ] ,   i = 1 , 2 , ⋯   , d x_i\in[l_i,u_i],\,i=1,2,\cdots,d xi​∈[li​,ui​],i=1,2,⋯,d,则其对立点为 p ′ = ( x 1 ′ , x 2 ′ , ⋯   , x d ′ ) p'=(x_1',x_2',\cdots,x_d') p′=(x1′​,x2′​,⋯,xd′​),其中 x i ′ = l i + u i − x i x_i'=l_i+u_i-x_i xi′​=li​+ui​−xi​。
根据上述定义,利用对立学习策略产生初始群体的具体步骤如算法1所示。
在这里插入图片描述

(2)非线性变化收敛因子

在设计收敛因子 a a a时,应考虑在搜索前期以较小的值随迭代次数增大而递增,当增大到一个较大值后,再快速递减到一个较小值,最后,以较慢的速度再递增。鉴于此,本文提出一种随进化迭代次数而非线性变化的收敛因子更新公式: a = ( a i n i t i a l − a f i n a l ) + 1 − t / t max ⁡ 1 − μ ⋅ t / t max ⁡ (1) a=(a_{initial}-a_{final})+\frac{1-t/t_{\max}}{1-\mu\cdot t/t_{\max}}\tag{1} a=(ainitial​−afinal​)+1−μ⋅t/tmax​1−t/tmax​​(1)其中, a i n i t i a l a_{initial} ainitial​和 a f i n a l a_{final} afinal​分别为收敛因子 a a a的初始值和终止值 , μ > 0 \mu>0 μ>0称为非线性调节系数, t t t为当前迭代次数, t max ⁡ t_{\max} tmax​为最大迭代次数。

(3)多样性变异操作

为了减少WOA算法出现早熟收敛现象的概率,本文对当前最优鲸鱼个体执行多样性变异操作,其步骤如下:
假设某个体 X i = ( x i 1 , x i 2 , ⋯   , x i d ) X_i=(x_{i1},x_{i2},\cdots,x_{id}) Xi​=(xi1​,xi2​,⋯,xid​),以概率 1 / d 1/d 1/d随机从个体 X i X_i Xi​中选取一个元素 x k ( k = 1 , 2 , ⋯   , d ) x_k(k=1,2,\cdots,d) xk​(k=1,2,⋯,d),然后在 [ l i , u i ] [l_i,u_i] [li​,ui​]范围内随机产生一个实数替代个体 X i X_i Xi​中的元素 x i k x_{ik} xik​,从而产生一个新的个体 X i ′ = ( x i 1 ′ , x i 2 ′ , ⋯   , x i d ′ ) X_i'=(x_{i1}',x_{i2}',\cdots,x_{id}') Xi′​=(xi1′​,xi2′​,⋯,xid′​)。多样性变异操作为: X i ′ = { l i + λ ⋅ ( u i − l i ) , i = = k X i ,       o t h e r w i s e (2) X_i'=\begin{dcases}l_i+\lambda\cdot(u_i-l_i),\quad i==k\\X_i,\quad\quad\quad\quad\quad\,\,\,\,\, otherwise\end{dcases}\tag{2} Xi′​={li​+λ⋅(ui​−li​),i==kXi​,otherwise​(2)其中, l i l_i li​和 u i u_i ui​分别为变量 x i x_i xi​的上界和下界, λ ∈ [ 0 , 1 ] \lambda\in[0,1] λ∈[0,1]为随机数。

(4)IWOA算法步骤

综上所述,本文提出的IWOA算法步骤如算法2所示。
在这里插入图片描述

二、数值实验及分析

将本文提出的IWOA算法与基本的WOA算法进行比较,设置种群规模为30,最大迭代次数为500,每个算法独立运行30次。以文献[1]中表1所列的F1和F13(200/500/1000维)为例,结果显示如下:
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

函数:F1, 维数:d=200
WOA:最差值: 5.0103e-68, 最优值: 5.9476e-86, 平均值: 1.6893e-69, 标准差: 9.1441e-69, 秩和检验: 3.0199e-11
IWOA:最差值: 3.395e-109, 最优值: 1.9278e-125, 平均值: 1.4162e-110, 标准差: 6.337e-110, 秩和检验: 1
函数:F1, 维数:d=500
WOA:最差值: 4.1537e-67, 最优值: 8.018e-86, 平均值: 1.3862e-68, 标准差: 7.5834e-68, 秩和检验: 3.0199e-11
IWOA:最差值: 7.0128e-111, 最优值: 2.3582e-127, 平均值: 3.9579e-112, 标准差: 1.3709e-111, 秩和检验: 1
函数:F1, 维数:d=1000
WOA:最差值: 2.1951e-66, 最优值: 2.8106e-81, 平均值: 7.3216e-68, 标准差: 4.0076e-67, 秩和检验: 3.0199e-11
IWOA:最差值: 1.6056e-108, 最优值: 3.3474e-125, 平均值: 5.6455e-110, 标准差: 2.9282e-109, 秩和检验: 1
函数:F13, 维数:d=200
WOA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
IWOA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
函数:F13, 维数:d=500
WOA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
IWOA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
函数:F13, 维数:d=1000
WOA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN
IWOA:最差值: 0, 最优值: 0, 平均值: 0, 标准差: 0, 秩和检验: NaN

结果表明,IWOA在求解精度和收敛速度方面明显优于其他对比算法。

三、参考文献

[1] 龙文, 蔡绍洪, 焦建军, 唐明珠, 伍铁斌. 求解大规模优化问题的改进鲸鱼优化算法[J]. 系统工程理论与实践, 2017, 37(11): 2983-2994.



这篇关于求解大规模优化问题的改进鲸鱼优化算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程