在一句话中(感谢@Brian Borchers),我想最小化函数f(x,y,...),梯度g(x,y,...),受未明确给出的约束,但由计算 f 和 g 的例程返回错误的情况定义。
的域f
不是线性的,改变变量并不简单。我近似了一个盒装约束,其中参数只是偶尔(仍然无限多)落在域之外。
(想想f
和g
作为一个黑盒子,当参数不在域中时它会抛出异常。我只能创建包装器以捕获异常并返回一些值。)
所以,我使用了L-BFGS-B,并且f
在参数不在域中时要非常大。我将g
这些点设置为 1。
在大多数情况下,优化工作正常。然而,有时它会触发像“ABNORMAL_TERMINATION_IN_LNSRCH”这样的错误,我想这只是因为我g
不同意f
那些讨厌的点。
在这种情况下,一般的最佳做法是什么?