Optimization packages for the Julia language.
The ecosystem of Julia packages is growing very fast. We list here both the packages hosted under JuliaOpt and other related packages.
JuMP: An algebraic modeling language for linear, quadratic, and nonlinear constrained optimization problems.
Convex.jl: An algebraic modeling language for disciplined convex programming.
MathOptInterface: An abstraction layer for mathematical optimization solvers.
MathProgBase: An abstraction layer for mathematical optimization solvers. This package is deprecated and replaced by MathOptInterface.
Numerous Julia wrappers for solvers. See the JuMP documentation for a list.
Alpine: a JuMP-based global optimization solver
Juniper: a JuMP-based nonlinear integer programming solver
Pajarito: a solver for mixed-integer convex optimization
Pavito: a gradient-based outer approximation solver for convex mixed-integer nonlinear programming (MINLP)
JuMPeR.jl: for robust optimization
MultiJuMP.jl: for multi-objective optimization
JuMPChance.jl: for probabilistic chance constraints
StochDynamicProgramming.jl: for discrete-time stochastic optimal control problems
PolyJuMP.jl: for polynomial optimization
StructJuMP.jl: for block-structured optimization
NLOptControl.jl: for formulating and solving nonlinear optimal control problems
Developers: Thinking about how to name your JuMP extension? While we’re happy you’re building on top of JuMP, please do not use JuMP in the name of the package without explicit permission from the JuMP developers.
Optim.jl: implementations in Julia of standard optimization algorithms for unconstrained or box-constrained problems such as BFGS, Nelder-Mead, conjugate gradient, etc.
LsqFit.jl: least-squares non-linear curve fitting in Julia
JuliaSmoothOptimizers: a collection of tools primarily designed for developing solvers for smooth nonlinear optimization
NEOS.jl: an interface to the NEOS Optimization Server
BlackBoxOptim.jl: a derivative-free, global optimizer that supports multi-objective optimization problems
Pajarito - a state-of-the-art solver for mixed-integer convex optimization written in Julia
DifferentialDynamicProgramming.jl: for differential dynamic programming problems
OptimPack.jl: Julia bindings for the OptimPack library
SumOfSquares.jl: sum-of-squares reformulation for PolyJuMP.jl
VariationalInequality.jl: uses JuMP modeling language for variational inequality problems
Complementarity.jl: uses JuMP modeling language for linear/nonlinear/mixed complementarity problems and solves using a Julia interface to the PATH Solver. This package also enables @complements
for modeling complementarity constraints.
NLsolve.jl: Julia solvers for systems of nonlinear equations and mixed complementarity problems
LightGraphs.jl: defines a generic interface for graph types and an implementation with central algorithms.
LightGraphsFlows.jl: solves max-flow and min-cut problems on top of LightGraphs.jl
.
NetworkFlows.jl: solves max-flow problems, min-cut problems, etc.
Munkres.jl: solves optimal assignment problems using the Hungarian algorithm
PowerModels.jl: solves various power network flow problems
RobustShortestPath.jl: solves robust shortest path problems
TrafficAssignment.jl: solves network user equilibrium problems
Evolutionary.jl: evolutionary strategies and genetic algorithms
GeneticAlgorithms.jl: genetic algorithms
StochasticSearch.jl: stochastic local search algorithms such as simulated annealing and tabu search
TravelingSalesmanHeuristics.jl: a heuristic algorithm for solving the Traveling Salesman Problem (TSP)