Skip to content

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

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

Feature request: Support for Indicator constraints and SOS1 constraints #564

Closed
jhelgert opened this issue Aug 19, 2021 · 2 comments
Closed
Assignees
Labels
enhancement New feature or request

Comments

@jhelgert
Copy link

jhelgert commented Aug 19, 2021

Hi,

one of my favourite features of solvers like Gurobi, Cplex and SCIP is the support for indicator constraints, i.e. constraints of the form

If z = f, then a^T * x <= b    (1)
If z = f, then a^T * x  = b    (2)
If z = f, then a^T * x >= b    (3) 

where f ∈ {0,1}

It's a convenient way to model if-then decisions in MIPs without resorting to big-M formulations. Gurobi, Cplex and SCIP offer methods to add special constraints (SOS1, Indicator, PWL, ..) and also extend the MPS file format in several ways including Indicator constraints, see here.

Are there any plans to add support for such constraints?

PS: SCIP seems to handle indicator constraints internally by the following reformulation (1), see here:

a^T * x - s <= b,  
          s >= 0, 
      s + z <= 1  ( SOS1(s, z) )
@lgottwald
Copy link
Contributor

lgottwald commented Aug 21, 2021

Hey, yes we plan to add support for indicators and SOS constraints eventually, but not for the first release.

Since indicators can be formulated with big-M formulation that usually perform well we don't see it as an essential feature for the first release.

For SOS constraints we don't see them as useful as long as their special structure is not exploited in the solver which requires a bit more work than just parsing the MPS extensions and is not in the scope of the first release.

@joaquimg
Copy link

joaquimg commented Mar 6, 2022

An extra motivation...
I want to use HiGHS as the default and examples solver in https://github.com/joaquimg/BilevelJuMP.jl (a package for modeling and solving bilevel problems).
However, I use a lot of SOS1, because it's easier for beginners than having them chose big-M's.
My experience is that properly choosing big-M's is usually better for solving, but worse in demonstrations and initial prototyping.
Cbc's SOS1 is way too unreliable, SCIP has weird licensing so having HiGHS would be great!

@jajhall jajhall added the enhancement New feature or request label Mar 25, 2022
@ERGO-Code ERGO-Code locked and limited conversation to collaborators May 11, 2022
@jajhall jajhall converted this issue into discussion #858 May 11, 2022

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

4 participants