Class LagrangianHessian

java.lang.Object
de.labathome.trustconstr.LagrangianHessian

public final class LagrangianHessian extends Object
Lagrangian Hessian H_obj(x) + Sum_i v_i * H_{c_i}(x) as a matrix-free LinearOperator-builder. Counterpart to scipy's LagrangianHessian class (_trustregion_constr/minimize_trustregion_constr.py:35).

Construct with the objective Hessian callable and a constraint Hessian-of-Lagrangian callable; invoke apply(Matrix, double[], double[]) to obtain a LinearOperator that evaluates (H_obj + H_constr) * p for a given p.

  • Constructor Details

    • LagrangianHessian

      public LagrangianHessian(int n, Function<Matrix,Matrix> objectiveHess, LagrangianHessian.ConstraintHessian constraintsHess)
      Build a Lagrangian Hessian for an n-variable problem.
      Parameters:
      n - number of decision variables
      objectiveHess - objective Hessian callable x -> H_obj(x)
      constraintsHess - constraint Hessian-of-Lagrangian callable (x, vEq, vIneq) -> Sum_i v_i H_{c_i}(x); may return null when no constraint contributes (the apply() result is then just the objective Hessian)
  • Method Details

    • apply

      public LinearOperator apply(Matrix x, double[] vEq, double[] vIneq)
      Parameters:
      x - current iterate (n x 1)
      vEq - equality multipliers (may be null or empty)
      vIneq - inequality multipliers (may be null or empty)
      Returns:
      matrix-free linear operator that applies (H_obj(x) + H_constr(x, vEq, vIneq)) * p to a given input vector p
    • n

      public int n()
      Returns:
      number of decision variables this Hessian is sized for