一种改进的灰狼优化算法-附代码

一种改进的灰狼优化算法


摘要: 灰狼优化算法是最近提出的一种较有竞争力的优化技术. 然而,它的位置更新方程存在开发能力强而探索能力弱的缺点. 受差分进化和粒子群优化算法的启发,构建一个修改的个体位置更新方程以增强算法的探索能力;受粒子群优化算法的启发,提出一种控制参数 a 随机动态调整策略. 此外,为了提高算法的全局收敛速度,用混沌初始化方法产生初始种群.

1.灰狼优化算法

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

2. 改进灰狼优化算法

2.1 基于混沌的种群初始化方法

混沌具有随机性、遍历性和规律性等特点,目前已广泛应用于 PSO、DE 和 ABC 等群体智能优化算法中以提高算法的搜索效率 . 为了使初始种群个体尽可能地利用解空间的信息,本文采用 Skew Tent 映射产生混沌序列用来进行种群初始化,其数学模型为:
{ x k + 1 = x k / φ , 0 < x k < φ x k + 1 = ( 1 − x k ) / ( 1 − φ ) , φ < x k < 1 (7) \left\{\begin{array}{lll} 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{array}\right. \tag{7} { xk+1=xk/φ,xk+1=(1xk)/(1φ),φ<xk<10<xk<φ(7)
当 φ∈(0,1)且 x∈[0,1]时,系统(7)处于混沌状态.

2.2 修改位置更新方程

为进一步增强 GWO 算法的探索能力和加快收敛速度,受 DE 和 PSO 算法的启发,从群体中随机选取个体与当前个体进行差分搜索,同时将 PSO 算法中对粒子自身运动历史最优解进行记忆保存的思想引入到GWO 算法中,对个体的记忆功能加以改进,使其能够记忆自身进化过程中的最优解. 因此,本文设计出一种修改的位置更新方程替代原位置更新方程(6):
X i d ( t + 1 ) = X i , α d ( t ) + X i , β d ( t ) + X i , δ d ( t ) 3 + b 1 ⋅ r 3 ⋅ ( P i ,  best  d ( t ) − X i d ( t ) ) + b 2 ⋅ r 4 ⋅ ( X j d ( t ) − X i d ( t ) ) (8) \begin{array}{l} X_{i}^{d}(t+1)=\frac{X_{i, \alpha}^{d}(t)+X_{i, \beta}^{d}(t)+X_{i, \delta}^{d}(t)}{3}+b_{1} \cdot r_{3} \cdot\left(P_{i, \text { best }}^{d}(t)-X_{i}^{d}(t)\right)+b_{2} \cdot r_{4} \cdot\left(X_{j}^{d}(t)-X_{i}^{d}(t)\right) \end{array} \tag{8} Xid(t+1)=3Xi,αd(t)+Xi,βd(t)+Xi,δd(t)+b1r3(Pi, best d(t)Xid(t))+b2r4(Xjd(t)Xid(t))(8)
其中, b 1 ∈ [ 0 , 1 ] b_1 ∈[0,1] b101称为个体记忆系数, b 2 ∈ [ 0 , 1 ] b_2 ∈[0,1] b201称为交流系数, r 3 、 r 4 r_3 、r_4 r3r4 为[0,1]间的随机数, P i , b e s t d P_{i,best}^d Pi,bestd表示第 i i i只灰狼个体所经历的最佳位置, X j X_j Xj 为群体中随机选择的个体且j≠i,通过调节系数 b 1 b_1 b1 b 2 b_2 b2 的值,可以协调群体和个体记忆对 GWO 算法搜索的影响.

2.3 控制参数随机调整策略

若距离控制参数 a 设定为服从某种分布的随机数,利用随机变量的特性调整控制参数 a 的值,有利于算法跳出局部最优;若在最优个体附近,随机分布控制参数能产生相对较小的值,这样有利于加快算法的收敛速度. 原因在于随机性使得控制参数既能在迭代初期有机会取得较大或较小的值,又能在算法迭代后期取得较小或较大的值. 基于上述分析,本文提出一种随机分布调整控制参数策略,即
a ( t ) = a initial  − ( a initial  − a final  ) ×  rand  ( ) + σ × randn ⁡ ( ) (9) a(t)=a_{\text {initial }}-\left(a_{\text {initial }}-a_{\text {final }}\right) \times \text { rand }()+\sigma \times \operatorname{randn}() \tag{9} a(t)=ainitial (ainitial afinal )× rand ()+σ×randn()(9)
其中,a initial 和 a final 分别为距离控制参数 a 的初始值和终止值,t 为当前迭代次数,rand()为[0,1]服从均匀分布的随机数randn()为服从正态分布的随机数,σ(方差)用来度量随机变量控制参数 a 与其数学期望(即均值)之间的偏离程度,是为了控制取值中的参数 a 误差,使控制参数 a 有利于向期望控制参数 a 方向进化.

算法流程如下:

请添加图片描述

3.实验结果

请添加图片描述

4.参考文献

[1]龙文,蔡绍洪,焦建军,伍铁斌.一种改进的灰狼优化算法[J].电子学报,2019,47(01):169-175.

5.Matlab代码

6.python代码

猜你喜欢

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