@@ -20,7 +20,7 @@ given the extensibility of MOI, this might not cover all use cases.
2020Create a model as follows:
2121``` jldoctest
2222julia> model = MOI.Utilities.Model{Float64}()
23- MOIU.Model {Float64}
23+ MOIU.GenericModel {Float64,MOIU.ModelFunctionConstraints{Float64} }
2424```
2525
2626## Utilities.UniversalFallback
@@ -35,8 +35,8 @@ like [`VariablePrimalStart`](@ref), so JuMP uses a combination of Universal
3535fallback and [ ` Utilities.Model ` ] ( @ref ) as a generic problem cache:
3636``` jldoctest
3737julia> model = MOI.Utilities.UniversalFallback(MOI.Utilities.Model{Float64}())
38- MOIU.UniversalFallback{MOIU.Model {Float64}}
39- fallback for MOIU.Model {Float64}
38+ MOIU.UniversalFallback{MOIU.GenericModel {Float64,MOIU.ModelFunctionConstraints{Float64} }}
39+ fallback for MOIU.GenericModel {Float64,MOIU.ModelFunctionConstraints{Float64} }
4040```
4141
4242!!! warning
@@ -82,9 +82,10 @@ julia> MOI.Utilities.@model(
8282 (MOI.VectorAffineFunction,), # Typed vector functions
8383 true, # <:MOI.AbstractOptimizer?
8484 )
85+ MathOptInterface.Utilities.GenericOptimizer{T,MyNewModelFunctionConstraints{T}} where T
8586
8687julia> model = MyNewModel{Float64}()
87- MyNewModel {Float64}
88+ MOIU.GenericOptimizer {Float64,MyNewModelFunctionConstraints{Float64} }
8889```
8990
9091!!! warning
@@ -110,6 +111,7 @@ julia> MOI.Utilities.@model(
110111 (MOI.VectorAffineFunction,), # Typed vector functions
111112 true, # is_optimizer
112113 )
114+ MathOptInterface.Utilities.GenericOptimizer{T,MathOptInterface.Utilities.VectorOfConstraints{MathOptInterface.VectorAffineFunction{T},MathOptInterface.Complements}} where T
113115```
114116However, ` PathOptimizer ` does not support some ` SingleVariable ` -in-Set
115117constraints, so we must explicitly define:
@@ -149,11 +151,11 @@ julia> model = MOI.Utilities.CachingOptimizer(
149151 MOI.Utilities.Model{Float64}(),
150152 PathOptimizer{Float64}(),
151153 )
152- MOIU.CachingOptimizer{PathOptimizer {Float64}, MOIU.Model {Float64}}
154+ MOIU.CachingOptimizer{MOIU.GenericOptimizer {Float64,MOIU.VectorOfConstraints{MOI.VectorAffineFunction{Float64},MOI.Complements}}, MOIU.GenericModel {Float64,MOIU.ModelFunctionConstraints{Float64} }}
153155in state ATTACHED_OPTIMIZER
154156in mode AUTOMATIC
155- with model cache MOIU.Model {Float64}
156- with optimizer PathOptimizer {Float64}
157+ with model cache MOIU.GenericModel {Float64,MOIU.ModelFunctionConstraints{Float64} }
158+ with optimizer MOIU.GenericOptimizer {Float64,MOIU.VectorOfConstraints{MOI.VectorAffineFunction{Float64},MOI.Complements} }
157159```
158160
159161A [ ` Utilities.CachingOptimizer ` ] ( @ref ) may be in one of three possible states:
@@ -173,11 +175,11 @@ Use [`Utilities.reset_optimizer`](@ref) to go from `ATTACHED_OPTIMIZER` to
173175julia> MOI.Utilities.reset_optimizer(model)
174176
175177julia> model
176- MOIU.CachingOptimizer{PathOptimizer {Float64}, MOIU.Model {Float64}}
178+ MOIU.CachingOptimizer{MOIU.GenericOptimizer {Float64,MOIU.VectorOfConstraints{MOI.VectorAffineFunction{Float64},MOI.Complements}}, MOIU.GenericModel {Float64,MOIU.ModelFunctionConstraints{Float64} }}
177179in state EMPTY_OPTIMIZER
178180in mode AUTOMATIC
179- with model cache MOIU.Model {Float64}
180- with optimizer PathOptimizer {Float64}
181+ with model cache MOIU.GenericModel {Float64,MOIU.ModelFunctionConstraints{Float64} }
182+ with optimizer MOIU.GenericOptimizer {Float64,MOIU.VectorOfConstraints{MOI.VectorAffineFunction{Float64},MOI.Complements} }
181183```
182184
183185Use [ ` Utilities.attach_optimizer ` ] ( @ref ) to go from ` EMPTY_OPTIMIZER ` to
@@ -186,11 +188,11 @@ Use [`Utilities.attach_optimizer`](@ref) to go from `EMPTY_OPTIMIZER` to
186188julia> MOI.Utilities.attach_optimizer(model)
187189
188190julia> model
189- MOIU.CachingOptimizer{PathOptimizer {Float64}, MOIU.Model {Float64}}
191+ MOIU.CachingOptimizer{MOIU.GenericOptimizer {Float64,MOIU.VectorOfConstraints{MOI.VectorAffineFunction{Float64},MOI.Complements}}, MOIU.GenericModel {Float64,MOIU.ModelFunctionConstraints{Float64} }}
190192in state ATTACHED_OPTIMIZER
191193in mode AUTOMATIC
192- with model cache MOIU.Model {Float64}
193- with optimizer PathOptimizer {Float64}
194+ with model cache MOIU.GenericModel {Float64,MOIU.ModelFunctionConstraints{Float64} }
195+ with optimizer MOIU.GenericOptimizer {Float64,MOIU.VectorOfConstraints{MOI.VectorAffineFunction{Float64},MOI.Complements} }
194196```
195197!!! info
196198 You must be in ` ATTACHED_OPTIMIZER ` to use [ ` optimize! ` ] ( @ref ) .
@@ -200,10 +202,10 @@ Use [`Utilities.drop_optimizer`](@ref) to go from any state to `NO_OPTIMIZER`:
200202julia> MOI.Utilities.drop_optimizer(model)
201203
202204julia> model
203- MOIU.CachingOptimizer{PathOptimizer {Float64}, MOIU.Model {Float64}}
205+ MOIU.CachingOptimizer{MOIU.GenericOptimizer {Float64,MOIU.VectorOfConstraints{MOI.VectorAffineFunction{Float64},MOI.Complements}}, MOIU.GenericModel {Float64,MOIU.ModelFunctionConstraints{Float64} }}
204206in state NO_OPTIMIZER
205207in mode AUTOMATIC
206- with model cache MOIU.Model {Float64}
208+ with model cache MOIU.GenericModel {Float64,MOIU.ModelFunctionConstraints{Float64} }
207209with optimizer nothing
208210```
209211
@@ -213,11 +215,11 @@ Pass an empty optimizer to [`Utilities.reset_optimizer`](@ref) to go from
213215julia> MOI.Utilities.reset_optimizer(model, PathOptimizer{Float64}())
214216
215217julia> model
216- MOIU.CachingOptimizer{PathOptimizer {Float64}, MOIU.Model {Float64}}
218+ MOIU.CachingOptimizer{MOIU.GenericOptimizer {Float64,MOIU.VectorOfConstraints{MOI.VectorAffineFunction{Float64},MOI.Complements}}, MOIU.GenericModel {Float64,MOIU.ModelFunctionConstraints{Float64} }}
217219in state EMPTY_OPTIMIZER
218220in mode AUTOMATIC
219- with model cache MOIU.Model {Float64}
220- with optimizer PathOptimizer {Float64}
221+ with model cache MOIU.GenericModel {Float64,MOIU.ModelFunctionConstraints{Float64} }
222+ with optimizer MOIU.GenericOptimizer {Float64,MOIU.VectorOfConstraints{MOI.VectorAffineFunction{Float64},MOI.Complements} }
221223```
222224
223225Deciding when to attach and reset the optimizer is tedious, and you will often
@@ -247,20 +249,20 @@ julia> model = MOI.Utilities.CachingOptimizer(
247249 MOI.Utilities.Model{Float64}(),
248250 MOI.Utilities.MANUAL,
249251 )
250- MOIU.CachingOptimizer{MOI.AbstractOptimizer,MOIU.Model {Float64}}
252+ MOIU.CachingOptimizer{MOI.AbstractOptimizer,MOIU.GenericModel {Float64,MOIU.ModelFunctionConstraints{Float64} }}
251253in state NO_OPTIMIZER
252254in mode MANUAL
253- with model cache MOIU.Model {Float64}
255+ with model cache MOIU.GenericModel {Float64,MOIU.ModelFunctionConstraints{Float64} }
254256with optimizer nothing
255257
256258julia> MOI.Utilities.reset_optimizer(model, PathOptimizer{Float64}())
257259
258260julia> model
259- MOIU.CachingOptimizer{MOI.AbstractOptimizer,MOIU.Model {Float64}}
261+ MOIU.CachingOptimizer{MOI.AbstractOptimizer,MOIU.GenericModel {Float64,MOIU.ModelFunctionConstraints{Float64} }}
260262in state EMPTY_OPTIMIZER
261263in mode MANUAL
262- with model cache MOIU.Model {Float64}
263- with optimizer PathOptimizer {Float64}
264+ with model cache MOIU.GenericModel {Float64,MOIU.ModelFunctionConstraints{Float64} }
265+ with optimizer MOIU.GenericOptimizer {Float64,MOIU.VectorOfConstraints{MOI.VectorAffineFunction{Float64},MOI.Complements} }
264266```
265267
266268## Copy utilities
0 commit comments