@@ -21,6 +21,10 @@ Create a model as follows:
2121``` jldoctest
2222julia> model = MOI.Utilities.Model{Float64}()
2323MOIU.Model{Float64}
24+ ├ ObjectiveSense: FEASIBILITY_SENSE
25+ ├ ObjectiveFunctionType: MOI.ScalarAffineFunction{Float64}
26+ ├ NumberOfVariables: 0
27+ └ NumberOfConstraints: 0
2428```
2529
2630## Utilities.UniversalFallback
@@ -36,7 +40,10 @@ fallback and [`Utilities.Model`](@ref) as a generic problem cache:
3640``` jldoctest
3741julia> model = MOI.Utilities.UniversalFallback(MOI.Utilities.Model{Float64}())
3842MOIU.UniversalFallback{MOIU.Model{Float64}}
39- fallback for MOIU.Model{Float64}
43+ ├ ObjectiveSense: FEASIBILITY_SENSE
44+ ├ ObjectiveFunctionType: MOI.ScalarAffineFunction{Float64}
45+ ├ NumberOfVariables: 0
46+ └ NumberOfConstraints: 0
4047```
4148
4249!!! warning
@@ -87,6 +94,10 @@ MathOptInterface.Utilities.GenericOptimizer{T, MathOptInterface.Utilities.Object
8794
8895julia> model = MyNewModel{Float64}()
8996MOIU.GenericOptimizer{Float64, MOIU.ObjectiveContainer{Float64}, MOIU.VariablesContainer{Float64}, MyNewModelFunctionConstraints{Float64}}
97+ ├ ObjectiveSense: FEASIBILITY_SENSE
98+ ├ ObjectiveFunctionType: MOI.ScalarAffineFunction{Float64}
99+ ├ NumberOfVariables: 0
100+ └ NumberOfConstraints: 0
90101```
91102
92103!!! warning
@@ -152,11 +163,19 @@ julia> model = MOI.Utilities.CachingOptimizer(
152163 MOI.Utilities.Model{Float64}(),
153164 PathOptimizer{Float64}(),
154165 )
155- MOIU.CachingOptimizer{MOIU.GenericOptimizer{Float64, MOIU.ObjectiveContainer{Float64}, MOIU.VariablesContainer{Float64}, MOIU.VectorOfConstraints{MOI.VectorAffineFunction{Float64}, MOI.Complements}}, MOIU.Model{Float64}}
156- in state EMPTY_OPTIMIZER
157- in mode AUTOMATIC
158- with model cache MOIU.Model{Float64}
159- with optimizer MOIU.GenericOptimizer{Float64, MOIU.ObjectiveContainer{Float64}, MOIU.VariablesContainer{Float64}, MOIU.VectorOfConstraints{MOI.VectorAffineFunction{Float64}, MOI.Complements}}
166+ MOIU.CachingOptimizer
167+ ├ state: EMPTY_OPTIMIZER
168+ ├ mode: AUTOMATIC
169+ ├ model_cache: MOIU.Model{Float64}
170+ │ ├ ObjectiveSense: FEASIBILITY_SENSE
171+ │ ├ ObjectiveFunctionType: MOI.ScalarAffineFunction{Float64}
172+ │ ├ NumberOfVariables: 0
173+ │ └ NumberOfConstraints: 0
174+ └ optimizer: MOIU.GenericOptimizer{Float64, MOIU.ObjectiveContainer{Float64}, MOIU.VariablesContainer{Float64}, MOIU.VectorOfConstraints{MOI.VectorAffineFunction{Float64}, MOI.Complements}}
175+ ├ ObjectiveSense: FEASIBILITY_SENSE
176+ ├ ObjectiveFunctionType: MOI.ScalarAffineFunction{Float64}
177+ ├ NumberOfVariables: 0
178+ └ NumberOfConstraints: 0
160179```
161180
162181A [ ` Utilities.CachingOptimizer ` ] ( @ref ) may be in one of three possible states:
@@ -175,12 +194,8 @@ Use [`Utilities.attach_optimizer`](@ref) to go from `EMPTY_OPTIMIZER` to
175194``` jldoctest pathoptimizer
176195julia> MOI.Utilities.attach_optimizer(model)
177196
178- julia> model
179- MOIU.CachingOptimizer{MOIU.GenericOptimizer{Float64, MOIU.ObjectiveContainer{Float64}, MOIU.VariablesContainer{Float64}, MOIU.VectorOfConstraints{MOI.VectorAffineFunction{Float64}, MOI.Complements}}, MOIU.Model{Float64}}
180- in state ATTACHED_OPTIMIZER
181- in mode AUTOMATIC
182- with model cache MOIU.Model{Float64}
183- with optimizer MOIU.GenericOptimizer{Float64, MOIU.ObjectiveContainer{Float64}, MOIU.VariablesContainer{Float64}, MOIU.VectorOfConstraints{MOI.VectorAffineFunction{Float64}, MOI.Complements}}
197+ julia> MOI.Utilities.state(model)
198+ ATTACHED_OPTIMIZER::CachingOptimizerState = 2
184199```
185200
186201!!! info
@@ -191,12 +206,8 @@ Use [`Utilities.reset_optimizer`](@ref) to go from `ATTACHED_OPTIMIZER` to
191206``` jldoctest pathoptimizer
192207julia> MOI.Utilities.reset_optimizer(model)
193208
194- julia> model
195- MOIU.CachingOptimizer{MOIU.GenericOptimizer{Float64, MOIU.ObjectiveContainer{Float64}, MOIU.VariablesContainer{Float64}, MOIU.VectorOfConstraints{MOI.VectorAffineFunction{Float64}, MOI.Complements}}, MOIU.Model{Float64}}
196- in state EMPTY_OPTIMIZER
197- in mode AUTOMATIC
198- with model cache MOIU.Model{Float64}
199- with optimizer MOIU.GenericOptimizer{Float64, MOIU.ObjectiveContainer{Float64}, MOIU.VariablesContainer{Float64}, MOIU.VectorOfConstraints{MOI.VectorAffineFunction{Float64}, MOI.Complements}}
209+ julia> MOI.Utilities.state(model)
210+ EMPTY_OPTIMIZER::CachingOptimizerState = 1
200211```
201212
202213!!! info
@@ -208,25 +219,43 @@ Use [`Utilities.drop_optimizer`](@ref) to go from any state to `NO_OPTIMIZER`:
208219``` jldoctest pathoptimizer
209220julia> MOI.Utilities.drop_optimizer(model)
210221
222+ julia> MOI.Utilities.state(model)
223+ NO_OPTIMIZER::CachingOptimizerState = 0
224+
211225julia> model
212- MOIU.CachingOptimizer{MOIU.GenericOptimizer{Float64, MOIU.ObjectiveContainer{Float64}, MOIU.VariablesContainer{Float64}, MOIU.VectorOfConstraints{MOI.VectorAffineFunction{Float64}, MOI.Complements}}, MOIU.Model{Float64}}
213- in state NO_OPTIMIZER
214- in mode AUTOMATIC
215- with model cache MOIU.Model{Float64}
216- with optimizer nothing
226+ MOIU.CachingOptimizer
227+ ├ state: NO_OPTIMIZER
228+ ├ mode: AUTOMATIC
229+ ├ model_cache: MOIU.Model{Float64}
230+ │ ├ ObjectiveSense: FEASIBILITY_SENSE
231+ │ ├ ObjectiveFunctionType: MOI.ScalarAffineFunction{Float64}
232+ │ ├ NumberOfVariables: 0
233+ │ └ NumberOfConstraints: 0
234+ └ optimizer: nothing
217235```
218236
219237Pass an empty optimizer to [ ` Utilities.reset_optimizer ` ] ( @ref ) to go from
220238` NO_OPTIMIZER ` to ` EMPTY_OPTIMIZER ` :
221239``` jldoctest pathoptimizer
222240julia> MOI.Utilities.reset_optimizer(model, PathOptimizer{Float64}())
223241
242+ julia> MOI.Utilities.state(model)
243+ EMPTY_OPTIMIZER::CachingOptimizerState = 1
244+
224245julia> model
225- MOIU.CachingOptimizer{MOIU.GenericOptimizer{Float64, MOIU.ObjectiveContainer{Float64}, MOIU.VariablesContainer{Float64}, MOIU.VectorOfConstraints{MOI.VectorAffineFunction{Float64}, MOI.Complements}}, MOIU.Model{Float64}}
226- in state EMPTY_OPTIMIZER
227- in mode AUTOMATIC
228- with model cache MOIU.Model{Float64}
229- with optimizer MOIU.GenericOptimizer{Float64, MOIU.ObjectiveContainer{Float64}, MOIU.VariablesContainer{Float64}, MOIU.VectorOfConstraints{MOI.VectorAffineFunction{Float64}, MOI.Complements}}
246+ MOIU.CachingOptimizer
247+ ├ state: EMPTY_OPTIMIZER
248+ ├ mode: AUTOMATIC
249+ ├ model_cache: MOIU.Model{Float64}
250+ │ ├ ObjectiveSense: FEASIBILITY_SENSE
251+ │ ├ ObjectiveFunctionType: MOI.ScalarAffineFunction{Float64}
252+ │ ├ NumberOfVariables: 0
253+ │ └ NumberOfConstraints: 0
254+ └ optimizer: MOIU.GenericOptimizer{Float64, MOIU.ObjectiveContainer{Float64}, MOIU.VariablesContainer{Float64}, MOIU.VectorOfConstraints{MOI.VectorAffineFunction{Float64}, MOI.Complements}}
255+ ├ ObjectiveSense: FEASIBILITY_SENSE
256+ ├ ObjectiveFunctionType: MOI.ScalarAffineFunction{Float64}
257+ ├ NumberOfVariables: 0
258+ └ NumberOfConstraints: 0
230259```
231260
232261Deciding when to attach and reset the optimizer is tedious, and you will often
@@ -256,20 +285,32 @@ julia> model = MOI.Utilities.CachingOptimizer(
256285 MOI.Utilities.Model{Float64}(),
257286 MOI.Utilities.MANUAL,
258287 )
259- MOIU.CachingOptimizer{MOI.AbstractOptimizer, MOIU.Model{Float64}}
260- in state NO_OPTIMIZER
261- in mode MANUAL
262- with model cache MOIU.Model{Float64}
263- with optimizer nothing
288+ MOIU.CachingOptimizer
289+ ├ state: NO_OPTIMIZER
290+ ├ mode: MANUAL
291+ ├ model_cache: MOIU.Model{Float64}
292+ │ ├ ObjectiveSense: FEASIBILITY_SENSE
293+ │ ├ ObjectiveFunctionType: MOI.ScalarAffineFunction{Float64}
294+ │ ├ NumberOfVariables: 0
295+ │ └ NumberOfConstraints: 0
296+ └ optimizer: nothing
264297
265298julia> MOI.Utilities.reset_optimizer(model, PathOptimizer{Float64}())
266299
267300julia> model
268- MOIU.CachingOptimizer{MOI.AbstractOptimizer, MOIU.Model{Float64}}
269- in state EMPTY_OPTIMIZER
270- in mode MANUAL
271- with model cache MOIU.Model{Float64}
272- with optimizer MOIU.GenericOptimizer{Float64, MOIU.ObjectiveContainer{Float64}, MOIU.VariablesContainer{Float64}, MOIU.VectorOfConstraints{MOI.VectorAffineFunction{Float64}, MOI.Complements}}
301+ MOIU.CachingOptimizer
302+ ├ state: EMPTY_OPTIMIZER
303+ ├ mode: MANUAL
304+ ├ model_cache: MOIU.Model{Float64}
305+ │ ├ ObjectiveSense: FEASIBILITY_SENSE
306+ │ ├ ObjectiveFunctionType: MOI.ScalarAffineFunction{Float64}
307+ │ ├ NumberOfVariables: 0
308+ │ └ NumberOfConstraints: 0
309+ └ optimizer: MOIU.GenericOptimizer{Float64, MOIU.ObjectiveContainer{Float64}, MOIU.VariablesContainer{Float64}, MOIU.VectorOfConstraints{MOI.VectorAffineFunction{Float64}, MOI.Complements}}
310+ ├ ObjectiveSense: FEASIBILITY_SENSE
311+ ├ ObjectiveFunctionType: MOI.ScalarAffineFunction{Float64}
312+ ├ NumberOfVariables: 0
313+ └ NumberOfConstraints: 0
273314```
274315
275316## Printing
0 commit comments