diff --git a/src/Cuts/tableau/moi.jl b/src/Cuts/tableau/moi.jl index 83c0b9d..7e4b0de 100644 --- a/src/Cuts/tableau/moi.jl +++ b/src/Cuts/tableau/moi.jl @@ -164,13 +164,21 @@ function build_constraints(model::JuMP.Model, cs::ConstraintSet) nrows, _ = size(cs.lhs) constrs = [] for i = 1:nrows + # Build LHS expression + row = cs.lhs[i, :] + lhs_expr = AffExpr() + for (offset, val) in enumerate(row.nzval) + add_to_expression!(lhs_expr, vars[row.nzind[offset]], val) + end + + # Build JuMP constraint c = nothing if isinf(cs.ub[i]) - c = @build_constraint(cs.lb[i] <= dot(cs.lhs[i, :], vars)) + c = @build_constraint(cs.lb[i] <= lhs_expr) elseif isinf(cs.lb[i]) - c = @build_constraint(dot(cs.lhs[i, :], vars) <= cs.ub[i]) + c = @build_constraint(lhs_expr <= cs.ub[i]) else - c = @build_constraint(cs.lb[i] <= dot(cs.lhs[i, :], vars) <= cs.ub[i]) + c = @build_constraint(cs.lb[i] <= lhs_expr <= cs.ub[i]) end push!(constrs, c) end