zl程序教程

您现在的位置是:首页 >  其他

当前栏目

基于精英混沌搜索策略的交替正余弦算法-附代码

搜索算法代码 基于 策略 混沌 精英 余弦
2023-09-14 09:06:12 时间

基于精英混沌搜索策略的交替正余弦算法


摘要:正余弦算法是一种新的基于种群的随机寻优方法,利用正余弦函数使解震荡性地趋于全局最优解,其线性调整策略及较弱的局部搜索能力严重地影响了算法的性能.为了提高正弦余弦算法的计算精度,提出基于精英混沌搜索策略的交替正余弦算法.新算法采用基于对数曲线的非线性调整策略修改控制参数,利用精英个体的混沌搜索策略增强算法的开发能力,并将基于该策略的正余弦算法与反向学习算法交替执行增强算法的探索能力,降低算法的时间复杂度,提高算法的收敛速度。

1.正余弦算法

基础正余弦算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/107762654

2.改进正余弦算法

2.1 控制参数的非线性调整策略

在 SCA中, 参数 r 1 r_1 r1 起着平衡全局探索能力和局 部搜索能力的重要作用. 当 r 1 < 1 r_1<1 r1<1 时使下一代的解 位于当前解与目标解之间, 强调算法的开发能力; 当 r 1 > 1 r_1>1 r1>1 时解位于当前解和目标解之外, 强调算法的探索能力. 由式 (2) 可以看出, r 1 r_1 r1 随迭代次数的增加线性 递减, 在算法迭代初期, r 1 r_1 r1 的值较大, 使算法具有较强 的全局探索能力, 在算法迭代后期, r 1 r_1 r1 的值较小, 增加 了算法的开发能力. 但是, 线性变化方式不能有效地 增加 SCA 的寻优精度, 本文通过非线性函数 [ 5 ] [5] [5] r 1 r_1 r1 进行改进. 利用自然对数在 [ 1 , e ] [1, e] [1,e] 上非线性递增的特 性, r 1 r_1 r1 的调整策略为
r 1 ( t ) = a start  − ( a start  − a end  ) ln ⁡ ( 1 + ( e − 1 ) η ⋅ t t max ⁡ ) (3) \begin{aligned} &r_1(t)= a_{\text {start }}-\left(a_{\text {start }}-a_{\text {end }}\right) \ln \left(1+\frac{(e-1)}{\eta} \cdot \frac{t}{t_{\max }}\right) \end{aligned} \tag{3} r1(t)=astart (astart aend )ln(1+η(e1)tmaxt)(3)
其中: a start  、 a end  a_{\text {start }} 、 a_{\text {end }} astart aend  为控制参数 a a a 的初始值和最终值, a start  > a e n d ⩾ 0 ; η > 0 a_{\text {start }}>a_{\mathrm{end}} \geqslant 0 ; \eta>0 astart >aend0;η>0 为调节系数. 由式(3)可以 看出, r 1 r_1 r1 随着迭代次数的增加非线性变化, 可以有效 地平衡 SCA 的探索和开发能力, 提高算法的寻优能 力和收敛速度.

2.2 反向学习策略

反向学习 ( O B L ) [ 6 ] (\mathrm{OBL})^{[6]} (OBL)[6] 是增强随机优化算法性能的 重要方法,通过贪婪选择目标函数在当前解和反向解 种群的适应度值, 增强了种群的多样性, 提高了算法 接近全局最优解的能力. 文献 [4] 提出的 O B S C A \mathrm{OBSCA} OBSCA 在 基本 SCA 中加入反向学习策略, 提高了 SCA 的求解 精度. 本文旨在将 S C A \mathrm{SCA} SCA 与反向学习策略交替进行, 以 降低算法的复杂性, 从而在改进种群多样性的同时提 高算法的收敛速度.
定义 1 反向解. 设第 t t t 代种群中第 i i i 个个体为 x i t = ( x i 1 t , x i 2 t , ⋯   , x i n t ) x_i^t=\left(x_{i 1}^t, x_{i 2}^t, \cdots, x_{i n}^t\right) xit=(xi1t,xi2t,,xint), 记 a j 、 b j a_j 、 b_j ajbj 为搜索空间中第 j j j 维的下界和上界, 令
x ˉ i j t = a j + b j − x i j t . (4) \bar{x}_{i j}^t=a_j+b_j-x_{i j}^t . \tag{4} xˉijt=aj+bjxijt.(4)
x ˉ i t = ( x ˉ i 1 t , x ˉ i 2 t , ⋯   , x ˉ i n t ) \bar{x}_i^t=\left(\bar{x}_{i 1}^t, \bar{x}_{i 2}^t, \cdots, \bar{x}_{i n}^t\right) xˉit=(xˉi1t,xˉi2t,,xˉint) 为其反向解.
由式 (4) 可知, 反向学习算法通过反向策略产生 N N N 个反向解,使算法在 2 N 2 N 2N 个个体中挑选优秀个体进 入下一代, 增强了种群的多样性和全局探索能力, 同 时贪婪选择策略又增加了算法的收敛速度.

2.3 精英混沌搜索策略

群智能算法的优劣在于有效地平衡算法的探索 与开发能力,为了提高算法的开发能力利用混沌的 随机性、遍历性和规律性的特点, 对精英个体 [ 7 ] { }^{[7]} [7] 进行 混沌变异. 对种群中 N N N 个个体按适应度值升序排序, 选择前 m = p r ⋅ N m=\mathrm{pr} \cdot N m=prN 个个体作为精英个体, p r ∈ [ 0 , 1 ] \mathrm{pr} \in[0,1] pr[0,1] 为选择比例, 记精英个体为 { e x 1 t , e x 2 t , ⋯   , e x m t } ⊂ \left\{\mathrm{ex}_1^t, \mathrm{ex}_2^t, \cdots, \mathrm{ex}_m^t\right\} \subset {ex1t,ex2t,,exmt} { x 1 t , x 2 t , ⋯   , x N t } , ex ⁡ i t = ( ex ⁡ i 1 t , ex ⁡ i 2 t , ⋯   , e x i n t ) , i = \left\{x_1^t, x_2^t, \cdots, x_N^t\right\}, \operatorname{ex}_i^t=\left(\operatorname{ex}_{i 1}^t, \operatorname{ex}_{i 2}^t, \cdots, \mathrm{ex}_{i n}^t\right), i= {x1t,x2t,,xNt},exit=(exi1t,exi2t,,exint),i= 1 , 2 , ⋯   , m 1,2, \cdots, m 1,2,,m. 其第 j ( j = 1 , 2 , ⋯   , n ) j(j=1,2, \cdots, n) j(j=1,2,,n) 维的上下界 [ 8 ] { }^{[8]} [8] 分 别为
{ e b j t = max ⁡ ( e x 1 j t , e x 2 j t , ⋯   , e x m j t ) , e a j t = min ⁡ ( e x 1 j t , e x 2 j t , ⋯   , e x m j t ) (5) \left\{\begin{array}{l} \mathrm{eb}_j^t=\max \left(\mathrm{ex}_{1 j}^t, \mathrm{ex}_{2 j}^t, \cdots, \mathrm{ex}_{m j}^t\right), \\ \mathrm{ea}_j^t=\min \left(\mathrm{ex}_{1 j}^t, \mathrm{ex}_{2 j}^t, \cdots, \mathrm{ex}_{m j}^t\right) \end{array}\right. \tag{5} {ebjt=max(ex1jt,ex2jt,,exmjt),eajt=min(ex1jt,ex2jt,,exmjt)(5)
将精英个体 ex ⁡ i t \operatorname{ex}_i^t exit 由解空间按式 (6)映射到 [ 0 , 1 ] [0,1] [0,1], 得到混 沌变量 C i t = ( C i 1 t , C i 2 t , ⋯   , C i n t ) C_i^t=\left(C_{i 1}^t, C_{i 2}^t, \cdots, C_{i n}^t\right) Cit=(Ci1t,Ci2t,,Cint), 有
C i j t = e x i j t − e a j t e b j t − e a j t . (6) C_{i j}^t=\frac{\mathrm{ex}_{i j}^t-\mathrm{ea}_j^t}{\mathrm{eb}_j^t-\mathrm{ea}_j^t} .\tag{6} Cijt=ebjteajtexijteajt.(6)
利用式 (7) 对 C i j t C_{i j}^t Cijt 进行混沌迭代, 有
C i j t ( k + 1 ) = μ C i j t ( k ) ( 1 − C i j t ( k ) ) . (7) C_{i j}^t(k+1)=\mu C_{i j}^t(k)\left(1-C_{i j}^t(k)\right) .\tag{7} Cijt(k+1)=μCijt(k)(1Cijt(k)).(7)
其中: μ \mu μ 为常数, 取值为 4 ; k 4 ; k 4;k 为混沌迭代次数, 0 ⩽ k ⩽ 0 \leqslant k \leqslant 0k ceil ⁡ ( t / 10 ) , ceil ⁡ ( x ) \operatorname{ceil}(t / 10), \operatorname{ceil}(x) ceil(t/10),ceil(x) 表示对 x x x 向上取整.
k k k 达到最大迭代次数 k max ⁡ k_{\max } kmax 时, 得到第 i i i 个精英 个体对应的混沌变量 C i k max ⁡ C_i^{k_{\max }} Cikmax, 利用下式将其映射至 [ e a j t , e b j t ] \left[\mathrm{ea}_j^t, \mathrm{eb}_j^t\right] [eajt,ebjt] 内, 得到对应混沌个体 x C i t x C_i^t xCit, 有
x C i j t = C i j k max ⁡ ( e b j t − e a j t ) + e a j t . (8) x C_{i j}^t=C_{i j}^{k_{\max }}\left(\mathrm{eb}_j^t-\mathrm{ea}_j^t\right)+\mathrm{ea}_j^t .\tag{8} xCijt=Cijkmax(ebjteajt)+eajt.(8)
对混沌个体 x C i t x C_i^t xCit 与原个体 ex ⁡ i t \operatorname{ex}_i^t exit, 由下式生成候选 解:
x i t ( λ ) = λ ex ⁡ i t + ( 1 − λ ) x C i t , (9) x_i^t(\lambda)=\lambda \operatorname{ex}_i^t+(1-\lambda) x C_i^t,\tag{9} xit(λ)=λexit+(1λ)xCit,(9)
其中 λ \lambda λ 为收缩因子, 其值为
λ = t max ⁡ − t t max ⁡ . (10) \lambda=\frac{t_{\max }-t}{t_{\max }} .\tag{10} λ=tmaxtmaxt.(10)
在得到的候选解 x i t ( λ ) x_i^t(\lambda) xit(λ) 与对应精英个体 e x i t \mathrm{ex}_i^t exit 之间 采用贪婪选择策略, 选择优秀的个体 e x i t ′ \mathrm{ex}_i^{t^{\prime}} exit 取代当前个 体 ex ⁡ i t \operatorname{ex}_i^t exit, 即
ex ⁡ i t ′ = { ex ⁡ i t , f ( ex ⁡ i t ) ⩽ f ( x i t ( λ ) ) x i t ( λ ) , f ( ex ⁡ i t ) > f ( x i t ( λ ) ) (11) \operatorname{ex}_i^{t^{\prime}}=\left\{\begin{array}{l} \operatorname{ex}_i^t, f\left(\operatorname{ex}_i^t\right) \leqslant f\left(x_i^t(\lambda)\right) \\ x_i^t(\lambda), f\left(\operatorname{ex}_i^t\right)>f\left(x_i^t(\lambda)\right) \end{array}\right. \tag{11} exit={exit,f(exit)f(xit(λ))xit(λ),f(exit)>f(xit(λ))(11)
由式(10) 可以看出, 设计的收缩因子 λ \lambda λ 随着迭代 次数的增加逐渐减小. 式(9) 表明, λ \lambda λ 越小, e x i t \mathrm{ex}_i^t exit 对候选 解 x i t ( λ ) x_i^t(\lambda) xit(λ) 的影响越小. 因此, 算法随着迭代次数的增 加, 精英个体的上下界范围逐渐缩小至目标解附近, 候选解 x i t ( λ ) x_i^t(\lambda) xit(λ) 越侧重随机性、多样性较强的混沌个 体 x C i t x C_i^t xCit, 局部搜索能力越强. 精英个体的混沌变异策 略所控制的混沌搜索范围随算法迭代次数的增加逐 渐缩小, 实验验证该策略具有较强的局部搜索能力.

基于精英混沌搜索策略的交替正余弦算法(COSCA)步骤如下:

Step 1: 算法参数设置. 种群规模 N N N, 控制参数 a a a 的初始值 a start  a_{\text {start }} astart  和最终值 a end  a_{\text {end }} aend , 最大化迭代次数 t max ⁡ t_{\max } tmax,调节系数 η > 0 \eta>0 η>0, 精英选择比例pr.
Step 2: 初始化. 令 t = 0 t=0 t=0, 随机在解搜索空中产生 N N N 个个体, 组成种群 G G G.

Step 3: 对 G G G 中的个体执行式 (4) 的反向策略, 形 成种群 G ˉ \bar{G} Gˉ, 计算 G ˉ ∪ G \bar{G} \cup G GˉG 中个体的函数值, 按从小到大 排序, 选择前 N N N 个个体组成初始种群 G t G^t Gt, 并记录最优 个体 x ∗ t x_*^t xt.

Step 4: 若 t t t 为奇数, 则执行 Step 4.1; 若 t t t 为偶数, 则 执行 Step 4.2:

Step 4.1: 对 G t G^t Gt 中的个体执行 S C A \mathrm{SCA} SCA 算法, 其中控 制参数 r 1 r_1 r1 如式 (3) 所示, 对个体按适应度值由小到大 排序得到种群 G z t + 1 G_z^{t+1} Gzt+1;

Step 4.2: 对 G t G^t Gt 中的个体进行式 (4) 的 OBL 策略 更新得到 G ˉ t \bar{G}^t Gˉt, 对 G ˉ ⋃ G \bar{G} \bigcup G GˉG 中的个体按函数值从小到大 排序, 选择前 N N N 个个体组成种群 G z t + 1 G_z^{t+1} Gzt+1.

Step 5: 对 G z t + 1 G_z^{t+1} Gzt+1 中的前 m m m 个精英个体进行式
(5) (11) 所示的精英混沌搜索, 其余 N − m N-m Nm 个个体 不变,形成种群 G t + 1 G^{t+1} Gt+1.

Step 6: 记录 G t + 1 G^{t+1} Gt+1 中最优个体 x ∗ t + 1 x_*^{t+1} xt+1, 若 f ( x ∗ t ) < f\left(x_*^t\right)< f(xt)< f ( x ∗ t + 1 ) f\left(x_*^{t+1}\right) f(xt+1), 则 x ∗ t + 1 = x ∗ t x_*^{t+1}=x_*^t xt+1=xt.

Step 7: 判断算法是否满足结束条件, 若满足, 输 出最优值 f ( x ∗ t + 1 ) f\left(x_*^{t+1}\right) f(xt+1), 否则令 t = t + 1 t=t+1 t=t+1, 转至 Step 4 .

3.实验结果

请添加图片描述

4.参考文献

[1]郭文艳,王远,戴芳,刘婷.基于精英混沌搜索策略的交替正余弦算法[J].控制与决策,2019,34(08):1654-1662.

5.Matlab代码

6.python代码