Quickest way to build solution sensitivity information from Ipopt (sIpopt)

I’m trying to use JuMP and Ipopt to get sensitivity information of the optimal solution to certain parameters. This is functionality that already exists in sIpopt (doi:10.1007/s12532-012-0043-2), but I don’t believe that I can use it directly in JuMP.

I’m trying to investigate the feasibility of reproducing the basic functionality on my own for a problem that I’m trying to solve. There are a few options that I’ve identified.

  1. Derive the equations defining the sensitivity by hand/symbolically. Try to reuse the JuMP AD information and plug into these equations.

  2. The derivative information is already used during the Newton steps in Ipopt. If possible, expose this information somehow, but it’d have to be scaled and conformed back to the form I use in the JuMP model definition.

  3. If all else fails, use numerical approximation.

Apologies if this question is too generic. This area is a bit outside of my comfort zone, so I might also be misunderstanding something. Thanks!

I believe DiffOpt was intended to do that: GitHub - jump-dev/DiffOpt.jl: Differentiating optimization programs w.r.t. program parameters

2 Likes