From 2aa8e27778a49ef1a6e6f7d7efd1eb9c6d7e57e0 Mon Sep 17 00:00:00 2001 From: Oscar Dowson Date: Wed, 1 Apr 2026 08:27:41 +1300 Subject: [PATCH 1/2] Fix passing kwargs to dual_optimizer and DualOptimizer --- src/MOI_wrapper.jl | 6 +++--- test/Tests/test_MOI_wrapper.jl | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/MOI_wrapper.jl b/src/MOI_wrapper.jl index 801bbfe..b90cbe7 100644 --- a/src/MOI_wrapper.jl +++ b/src/MOI_wrapper.jl @@ -33,7 +33,7 @@ function dual_optimizer( kwargs..., ) where {T<:Number} return () -> - DualOptimizer{T}(MOI.instantiate(optimizer_constructor), kwargs...) + DualOptimizer{T}(MOI.instantiate(optimizer_constructor); kwargs...) end struct DualOptimizer{T,OT<:MOI.ModelLike} <: MOI.AbstractOptimizer @@ -77,7 +77,7 @@ Solver name: Dual model with HiGHS attached ``` """ function DualOptimizer(dual_optimizer::OT; kwargs...) where {OT<:MOI.ModelLike} - return DualOptimizer{Float64}(dual_optimizer, kwargs...) + return DualOptimizer{Float64}(dual_optimizer; kwargs...) end function DualOptimizer{T}( @@ -96,7 +96,7 @@ function DualOptimizer{T}( # discover the type of # MOI.Utilities.CachingOptimizer(MOI.Utilities.Model{T}(), dual_optimizer) OptimizerType = typeof(dual_problem.dual_model) - return DualOptimizer{T,OptimizerType}(dual_problem, kwargs...) + return DualOptimizer{T,OptimizerType}(dual_problem; kwargs...) end DualOptimizer() = error("DualOptimizer must have a solver attached") diff --git a/test/Tests/test_MOI_wrapper.jl b/test/Tests/test_MOI_wrapper.jl index ed6aae4..f9bbf5d 100644 --- a/test/Tests/test_MOI_wrapper.jl +++ b/test/Tests/test_MOI_wrapper.jl @@ -125,4 +125,23 @@ DualOptimizer{Float32,Caching_OptimizerType} end end + + @testset "dual_optimizer_kwargs" begin + constructor = Dualization.dual_optimizer( + HiGHS.Optimizer; + assume_min_if_feasibility = true, + ) + model = MOI.initialize(constructor) + @test model.assume_min_if_feasibility + model = Dualization.DualOptimizer( + HiGHS.Optimizer(); + assume_min_if_feasibility = true, + ) + @test model.assume_min_if_feasibility + model = Dualization.DualOptimizer{Float64}( + HiGHS.Optimizer(); + assume_min_if_feasibility = true, + ) + @test model.assume_min_if_feasibility + end end From aa72ee9d22aeea36511a2f7cffc8446f8221c44e Mon Sep 17 00:00:00 2001 From: Oscar Dowson Date: Wed, 1 Apr 2026 08:54:29 +1300 Subject: [PATCH 2/2] Update --- test/Tests/test_MOI_wrapper.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Tests/test_MOI_wrapper.jl b/test/Tests/test_MOI_wrapper.jl index f9bbf5d..5b926d8 100644 --- a/test/Tests/test_MOI_wrapper.jl +++ b/test/Tests/test_MOI_wrapper.jl @@ -131,7 +131,7 @@ HiGHS.Optimizer; assume_min_if_feasibility = true, ) - model = MOI.initialize(constructor) + model = MOI.instantiate(constructor) @test model.assume_min_if_feasibility model = Dualization.DualOptimizer( HiGHS.Optimizer();