semi-continuous constraint

50 views
Skip to first unread message

Jaco Vermaak

unread,
Jun 24, 2022, 6:26:37 AM6/24/22
to mosek
Hi there,

I know that you can model a semi-continuous constraint in a mixed-integer setting as described here:

I was wondering whether it is possible to somewhat generalise this constraint to:

x \in {0} \union [a, b * (1 + gamma)]

In the above x is a k-vector, a and b are k-constants, and gamma is a k-variable that is larger than zero. gamma is also a variable in the problem and acts as a 'slack' variable, i.e. it is non-zero only occasionally to prevent infeasibility due to other constraints in the problem.

I have tried implementing this naively, but you end up having to elementwise multiply the indicator variable with the slack variable, which is not possible. Is there a way to implement this type of constraint?

Many thanks for your help!

Jaco Vermaak

Erling D. Andersen

unread,
Jun 24, 2022, 6:38:32 AM6/24/22
to mosek
Your constraint is

x=0 or a<=x, x<=b(1+gamma)

which is a disjunctive constraint. In Mosek 10.0.beta version we have introduced something called disjunctive constraints that make it easy for you to write that. 
See

https://docs.mosek.com/slides/2021/informs/talk.pdf

This is available in most interfaces we support but not in MATLAB. 

If you try it and are willing to give us some instances we will grateful. We do not have that many test problems with disjunctive constraint yet.





Reply all
Reply to author
Forward
0 new messages