超详细!CEC2017测试函数最全公式图像介绍与调用方法 Matlab代码免费获取

        声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类智能优化算法及其改进的朋友,可关注我的公众号:强盛机器学习,不定期会有很多免费代码分享~

目录

函数目录

调用方法

公式介绍

完整代码


今天给大家带来一期CEC2017测试函数的代码与公式介绍。CEC是国际进化大会(IEEE Congress on Evolutionary Computation)的简称,后面的数据代表年份。CEC2017则是2017年的出炉的测试函数,这些函数加入了旋转、偏移等操作,防止了过拟合问题,因此很多SCI论文都用到了CEC2017函数。

本期代码免费赠送,需要代码的小伙伴可直接拉到最后!!!

CEC2017共有29个函数(其余网上版本说30个的都是错误版本!其中F2已被官方删除),其中F1-F2为单峰函数、F3-F9为简单多峰函数、F10-F19为混合函数,F20-29为组合函数。维度可选10维、30维、50维、100维。随着维度的增加,该系列函数的求解将变得极其困难,运行速度也将非常缓慢。

函数目录

以下为CEC2017函数的目录:

这里也列举官方生成的部分函数图像供大家参考与感受(F1-F6),首先是以2维度为例的3D函数图:

还有等高线图(F3-F8):

调用方法

这里以PSO算法为例,给小伙伴讲解一下如何使用CEC2017函数,首先,下载文末提供的文件夹,注意一定要全部下载!!

其他cpp、mex文件都属于CEC2017函数内部文件,无需移动。您只需将自己的算法放入文件夹中,我这里以PSO算法为例演示调用。

随后,打开main文件,将所有出现PSO的地方查找替换为自己的算法名称即可,注意需要函数输入输出一致即可调用,这里展示一下部分代码:

%% 清除环境变量
clear
clc
close all
addpath input_data
​
%% 参数设置
Max_iteration = 500;           % 最大迭代次数
N = 30;                        % 种群规模
Function_name = 'F10';         % CEC2017测试函数: 29个测试函数(F1、F3~F30) (F2有问题多余,不要测试它)
% 加载所选基准函数的详细信息
[lb, ub, dim, fobj] = CEC2017(Function_name);
​
%% 优化
% 初始化种群位置
X = initialization(N, dim, ub, lb);
[Best_score, Best_pos, PSO_Curve] = PSO(X, N, Max_iteration, lb, ub, dim, fobj);
​
%% 绘图
% 画出目标函数值变化曲线图
figure;
t = 1:Max_iteration;
semilogy(t, PSO_Curve, 'r-', 'linewidth', 2); 
title(Function_name); 
xlabel('Iteration'); 
ylabel('Best score');
axis fill
% grid on
box on
legend('PSO');
set(gcf,'color','w')
​
%% 显示结果
display(['The optimal solution of ', Function_name, ' is: ', num2str(Best_pos)]);
display(['The optimal value of ', Function_name, ' is : ', num2str(Best_score)]);

可以看到,代码注释非常清晰,函数也改成了大家输入的调用格式,同时,可自行更改函数、最大迭代次数与种群规模,方便大家测试不同的函数。

这里以函数F10,种群规模为30,迭代500次为例,最后,输出迭代曲线图与最优结果:

PSO算法大概在160次达到收敛,命令行窗口也会显示取得的最优值为5805,非常方便,适合新手小白。

公式介绍

很多小伙伴奇怪为啥很多论文里没有CEC2017的公式介绍,那是因为CEC2017的各个函数均由各个基础函数构成。举个例子,单峰和简单多峰函数F1-F9,就是由9个基础函数经过偏移和旋转组成:

而混合函数和组合函数,则是由多个基础函数构成,构成方式如下:

刚刚这张表的N,则代表基础函数的数量:

如果N=4,就表示由4个基础函数组合而成,这也是为什么CEC2017里需要用到mex等复杂文件等原因。

所以,CEC2017通常很难写出确切的表达式。但是,基准函数的公式在CEC2017官方的文件内是提供的,我这边也提供给大家,一共19个:

完整代码

如果需要免费获得文中的完整测试代码,只需点击下方小卡片,再后台回复关键字,不区分大小写:

CEC2017

其他更多免费代码链接:更多免费代码链接

MATLABCEC2017测试函数是一个包含多种复杂优化问题的标准库,它由IEEE Congress on Evolutionary Computation (CEC) 在2017年发布,旨在为研究人员提供评估进化算法性能的一个统一框架。这个库包含了各种类型的问题,如无约束优化、约束优化、多目标优化以及组合优化等,其设计目的是为了测试和比较不同类型优化算法的有效性和效率。 ### CEC2017测试函数的特点: #### 1. 统一标准 CEC2017测试函数提供了一个通用平台,使得不同的研究者和团队可以基于相同的基准对他们的优化算法进行评价。 #### 2. 包含多种难度级别 该测试集包括了从简单到复杂的多项任务,这有助于研究者深入理解并对比算法在不同难度下的性能。 #### 3. 可自定义参数 函数的参数通常是可以调整的,允许研究者根据需要改变维度、搜索空间范围以及其他参数,以此适应不同的研究需求和挑战。 #### 4. 实现多样性的检验 通过在一系列问题上应用算法,并分析它们的表现,可以揭示算法的优点和局限,以及它们在特定场景下的适应能力。 ### 使用MATLAB实现CEC2017测试函数: 如果你正在使用MATLAB进行实验,通常可以直接在MATLAB的文件系统中找到或下载包含这些测试函数的工具箱或库。例如,在MATLAB的内置库中可能会有相应的函数封装,你只需调用指定的函数名称和输入参数即可运行。 下面是一个简单的示例说明如何使用其中一个函数: ```matlab % 导入或加载CEC2017测试函数库 % 假设我们有一个名为cec2017_fcn.m的文件,其中包含了所有测试函数 % 调用某个具体的测试函数,例如cigar函数,该函数是连续优化领域内的经典例子 result = cec2017_fcn('cigar', [5; -3; 1]); disp(result); ``` 这里的`cec2017_fcn`假设是一个能够接收函数名和输入向量作为参数的入口点,返回所求函数值的结果。 ### 相关问题: 1. **如何获取CEC2017测试函数的完整库**?可以通过访问IEEE的官方CEC页面或相关学术资源网站找到获取链接,也可以在GitHub等平台上寻找开源的实现版本。 2. **如何选择合适的CEC2017测试函数来评估我的优化算法**?这取决于你的研究焦点,比如你想测试算法在高维空间、非凸优化还是约束优化方面的能力。考虑算法的设计特点和应用场景,选择与之匹配的测试函数。 3. **在实际应用中如何有效地使用CEC2017测试函数进行算法评估**?除了调用函数计算结果外,还应关注算法的收敛速度、稳定性、解决方案的质量等因素。同时,比较不同的初始条件、参数设置对于算法性能的影响也是很有价值的探索方向。 请注意,上述代码和信息是为了演示目的而构建的,实际操作时可能需要根据提供的库结构和函数定义进行适当的修改和调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值