对于无导数优化器,似乎有两种主要的测试函数:
- 像Rosenbrock函数 ff 这样的 单线,带有起点
- 带有插值器的一组真实数据点
是否可以将10d Rosenbrock与任何实际的10d问题进行比较?
一个人可以用多种方式进行比较:描述局部极小值的结构,
或者在Rosenbrock上和一些实际问题上运行优化器ABC;
但是这两者似乎都很困难。
(也许理论家和实验者只是两种截然不同的文化,所以我要求一种嵌合体吗?)
也可以看看:
- scicomp.SE问题:在哪里可以获取用于测试算法/例程的良好数据集/测试问题?
- 胡克(Hooker)的《测试启发式方法:我们全错了》令人发指:“对竞争的重视……告诉我们哪种算法更好,但为什么却不行。”
(在2014年9月增补):
BOBYQA PRAXIS SBPLX从:小区下面从10个随机起始点比较在图8d 14个测试功能3种DFO算法NLOpt
14 N维测试功能,Python的下gist.github 从这个Matlab的由A. 每个函数的边界框中的Hedar × 10个均匀随机的起点。
例如,在Ackley上,第一行显示SBPLX最好,PRAXIS糟糕;在Schwefel上,右下方的面板显示SBPLX在第5个随机起点上找到了最小值。
总体而言,BOBYQA在1,PRAXIS,5和SBPLX(〜具有重新启动功能的Nelder-Mead)上最好,在13个测试功能中有7个,并且Powersum值得一提。YMMV!约翰逊特别指出:“我建议您在全局优化中不要使用函数值(ftol)或参数公差(xtol)。”
结论:不要把所有的钱都花在一匹马或一项测试功能上。