引言
前期已分享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),或扫描下方二维码关注,以算法名字搜索历史文章即可下载。
点击链接跳转:
360种群优化算法免费下载-matlab
求解cec测试函数-matlab
cec2022测试函使用教程及matlab代码免费下载
绘制cec2017/018/2019/2020/2021/2022函数的三维图像教程,SO EASY!
215种群智能优化算法python库
解决12工程设计优化问题-matlab
求解11种cec测试函数-python
解决30种工程设计优化问题-python
仅需一行,可改进所有优化算法:21种混沌映射方法-混沌初始化(附matlab代码)
【有经典,有最新】24种信号分解方法(附matlab代码)
【分类新范式】27种一维数据转换成二维图像的方法-matlab代码