超详细!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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值