diff --git a/src/Bridges/Constraint/det.jl b/src/Bridges/Constraint/det.jl index f6e1ec4fad..20f15d87d8 100644 --- a/src/Bridges/Constraint/det.jl +++ b/src/Bridges/Constraint/det.jl @@ -199,8 +199,8 @@ function subsum( l::Vector{MOI.VariableIndex}, ::Type{T}, ) where {T} - n = length(l) - f = MOIU.operate!(-, T, t, MOIU.operate(sum, T, l)) + rhs = MOI.ScalarAffineFunction(MOI.ScalarAffineTerm.(one(T), l), zero(T)) + f = MOIU.operate!(-, T, t, rhs) return MOIU.normalize_and_add_constraint( model, f, diff --git a/src/Bridges/Constraint/norm_spec_nuc_to_psd.jl b/src/Bridges/Constraint/norm_spec_nuc_to_psd.jl index 2284aa3e84..97b77130d1 100644 --- a/src/Bridges/Constraint/norm_spec_nuc_to_psd.jl +++ b/src/Bridges/Constraint/norm_spec_nuc_to_psd.jl @@ -210,14 +210,13 @@ function bridge_constraint( [U[trimap(i, i)] for i in 1:column_dim], [V[trimap(i, i)] for i in 1:row_dim], ) + rhs = MOI.ScalarAffineFunction( + MOI.ScalarAffineTerm.(one(T), diag_vars), + zero(T), + ) ge_index = MOIU.normalize_and_add_constraint( model, - MOIU.operate( - -, - T, - f_scalars[1], - MOIU.operate!(/, T, MOIU.operate(sum, T, diag_vars), T(2)), - ), + MOIU.operate(-, T, f_scalars[1], MOIU.operate!(/, T, rhs, T(2))), MOI.GreaterThan(zero(T)), allow_modify_function = true, ) diff --git a/src/Bridges/Constraint/norm_to_lp.jl b/src/Bridges/Constraint/norm_to_lp.jl index 120045cb5a..02cbfc3e41 100644 --- a/src/Bridges/Constraint/norm_to_lp.jl +++ b/src/Bridges/Constraint/norm_to_lp.jl @@ -101,7 +101,8 @@ function bridge_constraint( f_scalars = MOIU.eachscalar(f) d = MOI.dimension(s) y = MOI.add_variables(model, d - 1) - ge = MOIU.operate(-, T, f_scalars[1], MOIU.operate(sum, T, y)) + rhs = MOI.ScalarAffineFunction(MOI.ScalarAffineTerm.(one(T), y), zero(T)) + ge = MOIU.operate(-, T, f_scalars[1], rhs) lb = f_scalars[2:d] ub = MOIU.operate(-, T, lb) lb = MOIU.operate!(+, T, lb, MOI.VectorOfVariables(y)) diff --git a/src/Bridges/Constraint/relentr_to_exp.jl b/src/Bridges/Constraint/relentr_to_exp.jl index 0db07a87f3..85c7d4e913 100644 --- a/src/Bridges/Constraint/relentr_to_exp.jl +++ b/src/Bridges/Constraint/relentr_to_exp.jl @@ -23,9 +23,10 @@ function bridge_constraint( d = MOI.dimension(s) v_dim = div(d - 1, 2) y = MOI.add_variables(model, v_dim) + rhs = MOI.ScalarAffineFunction(MOI.ScalarAffineTerm.(one(T), y), zero(T)) ge_index = MOIU.normalize_and_add_constraint( model, - MOIU.operate(-, T, f_scalars[1], MOIU.operate(sum, T, y)), + MOIU.operate(-, T, f_scalars[1], rhs), MOI.GreaterThan(zero(T)), allow_modify_function = true, ) diff --git a/src/Utilities/functions.jl b/src/Utilities/functions.jl index e4e5b1c061..fb82123ba0 100644 --- a/src/Utilities/functions.jl +++ b/src/Utilities/functions.jl @@ -2492,15 +2492,6 @@ function Base.:/(f::Union{MOI.SingleVariable,MOI.VectorOfVariables}, g::Number) return operate(/, typeof(g), f, g) end -## sum -function operate( - ::typeof(sum), - ::Type{T}, - vis::Vector{MOI.VariableIndex}, -) where {T} - return MOI.ScalarAffineFunction(MOI.ScalarAffineTerm.(one(T), vis), zero(T)) -end - #################### Concatenation of MOI functions: `vcat` #################### """ fill_vector(vector::Vector, ::Type{T}, fill_func::Function,