JuMP is a domain-specific modeling language for mathematical programming embedded in Julia. It currently supports a number of open-source and commercial solvers (COIN Clp, COIN Cbc, GNU GLPK, Gurobi, MOSEK, CPLEX) via a generic solver-independent interface.
One the best features of JuMP is its speed - benchmarking has shown that it can create problems at similar speeds to special-purpose modeling languages such as AMPL while maintaining the expressiveness of a generic high-level programming language. JuMP communicates with solvers in-memory, avoiding the need to write intermediary files and enabling access to advanced features such as efficient LP re-solves and callbacks for mixed-integer programming.
JuMP has recently enabled support for nonlinear programming for functions that can be expressed in closed algebraic form. JuMP computes exact sparse second-order derivatives needed by efficient interior-point solvers. Currently, Ipopt is the only supported solver, with more coming soon.
Our documentation includes an installation guide, quick-start guide, and reference manual.
Latest Release: 0.5.5 (via Pkg.add
)
- documentation
- examples
- Testing status:
Development version:
- documentation
- examples
- Testing status:
- Changes: see NEWS
JuMP was formerly known as MathProg.jl
JuMP can be installed through the Julia package manager (version 0.2 required)
julia> Pkg.add("JuMP")
For full installation instructions, including how to install solvers, see the documentation linked above.
Mathematical programming encompasses a large variety of problem classes. We list below what is currently supported. See the documentation for more information.
Objective types
- Linear
- Convex Quadratic
- Nonlinear (convex and nonconvex)
Constraint types
- Linear
- Convex Quadratic
- Second-order Conic
- Nonlinear (convex and nonconvex)
Variable types
- Continuous
- Integer-valued
Please report any issues via the Github issue tracker. All types of issues are welcome and encouraged; this includes bug reports, documentation typos, feature requests, etc. The julia-opt mailing list is appropriate for general discussion, including "how do I do this?" questions.