# 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:

julia> Pkg.add("JuMP")


And a solver, e.g.:

julia> Pkg.add("Clp")  # Will install Cbc as well


Then read the Quick Start Guide and/or see a Simple Example. The subsequent sections detail the complete functionality of JuMP.

## Contents¶

### Citing JuMP¶

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 [1]. If you find JuMP useful in your work, we request that you cite this paper.

 [1] Lubin and I. Dunning, “Computing in Operations Research using Julia”, 2013. arXiv:1312.1431