From 2cb6688ef7307e6b3870c6e3857b03f933d70d04 Mon Sep 17 00:00:00 2001 From: Oscar Dowson Date: Fri, 8 Nov 2024 08:51:12 +1300 Subject: [PATCH] Use add_constrained_variable with two sets when adding bounded variables (#3865) --- Project.toml | 2 +- docs/Project.toml | 2 +- src/variables.jl | 20 +++++++++++++++++--- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/Project.toml b/Project.toml index ec52f38bbe9..e9c26a2ebea 100644 --- a/Project.toml +++ b/Project.toml @@ -23,7 +23,7 @@ JuMPDimensionalDataExt = "DimensionalData" DimensionalData = "0.24, 0.25, 0.26.2, 0.27, 0.28" LinearAlgebra = "<0.0.1, 1.6" MacroTools = "0.5" -MathOptInterface = "1.25.2" +MathOptInterface = "1.34.0" MutableArithmetics = "1.1" OrderedCollections = "1" Printf = "<0.0.1, 1.6" diff --git a/docs/Project.toml b/docs/Project.toml index 1d750157221..0de6cf6f551 100644 --- a/docs/Project.toml +++ b/docs/Project.toml @@ -61,7 +61,7 @@ JSON = "0.21" JSONSchema = "1" Literate = "2.8" MarkdownAST = "0.1" -MathOptInterface = "=1.32.0" +MathOptInterface = "=1.34.0" MultiObjectiveAlgorithms = "=1.3.3" PATHSolver = "=1.7.8" ParametricOptInterface = "0.8.1" diff --git a/src/variables.jl b/src/variables.jl index 9fd501b90ae..89959157adb 100644 --- a/src/variables.jl +++ b/src/variables.jl @@ -1981,6 +1981,15 @@ function _moi_add_constrained_variable( return x end +function _moi_add_constrained_variable( + moi_backend::MOI.ModelLike, + ::Nothing, + set::Tuple{MOI.GreaterThan{T},MOI.LessThan{T}}, +) where {T<:Real} + x, _ = MOI.add_constrained_variable(moi_backend, set) + return x +end + function _moi_add_variable( moi_backend, model::GenericModel{T}, @@ -1992,12 +2001,17 @@ function _moi_add_variable( # variables. index = nothing info = v.info - if info.has_lb + if info.has_lb && info.has_ub + set = ( + MOI.GreaterThan{T}(_to_value(T, info.lower_bound, "lower bound")), + MOI.LessThan{T}(_to_value(T, info.upper_bound, "upper bound")), + ) + index = _moi_add_constrained_variable(moi_backend, index, set) + elseif info.has_lb set_lb = MOI.GreaterThan{T}(_to_value(T, info.lower_bound, "lower bound")) index = _moi_add_constrained_variable(moi_backend, index, set_lb) - end - if info.has_ub + elseif info.has_ub set_ub = MOI.LessThan{T}(_to_value(T, info.upper_bound, "upper bound")) index = _moi_add_constrained_variable(moi_backend, index, set_ub) end