You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The dual of a >= (MOI.GreaterThan / MOI.Nonnegatives) constraint is non-negative, because the dual cone of MOI.Nonnegatives is MOI.Nonnegatives.
The dual of a <= (MOI.LessThan / MOI.Nonpositives) constraint is non-positive, because the dual cone of MOI.Nonpositives is MOI.Nonpositives
The dual of a == constraint is free, and the sign depends on which "side" of the equality is binding (see two points above)
It has been a while since I needed to remember the details of Ipopt, but from memory, the dual of the constraint rows (.mult_g) had the opposite convention to the variable bounds (.mult_x_L and .mult_x_U)?
We are trying to understand the dual sign changes in the Ipopt wrapper.
I.e., How the dual multiplier
Ipopt.jl/src/MOI_wrapper.jl
Line 1325 in 4c15646
is used depending on each constraint / bound type: e.g.,
Ipopt.jl/src/MOI_wrapper.jl
Line 1340 in 4c15646
Can we have some line comments for each case explaining the reasoning?
The text was updated successfully, but these errors were encountered: