Specifying the Hessian for some (but not all) user-defined operators

In ModelPredictiveControl.jl, I build the nonlinear optimization problem of NonLinMPC using multiple user-defined operators in JuMP.jl. One operator is for the objective function, the other operators appear in the nonlinear equality and inequality constraint functions.

My question is: without relying on the experimental Ipopt._VectorNonlinearOracle feature, is it possible to provide an exact Hessian for only one user-defined operator but not for the others?

I would like to allow providing an exact hessian for the objective function, but not for the nonlinear constraints (since it’s a bit more tricky, needing the Lagragian to be efficient and all). I tried to implement it, but the provided Hessian callback for my objective function was never called. I figured out that since it needs an LBFGS approximation for the nonlinear constraint, JuMP probably ignores my callback and use the approximation for the whole NLP problem.

No. If you are missing the Hessian of any operator, JuMP disables Hessians for the entire model.

1 Like

Alright thanks. I will need to try the new experimental set.

1 Like