基于 Iterative 映射和单纯形法的改进灰狼优化算法-附代码

基于 Iterative 映射和单纯形法的改进灰狼优化算法


摘要:为了解决基本灰狼优化算法( GWO) 依赖初始种群和求解精度不高的问题,提出一种基于 Iterative 映射和单纯形法的改进灰狼优化算法( SMIGWO) 。该算法利用混沌 Iterative 映射产生初始灰狼种群,增强全局搜索过程中的种群多样性; 采用逆不完全 Γ 函数更新收敛因子,以平衡算法的全局搜索和局部搜索能力; 利用单纯形法的反射、扩张和收缩操作对当前较差个体进行改进,避免算法陷入局部最优。

1.灰狼优化算法

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

2. 改进灰狼优化算法(SMIGWO)

2.1 混沌序列初始化

基本 GWO 算法在搜索空间中随机初始化灰狼种群,容易造成灰狼位置分布不均匀,导致种群多样性差。混沌映射具有较好的遍历性和不重复性,因此可以用来代替种群随机初始化。文中采用 Iterative 混沌映射产生灰狼的初始位置,Iterative 映射的数学表达式为:
x k + 1 = sin ⁡ ( b π / x k ) (7) x_{k+1}=\sin \left(b \pi / x_{k}\right) \tag{7} xk+1=sin(bπ/xk)(7)
其中,b 是控制参数,b ∈ (0,1),文中取 b = 0. 5。

2.2 基于逆不完全 Γ 函数的收敛因子

当| A| > 1 时,灰狼群体将扩大搜索范围寻找猎物,即全局搜索,收敛速度快;当| A| < 1 时,灰狼群体将收缩搜索范围对猎物进行攻击,即局部搜索,收敛速度慢。因此,A 的大小与 GWO 算法的全局搜索和局部搜索能力有很大关系。由式(3)可以看出,A随着收敛因子a 的变化而变化。为了平衡算法的全局搜索和局部搜索能力,文中提出一种基于逆不完全 Γ 函数 的收敛因子:
a = a min ⁡ + a max ⁡ − a min ⁡ λ ×  gammaincinv  ( λ , 1 − t t max ⁡ ) (8) a=a_{\min }+\frac{a_{\max }-a_{\min }}{\lambda} \times \text { gammaincinv }\left(\lambda, 1-\frac{t}{t_{\max }}\right) \tag{8} a=amin+λamaxamin× gammaincinv (λ,1tmaxt)(8)
其中: a m a x 、 a m i n a_{max} 、a_{min} amaxamin 为收敛因子 a a a的最大、最小值,t 为当前迭代次
数, t m a x t_{max} tmax 为最大迭代次数, λ ( λ ≥ 0 ) λ(λ ≥ 0) λ(λ0) 是随机变量,本文取
λ = 0 . 01 λ =0. 01 λ=001

2.3 单纯形法

单纯形法的核心思想包括两重:一是梯度估计,它是从最差顶点 X s 到除最差顶点 X s X_s Xs 以外的所有顶点的质心 X X X的方向向量 g g g;二是通过迭代用一个更好的新顶点来代替最差顶点。新的顶点是由 4 种算子之一产生的:反射、扩张、外收缩和内收缩 。

反射操作: X r = X c + α ( X c - X s ) X_r = X_c + α(X_c - X_s ) Xr=Xc+α(XcXs) X r X_r Xr 是反射点,反射系数
α α α 通常取 1。
扩张操作: $ X_e = X_c + γ(X_r - X_c ) , , X_e$ 是扩张点,扩张系数
γ 通常取 2。
外收缩操作: X t = X c + β ( X s - X c ) X_t = X_c + β(X_s - X_c ) Xt=Xc+β(XsXc) X t X_t Xt 是外收缩点,外收
缩系数 β β β取 0. 5。
内收缩操作: X w = X c - β ( X s - X c ) X_w = X_c - β(X_s - X_c ) Xw=Xcβ(XsXc) X w X_w Xw 是内收缩点,内
收缩系数 β β β取 0. 5。

综合以上策略描述,给出 SMIGWO 的具体步骤:

  1. 设置算法参数:种群规模N,最大迭代次数t max ,反射系数 α,扩张系数 γ,内、外收缩系数 β,随机生成 a、A、C 等参数;

  2. 利用混沌 Iterative 映射初始化灰狼种群;

  3. 计算种群中每个灰狼个体的适应度值,并按照适应度值进行排序,选择前 3 个最好的狼,记录位置 X α 、X β 和 X δ,对应的适应度值 f(X α )、f(X β ) 和 f(X δ ),中心位置为 X c =(X α +X β ) /2。

  4. 对较差灰狼位置 X s 进行反射,得到反射点 X r 。

  5. 若 f(X r ) < f(X α ) 说明反射方向正确,执行扩张操作得到扩张点 X e ,若 f(X e ) < f(X α ),则用 X e 取代 X s ;否则,用X r 取代 X s 。

  6. 若 f(X r ) > f(X s ),说明反射方向不正确,执行外收缩操作得到外收缩点 X t ,若 f(X t ) < f(X s ),则用 X t 取代 X s 。

  7. 若f(X α ) < f(X r ) < f(X s ),执行内收缩操作得到内收缩点 X w ,若 f(X w ) < f(X s ),则用 Xw 取代 X s ;否则,用 X t 取代 X s 。

  8. 利用式(5) 和(6) 更新种群中其他 X 灰狼个体的位置;

  9. 利用式(8) 计算a,然后利用式(3) 和(4) 更新A,C的值;

  10. 判断算法是否满足结束条件,若满足,则算法结束,输出最优灰狼位置 X α ;否则,执行步骤 3)。

3.实验结果

请添加图片描述

4.参考文献

[1]王梦娜,王秋萍,王晓峰.基于Iterative映射和单纯形法的改进灰狼优化算法[J].计算机应用,2018,38(S2):16-20+54.

5.Matlab代码

6.Python代码

猜你喜欢

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