• 多尺度正余弦优化算法-附代码


    多尺度正余弦优化算法


    摘要:针对标准正余弦算法进化后期的停滞问题,本文对进化过程中的种群多样性进行了分析,得出标准正余弦算法的种群多样性受控制因子的直接影响,且种群多样性表达式中控制因子随迭代次数的增加而指数下降。为了改善标准正余弦算法进化后期的探索与开采,提出了多尺度正余弦优化算法.新算法中通过自适应的多尺度控制因子来调节群体多样性从而实现多层次的搜索;同时设计了协助种群实施局部搜索,其种群独立进化,个体可以直接学习主群或协助种群中的最优个体,用来加快收敛速度和提高解的质量。

    1.正余弦算法

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

    2.改进正余弦算法

    2.1 多尺度控制因子策略

    假设总迭代次数为 T T T, 将整个进化过程划分成 k k k 段, 每个过程迭代次数分别设置为 T 1 , T 2 , ⋯   , T k T_1, T_2, \cdots, T_k T1,T2,,Tk, 并满 足 T 1 + T 2 + ⋯ + T k = T T_1+T_2+\cdots+T_k=T T1+T2++Tk=T. 在每段进化过程, 群体可 以采用不同的控制因子, 多尺度控制因子定义如式 (15) 所示.
    a ( t ) = f ( λ i , β i , T i ) , i ∈ k (15) a(t)=f\left(\lambda_i, \beta_i, T_i\right), i \in k \tag{15} a(t)=f(λi,βi,Ti),ik(15)
    其中 λ i \lambda_i λi β i \beta_i βi 分别表示控制因子的起始值和终止 值; T i T_i Ti 表示在第 i i i 段的迭代次数; f ( . ) f(.) f(.) 为定义的函数, 可为线性函数或非线性函数. 本文设计了两阶段多 尺度控制因子如式 (16) 所示.
    a ( t ) = { λ 1 ( 1 − t T 1 ) + β 1 , t < T 1 λ 2 ( 1 − t − T 1 T − T 1 ) , t ≥ T 1 (16) a(t)=\left\{

    λ1(1tT1)+β1,t<T1λ2(1tT1TT1),tT1" role="presentation" style="position: relative;">λ1(1tT1)+β1,t<T1λ2(1tT1TT1),tT1
    \right. \tag{16} a(t)= λ1(1T1t)+β1,t<T1λ2(1TT1tT1),tT1(16)
    t < T 1 tt<T1 时, 控制因子 a ( t ) a(t) a(t) λ 1 + β 1 \lambda_1+\beta_1 λ1+β1 递减到 β 1 \beta_1 β1; 当 t ≥ T 1 t \geq T_1 tT1 时, 控制因子 a ( t ) a(t) a(t) λ 2 \lambda_2 λ2 递减到 0 , 其中 λ 2 > β 1 \lambda_2>\beta_1 λ2>β1. MSCA 通过多尺度的控制因子可以实施每 个阶段探索和利用, 从而在整个进化过程中实现全 局或局部的交替搜索, 使得群体避免停滞.

    2.2 群体学习机制

    MSCA 利用多尺度控制因子参数值的设置可以 实现算法的局部搜索, 但是群体的学习榜样 ( X t ∗ ) \left(X_t^*\right) (Xt) r 2 r_2 r2 的影响, 使得群体无法及时跟踪到 X t ∗ X_t^* Xt, 从而降低 收玫速度. 为了保持快速的收玫速度, MSCA 采用双 种群策略, 即主群和协助群. 主群中采用多尺度控制 因子学习策略; 协助群专注对已有最优解的利用学 习. 协助群局部学习算法的思想来源于 PSO 算法. 在 PSO 算法中粒子同时学习群体最优粒子 gbest 和个 体历史最优粒子 pbest, 最终收敛于 g b e s t g b e s t gbest 和 pbest 的 算术平均点. 为了加快收玫速度, 本文设计的局部学 习算法直接学习种群 gbest 和个体 pbest 的算术平均 点. 更新方程如下:
    X t + 1 ( i ) = { X t ( i ) + b ( t ) ⋅ ξ ( X t ( i ) − 0.5 ( G t + P t ( i ) ) ) , f ( G t ) > f ( X t ∗ ) X t ( i ) + b ( t ) ⋅ ξ ( X t ( i ) − 0.5 ( X t ∗ + P t ( i ) ) ) , f ( G t ) ≤ f ( X t ∗ ) (17) X_{t+1}(i)=\left\{

    Xt(i)+b(t)ξ(Xt(i)0.5(Gt+Pt(i))),f(Gt)>f(Xt)Xt(i)+b(t)ξ(Xt(i)0.5(Xt+Pt(i))),f(Gt)f(Xt)" role="presentation" style="position: relative;">Xt(i)+b(t)ξ(Xt(i)0.5(Gt+Pt(i))),f(Gt)>f(Xt)Xt(i)+b(t)ξ(Xt(i)0.5(Xt+Pt(i))),f(Gt)f(Xt)
    \right. \tag{17}
    Xt+1(i)= Xt(i)+b(t)ξ(Xt(i)0.5(Gt+Pt(i))),f(Gt)>f(Xt)Xt(i)+b(t)ξ(Xt(i)0.5(Xt+Pt(i))),f(Gt)f(Xt)(17)
    式中的 ξ \xi ξ 是服从 [ 0 , 1 ] [0,1] [0,1] 分布的随机数. b ( t ) b(t) b(t) 为学习 步长, X t ∗ X_t^* Xt 表示主群群体最优个体. G t G_t Gt 表示协助群 群体最优个体. P t P_t Pt 为个体历史最优粒子. b ( t ) = b(t)= b(t)= 2 ( 1 − t / T ) + 2 2(1-t / T)+2 2(1t/T)+2, 式中 T T T 为总迭代次数.

    主群和协助群独立进化, 当主群种群的最优解适应度值大于协助群的最优解适应度值时, 协助群不再学习自身的最优解而是学习主群的最优解.

    MSCA 算法具体步骤如下.

    MSCA 算法具体步骤如下.
    步骤 1: 种群初始化. 种群 S = S m ∪ S s \mathrm{S}=\mathrm{S}_m \cup \mathrm{S}_s S=SmSs, 其中 S m S_m Sm 为主群, S s S_s Ss 为协助群. 设 S m S_m Sm 种群规模为 N 1 , S s N 1, S_s N1,Ss 种群 规模为 N 2 , N 2 < N 1 N 2, N 2N2,N2<N1;按给定搜索空间的范围随机生 成初始种群 S S S 的个体.
    步骤 2: 计算 S m S_m Sm S s S_s Ss 个体的适应度 f ( X i ) f\left(X_i\right) f(Xi), 并 分别将 S m S_m Sm S s S_s Ss 适应度最大的个体赋值给 S m S_m Sm 群体 最优个体 X ∗ X^* X S s S_s Ss 群体最优个体 G G G;

    步骤 3: 对于 X i ∈ S m ( i = 1 , … . . N 1 ) X_i \in S_m(i=1, \ldots . . N 1) XiSm(i=1,..N1), 按照 (1) 式 和 (17) 式产生个体 X i X_i Xi 的新位置 f ( X i n e w ) f\left(X_i{ }^{n e w}\right) f(Xinew). 如果适 应度 f ( X i n e w ) > f ( X i ) f\left(X_i{ }^{n e w}\right)>f\left(X_i\right) f(Xinew)>f(Xi), 则将 X i ← X i n e w X_i \leftarrow X_i{ }^{n e w} XiXinew;
    步骤 4: 如果 f ( X ∗ ) > f ( G ) , G ← X ∗ f\left(X^*\right)>f(G), G \leftarrow X^* f(X)>f(G),GX; 否则跳转 步骤 5 ;
    步骤 5: 对于 X i ∈ S s ( i = 1 , … , N 2 ) \mathrm{X}_i \in \mathrm{S}_s(i=1, \ldots, N 2) XiSs(i=1,,N2), 按照 (18) 式产生个体 X i X_i Xi 的新位置 f ( X i n e w ) f\left(X_i{ }^{n e w}\right) f(Xinew). 如果适应度 f ( X i n e w ) > f ( X i ) f\left(X_i{ }^{n e w}\right)>f\left(X_i\right) f(Xinew)>f(Xi), 则将 X i ← X i n e w X_i \leftarrow X_i{ }^{n e w} XiXinew;
    步骤 6: 判断是否达到最大迭代次数 T T T, 如若满 足条件则停止迭代, 将 G \mathrm{G} G 作为结果输出, 否则转至步 骤 3 .

    3.实验结果

    请添加图片描述

    4.参考文献

    [1]申元霞,张学锋,方馨,汪小燕.多尺度正余弦优化算法[J/OL].控制与决策:1-10[2021-10-27].https://doi.org/10.13195/j.kzyjc.2021.0513.

    5.Matlab代码

    6.python代码

  • 相关阅读:
    Redis 集群配置
    虚幻引擎:UEC++中如何解析JSON字符串
    微信小程序 地图map组件 SDK 并 实现导航
    番外--Task2:
    IP&TCP知识
    HTML+CSS大作业【传统文化艺术耍牙15页】学生个人网页设计作品
    docker-compose搭建私有Gitlab
    MyBatis中动态 SQL 语句-更复杂的查询业务需求
    笔试强训48天——day22
    医院陪诊小程序:改善患者体验的技术创新
  • 原文地址:https://blog.csdn.net/u011835903/article/details/127129626