Skip to content

Commit 575344e

Browse files
authored
Update code.md (#36)
* Update code.md * Update code.md * Update code.md * Update code.md
1 parent c0e6fdc commit 575344e

File tree

1 file changed

+51
-8
lines changed

1 file changed

+51
-8
lines changed

pages/code.md

+51-8
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,62 @@
22
title: "The JuMP ecosystem"
33
---
44

5-
The JuMP project consists of the main [JuMP](https://github.com/juliaopt/JuMP.jl)
5+
The JuMP project consists of the main [JuMP](https://github.com/jump-dev/JuMP.jl)
66
package, and a large collection of supporting Julia packages.
77

88
The JuMP source code can be found at [https://github.com/jump-dev/JuMP.jl](https://github.com/jump-dev/JuMP.jl).
99

10-
Beneath JuMP, there is an abstraction layer called MathOptInterface ([source code](https://github.com/jump-dev/MathOptInterface.jl)). MathOptInterface defines an API that solvers
11-
should implement so that they can be used by JuMP, handles the automatic
12-
reformulation of problems via _bridges_, and has a large infrastructure for
13-
automatically testing solvers.
10+
## MathOptInterface
1411

15-
At the bottom of the stack, there are solver wrappers. These packages wrap the
16-
solvers, which are often written in C or C++, and implement the API defined by
17-
MathOptInterface.
12+
Beneath JuMP, there is an abstraction layer called MathOptInterface
13+
([source code](https://github.com/jump-dev/MathOptInterface.jl)).
14+
15+
MathOptInterface defines an API that solvers should implement so that they can
16+
be used by JuMP, handles the automatic reformulation of problems via _bridges_,
17+
and has a large infrastructure for automatically testing solvers.
18+
19+
## Solvers and solver-wrappers
20+
21+
At the bottom of the stack, there are solvers. These packages are either
22+
pure-Julia implementations of optimization algorithms, or they provide a Julia
23+
interface to external solvers (often written in C or C++). Each solver also
24+
implements the API defined by MathOptInterface so that it can be used from JuMP.
1825

1926
A non-exhaustive list of solvers available through JuMP is available in the
2027
[JuMP documentation](https://jump.dev/JuMP.jl/stable/installation/#Getting-Solvers-1).
28+
29+
## JuMP extensions
30+
31+
JuMP extensions are Julia packages which extend JuMP's algebraic modeling language
32+
by providing additional syntax and functionality for specific problem classes.
33+
34+
Examples of JuMP extensions include:
35+
* [BilevelJuMP](https://github.com/joaquimg/BilevelJuMP.jl), which extends JuMP
36+
to support bi-level programs.
37+
* [Coluna.jl](https://github.com/atoptima/Coluna.jl), which extends JuMP to
38+
support a branch-and-cut-and-price solution framework.
39+
* [InfiniteOpt](https://github.com/pulsipher/InfiniteOpt.jl), which extends
40+
JuMP to support infinite-dimensional optimization problems.
41+
* [Plasmo.jl](https://github.com/zavalab/Plasmo.jl), which extends JuMP to
42+
support a graph-based algebraic modeling framework.
43+
* [SDDP.jl](https://github.com/odow/SDDP.jl), which extends JuMP to support
44+
multistage stochastic programs.
45+
* [StochasticPrograms.jl](https://github.com/mbiel/StochasticPrograms.jl), which
46+
extends JuMP to support stochastic programs.
47+
* [SumOfSquares](https://github.com/jump-dev/SumOfSquares.jl), which extends
48+
JuMP to support polynomial optimization.
49+
* [vOptGeneric.jl](https://github.com/vOptSolver/vOptGeneric.jl), which extends
50+
JuMP to support multiobjective programs.
51+
52+
Note that with the exception of SumOfSquares, these JuMP extensions are not part of
53+
the core JuMP-dev ecosystem, but are developed independently by the community.
54+
55+
(This list of JuMP extensions is open to new contributions! If you know one that
56+
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).)
57+
58+
## Convex.jl
59+
60+
An alternative to JuMP is [Convex.jl](https://jump.dev/Convex.jl/stable/).
61+
Convex.jl is a Julia package for disciplined convex programming, built on-top-of
62+
MathOptInterface. Thus, it can use all of the same MathOptInterface-compatible
63+
solvers as JuMP.

0 commit comments

Comments
 (0)