The third annual JuMP-dev workshop will be held in Santiago, Chile on March 12-14, 2019. We are currently inviting submissions for talks. More details here.
“Julia is a high-level, high-performance dynamic programming language for technical computing”. It is free (open source) and supports Windows, OSX, and Linux. It has a familiar syntax, works well with external libraries, is fast, and has advanced language features like metaprogramming that enable interesting possibilities for optimization software.
The JuliaOpt GitHub organization is home to a number of optimization-related packages written in Julia. Its purpose is to facilitate collaboration among developers of a tightly integrated set of packages for mathematical optimization.
JuliaOpt’s packages currently all revolve around the MathProgBase abstraction layer (green). Above the abstraction layer we have modeling languages (red), and below external solver interfaces (purple). The modeling languages in JuliaOpt are:
JuMP: An algebraic modeling language for linear, quadratic, and nonlinear constrained optimization problems embedded in Julia. Generates models as quick as commercial modeling tools and supports advanced features like solver callbacks. (documentation, code)
Convex.jl: An algebraic modeling language for disciplined convex programming embedded in Julia. (documentation, code)
JuliaOpt provides wrappers for a wide variety of solvers. The following table summarizes the forms supported by the modeling languages and solvers. Note that the capabilities marked in the table represent those of the Julia package, not necessarily the capabilities of the solver itself.
Linear / Quadratic |
Convex | Nonconvex | Integer | License | ||
---|---|---|---|---|---|---|
Modeling Tool | Conic | Smooth | ||||
Key:
|
||||||
JuMP | ✔ | ✔ | ✔ | ✔ | ✔ | Open |
Convex.jl | ✔ | ✔ | ✔ | Open | ||
Solver | ||||||
CDD (.jl) | ✔ | Open | ||||
Clp (.jl) | ✔ | Open | ||||
OSQP (.jl) | ✔ | Open | ||||
Cbc (.jl) | ✔ | ✔ | Open | |||
GLPK (.jl) | ✔ | ✔cb | Open | |||
CSDP (.jl) | ✔ | ✔ | Open | |||
ECOS (.jl) | ✔ | ✔ | Open | |||
SCS (.jl) | ✔ | ✔ | Open | |||
SDPA (.jl) | ✔ | ✔ | Open | |||
CPLEX (.jl) | ✔ | ✔ | ✔cb | Comm.a | ||
Gurobi (.jl) | ✔ | ✔ | ✔cb | Comm.a | ||
FICO Xpress (.jl) | ✔ | ✔ | ✔ | Comm.a | ||
Mosek (.jl) | ✔ | ✔ | ✔ | ✔ | Comm.a | |
Pajarito.jl | ✔ | ✔ | ✔ | ✔ | Open | |
NLopt (.jl) | ✔ | ✔ | Open | |||
Ipopt (.jl) | ✔ | ✔ | ✔ | Open | ||
Bonmin (via AmplNLWriter.jl) | ✔ | ✔ | ✔ | ✔ | Open | |
Couenne (via AmplNLWriter.jl) | ✔ | ✔ | ✔ | ✔ | Open | |
Artelys Knitro (.jl) | ✔ | ✔ | ✔ | ✔ | Comm. | |
SCIP (.jl) | ✔ | ✔ | ✔ | ✔ | ✔cb | Comm.a |