Multi-bound Variable

MIDCP
Mar 20, 2022
V

Hello
I need to define a variable with limited domain in discrete parts in cvx
for example variable x that is bounded like
0 <= x <= 1
10 <= x <= 11
but i cant define like above in cvx.
is it possible to have a variable like that in cvx?

M

This can be done as MIDCP

RobPratt provides a general formulation at https://math.stackexchange.com/questions/3961000/decision-variable-must-lie-in-union-of-multiple-disjoint-intervals/3961273

In your example,

variable x    
variable z(2) binary
10*z(2) <= x <= z(1) + 11*z(2)
sum(z) == 1

Note: I corrected a typo in the statement which is now variable z(2) binary

V
Replying to #3

thanks for your answer
but I actually wanted to define a variable with two separate domain so i can simulate binary variable like this:
-1e-6<=x<=1e-6
1-1e-6<=x<=1+1e-6
because I get the error “SDTP3 does not support integer variables.”
if I use:
binary z(2)
I get the same error and It would be useless for me.
I read about this error but I didn’t understand it completely
what is this error about and is there any other way to define binary variable in SDTP3?

J
Replying to #4

Try other solvers.

Solvers

Supported solvers

This version of CVX supports four solvers, each with different capabilities:

Solver name LP QP SOCP SDP GP Integer
SeDuMi Y Y Y Y E N
SDPT3 Y Y Y Y E N
Gurobi Y Y Y N N Y
MOSEK Y Y Y Y Y Y
GLPK Y N N N N Y

(key: Y = Yes, N = No, E = Experimental)

V
Replying to #5

IT worked
thanks so much