CEC2017 benchmark function调用接口

CEC2017 benchmark function可以从这里下载。

导师最近给了个课题让我自己研究,跟智能优化算法相关的,必不可免的要用到最新的CEC2017 benchmark function,然而
笔者着实踩了很多坑,第一步编译都差点跪了。

坑一:abs

如果你下载了上面的CEC2017 benchmark function,并试着按照它的指示在matlab窗口运行mex cec17_func.cpp -DWINDOWS

你会发现,编译根本不通过啊摔!!!!!而且错误提醒信息有几页啊摔!(′д` )…彡…彡

然后就会各种怀疑人生,是不是我下的matlab有问题啊,官方给的文件应该没问题才对啊,这个cec17_func.cpp这么长怎么debug啊?

后面我发现只是里面的一个函数调用出错了!什么鬼,官方文档都这么不正规吗?

解决办法:打开cec17_func.cpp,搜索abs,将里面的abs统统改成fabs,对浮点数求绝对值应该用fabs

坑二:This function(F2) has been deleted

编译通过了,试着运行main看看?然后就会提示错误信息:This function(F2) has been deleted.,这又是什么?
matlab为什么会提示这样的信息?然后发现是cec17_func.cpp里把function2注释掉了,输出了这行信息...不知道
为什么要这么做,解决方法就是把那行代码注释掉并且把function2的注释去掉。

坑三:接口如何使用

其实只要知道这里的benchmark function就是用来求 fitness value的这一点再去阅读一下代码,就会很熟悉接口了。

让我们先来看看PSO_func.mmain.m是如何调用cec17_func.cpp的。

先看一下main.m的这一行:

fhd=str2func('cec17_func');

这里用了str2func()函数,fhd成为了cec17_func的handle,之后调用fhd的时候就是在调用cec17_func

再来看PSO_func.

e=feval(fhd,pos',varargin{:});

这里用了一个feval函数,你只需要知道这里返回了当前pos的fitness value就行了,pos'是pos的转置矩阵,
所以pos'是一个DNP(维度种群大小)的矩阵,而varargin{:}是具体使用哪个benchmark function。
那么这个cpp和m的交互是如何实现的呢?具体请查阅mex命令的相关知识。

总结一下上面那段代码的含义:返回pos'的fitness value给e,varargin=1...29,代表着第varargin个benchmark function。

坑四:大规模运算

总算解决了,那么我们可以运行程序了,按照CEC2017的标准,种群大小为100,维度是10,30,100,迭代次数是维度*10000。
在我自己的电脑上跑10维的数据,每个函数跑50遍取均值,我算了一下时间一次实验大概要跑一天一夜...

然后我就去问老师要了一个实验室服务器的账号,远程控制服务器运算,睡觉起来看结果就好了。

转载于:https://www.cnblogs.com/logosG/p/9181837.html

  • 11
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: CEC2017 基准函数是用于测试优化算法性能的一组标准函数。其中包含了针对10、30、50和100维度的四个基准函数。 对于10维度基准函数,CEC2017 提供了10个函数,分别为 F1-F10。这些基准函数涵盖了不同类型的优化问题,如多峰优化问题、线性和非线性约束问题等。每个函数都有一个目标函数和若干约束函数,算法需要在给定的变量范围内找到最优解。 对于30维度基准函数,CEC2017 提供了30个函数,同样涵盖了多种优化问题。这些函数的复杂度更高,对于算法来说更具挑战性。算法需要充分利用每个维度的信息来找到最优解。 对于50维度基准函数,CEC2017 提供了50个函数,其难度和复杂度进一步增加。算法需要在更高维度的情况下进行搜索,并在大量的解空间中找到最优解。 对于100维度基准函数,CEC2017 提供了100个函数,要求算法在更大维度上进行搜索。这对于优化算法来说是一个更大的挑战,需要具备更强的搜索和收敛能力。 CEC2017 的四个维度的基准函数设计用于对算法进行全面和系统的评估。它们可以用于检验算法的性能和稳定性,帮助研究人员了解和改进不同优化算法的特点和能力。同时,它们还可以用于比较不同算法之间的差异和优劣,从而提供了一种客观的评估标准。 ### 回答2: CEC2017基准测试是一个评估优化算法性能的标准测试集。它包括了不同维度的优化问题,如10、30、50和100维。这些问题被设计为具有挑战性,以测试算法在高维空间中的表现能力。 这些基准测试的目的是比较优化算法的效果和效率。在这些问题中,算法需要找到一个在特定维度下最小化目标函数的解。这些目标函数是非线性、非凸函数,具有多个局部最小值。 对于10维问题,基准测试提供了20个不同的优化问题。它们的目标函数形式各异,包括二元函数、线性可分函数等。这些函数可以用来评估算法在低维情况下的性能。 在30维问题中,基准测试提供了10个不同的优化问题。它们涉及到更复杂的目标函数,如旅行商问题、非线性函数等。这些问题可以用来评估算法在中等维度下的性能。 在50和100维问题中,基准测试提供了5个不同的优化问题。它们更具挑战性,算法需要在高维空间中找到最优解。这些问题包括SCH、SDC、F1、F2和F3等。 CEC2017基准测试的结果可以帮助研究人员和工程师选择最合适的优化算法来解决不同维度的问题。通过比较不同算法在这些问题上的表现,我们可以了解它们的优势和局限性,并对算法进行改进和优化。这有助于促进优化算法的发展和应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值