Gurobi added indicator constraints since version 7.0. CPLEX already had them a few versions ago. What would it take to get indicator constraints in JuMP. I know that Gurobi.jl should wrap the function but I don't what else should happen in JuMP or the intermediate layers (MathProgBase maybe?). The goal would be to have a syntax like
@indicatorconstraint(m, ind[i in 1:3], x[i] = 1 => sum(y[i,j] for j in J) <= b[j])
Which would translate to a call to GRBaddgenconstrIndicator (or the corresponding CPLEX function). This would also enable an easy extension for disjunctions.
block1 = Block()
block2 = Block()
@disjunction(m, [block1, block2])