diff --git a/src/MOI_wrapper.jl b/src/MOI_wrapper.jl index c6d7ea4..c74abb8 100644 --- a/src/MOI_wrapper.jl +++ b/src/MOI_wrapper.jl @@ -54,7 +54,7 @@ function DualOptimizer(dual_optimizer::OT) where {OT <: MOI.ModelLike} end function DualOptimizer{T}(dual_optimizer::OT) where {T, OT <: MOI.ModelLike} - dual_problem = DualProblem{T}(MOIB.full_bridge_optimizer(MOIU.CachingOptimizer(DualizableModel{T}(), dual_optimizer), T)) + dual_problem = DualProblem{T}(MOIB.full_bridge_optimizer(MOIU.CachingOptimizer(MOIU.UniversalFallback(DualizableModel{T}()), dual_optimizer), T)) # discover the type of MOIU.CachingOptimizer(DualizableModel{T}(), dual_optimizer) OptimizerType = typeof(dual_problem.dual_model) return DualOptimizer{T, OptimizerType}(dual_problem) @@ -216,6 +216,9 @@ function MOI.get(optimizer::DualOptimizer, ::MOI.DualStatus) return MOI.get(optimizer.dual_problem.dual_model, MOI.PrimalStatus()) end +function MOI.set(optimizer::DualOptimizer, attr::MOI.AbstractOptimizerAttribute, value) + return MOI.set(optimizer.dual_problem.dual_model, attr, value) +end function MOI.get(optimizer::DualOptimizer, attr::Union{MOI.AbstractModelAttribute, MOI.AbstractOptimizerAttribute}) return MOI.get(optimizer.dual_problem.dual_model, attr) end diff --git a/test/Tests/test_MOI_wrapper.jl b/test/Tests/test_MOI_wrapper.jl index 631806a..910fa69 100644 --- a/test/Tests/test_MOI_wrapper.jl +++ b/test/Tests/test_MOI_wrapper.jl @@ -71,6 +71,13 @@ end @testset "attributes" begin + for optimizer in [dual_conic_optimizer; dual_linear_optimizer] + before = MOI.get(optimizer, MOI.Silent()) + MOI.set(optimizer, MOI.Silent(), !before) + @test MOI.get(optimizer, MOI.Silent()) == !before + MOI.set(optimizer, MOI.Silent(), before) + @test MOI.get(optimizer, MOI.Silent()) == before + end for i in eachindex(dual_conic_optimizer) @test MOI.get(dual_conic_optimizer[i], MOI.SolverName()) == "Dual model with $(MOI.get(primal_conic_optimizer[i], MOI.SolverName())) attached"