求最优值



假设我有一个名为foo的程序。它接受一个参数(例如foo 42),然后输出一行包含一个数值(例如2034)。

我想找到输入参数的最优值,因此输出是最小的。目前,我通过(半)二进制搜索手工完成,但这很慢-特别是如果foo很慢。

是否有一个自动工具来找到输入的最佳值?

我们假设值是连续的,并且可以找到一个局部最优,所以使用梯度下降的东西将是理想的(特别是如果它可以接受n个输入)。

作为一个例子,你可以使用foo:

perl -e 'print (1+(shift() - 10203040506)**2)' 

在示例中,我希望工具返回10203040506,因为它给出了最小的值。

第一个版本现在可用:https://gitlab.com/ole.tange/tangetools/-/tree/master/find-optimal

它使用的是Nelder-Mead,它只在浮动上有效。它在整数值上表现很差。

如果你知道一个"Nelder-Mead"对于整数,请告诉我-特别是如果有示例Python代码。

相关内容

  • 没有找到相关文章

最新更新