Julia is a "high-level, high-performance dynamic programming language for technical computing". It is free (open-source) and cross-platform. The familiar syntax, the ease of connecting with external libraries, the speed, and advanced language features like metaprogramming offer interesting possibilities for optimization software.
JuliaOpt is an umbrella group for Julia-based optimization-related projects. For more in-depth information about JuliaOpt and some of its projects, see this presentation from JuliaCon 2014. All our code is available from our GitHub page, as well as through the Julia package manager. We have a mailing list, julia-opt, on Google Groups. The current JuliaOpt projects are:
The following table lists the current JuliaOpt solver interfaces and the problem classes they support. We also list the problem classes that can be modelled with JuMP and Convex.jl below:
|COIN Cbc (.jl)||✔||✔|
|COIN Clp (.jl)||✔|
|CPLEX (.jl)||✔||✔||✔||✔||IP Callbacks|
|GNU GLPK (.jl)||✔||✔||IP Callbacks|
|Gurobi (.jl)||✔||✔||✔||✔||IP Callbacks|
JuliaOpt aims to be a collection of high-quality optimization-related packages for users of Julia. To be included in JuliaOpt, we request that packages follow the following simple guidelines:
testsubdirectory, ideally controlled by a master file
test/runtests.jl. Unit testing and the use of the Travis continuous integration service is strongly encouraged.
Current JuliaOpt packages can be used as examples of how to implement these guidelines (please file an issue if you believe they don't!). We are happy to provide assistance to package maintainers, especially with testing on various platforms and dealing with binary dependencies.