@@ -12,15 +12,21 @@ optimization solvers so that users do not need to understand multiple
1212solver-specific APIs.
1313
1414!!! tip
15- While MOI can be used directly, we encourage you instead to use MOI through
16- a higher-level modeling interface like [ JuMP] ( https://github.com/jump-dev/JuMP.jl )
17- or [ Convex.jl] ( https://github.com/jump-dev/Convex.jl ) .
15+ This documentation is aimed at developers writing software interfaces to
16+ solvers and modeling languages using the MathOptInterface API. If you are a
17+ user interested in solving optimization problems, we encourage you instead
18+ to use MOI through a higher-level modeling interface like
19+ [ JuMP] ( https://github.com/jump-dev/JuMP.jl ) or
20+ [ Convex.jl] ( https://github.com/jump-dev/Convex.jl ) .
1821
1922## How the documentation is structured
2023
2124Having a high-level overview of how this documentation is structured will help
2225you know where to look for certain things.
2326
27+ * The ** Background** section contains articles on the motivation and theory
28+ behind MathOptInterface. Look here if you want to understand _ why_ , rather
29+ than _ how_ .
2430* The ** Manual** contains short code-snippets that explain how to use the MOI
2531 API. Look here if you want to write a model in MOI.
2632* The ** API Reference** contains a complete list of functions and types that
@@ -30,35 +36,6 @@ you know where to look for certain things.
3036 submodules within MOI. These submodules are not required to interface a solver
3137 with MOI, but they make the job much easier.
3238
33- ## Background
34-
35- MOI has been designed to replace [ MathProgBase] ( https://github.com/JuliaOpt/MathProgBase.jl ) ,
36- which was been used by modeling packages such as [ JuMP] ( https://github.com/jump-dev/JuMP.jl )
37- and [ Convex.jl] ( https://github.com/jump-dev/Convex.jl ) .
38-
39- This second-generation abstraction layer addresses a number of limitations of
40- MathProgBase. MOI is designed to:
41- - Be simple and extensible, unifying linear, quadratic, and conic optimization,
42- and seamlessly facilitate extensions to essentially arbitrary constraints and
43- functions (e.g., indicator constraints, complementarity constraints, and
44- piecewise-linear functions)
45- - Be fast by allowing access to a solver's in-memory representation of a problem
46- without writing intermediate files (when possible) and by using multiple
47- dispatch and avoiding requiring containers of nonconcrete types
48- - Allow a solver to return multiple results (e.g., a pool of solutions)
49- - Allow a solver to return extra arbitrary information via attributes (e.g.,
50- variable- and constraint-wise membership in an irreducible inconsistent subset
51- for infeasibility analysis)
52- - Provide a greatly expanded set of status codes explaining what happened during
53- the optimization procedure
54- - Enable a solver to more precisely specify which problem classes it supports
55- - Enable both primal and dual warm starts
56- - Enable adding and removing both variables and constraints by indices that are
57- not required to be consecutive
58- - Enable any modification that the solver supports to an existing model
59- - Avoid requiring the solver wrapper to store an additional copy of the problem
60- data
61-
6239## Citing JuMP
6340
6441A [ paper describing the design and features of MathOptInterface] ( https://arxiv.org/abs/2002.03447 )
0 commit comments