我正在尝试对一维黑盒函数进行无导数最小化。到目前为止,我一直在使用 NLopt 中实现的 BOBYQA。函数的形状如下所示:

显然,在这里给出一个好的初步猜测将有很大帮助,因为我可以避免图形右侧令人讨厌的平坦区域。然而,有时一个好的初始猜测是不可用的,它可能最终出现在平坦区域,因此永远找不到最小值。
- 是否有任何提示/技巧可以完全避开/避开平坦区域?
- 一个简单的斐波那契/黄金分割搜索会更好吗?
- 还是我的时间最好花在做出好的初步猜测上?
我正在尝试对一维黑盒函数进行无导数最小化。到目前为止,我一直在使用 NLopt 中实现的 BOBYQA。函数的形状如下所示:

显然,在这里给出一个好的初步猜测将有很大帮助,因为我可以避免图形右侧令人讨厌的平坦区域。然而,有时一个好的初始猜测是不可用的,它可能最终出现在平坦区域,因此永远找不到最小值。
以下适用于任何维度:
如果您的初始猜测不佳仅(但在完全平坦区域之外),最小化为了有一些小,调用结果, 并以强递减的序列迭代的。在很多情况下已经可以了。
在您的特定情况下,您可以考虑将通过将问题替换为以下内容来改变变量:find以便是最小的。本质上,您将长尾压缩到右侧,从而使其梯度更陡峭。