基于精英反向学习的逐维改进蜻蜓算法-附代码

基于精英反向学习的逐维改进蜻蜓算法


摘要:针对蜻蜓算法(DA)寻优精度不高、收敛速度慢及后期搜索活力不足等问题,提出了基于精英反向学习的逐维改进蜻蜓算法(EDDA).首先,利用精英反向学习策略初始化种群,以增强种群多样性,提高搜索效率;其次,利用逐维更新策略对蜻蜓个体进行更新,减少维间干扰,有效提高了算法的寻优能力;最后,充分利用当前解的信息双向搜索,提升了解的搜索活力.

1.蜻蜓算法

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

2. 改进蜻蜓算法

2.1 基于精英反向学习的种群初始化

在群智能算法中, 初始化策略的选择决定了初代种群在解空间的分布情况, 而 DA 算法对于初始化策 略的构造方法比较敏感 [ 13 ] { }^{[13]} [13], 因此不同的解空间分布情况将影响算法的搜索能力和收敛效率. 在标准 DA 算法中, 对于种群初始化采用了随机生成的方式, 虽然这种方法简单易实现, 但随机生成的点具有一定的 斍目性, 使得有的较好的点不能被䨱盖, 将会减慢算法的求解性能. 为了改善这个问题, 本文采用基于精 英反向学习的策略对种群进行初始化, 在初始化阶段, 同时搜索当前解与其动态反向学习的解, 将较优的 解作为初始解, 去除斍目性, 在解空间内并行搜索; 扩大了种群的多样性, 使算法的搜索效率得到提升. 初 始化步骤如下:
(1) 在搜索空间随机生成 N N N 个蜻娗个体初始位置 x i , j x_{i, j} xi,j, 其中, i = 1 , 2 , ⋯   , N ; j = 1 , 2 , ⋯   , D , N i=1,2, \cdots, N ; j=1,2, \cdots, D, N i=1,2,,N;j=1,2,,D,N 为种群规 模, D D D 为每个种群的维度;
(2) 生成动态反向种群 x i , j ′ x_{i, j}^{\prime} xi,j, 其中 x i , j ′ = k ( a j + b j ) − x i , j , x i , j ∈ [ a i j , b j ] x_{i, j}^{\prime}=k\left(a_j+b_j\right)-x_{i, j}, x_{i, j} \in\left[a_{i j}, b_j\right] xi,j=k(aj+bj)xi,j,xi,j[aij,bj];
(3) 比较初始化种群与其动态反向学习之后的种群, 选择 N N N 个适应度较好的蜻娗个体组成初始化 种群.

2. 2 基于贪婪保留的逐维更新策略

在标准 DA 算法中,采用的是全维度更新再评价策略,即更新所有维度信息之后,再根据目标函数值评价更新后的解,这种方法在一定程度上会掩盖进化维度的信息,浪费了解的评价次数,恶化解的收敛效率[14] ;同时,这样的更新方式造成了维度与维度之间的相互干扰,从而影响算法的收敛速度和寻优精度.改进的基于贪婪保留的逐维更新策略的蜻蜓算法,能够考虑每一维度的信息更新. 该策略的思想是:某一维度的值经过更新后与其他维度的值组成新的解;再根据目标函数适应度评价该新解;如果能够改善当前解的质量,则保留该维度对于解的更新结果;反之,则放弃对于当前维度值的更新,保留未更新之前的维度信息,并进行下一维度的更新,采用这种贪婪保留的方式,直到各维度更新完毕.

2.3 基于当前解信息的双向搜索

标准 DA算法中, 当蜻蜓个体至少具有一个相邻个体时, 通过式 (6) 更新步长因子, 从而按照式 (7) 更 新下一代蜻蜓个体的位置,这样的机制没有保留历史较优的个体作为下一次迭代的参考值, 并且只依赖于 5 种行为和步长来更新下一次迭代的位置,使得算法需要耗棃更多的迭代次数来寻找最优解. 因此, 为了 进一步增强个体间的信息传递,提高算法的寻优能力,可在式(7)中加入历史最优解和当前解的信息, 通 过差分结果来进一步引导解的收敛, 当前解的信息得到充分利用, 增强了解的寻优能力;同时, r r r 作为方向 控制因子, 可取 ( − 1 , 1 ) (-1,1) (1,1) 之间均匀分布的随机数, 能够控制拍索方向, 达到双向搜索, 提高解的收敛效率和 昌优能力,因此本文改进的算法把式 (7) 改进成如下公式:
X t + 1 , i = X t , i + Δ X t + 1 , i + r ( x Food  − x t , i ) (14) X_{t+1, i}=X_{t, i}+\Delta X_{t+1, i}+r\left(x_{\text {Food }}-x_{t, i}\right)\tag{14} Xt+1,i=Xt,i+ΔXt+1,i+r(xFood xt,i)(14)
式中, r r r ( − 1 , 1 ) (-1,1) (1,1) 之间的随机数,服从均肑分布, x Foxd  x_{\text {Foxd }} xFoxd  表示当前食物源的位置, 即历史最优解, x r , i x_{r, i} xr,i 为当前解 的位置, t t t 为当前迭代次数.

请添加图片描述

3.实验结果

请添加图片描述

4.参考文献

[1]何庆,黄闽茗,王旭.基于精英反向学习的逐维改进蜻蜓算法[J].南京师大学报(自然科学版),2019,42(03):65-72.

5.Matlab代码

6.Python代码

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智能算法研学社(Jack旭)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值