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.