JuMP — Julia for Mathematical Programming¶
JuMP is a domain-specific modeling language for mathematical programming embedded in Julia. It currently supports a number of open-source and commercial solvers (Clp, Cbc, GLPK, Gurobi, MOSEK, and CPLEX) via a generic solver-independent interface provided by the MathProgBase package.
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.
If you are familiar with Julia you can get started quickly by using the package manager to install JuMP:
And a solver, e.g.:
julia> Pkg.add("Clp") # Will install Cbc as well
- Installation Guide
- Quick Start Guide
- Expressions and Constraints
- Problem Modification
- Solver Callbacks
- Nonlinear Modeling
Further discussion of the design of JuMP in the context of existing domain-specific languages for mathematical programming, together with extensive benchmarks, is given in . If you find JuMP useful in your work, we request that you cite this paper.