I need to use the following constraint in my CVX_Gurobi optimization problem:

CVX Code:

variables x1 x2 x3 x4 binary

if (x1 + x4) <= 1

x2 + x3 == 0 ;

end

However, CVX does not accept IF-THEN type of constraints. I can convert that constraint to the following analytic one:

x2 + x3 <= 2 * max( x1 + x4 - 1 , 0)

However, the new constraint is not convex since a convex function (instead of a concave function) has fallen in the side of the greater-than-equal-to side.

Any suggestion how I can convert that statement to a convex one?

Thanks,

Nazmul

**1)**

If the first constraint was x_1+x_4<1 then you could introduce an auxiliary binary variable y and use the following linear constraint expressions (this is the Big-M method):

-(x_1+x_4) + 1 \leq M \cdot y; x_2+x_3 \leq M \cdot y. You may see that for each value of y, one expression is valid and the other is redundant. However in your case, I am not sure you can do this.

**2)** If you manage to do a linear reformulation like this, then you will also have a binary variable as well, so the problem would not be convex (although you could solve it by an MILP solver like Gurobi or Mosek).

a.