@@ -21,6 +21,10 @@ Create a model as follows:
21
21
``` jldoctest
22
22
julia> model = MOI.Utilities.Model{Float64}()
23
23
MOIU.Model{Float64}
24
+ ├ ObjectiveSense: FEASIBILITY_SENSE
25
+ ├ ObjectiveFunctionType: MOI.ScalarAffineFunction{Float64}
26
+ ├ NumberOfVariables: 0
27
+ └ NumberOfConstraints: 0
24
28
```
25
29
26
30
## Utilities.UniversalFallback
@@ -36,7 +40,10 @@ fallback and [`Utilities.Model`](@ref) as a generic problem cache:
36
40
``` jldoctest
37
41
julia> model = MOI.Utilities.UniversalFallback(MOI.Utilities.Model{Float64}())
38
42
MOIU.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
40
47
```
41
48
42
49
!!! warning
@@ -87,6 +94,10 @@ MathOptInterface.Utilities.GenericOptimizer{T, MathOptInterface.Utilities.Object
87
94
88
95
julia> model = MyNewModel{Float64}()
89
96
MOIU.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
90
101
```
91
102
92
103
!!! warning
@@ -152,11 +163,19 @@ julia> model = MOI.Utilities.CachingOptimizer(
152
163
MOI.Utilities.Model{Float64}(),
153
164
PathOptimizer{Float64}(),
154
165
)
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
160
179
```
161
180
162
181
A [ ` 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
175
194
``` jldoctest pathoptimizer
176
195
julia> MOI.Utilities.attach_optimizer(model)
177
196
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
184
199
```
185
200
186
201
!!! info
@@ -191,12 +206,8 @@ Use [`Utilities.reset_optimizer`](@ref) to go from `ATTACHED_OPTIMIZER` to
191
206
``` jldoctest pathoptimizer
192
207
julia> MOI.Utilities.reset_optimizer(model)
193
208
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
200
211
```
201
212
202
213
!!! info
@@ -208,25 +219,43 @@ Use [`Utilities.drop_optimizer`](@ref) to go from any state to `NO_OPTIMIZER`:
208
219
``` jldoctest pathoptimizer
209
220
julia> MOI.Utilities.drop_optimizer(model)
210
221
222
+ julia> MOI.Utilities.state(model)
223
+ NO_OPTIMIZER::CachingOptimizerState = 0
224
+
211
225
julia> 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
217
235
```
218
236
219
237
Pass an empty optimizer to [ ` Utilities.reset_optimizer ` ] ( @ref ) to go from
220
238
` NO_OPTIMIZER ` to ` EMPTY_OPTIMIZER ` :
221
239
``` jldoctest pathoptimizer
222
240
julia> MOI.Utilities.reset_optimizer(model, PathOptimizer{Float64}())
223
241
242
+ julia> MOI.Utilities.state(model)
243
+ EMPTY_OPTIMIZER::CachingOptimizerState = 1
244
+
224
245
julia> 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
230
259
```
231
260
232
261
Deciding when to attach and reset the optimizer is tedious, and you will often
@@ -256,20 +285,32 @@ julia> model = MOI.Utilities.CachingOptimizer(
256
285
MOI.Utilities.Model{Float64}(),
257
286
MOI.Utilities.MANUAL,
258
287
)
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
264
297
265
298
julia> MOI.Utilities.reset_optimizer(model, PathOptimizer{Float64}())
266
299
267
300
julia> 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
273
314
```
274
315
275
316
## Printing
0 commit comments