Skip to content

Internal order of the constraint multipliers #502

Answered by svigerske
309815765 asked this question in Q&A
Discussion options

You must be logged in to vote

If lower and upper bounds are equal, then the constraint will be converted from lhs <= g(x) <= rhs to g(x) - lhs = 0.
If lower and upper bounds are different (and possibly infinite), then the constraint will be converted from lhs <= g(x) <= rhs to g(x) - s = 0, lhs <= s <= rhs, where s is a slack variable that gets introduced.
See also https://coin-or.github.io/Ipopt/classIpopt_1_1TNLPAdapter.html#details

The bound multiplier lambda for constraints is taken from the bound multiplier of g(x) - lhs = 0 (if lhs==rhs) or g(x) - s = 0 (if lhs != rhs).
So in the latter case, the sign of lambda tells you whether lhs <= g(x) or g(x) <= rhs is active.

Replies: 1 comment 2 replies

Comment options

You must be logged in to vote
2 replies
@309815765
Comment options

@svigerske
Comment options

Answer selected by 309815765
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
2 participants