-
Notifications
You must be signed in to change notification settings - Fork 87
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
Indicator and SOS to MILP bridges #2316
Labels
Project: constraint programming
Issues relating to constraint programming
Submodule: Bridges
About the Bridges submodule
Type: Enhancement
Milestone
Comments
odow
added
Type: Enhancement
Submodule: Bridges
About the Bridges submodule
Project: constraint programming
Issues relating to constraint programming
labels
Oct 23, 2023
We have
So it might be sufficient to have SOS1ToMILPBridge , and then optionally add bounds to the slack indicator variable if possible.
|
Ah, but this would need |
Closed by #2318 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
Project: constraint programming
Issues relating to constraint programming
Submodule: Bridges
About the Bridges submodule
Type: Enhancement
I talked to @fdabrandao (AMPL) at INFORMS. They have a lot of new stuff for reformulating indicator constraints to MILP. We can't offer the same full flexibility as AMPL, but we could write a few XXXtoMILPBridges, just like we've done for constraint programming.
In all cases,
M
is based on bounds ofx
, and we error if bounds are not present.z --> {a'x <= b}
=>a'x <= b + M(1 - z)
!z --> {a'x <= b}
=>a'x <= b + Mz
z --> {a'x >= b}
=>a'x >= b - M(1 - z)
!z --> {a'x >= b}
=>a'x >= b - Mz
z --> {a'x == b}
=>a'x == b + y
,-M(1-z) <= y <= M(1 - z)
!z --> {a'x == b}
=>a'x == b + y
,-Mz <= y <= Mz
x in SOS1
=>-l_i z_i <= x_i <= u_i z_i
,sum z_i == 1
x in SOS2
=>-l_i (z_i+z_j) <= x_i <= u_i (z_i + z_j)
,sum z_i == 1
cc @glebbelov
The text was updated successfully, but these errors were encountered: