-
Notifications
You must be signed in to change notification settings - Fork 10
readme first sketch #2
Conversation
README.md
Outdated
@@ -1,2 +1,26 @@ | |||
# LinQuadOptInterface.jl | |||
Intermediate wrapper for MOI of CPLEX, Gurobi and Xpress | |||
|
|||
LinQuadOptInterface is a intermediate wrapper designed to bridge low-level Integer Linear and Quadratic solvers. I provides access to many MathOptInterface functionalities mainly related to problem modifications: |
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.
I provides -> It provides.
Maybe also "LinQuadOptInterface" -> "LinQuadOptInterface (LQOI)"
README.md
Outdated
|
||
All these modification are caried out by the low-level solver own functionalities and hence it differs from MathOptInterfaceUtilities' `Instance`. The latter will keep all problem data in the julia level and typically push to a low-level solver the complete problem at once. | ||
|
||
Here the data in the julia level is minimal, basically only references to constraints and varibles. |
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.
"varibles" -> "variables"
README.md
Outdated
5. change constraint rhs | ||
6. change variable bounds and type | ||
|
||
All these modification are caried out by the low-level solver own functionalities and hence it differs from MathOptInterfaceUtilities' `Instance`. 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 comment
The reason will be displayed to describe this comment to others. Learn more.
Instance
is not an implementation of a solver wrapper, so this is confusing.
README.md
Outdated
@@ -1,2 +1,26 @@ | |||
# LinQuadOptInterface.jl | |||
Intermediate wrapper for MOI of CPLEX, Gurobi and Xpress | |||
|
|||
LinQuadOptInterface (LQOI) is a intermediate wrapper designed to bridge low-level Integer Linear and Quadratic solvers. It provides access to many MathOptInterface functionalities mainly related to problem modifications: |
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.
Designed to make it easier for low-level [...] solvers to implement the MOI interface.
README.md
Outdated
@@ -1,2 +1,28 @@ | |||
# LinQuadOptInterface.jl | |||
Intermediate wrapper for MOI of 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: |
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.
The first sentence seems jumbled.
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.
yep, copy and paste mistake
README.md
Outdated
|
||
## LinQuadOptInterface Instance | ||
|
||
In the MOI `Instance` made available by LinQuadOptInterface.jl all these modification are caried out by the low-level solver own functionalities and hence it differs from MathOptInterfaceUtilities' `Instance`. 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 comment
The reason will be displayed to describe this comment to others. Learn more.
Instance
does not directly connect to solvers. The comparison here is with solver wrappers that use Instance
internally.
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.
What about:
The MOI Instance
made available by LinQuadOptInterface.jl is used as a standardized interface to a solver which has a low-level wrapper that allows most of (or all) these modification to be made in the solver's internal structures. The data kept in the julia level is minimal.
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.
Solver instance, not instance, right? It differs from other wrappers that store a standalone instance in Julia.
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.
Now I understand what you mean, I will re-do it more clearly
Bump. The readme on |
Yep, Some time ago I started that, but then I waited for the big renaming. I will make it a priority. |
# Conflicts: # README.md
README.md
Outdated
|
||
## 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 comment
The 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 comment
The 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 comment
The 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 comment
The 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, CachingOptimizer
should be used for that. You can say "In this implementation all the above mentioned modifications are carried out by the low-level solver own functionalities and hence the optimizer can be used without a CachingOptimizer
"
README.md
Outdated
|
||
## 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 comment
The reason will be displayed to describe this comment to others. Learn more.
It would be nice to ahh hyperlinks
README.md
Outdated
@@ -1,2 +1,30 @@ | |||
# LinQuadOptInterface.jl | |||
Intermediate wrapper for MOI of GLPK, CPLEX, Gurobi and Xpress | |||
|
|||
**Attention**: This is an intermediary layer used by some implementations of the MathOptInterface. |
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.
Attention seems unnecessary
README.md
Outdated
|
||
**Attention**: This is an intermediary layer used by some implementations of the MathOptInterface. | ||
|
||
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 [MathOptInterface](https://github.com/JuliaOpt/MathOptInterface.jl) (MOI) interface. It provides access to many MOI functionalities mainly related to problem modifications: |
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.
MOI interface is redundant, just say "to implement MathOptInterface (MOI)"
README.md
Outdated
|
||
## LinQuadOptInterface Instance | ||
|
||
In LinQuadOptInterface.jl the MOI `AbstractOptimizer` is specialized to `LinQuadOptimizer`. In this implementation all the above mentioned modifications are caried out by the low-level solver own functionalities and hence it differs from MathOptInterface.Utilities' `CachingOptimizer`. 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 comment
The reason will be displayed to describe this comment to others. Learn more.
low-level solver's own
3. change constraint coefficients | ||
4. change constraint type | ||
5. change constraint rhs | ||
6. change variable bounds and type |
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.
README.md
Outdated
|
||
## LinQuadOptInterface Optimizer | ||
|
||
In LinQuadOptInterface.jl the MOI `AbstractOptimizer` is specialized to `LinQuadOptimizer`. In this implementation all the above mentioned modifications are carried out by the low-level solver's own functionalities and hence the `LinQuadOptimizer` can be used without a `CachingOptimizer`. 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 comment
The reason will be displayed to describe this comment to others. Learn more.
Can we get links to CachingOptimizer
etc?
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.
s/julia/Julia
README.md
Outdated
|
||
In LinQuadOptInterface.jl the MOI `AbstractOptimizer` is specialized to `LinQuadOptimizer`. In this implementation all the above mentioned modifications are carried out by the low-level solver's own functionalities and hence the `LinQuadOptimizer` can be used without a `CachingOptimizer`. The latter will keep all problem data in the julia level and typically push to a low-level solver the complete problem at once. | ||
|
||
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 comment
The 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 LinQuadOptimizer
incrementally pushes data to the low-level solver, it stores a small subset of the problem data at the Julia level; typically only references to constraints and variables."
README.md
Outdated
|
||
This package is currently used to implement [MathOptInterfaceXpress.jl](https://github.com/JuliaOpt/MathOptInterfaceXpress.jl), [MathOptInterfaceCPLEX.jl](https://github.com/JuliaOpt/MathOptInterfaceCPLEX.jl), [MathOptInterfaceGurobi.jl](https://github.com/JuliaOpt/MathOptInterfaceGurobi.jl) and [MathOptInterfaceGLPK.jl](https://github.com/JuliaOpt/MathOptInterfaceGLPK.jl). The last one being only a integer linear solver. | ||
|
||
All these solvers have low-level APIs which supports most of these modifications. Hence, data storage is simplified and duplications are avoided. |
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.
What are "these modifications"?
Is the |
README.md
Outdated
|
||
This package is currently used to implement [MathOptInterfaceXpress.jl](https://github.com/JuliaOpt/MathOptInterfaceXpress.jl), [MathOptInterfaceCPLEX.jl](https://github.com/JuliaOpt/MathOptInterfaceCPLEX.jl), [MathOptInterfaceGurobi.jl](https://github.com/JuliaOpt/MathOptInterfaceGurobi.jl) and [MathOptInterfaceGLPK.jl](https://github.com/JuliaOpt/MathOptInterfaceGLPK.jl). The last one being only a integer linear solver. | ||
|
||
All these solvers have low-level APIs which supports most of the above metioned [modifications](#modifications). Hence, data storage is simplified and duplications are avoided. |
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.
s/supports/support
s/metioned/mentioned
README.md
Outdated
|
||
## Current uses | ||
|
||
This package is currently used to implement [MathOptInterfaceXpress.jl](https://github.com/JuliaOpt/MathOptInterfaceXpress.jl), [MathOptInterfaceCPLEX.jl](https://github.com/JuliaOpt/MathOptInterfaceCPLEX.jl), [MathOptInterfaceGurobi.jl](https://github.com/JuliaOpt/MathOptInterfaceGurobi.jl) and [MathOptInterfaceGLPK.jl](https://github.com/JuliaOpt/MathOptInterfaceGLPK.jl). The last one being only a integer linear solver. |
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.
s/a integer/an integer
or s/a integer/a mixed integer
I am merging this because people will start looking. Open for suggestions and PRs :) |
Begin fixing #1
cc @mlubin