【问题标题】:Supplying fmincon with Hessian使用 Hessian 提供 fmincon
【发布时间】:2015-03-11 12:58:52
【问题描述】:

我试图通过提供梯度向量和 Hessian 矩阵来帮助 fmincon 更快地收敛。我正在使用内点算法,并且我意识到在这种情况下,我必须使用对分配给我的 OPTIOINS 的 HessFcn 的另一个函数的调用来提供 Hessian。我还意识到 fmincon 的 Hessian 是拉格朗日的二阶导数,如等式 14-1 中的here 所述。我应该在计算粗麻布时使用以下函数定义来访问我的拟合参数和 lambda

hessian = hessianfcn(x, lambda)

从这一点开始,我在弄清楚程序方面遇到了一些困难。虽然我的问题有线性约束和上下限,但 lambda 结构是空的,即每当我尝试从 hessianfcn 访问它时,它都会返回:

lambda = 
        eqnonlin: [0x1 double]
      ineqnonlin: [0x1 double]

知道如何解决这个问题吗?

附:我按照here 给出的说明进行操作,直到我故意用一些随机线性约束替换非线性约束,然后我将再次遇到同样的问题(空 lambda 结构)。

【问题讨论】:

    标签: matlab lambda hessian-matrix


    【解决方案1】:

    lambda 不是一个直接值,而是一个可以访问许多信息的结构。 Matlab 告诉您当前 lambda 中有 2 个值。选择你需要的东西

    lambda.eqnonlin(1)
    lambda.ineqnonlin(1)
    

    Here 是使用用户提供的 hessian 的示例

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-04
      相关资源
      最近更新 更多