引言
前期已分享360多种基础优化算法(【关注|收藏】超360种群智能优化算法-Matlab代码免费获取(截至2024.07.15))。根据“没有免费的午餐”,没有一个单一的群体智能优化算法可以解决所有的优化问题,每一个群体智能优化算法都有局限性和限制。所以很多学者根据自身的专业问题需求,对基础优化算法进行了改进和提升,以期获得更为优秀的性能。利用改进策略可以缓解优化算法在大规模优化问题中存在早熟收敛、易陷入局部最优和收敛精度低的缺点。
前期也已分享了多种改进策略(点击跳转):
【仅需一行】13种变异策略改进所有群智能优化算法(附matlab代码)
【效果突出】优化算法改进策略:21种混沌映射方法-参数混沌化(附matlab代码)
用于改进所有优化算法:21种混沌映射方法-混沌初始化(附matlab代码)
本期继续分享一种好用的改进策略-Nelder‑Mead单纯形法(Nelder‑Mead simplex)。
改进仅需一行,新手也会。
Nelder-Mead单纯形法,又称之为Downhill单纯形法,是一种用于多维无约束问题的数值优化方法,由Nelder和Mead于1965年发明。这种方法属于迭代搜索算法类别,它使用单纯形的概念来寻找函数的最小值。单纯形是一个多维空间中的多面体,其顶点构成问题的解的集合。Nelder-Mead法不依赖于函数的导数信息,因此适用于那些难以或无法获得解析表达式的函数优化问题。(更多知识请阅读相关文献)
Nelder-Mead单纯形 算法寻找最优值的步骤如下:
Step-1 初始化:初始化 n+1个点
,作为单纯形 的顶点;
Step-2 排序:计算n+1个顶点的适应度函数值,并排序:
Step-3 质心:计算前n个点的平均值:
Step-4 反射(Reflection):反射点由质心和最差解组成:其中ρ是反射系数。如果
如果f(xr)优于 f(xn)但是差于 f(x1),i.e. f(x1)≤f(xr)≤f(xn) ,则xn+1=xr。
Step-5 扩展(Expansion):若f(xr) > f(x1),则结合质心x0和反射点xr进一步扩大勘探区域。换句话说,如果f(xr) > f(x1),则表明寻找全局最优解的最佳方法是向反射方向搜索。此时计算扩展点(xe),其中ρ是反射系数。如果f(xe) < f(xr),则xn+1 = xe,否则xn+1 = xr。
Step-6 收缩(Contraction):若f(xn)≤f(xr)≤f(xn+1),计算外收缩点:
如果f(xc)<f(xr),xn+1=xc。如果f(xr)>f(xn+1),计算内收缩点:
如果f(xcc)<f(xn+1),则xn+1=xcc。
Step-7 回退(Shrink):回退点:
Nelder-Mead单纯形 算法伪代码:
本期以哈里斯鹰优化算法HHO为例,改进后算法暂用名NMS-HHO,函数NMS_HHO.m中给出了具体的改动方式,改动量仅一行,非常好用,极易快速方便扩展到其他算法。在cec2017和cec2022函数上进行测试,8个常用指标保存在excel中( 最差值worst; 最优值best; 标准差值std; 均值mean; 中值median; Wilcoxon符号秩检验、 Wilcoxon秩和检验、 friedman检验)。
cec2022函数介绍
从cec2022函数表中可以看到各个函数的理论最优值。从下面excel结果中也能看出,NMS-HHO可以非常接近理论最优值,改进效果十分客观。(友情提示:和其他策略配合使用,改进效果会更佳哦)
cec2022结果简要展示
参考文献
Matlab代码下载
微信搜索并关注-优化算法侠(英文名:Swarm-Opti),或扫描下方二维码关注,以算法名字搜索历史文章即可下载。
这个改进策略一定不要错过,仅需一行可改进所有群优化算法(附matlab代码)
点击链接跳转:
求解cec测试函数-matlab
cec2017测试函数使用教程及matlab代码免费下载
cec2018测试函使用教程及matlab代码免费下载
cec2019测试函使用教程及matlab代码免费下载
cec2020测试函使用教程及matlab代码免费下载
cec2021测试函使用教程及matlab代码免费下载
cec2022测试函使用教程及matlab代码免费下载
绘制cec2017/018/2019/2020/2021/2022函数的三维图像教程,SO EASY!
215种群智能优化算法python库
Amazing!Python版215种群智能优化算法https://mp.weixin.qq.com/s?__biz=MzkxMDQ5MDk4Ng==&mid=2247486669&idx=1&sn=6b439e55b37b6482b8d3831ca85f1d55&chksm=c12be0c8f65c69de71ad51d3b736b871ff52f8646e90624f95dd32b024dfaad369d654aaf8fc#rd
解决12工程设计优化问题-matlab
略微出手,工程设计问题(12)(附Matlab代码)https://mp.weixin.qq.com/s?__biz=MzkxMDQ5MDk4Ng==&mid=2247485052&idx=1&sn=80e5573c1c005ee5640e44935044ee35&chksm=c12bea79f65c636fc73758b4f4893502bd89cbd1c5d15d7db15e8b5c94eeae40450439d44944&token=681266555&lang=zh_CN#rd
求解11种cec测试函数-python
【选择自由,免费下载】215种优化算法求解11种cec测试函数-python代码https://mp.weixin.qq.com/s?__biz=MzkxMDQ5MDk4Ng==&mid=2247486669&idx=2&sn=eea8fb04dc507ab9119e2c97c03ca2f6&chksm=c12be0c8f65c69decd6c8109f6b997986bf58725fdbbd7ab03752cb6f61aacdb5a2dc7fec762#rd
解决30种工程设计优化问题-python
【一码解决】215种优化算法求解30个现实世界的工程设计优化问题,让你的论文增色10倍(附Python代码)https://mp.weixin.qq.com/s?__biz=MzkxMDQ5MDk4Ng==&mid=2247486669&idx=3&sn=ea6d26ae7cb651e5c368f4c73ade228e&chksm=c12be0c8f65c69de739af72d9793838f59ab77bfee36bc2c204f96e2a9e5c6d87dfbbbae698e#rd
仅需一行,可改进所有优化算法:21种混沌映射方法-混沌初始化(附matlab代码)
用于改进所有优化算法:21种混沌映射方法-混沌初始化(附matlab代码)21种混沌映射方法-混沌初始化,适用于所有优化算法https://mp.weixin.qq.com/s?__biz=MzkxMDQ5MDk4Ng==&mid=2247486215&idx=2&sn=58f1a69175b0d6431a4c7cdfa114b84d&chksm=c12be702f65c6e14e6bd1ddc33b9cec74991d93303c325853049b7e4afd09039b13083fa79c5&token=25423484&lang=zh_CN#rd
【有经典,有最新】24种信号分解方法(附matlab代码)
沙场大点兵:24种信号分解方法(附matlab代码)https://mp.weixin.qq.com/s?__biz=MzkxMDQ5MDk4Ng==&mid=2247486001&idx=1&sn=a87c24cb401017a78a90bd1b1439fcb0&chksm=c12be634f65c6f22368b7229a59ac5ef330b89d710c826dbfd1a1c34a02b1dd7e909c7f40d79&token=25423484&lang=zh_CN#rd
【分类新范式】27种一维数据转换成二维图像的方法-matlab代码
沙场大点兵:27种一维数据转换成二维图像的方法-matlab代码https://mp.weixin.qq.com/s?__biz=MzkxMDQ5MDk4Ng==&mid=2247486260&idx=1&sn=81b1970cb89364c0289ccdfb403e5388&chksm=c12be731f65c6e273a85456326b503b7f35d9f035405050932ff1926e0b1bfa8076b1bc2d1f2&token=25423484&lang=zh_CN#rd