-
Notifications
You must be signed in to change notification settings - Fork 10
Changes from 6 commits
2ddf536
57e8709
6635790
bd6ca68
210d347
1fb52ea
c407096
1d84e4f
645f9e2
754fdc7
2177186
3a5a42d
ad51801
17f5ac2
03b1ccf
e82075a
b0765d8
c948f35
30f2fc2
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,28 @@ | ||
# LinQuadOptInterface.jl | ||
Intermediate wrapper for MOI of GLPK, CPLEX, Gurobi and Xpress | ||
|
||
LinQuadOptInterface (LQOI) is designed to make it easier for low-level wrapper designed to bridge low-level Integer Linear and Quadratic solvers to implement the MOI interface. It provides access to many MathOptInterface functionalities mainly related to problem modifications: | ||
|
||
1. add constraints/variables 1-by-1 and in batches | ||
2. remove constraints/variables | ||
3. change constraint coefficients | ||
4. change constraint type | ||
5. change constraint rhs | ||
6. change variable bounds and type | ||
|
||
## LinQuadOptInterface Instance | ||
|
||
In LinQuadOptInterface.jl the MOI `AbstractOptimizer` is specified to `LinQuadOptimizer`. In this implementation all the above metioned modifications are caried out by the low-level solver own functionalities and hence it differs from MathOptInterface.Utilities' `AbstractModel`'s generated by the `@model` macro. The latter will keep all problem data in the julia level and typically push to a low-level solver the complete problem at once. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. metioned -> mentioned There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You mention @model but the discussion is closen ti CachingOptimizer There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Do you have any suggestion about what to say there or should I just remove this part? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You added it when SDOI was keeping a copy but now no optimizer keeps a copy, |
||
|
||
Here the data in the julia level is minimal, basically only references to constraints and variables. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Instead of this sentence maybe something along the lines of "In contrast, since |
||
|
||
## Current uses | ||
|
||
This package is currently used to implement `MathOptInterfaceXpress.jl`, `MathOptInterfaceCPLEX.jl`, `MathOptInterfaceGurobi.jl` and `MathOptInterfaceGLPK.jl`. The last one being only a integer linear solver. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It would be nice to ahh hyperlinks |
||
|
||
All these solver have in common a low-level API which supports most of these modifications. Hence, data storage is simplified and duplications are avoided. | ||
|
||
## Other possible uses | ||
|
||
This package is only recommended if a solver low-level API which supports most of these modifications. | ||
|
||
If a solver low-level API does not support most of these modifications, then following the example of `MathOptInterfaceSCS.jl` and `MathOptInterfaceECOS.jl` might be a better idea. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe add a sentence making it explicit that using LQOI is entirely optional and comes with a trade-off of introducing an extra abstraction layer between the solver and MOI.