47种常用测试函数,对应详细公式!MATLAB代码免费获取!

Logistic-Gauss混合优化算法(LGCO)原理与Matlab实现 混合优化算法通过结合不同数学工具的优势,在解决复杂非线性问题时展现出卓越性能。其核心原理是利用混沌映射维持种群多样性,配合概率分布实现定向搜索,有效平衡探索与开发的矛盾。这类算法在工程优化领域价值显著,特别适用于高维非凸函数优化、智能系统参数调优等场景。以Logistic-Gauss混合优化器(LGCO)为例,该算法融合Logistic混沌映射和高斯圆分布,在CEC2017测试中收敛精度比PSO提升47%,学习效率较GWO提高1.8倍。Matlab实现代码包含动态半径调整和精英保留策略,可直接应用于无人机路 阅读详情
AI摘要

本文介绍了在撰写智能优化算法文章时,不必局限于CEC测试集,而是可以选用实际工程案例并利用多种算法如PSO、SSA、DE、GWO和DBO在非CEC测试函数上进行比较。文章还提供了复现常用47种测试函数的Matlab代码示例,展示了如何生成函数图形和收敛曲线。

关于智能优化算法的文章,80%以上会在文章里介绍经典的CEC测试集函数,然而请问在写文章的时候必须得用这个CEC函数集的函数吗?

回答是:NO!

当你的文章是将改进的智能算法用于实际工程案例的时候,不宜使用过大的篇幅介绍改进的智能算法,因为你还得讲清楚改进的算法用于实际案例时效果如何。

此时怎么解决呢?小淘在查阅了很多论文发现,很多聪明的作者会简单地将智能算法只在几种单峰函数和多峰函数进行比较。这样既能说明清楚改进智能算法的优势,还能控制篇幅。

本篇文章总结常用的47种经典测试函数,有些是在CEC函数集能找到,有些是找不到的。函数集的来源网址:http://www.sfu.ca/~ssurjano/optimization.html

这里只总结常用的CEC函数集!点击这个网址可以看到,一共47种。

这个网址中有非常多的测试函数集,基本上常用的不常用的全在里边了!而且每个函数都有公式说明和对应的理论最小值。简单截几张图:

6b0e8b7f0f382b272837b964d881462b.png

69b46644d3f667ceb2ca070df8efd475.png

1a0f71594bda0a045b1698e1f1f07bdb.png

可以看到,不仅有图片绘制,详细公式,还有理论值,最佳值位置,自变量范围等。这不妥妥的科研宝藏网站!


本篇文章要做的事情就是:复现这些图形,用matlab跑出来,并将47个函数整理成集合,方便智能算法像调用CEC测试集一样调用每个函数!

话不多说,先看结果!

bb6476a0087dc6d75061403c065a284c.png

e57d8034662174cc25e39d5daf853f16.png

7751ddece511b5b63c8f04e37d96e742.png

a06253dfbb7aa791415520b104ddb803.png

4abe856b084e52844716925e6d6fdb33.png

597827e3808cab10c46d5bd2f5c5cf80.png

7202e617e244dd4805c0a8413da7f2f9.png

69badbae6e3e278975eecc28ccc967f7.png

1b06381156ce82820b3e62c664ec9630.png

abc69bfe69fa7f15f83e5a7e2702afed.png

c53dabd7778e5244e0454a97d25ab44d.png

48e56e6c6b2848363d9e4e903e34cda7.png

95df7fc6c0cbba3e43202f801d5d7710.png

9be0222f1087937025d5b603453decd8.png

由于篇幅原因,这里就给大家截这么一些图,其他图片都可以复现,且可以直接采用智能算法调用!

代码展示

clear
clc
close all
warning off
addpath(genpath(pwd));
number='F1'; %选定优化函数,自行替换:F1~F47  
[lower_bound,upper_bound,variables_no,fobj]=Get_Functions_details(number);  % [lb,ub,D,y]:下界、上界、维度、目标函数表达式
pop_size=30;                      % population members 
max_iter=100;                  % maximum number of iteration
%% PSO
[PSO_Best_score,~,PSO_curve]=PSO(pop_size,max_iter,lower_bound,upper_bound,variables_no,fobj);  % Calculating the solution of the given problem using PSO 
display(['The best optimal value of the objective funciton found by PSO  for ' [num2str(number)],'  is : ', num2str(PSO_Best_score)]);
%% SSA
[SSA_Best_score,~,SSA_curve]=SSA(pop_size,max_iter,lower_bound,upper_bound,variables_no,fobj);  % Calculating the solution of the given problem using SSA 
display(['The best optimal value of the objective funciton found by SSA  for ' [num2str(number)],'  is : ', num2str(SSA_Best_score)]);
%% DE
[DE_Best_score,~,DE_curve]=DE(pop_size,max_iter,lower_bound,upper_bound,variables_no,fobj);
display(['The best optimal value of the objective funciton found by DE  for ' [num2str(number)],'  is : ', num2str(DE_Best_score)]);
%% GWO
[GWO_Best_score,~,GWO_curve]=GWO(pop_size,max_iter,lower_bound,upper_bound,variables_no,fobj);
display(['The best optimal value of the objective funciton found by GWO  for ' [num2str(number)],'  is : ', num2str(GWO_Best_score)]);
%% DBO
[DBO_Best_score,~,DBO_curve]=DBO(pop_size,max_iter,lower_bound,upper_bound,variables_no,fobj);
display(['The best optimal value of the objective funciton found by DBO  for ' [num2str(number)],'  is : ', num2str(DBO_Best_score)]);
%% Figure
if strcmp(number,'F45')==1
    disp('☆☆☆官方没给F45的图,因此这个三维图请忽略☆☆☆')
end


figure1 = figure('Color',[1 1 1]);
G1=subplot(1,2,1,'Parent',figure1);
func_plot(number)
title(number)
xlabel('x')
ylabel('y')
zlabel('z')
subplot(1,2,2)
G2=subplot(1,2,2,'Parent',figure1);
CNT=20;
k=round(linspace(1,max_iter,CNT)); %随机选CNT个点
% 注意:如果收敛曲线画出来的点很少,随机点很稀疏,说明点取少了,这时应增加取点的数量,100、200、300等,逐渐增加
% 相反,如果收敛曲线上的随机点非常密集,说明点取多了,此时要减少取点数量
iter=1:1:max_iter;
if ~strcmp(number,'F23') &&~strcmp(number,'F26') %这里是因为这几个函数收敛太快,不适用于semilogy,直接plot
    semilogy(iter(k),PSO_curve(k),'k-o','linewidth',1);
    hold on
    semilogy(iter(k),SSA_curve(k),'c-v','linewidth',1);
    hold on
    semilogy(iter(k),DE_curve(k),'b-^','linewidth',1);
    hold on
    semilogy(iter(k),GWO_curve(k),'m-*','linewidth',1);
    hold on
    semilogy(iter(k),DBO_curve(k),'y-p','linewidth',1);


else
   plot(iter(k),PSO_curve(k),'k-o','linewidth',1);
    hold on
    plot(iter(k),SSA_curve(k),'c-v','linewidth',1);
    hold on
    plot(iter(k),DE_curve(k),'b-^','linewidth',1);
    hold on
    plot(iter(k),GWO_curve(k),'m-*','linewidth',1);
    hold on
    plot(iter(k),DBO_curve(k),'y-p','linewidth',1);
end
grid on;
title('收敛曲线')
xlabel('迭代次数');
ylabel('适应度值');
box on
legend('PSO','SSA','DE','GWO','DBO')
set (gcf,'position', [300,300,800,330])

代码目录如下:

56bb49963bf8fae5835507bf4b68fe56.png

代码获取方式:支付后会显示网盘链接!
基于MATLAB樽海鞘算法SSA(麻雀算法(十一)也简称SSA)的Eggholeer函数优化,测试函数的100种优化方法之十二 樽海鞘算法SSA(麻雀算法也简称SSA,如果想了解麻雀算法,看方法十一)模拟了樽海鞘的聚集成链的生活习性而提出的优化算法,是近几年刚推出的新算法之一。算法将群体分为leader和follower ,leader以全局最优为中心进行搜索,为算法提供了全局搜索能力,保证种群收敛,follower跟随自己的前一个个体,为算法提供了局部搜索能力,保证算法精度。可以看出樽海鞘算法的模型十分简单,实现过程也简单明了,同时算法也有的不错的效果。前期的搜索范围还是比较广泛的,一般陷入局部最优的概率应该也不大。 阅读详情

相关推荐

常用测试函数图像及求解方法(五至八)

常见测试函数Rastrigin,Ackley,Schwefel,Zakharov的函数图像及代码,详细介绍了每个函数的特点,及适用范围,画出了函数图像,准确描述了函数的分布特征

abc991835105的博客 4921

CEC测试函数CEC-Benchmark-Functions-master

cec测试函数 CEC-国际进化计算会议-测试函数 # CEC-benchmark-functions cec2005 cec2010 cec2013 cec2014 cec2017 cec2019 cec2020

智能优化算法:CEC23组常用测试函数公式介绍

智能优化算法性能比较:常用的23组测试函数 文章目录智能优化算法性能比较:常用的23组测试函数1. 单模态的基准测试函数2. 多模态的基准测试函数3. 复合基准测试函数4. 测试函数代码 在智能优化算法的性能比较过程中,经常会需要用到一些测试函数,进行算法的性能比较。虽然CEC测试函数已经更新到2018版,笔者整理了早期常用的23组测试函数公式。归类如下: 1. 单模态的基准测试函数 2. 多模态的基准测试函数 3. 复合基准测试函数 4. 测试函数代码 %% 子函数用于定义表达式 % F1 fun

qq_45955094的博客 2万+

常用32个测试函数

文章目录一、函数列表二、函数图象三、参考文献四、Matlab代码 一、函数列表 注:函数编号以程序为例。 二、函数图象 咦!怎么多了一个?! 三、参考文献 [1] 陈雷,尹钧圣.高斯差分变异和对数惯性权重优化的鲸群算法[J].计算机工程与应用,2021,57(02):77-90. [2] 范千,陈振健,夏樟华.一种基于折射反向学习机制与自适应控制因子的改进樽海鞘群算法[J].哈尔滨工业大学学报,2020,52(10):183-191. 四、Matlab代码 下载地址: ...

心升明月的博客 1万+

基于爬山算法改进的狮群算法优化Eggholder函数,测试函数的100种求解方法之18

狮群算法对初值的要求不高,算法的寻优速度较快,有较强的全局寻优能力,因为狮群的更新方式,如果最优解在搜寻区域的偏中间位置,更容易找到最优解,如果在搜寻区域的变异部分,搜寻比较困难,所以,本文用爬山算法改进狮王的更新方式,通过爬山和跳跃来更新狮王位置,本文通过改进的狮群算法求解测试函数Eggholder,方便验证算法性能,有利于把代码向其他应用方向更替,文章附有代码

abc991835105的博客 362

基于狮群算法优化Eggholder函数,测试函数的100种求解方法之17

狮群算法对初值的要求不高,算法的寻优速度较快,有较强的全局寻优能力,狮群算法的效果类似遗传算法改进粒子群算法,兼顾全局和局部寻优,本文利用狮群算法求解Eggholder函数,文章附有代码和优化结果,代码复制转换后可以直接运行,狮群算法应用方面较多,本文列举了一些应用方向,有需要欢迎留言

abc991835105的博客 444

智能优化算法比较:常用的23组测试函数

CEC(国际进化计算会议) 测试函数

yayedecsdn的博客 3万+

基于自适应模拟退火算法优化Eggholder函数,测试函数的100种求解方法之16

模拟退火算法是近些年,各种建模竞赛种,获奖比例最高的算法之一,模拟退火算法来源于固体退火原理,是一种基于概率的算法,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。它是基于Monte-Carlo迭代求解策略的一种随机寻优算法,其出发点是基于物理中固体物质的退火过程与一般组合优化问题之间的相似性。模拟退火算法从某一较高初温出发,伴随温度参数的不断下降,结合概率突跳特性在解空间中随机寻找目标

abc991835105的博客 564

47种常用测试函数,对应详细公式!MATLAB代码

关于智能优化算法的文章,80%以上会在文章里介绍经典的CEC测试集函数,然而请问在写文章的时候必须得用这个CEC函数集的函数吗?回答是:NO!当你的文章是将改进的智能算法用于实际工程案例的时候,不宜使用过大的篇幅介绍改进的智能算法,因为你还得讲清楚改进的算法用于实际案例时效果如何。此时怎么解决呢?小淘在查阅了很多论文发现,很多聪明的作者会简单地将智能算法只在几种单峰函数和多峰函数进行比较。这样既能...

淘个代码 1569

基于爬山算法改进的樽海鞘算法SSA的Eggholeer函数优化,测试函数的100种优化方法之十三

樽海鞘算法SSA(麻雀算法也简称SSA,如果想了解麻雀算法,看方法十一)模拟了樽海鞘的聚集成链的生活习性而提出的优化算法,是近几年刚推出的新算法之一。算法将群体分为leader和follower ,leader以全局最优为中心进行搜索,为算法提供了全局搜索能力,保证种群收敛,follower跟随自己的前一个个体,为算法提供了局部搜索能力,保证算法精度。可以看出樽海鞘算法的模型十分简单,实现过程也简单明了,同时算法也有的不错的效果。前期的搜索范围还是比较广泛的,一般陷入局部最优的概率应该也不大,基于此,本文用

abc991835105的博客 508

Matlab灰狼+布谷鸟混合优化代码包:含运行脚本、测试函数、收敛图与实操录像

一套开箱即用的Matlab灰狼优化(GWO)与布谷鸟搜索(CS)混合算法实现,包含主程序main.m、10个经典测试函数(Sphere、Rastrigin、Ackley等)、适应度收敛曲线图(a.jpg、.png)、完整屏幕操作录像(0033.avi),以及适配Matlab 2021a的调试环境。混合策略以GWO的层级领导机制动态调整CS的莱维飞行步长,在保证全局探索能力的同时加快局部收敛速度。所有代码模块已通过实际运行验证,支持一键加载、参数修改、结果可视化和迭代过程回放;录像部分逐帧演示如何设置维度/最

b0c1d2的博客 226

改进的智能优化算法合集(原创+复现)

↖加关注这种话银家怎么好意思说出口嘛--声明:对于作者的原创代码,禁止转售倒卖,违者必究!以下代码大部分为作者独家原创,大家可以拿走去水水论文。(为避免与别人重复,可以参考我的16种改进策略,稍作改动)有一些质量较高的代码,可以发一些高质量的期刊,因此标价会稍贵!这样也是为了防止作者呕心沥血写出来的代码烂大街。敬请谅解!代码目录①改进的智能优化算法常用的一些工具CEC2005/2017/2019/...

淘个代码 1711

Matlab版蜣螂优化算法(DBO)工程求解工具包:含可直接运行的完整代码、测试函数、仿真图与中文操作指南

这个Matlab实现的蜣螂优化算法(DBO)工具包,专为工程优化问题设计,开箱即用。里面包含核心算法文件DBO.m、主运行脚本main.m、初始化模块initialization.m,以及完整的基准测试函数集(benchmark_functions.m及其详情说明)。配套PDF文档讲清楚算法原理,中文说明.txt一步步指导怎么运行——只要解压后按提示操作,就能在Matlab 2014a/2019a/2021a上直接跑出结果。所有仿真图和数据已经预生成,不用额外配置环境或调试参数。适合本科生做课程设计、硕士生

mango的博客 245

三重存档粒子群算法(TAPSO)原理与Matlab实现详解

粒子群优化(PSO)作为经典的群体智能算法,通过模拟鸟群觅食行为解决优化问题。针对传统PSO易陷入局部最优的缺陷,研究者提出三重存档机制(TAPSO),通过精英存档保持收敛性、探索存档维持多样性、平衡存档动态调节搜索策略。该算法在IEEE Transactions on Cybernetics发表的研究显示,相比标准PSO在CEC2017测试函数上平均提升47.6%精度,特别适合高维非凸优化和动态环境问题。Matlab实现时需注意向量化计算和存档更新策略,工程应用中可通过调整存档比例和并行计算提升性能。

weixin_30580341的博客 374

Matlab版粒子群优化(PSO)教学实现:含主程序、测试函数与收敛可视化

一套面向初学者的Matlab粒子群优化(PSO)完整实现,包含核心脚本PSO.m和可替换的目标函数fun.m,开箱即用。运行后自动绘制迭代收敛曲线并输出最优解,支持调整粒子数、维度、最大迭代次数及惯性权重策略。内置常见测试函数接口(如Sphere、Rastrigin),用户只需修改fun.m即可切换优化目标。代码结构清晰,关键步骤均有中文注释,覆盖种群初始化、速度与位置更新、适应度评估等全流程逻辑。兼容Matlab R2016a及以上版本,无需额外工具箱,无GUI或并行依赖。适合电子信息、计算机、应用数学等

mac99的博客 186

基本粒子群优化算法(PSO)原理详解与MATLAB完整实现及调参避坑指南

粒子群优化算法(PSO)是智能优化算法中最易上手的入门算法之一,与遗传算法、差分进化算法并称三大经典元启发式方法。它以鸟群觅食行为为灵感,通过速度-位置更新机制在搜索空间中寻找最优解,核心仅需两条公式,数学门槛低,MATLAB实现不过百行。理解速度更新中的惯性项、个体认知项和社会认知项,以及种群规模、惯性权重、学习因子等关键参数的影响,是掌握PSO的基础。该算法广泛用于神经网络权重训练、PID参数整定、路径规划、电力系统调度等工程场景。在Rastrigin等多峰函数上,PSO可能陷入局部最优,需要结合收敛曲

weixin_33483304的博客 285

MOPSO多目标优化原理与MATLAB工程实现

多目标优化是工程决策中的核心挑战,当多个相互冲突的目标(如成本、性能、可靠性)需协同权衡时,传统单目标算法失效。MOPSO(多目标粒子群优化)基于帕累托最优理论,通过非支配排序、外部档案与拥挤度距离等机制,在目标空间中演化出分布均匀、覆盖全面的最优解集。其技术价值在于将主观妥协转化为可计算、可验证、可复现的数学过程,广泛应用于电池设计、电机优化、热管理等真实工业场景。本文聚焦MOPSO在MATLAB环境下的原生实现,深入解析外部档案构建、速度更新重构与目标归一化三大关键技术环节,助力工程师跨越从算法原理到工

weixin_32518317的博客 241

Matlab版MOEA/D多目标优化完整实现:带详细注释、测试用例与Pareto前沿可视化

直接运行就能出结果的MOEA/D算法Matlab代码包,包含权重向量初始化(Init_weights.m)、种群协同进化(evolution.m)、邻域更新(updates.m)、高斯变异扰动(gaussian_mutate.m)、经典测试函数对接(ZDT/DTLZ系列,通过evaluate.m调用)、边界约束处理(fixnew.m)等全部核心模块。main.m为统一入口,一键启动;Init.m和MOEAD类完成结构封装;所有函数逐行中文注释,关键设计点明确说明——比如切比雪夫分解的选择依据、邻域大小设为2

zeta9的博客 217
上一篇: 16种常用智能优化算法改进策略---剩余篇,可用于改进所有智能算法,让小白也会改进智能算法。...
下一篇: 独家原创!融合北方苍鹰与自适应t分布的麻雀优化算法,效果极好!精品力荐!MATLAB代码...
淘个代码_
博客等级 码龄7年 1万+粉丝 504原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

淘个代码_

不想刀我的可以选择爱我

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

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

打赏作者

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

抵扣说明:

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

余额充值