From 85742c180df43b02c5fe6bb95fa527d81fc04025 Mon Sep 17 00:00:00 2001 From: odow Date: Thu, 3 Mar 2022 12:01:14 +1300 Subject: [PATCH 1/3] Ignore threads parameter on Windows --- src/MOI_wrapper/MOI_wrapper.jl | 14 ++++++++++---- test/MOI_wrapper.jl | 5 ----- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/MOI_wrapper/MOI_wrapper.jl b/src/MOI_wrapper/MOI_wrapper.jl index 3b47923..99d06d0 100644 --- a/src/MOI_wrapper/MOI_wrapper.jl +++ b/src/MOI_wrapper/MOI_wrapper.jl @@ -101,8 +101,14 @@ function MOI.set( if !MOI.supports(model, param) throw(MOI.UnsupportedAttribute(param)) end - name = string(param.name) - model.params[name] = value + model.params[param.name] = value + if name == "threads" && Sys.iswindows() + @warn( + "Ignoring threads parameter due to known bugs in Cbc.jl. Read " * + "https://github.com/jump-dev/Cbc.jl/issues/186 for more details.", + ) + return + end if !(model.silent && name == "logLevel") Cbc_setParameter(model, name, value) 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), From da614a9eab992a8c4f184bd463f8b145af1d8f03 Mon Sep 17 00:00:00 2001 From: Oscar Dowson Date: Thu, 3 Mar 2022 12:02:17 +1300 Subject: [PATCH 2/3] Update MOI_wrapper.jl --- src/MOI_wrapper/MOI_wrapper.jl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/MOI_wrapper/MOI_wrapper.jl b/src/MOI_wrapper/MOI_wrapper.jl index 99d06d0..848c7a4 100644 --- a/src/MOI_wrapper/MOI_wrapper.jl +++ b/src/MOI_wrapper/MOI_wrapper.jl @@ -102,15 +102,15 @@ function MOI.set( throw(MOI.UnsupportedAttribute(param)) end model.params[param.name] = value - if name == "threads" && Sys.iswindows() + if param.name == "threads" && Sys.iswindows() @warn( "Ignoring threads parameter due to known bugs in Cbc.jl. Read " * "https://github.com/jump-dev/Cbc.jl/issues/186 for more details.", ) return end - if !(model.silent && name == "logLevel") - Cbc_setParameter(model, name, value) + if !(model.silent && param.name == "logLevel") + Cbc_setParameter(model, param.name, value) end return end From 16a1d747115f3a693c8e062d0b6c06e61800b67a Mon Sep 17 00:00:00 2001 From: Oscar Dowson Date: Thu, 3 Mar 2022 12:07:19 +1300 Subject: [PATCH 3/3] Update src/MOI_wrapper/MOI_wrapper.jl --- src/MOI_wrapper/MOI_wrapper.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/MOI_wrapper/MOI_wrapper.jl b/src/MOI_wrapper/MOI_wrapper.jl index 848c7a4..c9a24e5 100644 --- a/src/MOI_wrapper/MOI_wrapper.jl +++ b/src/MOI_wrapper/MOI_wrapper.jl @@ -104,7 +104,7 @@ function MOI.set( model.params[param.name] = value if param.name == "threads" && Sys.iswindows() @warn( - "Ignoring threads parameter due to known bugs in Cbc.jl. Read " * + "Ignoring threads parameter due to known bugs in CBC. Read " * "https://github.com/jump-dev/Cbc.jl/issues/186 for more details.", ) return