-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
KKT conditions using Dualization #61
Comments
💯 for this.
Vote for Complementarity constraints. I talked to M. Ferris about this and we're super keen to be able to solve KKT's with PATH. But we have to be a little careful about how we do the formulation. Take a read of the pitfalls section. Essentially, we need to make sure to write [Ax - b; s] in Complements() instead of [b - Ax; s] in Complements() In addition, while it makes sense to convert to the standard form |
In some cases (if you know bounds on your primal and dual expression), rewriting using big Ms & binaries can be a decent option, for which having the two expressions can be easier. for i in eachindex(kkt_results.complementarity_pairs)
(primal_expr, dual_expr) = kkt_results.complementarity_pairs[i]
(Mp, Md) = bounds[i]
z[i] = @variable(m, Bin)
@constraint(m, 0 <= primal_expr <= Mp * z[i])
@constraint(m, 0 <= dual_expr <= Md * (1 - z[i]))
end |
Some of it was done in: https://github.com/joaquimg/BilevelJuMP.jl |
Considered handled by #67 or do we leave this open? |
Don't know if it is interesting to have a function |
Specifying KKT conditions of a problem using Dualization could be interesting, we have most of the bricks already in place. Given a primal:
Yielding a dual:
The KKT can be expressed with primal feasibility, dual feasibility and complementarity. The first two parts can be expressed with standard convex constraints. The last one being less trivial, two options would be:
[(x_j, s_j), j in 1..n]
The text was updated successfully, but these errors were encountered: