From d6950d54ce8deb36e61e2daeb9f089061b362381 Mon Sep 17 00:00:00 2001 From: Oscar Dowson Date: Tue, 15 Dec 2020 12:59:02 +1300 Subject: [PATCH 1/4] Update code.md --- pages/code.md | 48 ++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 40 insertions(+), 8 deletions(-) diff --git a/pages/code.md b/pages/code.md index 54b8be8..298ba38 100644 --- a/pages/code.md +++ b/pages/code.md @@ -2,19 +2,51 @@ title: "The JuMP ecosystem" --- -The JuMP project consists of the main [JuMP](https://github.com/juliaopt/JuMP.jl) +The JuMP project consists of the main [JuMP](https://github.com/jump-dev/JuMP.jl) package, and a large collection of supporting Julia packages. The JuMP source code can be found at [https://github.com/jump-dev/JuMP.jl](https://github.com/jump-dev/JuMP.jl). -Beneath JuMP, there is an abstraction layer called MathOptInterface ([source code](https://github.com/jump-dev/MathOptInterface.jl)). MathOptInterface defines an API that solvers -should implement so that they can be used by JuMP, handles the automatic -reformulation of problems via _bridges_, and has a large infrastructure for -automatically testing solvers. +## MathOptInterface -At the bottom of the stack, there are solver wrappers. These packages wrap the -solvers, which are often written in C or C++, and implement the API defined by -MathOptInterface. +Beneath JuMP, there is an abstraction layer called MathOptInterface +([source code](https://github.com/jump-dev/MathOptInterface.jl)). + +MathOptInterface defines an API that solvers should implement so that they can +be used by JuMP, handles the automatic reformulation of problems via _bridges_, +and has a large infrastructure for automatically testing solvers. + +## Solvers and solver-wrappers + +At the bottom of the stack, there are solvers. These packages are either +pure-Julia implementations of optimization algorithms, or they provide a Julia +interface to external solvers (often written in C or C++). Each solver also +implements the API defined by MathOptInterface so that it can be used from JuMP. A non-exhaustive list of solvers available through JuMP is available in the [JuMP documentation](https://jump.dev/JuMP.jl/stable/installation/#Getting-Solvers-1). + +## JuMP extensions + +JuMP extensions are Julia packages which extend JuMP by providing additional +functionality for specific problem classes. + +A non-exhaustive list of examples include: + * [InfiniteOpt](https://github.com/pulsipher/InfiniteOpt.jl), which extends + JuMP to support infinite-dimensional optimization problems. + * [SDDP.jl](https://github.com/odow/SDDP.jl), which extends JuMP to support + multistage stochastic programs. + * [SumOfSquares](https://github.com/jump-dev/SumOfSquares.jl), which extends + JuMP to support polynomial optimization. + * [vOptGeneric.jl](https://github.com/vOptSolver/vOptGeneric.jl), which extends + JuMP to support multiobjective programs. + +(This list of JuMP extensions is open to new contributions! If you know one that +isn't listed here, tell us by making a pull-request to edit the file [code.md](https://github.com/jump-dev/jump-dev.github.io/blob/master/pages/code.md).) + +## Convex.jl + +An alternative to JuMP is [Convex.jl](https://jump.dev/Convex.jl/stable/). +Convex.jl is a Julia package for disciplined convex programming, built on-top-of +MathOptInterface. Thus, it can use all of the same MathOptInterface-compatible +solvers as JuMP. From 9d394e3e304c6b4609cb8eddb87473f7c2b3f1fe Mon Sep 17 00:00:00 2001 From: Oscar Dowson Date: Wed, 16 Dec 2020 07:33:53 +1300 Subject: [PATCH 2/4] Update code.md --- pages/code.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pages/code.md b/pages/code.md index 298ba38..9cb23b2 100644 --- a/pages/code.md +++ b/pages/code.md @@ -28,8 +28,8 @@ A non-exhaustive list of solvers available through JuMP is available in the ## JuMP extensions -JuMP extensions are Julia packages which extend JuMP by providing additional -functionality for specific problem classes. +JuMP extensions are Julia packages which extend JuMP's algebraic modeling language +by providing additional syntax and functionality for specific problem classes. A non-exhaustive list of examples include: * [InfiniteOpt](https://github.com/pulsipher/InfiniteOpt.jl), which extends From ce7591758498c796e9450a109d56673985e5e2df Mon Sep 17 00:00:00 2001 From: Oscar Dowson Date: Wed, 16 Dec 2020 08:02:04 +1300 Subject: [PATCH 3/4] Update code.md --- pages/code.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/code.md b/pages/code.md index 9cb23b2..2c3a260 100644 --- a/pages/code.md +++ b/pages/code.md @@ -31,7 +31,7 @@ A non-exhaustive list of solvers available through JuMP is available in the JuMP extensions are Julia packages which extend JuMP's algebraic modeling language by providing additional syntax and functionality for specific problem classes. -A non-exhaustive list of examples include: +Examples of JuMP extensions include: * [InfiniteOpt](https://github.com/pulsipher/InfiniteOpt.jl), which extends JuMP to support infinite-dimensional optimization problems. * [SDDP.jl](https://github.com/odow/SDDP.jl), which extends JuMP to support From ded21e53cd14cb5d8dca42090fe3d8ff4654f289 Mon Sep 17 00:00:00 2001 From: Oscar Dowson Date: Wed, 16 Dec 2020 16:58:24 +1300 Subject: [PATCH 4/4] Update code.md --- pages/code.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/pages/code.md b/pages/code.md index 2c3a260..0c2e06f 100644 --- a/pages/code.md +++ b/pages/code.md @@ -32,14 +32,25 @@ JuMP extensions are Julia packages which extend JuMP's algebraic modeling langua by providing additional syntax and functionality for specific problem classes. Examples of JuMP extensions include: + * [BilevelJuMP](https://github.com/joaquimg/BilevelJuMP.jl), which extends JuMP + to support bi-level programs. + * [Coluna.jl](https://github.com/atoptima/Coluna.jl), which extends JuMP to + support a branch-and-cut-and-price solution framework. * [InfiniteOpt](https://github.com/pulsipher/InfiniteOpt.jl), which extends JuMP to support infinite-dimensional optimization problems. + * [Plasmo.jl](https://github.com/zavalab/Plasmo.jl), which extends JuMP to + support a graph-based algebraic modeling framework. * [SDDP.jl](https://github.com/odow/SDDP.jl), which extends JuMP to support multistage stochastic programs. + * [StochasticPrograms.jl](https://github.com/mbiel/StochasticPrograms.jl), which + extends JuMP to support stochastic programs. * [SumOfSquares](https://github.com/jump-dev/SumOfSquares.jl), which extends JuMP to support polynomial optimization. * [vOptGeneric.jl](https://github.com/vOptSolver/vOptGeneric.jl), which extends JuMP to support multiobjective programs. + +Note that with the exception of SumOfSquares, these JuMP extensions are not part of +the core JuMP-dev ecosystem, but are developed independently by the community. (This list of JuMP extensions is open to new contributions! If you know one that isn't listed here, tell us by making a pull-request to edit the file [code.md](https://github.com/jump-dev/jump-dev.github.io/blob/master/pages/code.md).)