这是一组测试函数,可以用来测试全局优化算法的有效性。有些很容易优化(rosenbrock, leon,…),其他几乎不可能(crosslegtable, bukin6,…)。
所有的测试函数都取自[1]、[2]或[3](见下面)。所有函数可以通过两种方式被调用:
[dims, lb, ub, sol, fval_sol] = fun()
(例如,没有输入参数)返回函数的维数,默认的下界和上界,所有全局最小值的解向量和相应的函数值。要计算输入X的函数值,请使用:
val = fun([x1,x2,...,xn])
根据具体函数[有趣](对于大多数函数,n = 2),尺寸[n]。注意单个矢量参数 - 这是通过的,以便轻松将函数插入到在这些功能中插入[n x n]矩阵的全局优化器。
我还包括一个函数来显示大多数功能。这称为ezimage,可以用函数处理参数调用:
ezimage(@himmelblau)(绘制Himmelblau功能)
ezimage(@sinenvsin)(见截图)
......
或者只是如 - 是:
ezimage()
它列出所有函数并等待用户输入。这是为了让你对测试功能所提供的挑战有个初步印象。
未来工作:
-约束的单目标函数
- (约束)多目标函数
来源:
[1] Mishra,Sudhanshu。“排斥粒子群方法的全局优化和性能的一些新的测试功能”。MPRA,2006年8月23日。http://mpra.ub.uni-muenchen.de/2718/
[2] Z.K.银渣。“找到二维峰值”。2004年3月11日。Arxiv预印迹:Arxiv:物理/ 0402085V3
[3] W. Sun,Ya-X。元。“优化理论与方法。非线性编程”。Springer Verlag,2006. ISBN-13:978-0-387-24975-9。
rody Oldenhuis(2021年)。全局优化算法的测试功能(https://github.com/rodyo/fex-testfunctions/releases/tag/v1.5),github。检索到。
代码中的一些评论需要修改。作为示例,Ackley函数的全局点是(0,0),而不是(3,0.5)。
谢谢你,先生