Optimization packages for the Julia language.

What is Julia?

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.

What is JuliaOpt?

JuliaOpt is an organization that brings together packages written in Julia that are related to optimization. All JuliaOpt packages should be high-quality, documented, tested, support the main operating systems, and interact with each other.

Overview of Packages

JuMP Convex.jl MathProgBase.jl Cbc.jl Clp.jl CPLEX.jl ECOS.jl GLPK.jl Gurobi.jl Ipopt.jl KNITRO.jl Mosek.jl NLopt.jl SCS.jl Xpress.jl Optim.jl LsqFit.jl CoinOptServices.jl AmplNLWriter.jl

JuliaOpt’s packages can be loosely grouped into two sets. The first set are standalone Julia packages:

The second set comprises modeling languages (red), external solver interfaces (purple), and an abstraction layer over the solvers (green), primarily for constrained optimization:


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 /
Convex Nonconvex Integer License
Modeling Tool Conic Smooth
Key: License:
  • Open = Open Source
  • Comm. = Commercial
  • a = Commercial, but provides free academic license
JuMP Open
Convex.jl Open
CDD (.jl) Open
Clp (.jl) Open
Cbc (.jl) Open
GLPK (.jl) cb Open
CSDP (.jl) Open
ECOS (.jl) Open
SCS (.jl) Open
CPLEX (.jl) cb Comm.a
Gurobi (.jl) cb Comm.a
FICO Xpress (.jl) Comm.a
Mosek (.jl) Comm.a
NLopt (.jl) Open
Ipopt (.jl) Open
Bonmin (via AmplNLWriter.jl) Open
Couenne (via AmplNLWriter.jl) Open
Artelys Knitro (.jl) Comm.