diff --git a/src/MOI_wrapper/MOI_wrapper.jl b/src/MOI_wrapper/MOI_wrapper.jl index 3b47923..c9a24e5 100644 --- a/src/MOI_wrapper/MOI_wrapper.jl +++ b/src/MOI_wrapper/MOI_wrapper.jl @@ -101,10 +101,16 @@ function MOI.set( if !MOI.supports(model, param) throw(MOI.UnsupportedAttribute(param)) end - name = string(param.name) - model.params[name] = value - if !(model.silent && name == "logLevel") - Cbc_setParameter(model, name, value) + model.params[param.name] = value + if param.name == "threads" && Sys.iswindows() + @warn( + "Ignoring threads parameter due to known bugs in CBC. Read " * + "https://github.com/jump-dev/Cbc.jl/issues/186 for more details.", + ) + return + end + if !(model.silent && param.name == "logLevel") + Cbc_setParameter(model, param.name, value) end return end @@ -112,7 +118,7 @@ end function MOI.get(model::Optimizer, param::MOI.RawOptimizerAttribute) # TODO: This gives a poor error message if the name of the parameter is # invalid. - return model.params[string(param.name)] + return model.params[param.name] end MOI.supports(::Optimizer, ::MOI.Silent) = true @@ -155,7 +161,7 @@ function MOI.empty!(model::Optimizer) model.termination_status = Cint(-1) model.solve_time = 0.0 for (name, value) in model.params - Cbc_setParameter(model, name, value) + MOI.set(model, MOI.RawOptimizerAttribute(name), value) end if model.silent Cbc_setParameter(model, "logLevel", "0") diff --git a/test/MOI_wrapper.jl b/test/MOI_wrapper.jl index c19e48c..290d139 100644 --- a/test/MOI_wrapper.jl +++ b/test/MOI_wrapper.jl @@ -107,11 +107,6 @@ Test solving a model with the threads parameter set. See issues #112 and #186. """ function test_threads() - if Sys.iswindows() - # This test is broken on Windows with a weird error. - @test_broken 1 == 2 - return - end model = MOI.Utilities.CachingOptimizer( MOI.Utilities.UniversalFallback(MOI.Utilities.Model{Float64}()), MOI.instantiate(Cbc.Optimizer; with_bridge_type = Float64),