混沌策略和单纯形法改进的鲸鱼优化算法-附代码

混沌策略和单纯形法改进的鲸鱼优化算法


摘要:为解决鲸鱼优化算法收敛速度慢和寻优精度低等问题,提出了一种基于混沌策略和单纯形法优化的鲸鱼优化算法(whale optimization algorithm based on chaos optimization and simplex optimization,CSWOA)。首先,采用混沌反向学习策略初始化鲸鱼种群个体,降低随机化的原始种群对算法收敛的影响;然后,引入一种自适应权重策略,平衡算法的全局寻优和局部探索能力;最后,再引入单纯形法对原算法进行改进,提高算法的局部搜索能力和寻优能力。

1.鲸鱼优化算法

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

2. 改进鲸鱼优化算法

2.1 混沌反向学习初始化种群

WOA 通常采用随机化生成初始种群策略, 但会 使初始化种群个体分布不均, 导致种群多样性较差。 已有研究 [ 10 ] { }^{[10]} [10] 表明, 初始种群可直接影响算法的收玫 精度和收玫速度, 且种群多样性差的算法的整体性 能不佳。由于混沌序列具有随机性、遍历性好等特 点, 因此将初始种群混沌化, 可以很好地维持种群的 多样性。张强 等 [ 11 ] { }^{[11]} [11] 已经证明反向学习初始化可以很 好地得到初始解, 因此本文利用反向学习和混沌化 2 个初始化方法的优点, 采用 Tent 混沌映射初始化种 群, 然后对已混沌化的种群进行反向学习, 最后进行 合并选优。Tent 映射公式 [ 12 ] { }^{[12]} [12]
Y ( t + 1 ) = { 2 Y ( t ) , 0 ⩽ Y ( t ) ⩽ 1 2 ; 2 ( 1 − Y ( t ) ) , 1 2 < Y ( t ) ⩽ 1 (9) \boldsymbol{Y}_{(t+1)}=\left\{\begin{array}{cc} 2\boldsymbol{Y}_{(t)}, & 0 \leqslant \boldsymbol{Y}_{(t)} \leqslant \frac{1}{2} ; \\ 2\left(1-\boldsymbol{Y}_{(t)}\right), & \frac{1}{2}<\boldsymbol{Y}_{(t)} \leqslant 1 \end{array}\right.\tag{9} Y(t+1)={ 2Y(t),2(1Y(t)),0Y(t)2121<Y(t)1(9)
将混沌序列映射到原来的解空间得到混沌初始 化种群, 对其进行反向学习, 模型为
O Y ( t ) = Y min ⁡ ( t ) + Y max ⁡ ( t ) − Y ( t ) 。 \boldsymbol{O}_{\boldsymbol{Y}_{(t)}}=\boldsymbol{Y}_{\min (t)}+\boldsymbol{Y}_{\max (t)}-\boldsymbol{Y}_{(t) 。} OY(t)=Ymin(t)+Ymax(t)Y(t)
式中: Y min ⁡ ( t ) \boldsymbol{Y}_{\min (t)} Ymin(t) Y max ⁡ ( t ) \boldsymbol{Y}_{\max (t)} Ymax(t) 分别为个体的下界和上界。
将混沌种群和混沌反向学习种群合并, 计算各 自的目标函数值, 选择其中最优的 N N N 个个体作为新 的初始种群。

2.2 非线性收敛因子和自适应权重策略

标准 WOA 中, 全局寻优和局部探索性能主要 取决于系数向量 A \boldsymbol{A} A, 由式 (3) 和式 (5) 可知, A \boldsymbol{A} A 随着 a \boldsymbol{a} a 的变化而变化,而 a a a 随着迭代次数的增加线性递减, 导致算法整体寻优能力降低。因此, 在维持收玫因 子递减趋势的情况下, 本文提出了一种收玫因子非 线性变化策略, 表达式为
a = 2 1 + u e T / T max ⁡ − 1 (11) a=\frac{2}{1+u \mathrm{e}^{T / T_{\max }-1}} \tag{11} a=1+ueT/Tmax12(11)
式中: T T T 为当前迭代次数; u u u 为控制常数, 本文取 2 ; T max ⁡ T_{\max } Tmax 为最大迭代次数。在搜索前期, 收玫因子以较慢 的速率递减; 而在搜索后期, 收玫因子以较快的速率 递减,加速收玫。
虽然非线性收玫因子在一定程度上可提升算法 性能, 但当涉及全局寻优和局部探索性能时, 该策略 却无法平衡两者。因此, 本文引入一种自适应权重 策略协调收玫因子进行全局寻优和局部探索性能平 衡, 权重公式为
W ( t ) = e T / T max ⁡ − 1 (12) W(t)=\mathrm{e}^{T / T_{\max }-1} \tag{12} W(t)=eT/Tmax1(12)
当前个体的位置更新和螺旋位置更新公式分别为
X ( t + 1 ) = W ( t ) X ∗ ( t ) − A D (13) \boldsymbol{X}(t+1)=W(t) \boldsymbol{X}^{*}(t)-\boldsymbol{A D} \tag{13} X(t+1)=W(t)X(t)AD(13)

$$

\boldsymbol{X}(t+1)=\boldsymbol{D} \mathrm{e}^{b l} \cos (2 \pi l)+(1-W(t)) \boldsymbol{X}^{*}(t), \tag{14}
$$

X ( t + 1 ) = W ( t ) X rand  ( t ) − A D (15) \boldsymbol{X}(t+1)=W(t) \boldsymbol{X}_{\text {rand }}(t)-\boldsymbol{A D} \tag{15} X(t+1)=W(t)Xrand (t)AD(15)

2.3 单纯形法

单纯形法是代数拓扑中的概念,通过反射、扩张、收缩等几何变换寻求问题的最优解。每一 次操作,都会用一个更好的解替换当前的最差解。

单纯形法步骤如下:
以最优化问题 min ⁡ X ∈ R f ( X ) \min _{\boldsymbol{X} \in \mathrm{R}} f(\boldsymbol{X}) minXRf(X) 为例, 计算最优点 g g g 、最差点 w w w 、次优点 b b b 的函数值, 根据最优点和最差 点计算中点位置 c c c, 基本操作如下。
1)反射操作
计算反射点 r = c + α ( c − w ) r=c+\alpha(c-w) r=c+α(cw), 其中 α \alpha α 为反射系 数, 本文取 1 。
2)扩展操作
如果 w > c w>c w>c, 则计算扩张点 e = c + γ ( r − c ) e=c+\gamma(r-c) e=c+γ(rc), 其 中 γ \gamma γ 为扩展系数,本文取 2 。如果 e > g e>g e>g, 则用扩张点代

替最差点, 否则用反射点替代最差点。
3) 压缩操作
如果 g > r g>r g>r, 说明反射方向有误, 进行向内压缩操 作 t = c + β ( w − c ) t=c+\beta(w-c) t=c+β(wc), 其中 β \beta β 为压缩系数, 本文取 0.5 0.5 0.5 。 如果 t > w t>w t>w, 则用压缩点替代最差点。如果 w < r < g w<r<g w<r<g, 则进行向外收缩操作 s = c − β ( w − c ) s=c-\beta(w-c) s=cβ(wc) 。如果还有 s > w s>w s>w, 则用收缩点 s s s 替代最差点 w w w, 否则用反射点替 代最差点。
因此, 反射操作能使最差点搜索所有可行解; 扩张 操作能使最优值点向距最差点更远的反方向搜索。如 果当前最优值点为极值点, 扩张操作能使该点跳出局 部极小值处; 收缩操作则能使较差点收缩到更好的位 置, 提高算法的局部搜索能力和寻优能力。

对标准 WOA 进行以上策略改进后, 得到的 CSWOA 伪代码如下:

  1. 设置种群规模 N N N, 利用所描述的混沌反向学 习方法产生初始化鲸鱼种群;

  2. 计算每个个体的适应度值, 并记录当前最优 个体及位置;

  3. while ( t < t max ⁡ ) \left(t<t_{\max }\right) (t<tmax) do

  4. for i = 1 i=1 i=1 to N N N do

  5. 根据式 (11) 计算控制参数 a a a 的值;

  6. 更新其他参数 A 、 C 、 l \boldsymbol{A} 、 \boldsymbol{C} 、 l ACl p p p 的值;
    7 ) if ( p < 0.5 ) (p<0.5) (p<0.5) do

  7. if ( ∣ A ∣ < 1 ) (|\boldsymbol{A}|<1) (A<1) do
    9)根据式 (13) 更新当前个体的位置;

  8. else if ( ∣ A ∣ ⩾ 1 ) (|\boldsymbol{A}| \geqslant 1) (A1) do

  9. 在群体中随机选择一个个体 ( X X X (rand));

  10. 根据式 (15) 更新当前个体的位置;

  11. end if

  12. else if ( p ⩾ 0.5 ) (p \geqslant 0.5) (p0.5) do
    15)根据式 (14) 更新当前个体的位置;

  13. end if

  14. end for

  15. 根据单纯形法优化较差解;
    19)计算群体中个体的适应度值;
    20)更新当前最优个体及位置;

  16. t = t + 1 t=t+1 t=t+1

  17. end while

3.实验结果

请添加图片描述

4.参考文献

[1]张潮,冯锋.混沌策略和单纯形法改进的鲸鱼优化算法[J].中国科技论文,2020,15(03):293-299.

5.Matlab代码

6.Python代码

猜你喜欢

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