From b4e4407bd359f13cd354b933c18ca57528630ed2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Legat?= Date: Tue, 15 Jun 2021 18:30:24 -0400 Subject: [PATCH 1/2] EMPTY_OPTIMIZER mode after empty! --- src/Utilities/cachingoptimizer.jl | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Utilities/cachingoptimizer.jl b/src/Utilities/cachingoptimizer.jl index 3970cd0e21..9e0738fa46 100644 --- a/src/Utilities/cachingoptimizer.jl +++ b/src/Utilities/cachingoptimizer.jl @@ -270,6 +270,7 @@ function MOI.empty!(m::CachingOptimizer) MOI.empty!(m.model_cache) if m.state == ATTACHED_OPTIMIZER MOI.empty!(m.optimizer) + m.state = EMPTY_OPTIMIZER end m.model_to_optimizer_map = IndexMap() m.optimizer_to_model_map = IndexMap() From 15d2bd1ebc30de216bb74b9df68be6f5fe772f9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Legat?= Date: Wed, 16 Jun 2021 22:18:29 -0400 Subject: [PATCH 2/2] Add tests and doc --- docs/src/submodules/Utilities/overview.md | 5 +++++ test/Utilities/cachingoptimizer.jl | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/docs/src/submodules/Utilities/overview.md b/docs/src/submodules/Utilities/overview.md index 4192bfd9a6..fbeb038084 100644 --- a/docs/src/submodules/Utilities/overview.md +++ b/docs/src/submodules/Utilities/overview.md @@ -199,6 +199,11 @@ with model cache MOIU.GenericModel{Float64,MOIU.ModelFunctionConstraints{Float64 with optimizer MOIU.GenericOptimizer{Float64,MOIU.VectorOfConstraints{MOI.VectorAffineFunction{Float64},MOI.Complements}} ``` +!!! info + Calling `MOI.empty!(model)` also resets the state to `EMPTY_OPTIMIZER`. + So after emptying a model, the modification will only be applied to the + cache. + Use [`Utilities.drop_optimizer`](@ref) to go from any state to `NO_OPTIMIZER`: ```jldoctest pathoptimizer julia> MOI.Utilities.drop_optimizer(model) diff --git a/test/Utilities/cachingoptimizer.jl b/test/Utilities/cachingoptimizer.jl index 9a2f3d0cb2..66ceb85692 100644 --- a/test/Utilities/cachingoptimizer.jl +++ b/test/Utilities/cachingoptimizer.jl @@ -349,6 +349,14 @@ end in mode MANUAL with model cache $(MOIU.Model{Float64}) with optimizer nothing""") + + MOI.empty!(s) + MOIU.reset_optimizer(m, s) + @test MOIU.state(m) == MOIU.EMPTY_OPTIMIZER + MOIU.attach_optimizer(m) + @test MOIU.state(m) == MOIU.ATTACHED_OPTIMIZER + MOI.empty!(m) + @test MOIU.state(m) == MOIU.EMPTY_OPTIMIZER end @testset "CachingOptimizer AUTOMATIC mode" begin @@ -486,6 +494,9 @@ end in mode AUTOMATIC with model cache $(MOIU.Model{Float64}) with optimizer $(MOIU.MockOptimizer{MOIU.Model{Float64}})""") + + MOI.empty!(m) + @test MOIU.state(m) == MOIU.EMPTY_OPTIMIZER end @testset "Constructor with optimizer" begin