diff --git a/Project.toml b/Project.toml index a696d4a..1796d30 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Gurobi" uuid = "2e9cd046-0924-5485-92f1-d5272153d98b" repo = "https://github.com/jump-dev/Gurobi.jl" -version = "1.0.2" +version = "1.0.3" [deps] LazyArtifacts = "4af54fe1-eca0-43a8-85a7-787d91b784e3" diff --git a/src/MOI_wrapper/MOI_wrapper.jl b/src/MOI_wrapper/MOI_wrapper.jl index 4fdb053..4a97ea9 100644 --- a/src/MOI_wrapper/MOI_wrapper.jl +++ b/src/MOI_wrapper/MOI_wrapper.jl @@ -651,7 +651,8 @@ function MOI.set(model::Optimizer, raw::MOI.RawOptimizerAttribute, value) @assert param_type == 3 GRBsetstrparam(env, param, value) end - return _check_ret(env, ret) + _check_ret(env, ret) + return end function MOI.get(model::Optimizer, raw::MOI.RawOptimizerAttribute) @@ -681,13 +682,19 @@ function MOI.get(model::Optimizer, raw::MOI.RawOptimizerAttribute) end end -function MOI.set(model::Optimizer, ::MOI.TimeLimitSec, limit::Real) - MOI.set(model, MOI.RawOptimizerAttribute("TimeLimit"), limit) +function MOI.set( + model::Optimizer, + ::MOI.TimeLimitSec, + limit::Union{Real,Nothing}, +) + float_limit = convert(Float64, something(limit, GRB_INFINITY)) + MOI.set(model, MOI.RawOptimizerAttribute("TimeLimit"), float_limit) return end function MOI.get(model::Optimizer, ::MOI.TimeLimitSec) - return MOI.get(model, MOI.RawOptimizerAttribute("TimeLimit")) + limit = MOI.get(model, MOI.RawOptimizerAttribute("TimeLimit")) + return limit == GRB_INFINITY ? nothing : limit end MOI.supports_incremental_interface(::Optimizer) = true diff --git a/test/MOI/MOI_wrapper.jl b/test/MOI/MOI_wrapper.jl index f254ba9..0b18296 100644 --- a/test/MOI/MOI_wrapper.jl +++ b/test/MOI/MOI_wrapper.jl @@ -857,6 +857,19 @@ function test_modify_after_delete_objective_plural() return end +function test_attribute_TimeLimitSec() + model = Gurobi.Optimizer(GRB_ENV) + @test MOI.supports(model, MOI.TimeLimitSec()) + @test MOI.get(model, MOI.TimeLimitSec()) === nothing + MOI.set(model, MOI.TimeLimitSec(), 0.0) + @test MOI.get(model, MOI.TimeLimitSec()) == 0.0 + MOI.set(model, MOI.TimeLimitSec(), nothing) + @test MOI.get(model, MOI.TimeLimitSec()) === nothing + MOI.set(model, MOI.TimeLimitSec(), 1.0) + @test MOI.get(model, MOI.TimeLimitSec()) == 1.0 + return +end + end TestMOIWrapper.runtests()