高性能优化器SHADE——基于成功历史记忆的适应性DE原理介绍及其代码实现(MATLAB/PYTHON)

32 篇文章 4 订阅
13 篇文章 0 订阅

文章来源于我的个人公众号:KAU的云实验台,主要更新智能优化算法的原理、应用、改进

在这里插入图片描述

本文KAU将介绍相当流行的DE变体——基于成功历史记忆的适应性差分进化算法(Success-History based Adaptive Differential Evolutionz,SHADE)。该算法是JADE的增强版本,由Tanabe 和 Fukunaga于2013年提出[1],大大提升了算法效率,并且其在CEC2013竞赛中排名第三。在这里插入图片描述

本文中,KAU将介绍SAHDE算法的原理,并给出其MATLAB和Python的实现。后续也将更新SHADE的变体,另一个火热的算法——CEC2014年的冠军算法L-SHADE的原理和实现,感兴趣可以关注哦~

00 目录

1 基于成功历史记忆的适应性DE(SHADE)原理
2 代码目录
3 算法性能
4 源码获取

01基于成功历史记忆的适应性DE(SHADE)原理

SHADE算法的框架和JADE类似,但与JADE相比,SHADE有完善的历史记忆机制,下面具体介绍SHADE的策略。
在这里插入图片描述

1.1 初始化
初始种群P由随机向量组成:

在这里插入图片描述

其中,xj,i是第i个个体的第j维度;D为问题维度;NP为种群数量;xmin和xmax是解空间上下界;pi为随机选择的最优引导个体。
除此之外,SHADE还有历史记忆与外部存档需要初始化:
历史记忆MF和MCR中存放的控制参数(缩放因子F和交叉率CR)初始化为0.5:
在这里插入图片描述

其中,H是自定义的历史记忆的容量。
外部存档A用于存放淘汰解,其初始化为空集。
在这里插入图片描述

1.2 变异:DE/current-to-pbest/1
DE/current-to-pbest/1变异策略不仅仅只使用最佳个体的信息,它还使用了其他较好个体的信息,将这些个体之间的差值作为指导种群进化的方向。DE/current-to-pbest/1变异策略可以用下式表达:
在这里插入图片描述

其中,XpbestG表示从当前种群中适应度前p个个体中随机选择,Xi,G是第G次迭代的第i个个体,Xr1,G是从集合P中随机选择的个体,Xr2,G是从P∪A中随机选择的个体,Fi为缩放因子。
缩放因子Fi由下式生成:
在这里插入图片描述

其中,randci()是柯西分布,MFri是从历史记忆MF中随机选择的。

1.3 交叉
使用二项交叉来生成试验个体:
在这里插入图片描述

其中,jrand为[1,dim]之间的随机整数;当rand[0,1]小于或等于交叉率CRi或j=jrand时,试验个体u的第j维将继承变异个体v的第j维,否则继承原始个体x的第j维。
交叉率CRi由下式生成:
在这里插入图片描述

其中,randni()为高斯分布,MCRi是从历史记忆MCR中随机选择的。

1.4 选择
选择能够保证优化向着更好的方向前进:
在这里插入图片描述

其中,f()为目标函数;G为当前种群;G+1为下一代种群。
除了更新种群外,SHADE还需要更新外部存档,若进化出比原始个体更好的试验个体,则将原始个体xiG存入淘汰存档A中,若外部存档超出容量,则删除对应超额。

1.5 更新历史记忆
SHADE算法的重要操作就在于其历史记忆(即MF和MCR)的更新,历史记忆中存储着成功进化个体的缩放因子F和交叉率CR。每次迭代中将先把成功进化个体的F和CR存储在SF和SCR中,迭代一次后会更新历史记忆的一个单元,被更新的单元为k,每次迭代后会加1,若k超出容量H,则重置为1,历史记忆的第k个单元的更新公式如下:
在这里插入图片描述

若第G次迭代没有进化出比原始个体更好的试验个体,则历史记忆不会更新。另外,加权平均值WA和加权的Lehmer平均值WL使用如下公式更新:
在这里插入图片描述

其中,权重向量w可提升参数适应性,其基于试验个体和原始个体之间目标函数值之差的绝对值计算:
在这里插入图片描述

1.6 SHADE算法步骤
JADE与SHADE在历史记忆更新上有所不同,综上,SHADE算法的流程如下:
在这里插入图片描述

虽然SHADE算法性能已经要好上不少,但仍有过早的停滞在局部最优的问题, 其性能仍有提升的空间。

02 代码目录

前面讲解了SHADE算法的理论内容,下面给出其代码实现,代码包含Matlab、Python文件,并给出SHADE算法源文献:
在这里插入图片描述

代码都经过作者重新注释,代码更清爽,可读性强,其中Readme给出了一些注意:
在这里插入图片描述

部分代码:
在这里插入图片描述

03 算法性能

采用CEC测试函数检验其寻优性能,并与JADE对比:
在这里插入图片描述

04 源码获取

在**公众号(KAU的云实验台)**后台回复 SHADE即可
后续KAU也会更新更多的DE变体,DE及其各个变体的优化性能在许多竞赛中都有不错的表现,也已经应用在许多实际问题中,同时,此类算法也很方便作为变异策略引入其他算法中作为改进手段,因此也希望KAU更新的DE系列算法能够为各位提供些许启发。

参考文献

[1] Tanabe R, Fukunaga A. Success-history based parameter adaptation for differential evolution;proceedings of the 2013 IEEE congress on evolutionary computation, F, 2013 [C]. IEEE.

另:如果有伙伴有待解决的优化问题(各种领域都可),可以发我,我会选择性的更新利用优化算法解决这些问题的文章。
如果这篇文章对你有帮助或启发,可以点击右下角的赞/在看(ง •̀_•́)ง(不点也行),你们的鼓励就是我坚持的动力!若有定制需求,可私信作者。

  • 16
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值