From abd094be9f4524b597f2cb729400856c92cb137a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Legat?= Date: Tue, 19 Dec 2023 13:20:51 +0100 Subject: [PATCH 1/4] Ignore SlackBridgePrimalDualStart for non-Slack bridge --- src/Bridges/Objective/bridges/slack.jl | 9 +++++++++ test/Bridges/Objective/slack.jl | 13 +++++++++++++ 2 files changed, 22 insertions(+) diff --git a/src/Bridges/Objective/bridges/slack.jl b/src/Bridges/Objective/bridges/slack.jl index 5b45599967..1b9a1c56be 100644 --- a/src/Bridges/Objective/bridges/slack.jl +++ b/src/Bridges/Objective/bridges/slack.jl @@ -199,6 +199,15 @@ end # Pretend that every model supports, and silently skip in set if unsupported MOI.supports_fallback(::MOI.ModelLike, ::SlackBridgePrimalDualStart) = true +function MOI.throw_set_error_fallback( + ::MOI.ModelLike, + ::SlackBridgePrimalDualStart, + ::AbstractBridge, + ::Nothing, +) + return # Silently ignore for other bridges +end + function MOI.set( model::MOI.ModelLike, ::SlackBridgePrimalDualStart, diff --git a/test/Bridges/Objective/slack.jl b/test/Bridges/Objective/slack.jl index 9b1007c7b0..c279c26716 100644 --- a/test/Bridges/Objective/slack.jl +++ b/test/Bridges/Objective/slack.jl @@ -514,6 +514,19 @@ function test_deletion_of_variable_in_slacked_objective() return end +function test_SlackBridgePrimalDualStart_non_slack() + inner = MOI.Utilities.MockOptimizer( + MOI.Utilities.UniversalFallback(MOI.Utilities.Model{Float64}()), + ) + # Should ignore without erroring + MOI.set(inner, MOI.Bridges.Objective.SlackBridgePrimalDualStart(), nothing) + model = MOI.Bridges.Objective.Functionize{Float64}(inner) + x = MOI.add_variable(model) + MOI.set(model, MOI.ObjectiveFunction{typeof(x)}(), x) + # Should ignore without erroring + MOI.set(model, MOI.Bridges.Objective.SlackBridgePrimalDualStart(), nothing) +end + function test_SlackBridgePrimalDualStart() inner = MOI.Utilities.MockOptimizer( MOI.Utilities.UniversalFallback(MOI.Utilities.Model{Float64}()), From e48390db0a2198edb5d1fc8a8207807572fac5fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Legat?= Date: Tue, 19 Dec 2023 13:23:59 +0100 Subject: [PATCH 2/4] Fix format --- test/Bridges/Objective/slack.jl | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/test/Bridges/Objective/slack.jl b/test/Bridges/Objective/slack.jl index c279c26716..f851ea9391 100644 --- a/test/Bridges/Objective/slack.jl +++ b/test/Bridges/Objective/slack.jl @@ -524,7 +524,11 @@ function test_SlackBridgePrimalDualStart_non_slack() x = MOI.add_variable(model) MOI.set(model, MOI.ObjectiveFunction{typeof(x)}(), x) # Should ignore without erroring - MOI.set(model, MOI.Bridges.Objective.SlackBridgePrimalDualStart(), nothing) + return MOI.set( + model, + MOI.Bridges.Objective.SlackBridgePrimalDualStart(), + nothing, + ) end function test_SlackBridgePrimalDualStart() From 80b0ac5362869bf640ba331f9f7c2acb0b45eb55 Mon Sep 17 00:00:00 2001 From: Oscar Dowson Date: Wed, 20 Dec 2023 09:46:27 +1300 Subject: [PATCH 3/4] Update slack.jl --- test/Bridges/Objective/slack.jl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/Bridges/Objective/slack.jl b/test/Bridges/Objective/slack.jl index f851ea9391..a771e69506 100644 --- a/test/Bridges/Objective/slack.jl +++ b/test/Bridges/Objective/slack.jl @@ -524,11 +524,12 @@ function test_SlackBridgePrimalDualStart_non_slack() x = MOI.add_variable(model) MOI.set(model, MOI.ObjectiveFunction{typeof(x)}(), x) # Should ignore without erroring - return MOI.set( + MOI.set( model, MOI.Bridges.Objective.SlackBridgePrimalDualStart(), nothing, ) + return end function test_SlackBridgePrimalDualStart() From 943805a072dd90a2c3ec0e9bafa9a8a2f9f8e64b Mon Sep 17 00:00:00 2001 From: Oscar Dowson Date: Wed, 20 Dec 2023 10:16:27 +1300 Subject: [PATCH 4/4] Update slack.jl --- test/Bridges/Objective/slack.jl | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/test/Bridges/Objective/slack.jl b/test/Bridges/Objective/slack.jl index a771e69506..b52891c56f 100644 --- a/test/Bridges/Objective/slack.jl +++ b/test/Bridges/Objective/slack.jl @@ -524,11 +524,7 @@ function test_SlackBridgePrimalDualStart_non_slack() x = MOI.add_variable(model) MOI.set(model, MOI.ObjectiveFunction{typeof(x)}(), x) # Should ignore without erroring - MOI.set( - model, - MOI.Bridges.Objective.SlackBridgePrimalDualStart(), - nothing, - ) + MOI.set(model, MOI.Bridges.Objective.SlackBridgePrimalDualStart(), nothing) return end