我试图通过提供梯度向量和 Hessian 矩阵来帮助 fmincon 更快地收敛。我正在使用内点算法,并且我意识到在这种情况下,我必须使用对分配给我的 OPTIOINS 的 HessFcn 的另一个函数的调用来提供 Hessian。我还意识到 fmincon 的 Hessian 是拉格朗日的二阶导数,如等式14-1 中所述。我应该在计算粗麻布时使用以下函数定义来访问我的拟合参数和 lambda
hessian = hessianfcn(x, lambda)
从这一点开始,我在弄清楚程序方面遇到了一些困难。虽然我的问题有线性约束和上下限,但 lambda 结构是空的,即每当我尝试从 hessianfcn 访问它时,它都会返回:
lambda =
eqnonlin: [0x1 double]
ineqnonlin: [0x1 double]
知道如何解决这个问题吗?
PS 我按照这里给出的说明进行操作,直到我故意用一些随机线性约束替换非线性约束,然后我将再次遇到同样的问题(空 lambda 结构)。