使用 Hessian 矩阵进行有界优化 (scipy)

Bounded optimization using the Hessian matrix (scipy)

我正在尝试优化少量变量(从 2 到 10 之间的某处)的函数。我想做的是计算有界超立方体上函数的最小值

[0,1] x [0,1] x ... x [0,1]

函数的计算、它的梯度和它的 hessian 都相对简单、快速和准确。

现在,我的问题是:

使用 scipy,我可以使用 scipy.optimize.minimize(..., method='Newton-CG')scipy.optimize.minimize(..., method='TNC') 来计算函数的最小值,但是:

有什么方法可以同时使用两者吗?

这里有几个备选方案:

Mystic,一个通过使用外部约束(我认为是拉格朗日乘数)来实现约束优化的框架。该包使用 scipy.optimize,因此应该可以使用带有附加约束的 Scipy`s 方法。

Ipopt 及其 python 绑定 PyIpopt and CyIpopt. You could look into openopt

通常为曲线拟合而开发,lmfit提供了添加外部约束的可能性。它包含 scipy 中的大多数求解器。

l-bfgs-b 进行有界优化。像任何拟牛顿方法一样,它近似于 Hessian。但这通常比使用真正的 Hessian 更好。