I have Julia 1.1.1 and JuMP 0.19. I am solving a concave maximization problem with linear constraints with Ipopt. I am confused with what is happening to the signs of the Lagrange multipliers:

The correct multipliers are

[0.20964, -0.0655815]

[2.39447, 2.21215, 2.64144, 2.58729, -1.37699e-6]

where the first vector is corresponds to equality constraints, the second to inequalities (all inequalities are in the form <= ).

If I use dual(), I get these vectors:

[-0.209641, 0.0655802]

[-2.39447, -2.21215, -2.64144, -2.58729, 4.53964e-9]

And if I use shadow_price() I get

[0.209641, 0.0655802]

[2.39447, 2.21215, 2.64144, 2.58729, -4.53964e-9]

Iâ€™ve read the documentation a few times, but I find it less than clear, and I still donâ€™t understand whatâ€™s happening.

My provisional conclusion is that I should be using the negatives of the duals.

Is this because Iâ€™m maximizing? And what about the shadow_prices?