Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions docs/src/submodules/Bridges/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,14 +90,14 @@ in a [`Bridges.full_bridge_optimizer`](@ref).

```jldoctest
julia> inner_optimizer = MOI.Utilities.Model{Float64}()
MOIU.Model{Float64}
MOIU.GenericModel{Float64,MOIU.ModelFunctionConstraints{Float64}}

julia> optimizer = MOI.Bridges.full_bridge_optimizer(inner_optimizer, Float64)
MOIB.LazyBridgeOptimizer{MOIU.Model{Float64}}
MOIB.LazyBridgeOptimizer{MOIU.GenericModel{Float64,MOIU.ModelFunctionConstraints{Float64}}}
with 0 variable bridges
with 0 constraint bridges
with 0 objective bridges
with inner model MOIU.Model{Float64}
with inner model MOIU.GenericModel{Float64,MOIU.ModelFunctionConstraints{Float64}}
```

That's all you have to do! Use `optimizer` as normal, and bridging will happen
Expand All @@ -122,12 +122,12 @@ However, this will force the constraint to be bridged, even if the

```jldoctest
julia> inner_optimizer = MOI.Utilities.Model{Float64}()
MOIU.Model{Float64}
MOIU.GenericModel{Float64,MOIU.ModelFunctionConstraints{Float64}}

julia> optimizer = MOI.Bridges.Constraint.SplitInterval{Float64}(inner_optimizer)
MOIB.Constraint.SingleBridgeOptimizer{MOIB.Constraint.SplitIntervalBridge{Float64,F,S,LS,US} where US<:MOI.AbstractSet where LS<:MOI.AbstractSet where S<:MOI.AbstractSet where F<:MOI.AbstractFunction,MOIU.Model{Float64}}
MOIB.Constraint.SingleBridgeOptimizer{MOIB.Constraint.SplitIntervalBridge{Float64,F,S,LS,US} where US<:MOI.AbstractSet where LS<:MOI.AbstractSet where S<:MOI.AbstractSet where F<:MOI.AbstractFunction,MOIU.GenericModel{Float64,MOIU.ModelFunctionConstraints{Float64}}}
with 0 constraint bridges
with inner model MOIU.Model{Float64}
with inner model MOIU.GenericModel{Float64,MOIU.ModelFunctionConstraints{Float64}}

julia> x = MOI.add_variable(optimizer)
MOI.VariableIndex(1)
Expand All @@ -154,14 +154,14 @@ manually construct a [`Bridges.LazyBridgeOptimizer`](@ref).
First, wrap an inner optimizer:
```jldoctest lazy_bridge_optimizer
julia> inner_optimizer = MOI.Utilities.Model{Float64}()
MOIU.Model{Float64}
MOIU.GenericModel{Float64,MOIU.ModelFunctionConstraints{Float64}}

julia> optimizer = MOI.Bridges.LazyBridgeOptimizer(inner_optimizer)
MOIB.LazyBridgeOptimizer{MOIU.Model{Float64}}
MOIB.LazyBridgeOptimizer{MOIU.GenericModel{Float64,MOIU.ModelFunctionConstraints{Float64}}}
with 0 variable bridges
with 0 constraint bridges
with 0 objective bridges
with inner model MOIU.Model{Float64}
with inner model MOIU.GenericModel{Float64,MOIU.ModelFunctionConstraints{Float64}}
```

Then use [`Bridges.add_bridge`](@ref) to add individual bridges:
Expand Down
8 changes: 4 additions & 4 deletions docs/src/submodules/FileFormats/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ To write a model `src` to a [MathOptFormat file](https://jump.dev/MathOptFormat/
use:
```jldoctest fileformats
julia> src = MOI.Utilities.Model{Float64}()
MOIU.Model{Float64}
MOIU.GenericModel{Float64,MOIU.ModelFunctionConstraints{Float64}}

julia> MOI.add_variable(src)
MathOptInterface.VariableIndex(1)
Expand Down Expand Up @@ -115,7 +115,7 @@ guess the format from the file extension. For example:

```jldoctest fileformats
julia> src = MOI.Utilities.Model{Float64}()
MOIU.Model{Float64}
MOIU.GenericModel{Float64,MOIU.ModelFunctionConstraints{Float64}}

julia> dest = MOI.FileFormats.Model(filename = "file.cbf.gz")
A Conic Benchmark Format (CBF) model
Expand All @@ -129,7 +129,7 @@ julia> src_2 = MOI.FileFormats.Model(filename = "file.cbf.gz")
A Conic Benchmark Format (CBF) model

julia> src = MOI.Utilities.Model{Float64}()
MOIU.Model{Float64}
MOIU.GenericModel{Float64,MOIU.ModelFunctionConstraints{Float64}}

julia> dest = MOI.FileFormats.Model(filename = "file.cbf.gz")
A Conic Benchmark Format (CBF) model
Expand Down Expand Up @@ -173,7 +173,7 @@ In addition to [`write_to_file`](@ref) and [`read_from_file`](@ref), you can
read and write directly from `IO` streams using `Base.write` and `Base.read!`:
```jldoctest
julia> src = MOI.Utilities.Model{Float64}()
MOIU.Model{Float64}
MOIU.GenericModel{Float64,MOIU.ModelFunctionConstraints{Float64}}

julia> dest = MOI.FileFormats.Model(format = MOI.FileFormats.FORMAT_MPS)
A Mathematical Programming System (MPS) model
Expand Down
48 changes: 25 additions & 23 deletions docs/src/submodules/Utilities/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ given the extensibility of MOI, this might not cover all use cases.
Create a model as follows:
```jldoctest
julia> model = MOI.Utilities.Model{Float64}()
MOIU.Model{Float64}
MOIU.GenericModel{Float64,MOIU.ModelFunctionConstraints{Float64}}
```

## Utilities.UniversalFallback
Expand All @@ -35,8 +35,8 @@ like [`VariablePrimalStart`](@ref), so JuMP uses a combination of Universal
fallback and [`Utilities.Model`](@ref) as a generic problem cache:
```jldoctest
julia> model = MOI.Utilities.UniversalFallback(MOI.Utilities.Model{Float64}())
MOIU.UniversalFallback{MOIU.Model{Float64}}
fallback for MOIU.Model{Float64}
MOIU.UniversalFallback{MOIU.GenericModel{Float64,MOIU.ModelFunctionConstraints{Float64}}}
fallback for MOIU.GenericModel{Float64,MOIU.ModelFunctionConstraints{Float64}}
```

!!! warning
Expand Down Expand Up @@ -82,9 +82,10 @@ julia> MOI.Utilities.@model(
(MOI.VectorAffineFunction,), # Typed vector functions
true, # <:MOI.AbstractOptimizer?
)
MathOptInterface.Utilities.GenericOptimizer{T,MyNewModelFunctionConstraints{T}} where T

julia> model = MyNewModel{Float64}()
MyNewModel{Float64}
MOIU.GenericOptimizer{Float64,MyNewModelFunctionConstraints{Float64}}
```

!!! warning
Expand All @@ -110,6 +111,7 @@ julia> MOI.Utilities.@model(
(MOI.VectorAffineFunction,), # Typed vector functions
true, # is_optimizer
)
MathOptInterface.Utilities.GenericOptimizer{T,MathOptInterface.Utilities.VectorOfConstraints{MathOptInterface.VectorAffineFunction{T},MathOptInterface.Complements}} where T
```
However, `PathOptimizer` does not support some `SingleVariable`-in-Set
constraints, so we must explicitly define:
Expand Down Expand Up @@ -149,11 +151,11 @@ julia> model = MOI.Utilities.CachingOptimizer(
MOI.Utilities.Model{Float64}(),
PathOptimizer{Float64}(),
)
MOIU.CachingOptimizer{PathOptimizer{Float64},MOIU.Model{Float64}}
MOIU.CachingOptimizer{MOIU.GenericOptimizer{Float64,MOIU.VectorOfConstraints{MOI.VectorAffineFunction{Float64},MOI.Complements}},MOIU.GenericModel{Float64,MOIU.ModelFunctionConstraints{Float64}}}
in state ATTACHED_OPTIMIZER
in mode AUTOMATIC
with model cache MOIU.Model{Float64}
with optimizer PathOptimizer{Float64}
with model cache MOIU.GenericModel{Float64,MOIU.ModelFunctionConstraints{Float64}}
with optimizer MOIU.GenericOptimizer{Float64,MOIU.VectorOfConstraints{MOI.VectorAffineFunction{Float64},MOI.Complements}}
```

A [`Utilities.CachingOptimizer`](@ref) may be in one of three possible states:
Expand All @@ -173,11 +175,11 @@ Use [`Utilities.reset_optimizer`](@ref) to go from `ATTACHED_OPTIMIZER` to
julia> MOI.Utilities.reset_optimizer(model)

julia> model
MOIU.CachingOptimizer{PathOptimizer{Float64},MOIU.Model{Float64}}
MOIU.CachingOptimizer{MOIU.GenericOptimizer{Float64,MOIU.VectorOfConstraints{MOI.VectorAffineFunction{Float64},MOI.Complements}},MOIU.GenericModel{Float64,MOIU.ModelFunctionConstraints{Float64}}}
in state EMPTY_OPTIMIZER
in mode AUTOMATIC
with model cache MOIU.Model{Float64}
with optimizer PathOptimizer{Float64}
with model cache MOIU.GenericModel{Float64,MOIU.ModelFunctionConstraints{Float64}}
with optimizer MOIU.GenericOptimizer{Float64,MOIU.VectorOfConstraints{MOI.VectorAffineFunction{Float64},MOI.Complements}}
```

Use [`Utilities.attach_optimizer`](@ref) to go from `EMPTY_OPTIMIZER` to
Expand All @@ -186,11 +188,11 @@ Use [`Utilities.attach_optimizer`](@ref) to go from `EMPTY_OPTIMIZER` to
julia> MOI.Utilities.attach_optimizer(model)

julia> model
MOIU.CachingOptimizer{PathOptimizer{Float64},MOIU.Model{Float64}}
MOIU.CachingOptimizer{MOIU.GenericOptimizer{Float64,MOIU.VectorOfConstraints{MOI.VectorAffineFunction{Float64},MOI.Complements}},MOIU.GenericModel{Float64,MOIU.ModelFunctionConstraints{Float64}}}
in state ATTACHED_OPTIMIZER
in mode AUTOMATIC
with model cache MOIU.Model{Float64}
with optimizer PathOptimizer{Float64}
with model cache MOIU.GenericModel{Float64,MOIU.ModelFunctionConstraints{Float64}}
with optimizer MOIU.GenericOptimizer{Float64,MOIU.VectorOfConstraints{MOI.VectorAffineFunction{Float64},MOI.Complements}}
```
!!! info
You must be in `ATTACHED_OPTIMIZER` to use [`optimize!`](@ref).
Expand All @@ -200,10 +202,10 @@ Use [`Utilities.drop_optimizer`](@ref) to go from any state to `NO_OPTIMIZER`:
julia> MOI.Utilities.drop_optimizer(model)

julia> model
MOIU.CachingOptimizer{PathOptimizer{Float64},MOIU.Model{Float64}}
MOIU.CachingOptimizer{MOIU.GenericOptimizer{Float64,MOIU.VectorOfConstraints{MOI.VectorAffineFunction{Float64},MOI.Complements}},MOIU.GenericModel{Float64,MOIU.ModelFunctionConstraints{Float64}}}
in state NO_OPTIMIZER
in mode AUTOMATIC
with model cache MOIU.Model{Float64}
with model cache MOIU.GenericModel{Float64,MOIU.ModelFunctionConstraints{Float64}}
with optimizer nothing
```

Expand All @@ -213,11 +215,11 @@ Pass an empty optimizer to [`Utilities.reset_optimizer`](@ref) to go from
julia> MOI.Utilities.reset_optimizer(model, PathOptimizer{Float64}())

julia> model
MOIU.CachingOptimizer{PathOptimizer{Float64},MOIU.Model{Float64}}
MOIU.CachingOptimizer{MOIU.GenericOptimizer{Float64,MOIU.VectorOfConstraints{MOI.VectorAffineFunction{Float64},MOI.Complements}},MOIU.GenericModel{Float64,MOIU.ModelFunctionConstraints{Float64}}}
in state EMPTY_OPTIMIZER
in mode AUTOMATIC
with model cache MOIU.Model{Float64}
with optimizer PathOptimizer{Float64}
with model cache MOIU.GenericModel{Float64,MOIU.ModelFunctionConstraints{Float64}}
with optimizer MOIU.GenericOptimizer{Float64,MOIU.VectorOfConstraints{MOI.VectorAffineFunction{Float64},MOI.Complements}}
```

Deciding when to attach and reset the optimizer is tedious, and you will often
Expand Down Expand Up @@ -247,20 +249,20 @@ julia> model = MOI.Utilities.CachingOptimizer(
MOI.Utilities.Model{Float64}(),
MOI.Utilities.MANUAL,
)
MOIU.CachingOptimizer{MOI.AbstractOptimizer,MOIU.Model{Float64}}
MOIU.CachingOptimizer{MOI.AbstractOptimizer,MOIU.GenericModel{Float64,MOIU.ModelFunctionConstraints{Float64}}}
in state NO_OPTIMIZER
in mode MANUAL
with model cache MOIU.Model{Float64}
with model cache MOIU.GenericModel{Float64,MOIU.ModelFunctionConstraints{Float64}}
with optimizer nothing

julia> MOI.Utilities.reset_optimizer(model, PathOptimizer{Float64}())

julia> model
MOIU.CachingOptimizer{MOI.AbstractOptimizer,MOIU.Model{Float64}}
MOIU.CachingOptimizer{MOI.AbstractOptimizer,MOIU.GenericModel{Float64,MOIU.ModelFunctionConstraints{Float64}}}
in state EMPTY_OPTIMIZER
in mode MANUAL
with model cache MOIU.Model{Float64}
with optimizer PathOptimizer{Float64}
with model cache MOIU.GenericModel{Float64,MOIU.ModelFunctionConstraints{Float64}}
with optimizer MOIU.GenericOptimizer{Float64,MOIU.VectorOfConstraints{MOI.VectorAffineFunction{Float64},MOI.Complements}}
```

## Copy utilities
Expand Down
3 changes: 3 additions & 0 deletions docs/src/submodules/Utilities/reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ Utilities.UniversalFallback

```@docs
Utilities.@model
Utilities.GenericModel
Utilities.GenericOptimizer
Utilities.struct_of_constraint_code
```

### Caching optimizer
Expand Down
1 change: 1 addition & 0 deletions src/Utilities/Utilities.jl
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ include("results.jl")
include("variables.jl")

include("vector_of_constraints.jl")
include("struct_of_constraints.jl")
include("model.jl")
include("parser.jl")
include("mockoptimizer.jl")
Expand Down
Loading