jump-dev / JuMP.jl

Modeling language for Mathematical Optimization (linear, mixed-integer, conic, semidefinite, nonlinear)
http://jump.dev/JuMP.jl/
Other
2.22k stars 393 forks source link

Documentation Request: List whether a solver supports Indicator Constraints #3701

Closed schlichtanders closed 6 months ago

schlichtanders commented 7 months ago

Using DisjunctiveProgramming.jl I was told that Indicator Constraints may actually be what I am looking for.

However unfortunately, Indicator Constraints don't have a bridge to Big-M notation, not are they listed on the solver's summary page whether it is supported or not.

It would be great to either

blegat commented 7 months ago

You should find it in this list: https://jump.dev/JuMP.jl/stable/packages/Gurobi/#MathOptInterface-API However, it seems to be supported in the MOI wrapper of Gurobi but not in this list. @odow will be able to help when the sun starts shining in New Zealand

schlichtanders commented 7 months ago

I was just pointed to the fact, that a bridge actually exists.

I was falsely assuming there is no bridge. Sorry. Probably because I read the Tips and Tricks section where Indicator constraints are mentioned to be only supported by a couple of solvers.

https://jump.dev/JuMP.jl/stable/tutorials/linear/tips_and_tricks/#Indicator-constraints

It would be great if this section is updated/deleted. Plus that the section about Disjunctions gets an alternative implementation using Indicator Constraints.

odow commented 6 months ago

not are they listed on the solver's summary page whether it is supported or not.

This is an oversight on my part. I guess the script I ran didn't catch indicators :cry:

It would be great if this section is updated/deleted

To clarify, what section?

Plus that the section about Disjunctions gets an alternative implementation using Indicator Constraints.

I will add: https://github.com/jump-dev/JuMP.jl/pull/3702

schlichtanders commented 6 months ago

Thank you for your help.

I mean that the Indicator section does not need the Trick2 part, the manual workaround in case a solver does not support it. Instead mention that the MOI bridge already does that, as soon as one restricts the variables to a finite domain.