🔖 (Mathematical) Optimization in Julia

Mathematical Optimization packages in Julia1

See also

  • 🏚️ means the package may not support current versions of Julia.
  • 🏗️ means the package may be a WIP.


  • JuMP.jl :: A modeling language for Mathematical Optimization (linear, mixed-integer, conic, semidefinite, nonlinear).

Linear Programming-Optimization

📖 Linear Programming-Optimization

  • Clp.jl :: Interface to the Coin-OR Linear Programming solver (CLP)
  • Gurobi.jl :: is a Julia interface for the commercial Gurobi Optimizer.
  • NLPModels.jl :: Data Structures for Optimization Models.
  • PiecewiseLinearOpt.jl :: Optimizing over piecewise linear functions.
  • Tulip.jl :: is an open-source interior-point solver for linear optimization, written in pure Julia. It implements the homogeneous primal-dual interior-point algorithm with multiple centrality corrections, and therefore handles unbounded and infeasible problems.
WIP or may not work
  • 🏚️ jlSimplex :: Proof-of-concept implementation of the (dual) simplex algorithm for linear programming in Julia.
  • 🏚️ NLTester :: Code for benchmarks comparing AMPL, Julia, and YALMIP (MATLAB) for nonlinear modeling.

Nonlinear Programming

📖 Nonlinear Programming

  • BARON.jl :: A wrapper for the BARON mixed-integer nonlinear programming solver.
  • ConicNonlinearBridge.jl :: Wrapper to solve conic optimization problems with derivative-based nonlinear solvers.
  • Convex.jl :: A Julia library for mathematical programming that makes it easy to formulate and fast to solve nonlinear convex optimization problems.
  • Ipopt.jl :: Julia interface to the Ipopt nonlinear solver.
  • NLopt.jl :: Package to call the NLopt nonlinear-optimization library from the Julia language.
WIP or may not work


  • AmplNLReader.jl :: A Julia Interface to AMPL.
  • AmplNLWriter.jl :: Julia interface to AMPL-enabled solvers
  • AutomotiveDrivingModels.jl :: For car encounter models.
  • BlackBoxOptim.jl :: An experimental, work-in-progress global optimization framework for Julia, supporting both multi- and single-objective optimization problems, focused on (meta-)heuristic/stochastic algorithms (DE, PSO, CMA-ES etc).
  • Cbc.jl :: Interface to the Coin-OR Cbc solver for mixed-integer programming
  • CharibdeOptim.jl :: A Julia implementation of the cooperative solver Charibde in which it uses two parallel running algorithms Differential Evolution and Interval Branch & Contract algorithm to achieve solution of any difficult problem.
  • ConstraintProgramming.jl :: Calculates the feasible region for a set of real-valued inequalities with Julia.
  • CPLEX.jl :: The CPLEX.jl package provides an interface for using IBM’s CPLEX Optimizer™ from the Julia language.
  • CSDP.jl :: Julia wrapper to CSDP semidefinite programming solver.
  • CUTEst.jl :: Julia interface for CUTEst.
  • CutPools.jl :: Pools of cutting planes for JuMP models.
  • EAGO.jl :: A development environment for robust and global optimization.
  • ECOS.jl :: Julia wrapper for the ECOS conic optimization solver.
  • GLPK.jl :: GLPK wrapper module for Julia.
  • GLPKMathProgInterface.jl :: Interface between the GLPK.jl wrapper and MathProgBase.jl.
  • HSL.jl :: Julia interface to the HSL Mathematical Software Library.
  • jobshop :: The Jobshop (Open Shop Scheduling Problem (OSSP)) problem is solved with evolutionary strategies in Julia.
  • JuliaCMAES :: CMA-ES port - a mix of the original minimal MATLAB implementation (purecmaes.m) and the full one (cmaes.m).
  • KNITRO.jl :: This package provides an interface for using the KNITRO solver from the Julia language, which can only be used after having purchased and installed a copy of KNITRO from Ziena Optimization.
  • LinearOperators.jl :: Linear Operators for Julia.
  • LsqFit.jl :: Simple curve fitting functionality from Optim.jl has been moved into its own package.
  • MathProgBase.jl :: Solver-independent functions (incl. linprog and mixintprog) and low-level interface for Mathematical Programming.
  • Mayday.jl :: Sums-of-Squares optimization through semidefinite programming (SDP) in Julia, powered by JuMP.
  • Memoize.jl :: Easy memoization for Julia.
  • Mosek.jl :: Interface to the Mosek solver in Julia.
  • Optim.jl :: A basic optimization algorithms implementation.
  • OSQP.jl :: A Julia wrapper for the Operator Splitting Quadratic Program (OSQP) solver is a numerical optimization package.
  • PolyJuMP.jl :: A JuMP extension for Polynomial Optimization.
  • QuadDIRECT.jl :: Global optimization without derivatives.
  • scheduleCrew.jl.
  • SemidefiniteModels :: A MathProgBase extension for Semidefinite Modelling.
  • SMM.jl :: Simulated Method of Moments for Julia.
  • StructDualDynProg.jl :: Implementation of SDDP (Stochastic Dual Dynamic Programming) using the StructJuMP modeling interface.
  • StructJuMP.jl :: A block-structured optimization framework for JuMP.
  • SumOfSquares.jl :: Sum of Squares Programming for Julia.
  • Surrogates.jl :: Surrogate modeling and optimization.
  • TrafficAssignment.jl :: A package for traffic assignment that loads the network data and finds the user equilibrium traffic pattern.
  • Xpress.jl :: A Julia interface for the FICO Xpress optimization suite.
WIP or may not work
  • 🏚️ BLOM.jl :: A Julia port of the Berkeley Library for Optimization Modeling (Work-In-Progress).
  • 🏚️ Caching.jl :: Memoization mechanism.
  • 🏚️ CGP.jl :: Cartesian Genetic Programming (CGP) implemented in Julia.
  • 🏚️ CGRASP.jl :: Continuous Greedy Randomized Adaptive Search Procedure (CGRASP), in Julia.
  • 🏚️ DDUS.jl :: Data-driven Uncertainty Sets for the JuMPeR framework.
  • 🏚️ EAGODomainReduction.jl :: Domain Reduction Procedures in Global Optimization.
  • 🏚️ GeneticAlgorithms.jl :: is a lightweight framework that simplifies the process of creating genetic algorithms and running them in parallel.
  • 🏚️ InformedDifferentialEvolution.jl :: Implementation of Differential Evolution with optional custom predictors. (No Project.toml)
  • 🏚️ JuGP.jl :: A prototype JuMP extension for geometric programming. (No Project.toml)
  • 🏚️ julia-nlopt :: NLopt bindings for julia. {NB: Not maintained for the current Julia releases}.
  • 🏚️ JuMPeR.jl :: Julia for Mathematical Programming (JuMP) extension for Robust optimization. (No Project.toml)
  • 🏚️ LinearResponseVariationalBayes.jl :: Julia tools for building simple variational Bayes models with JuMP.
  • 🏚️ LossFuns.jl :: An implementation of loss functions for empirical risk minimization.
  • 🏚️ LSQ.jl :: is a library that makes it easy to formulate and solve least-squares optimization problems with linear equality constraints.
  • 🏚️ MinFinder.jl :: The MinFinder algorithm to find all the minima for a differentiable function inside a bounded domain.
  • 🏚️ Munkres.jl :: Munkres algorithm for the optimal assignment problem. (No Project.toml)
  • 🏚️ NEOS.jl :: A Julia interface for the NEOS Optimisation Server.
  • 🏚️ NewOptimizer.jl :: WIP for new optimizer for julia base.
  • 🏚️ NODAL.jl :: is an Open Distributed Autotuning Library in Julia. (No Project.toml)
  • 🏚️ ParallelGenocop.jl :: Parallel implementation of Genocop - a genetic algorithm for numerical optimization problems with linear constraints.
  • 🏚️ pikaia.jl :: Genetic Algorithms (GA’s).
  • 🏚️ Polyopt.jl :: Julia package for polynomial optimization using semidefinite programming, with some presentation notebooks of an optimization package.
  • 🏚️ Proximal.jl :: Translation of Parikh and Boyd code for proximal algorithms.
  • 🏚️ QuickCheck.jl :: is listed in METADATA and based on QuickCheck specification-based randomized tester for Julia.
  • 🏚️ Ranking.jl :: Tools for ranking in Julia. (No Project.toml)
  • 🏚️ RationalSimplex.jl :: Pure Julia implementation of the simplex algorithm. (No Project.toml)
  • 🏚️ SCIP.jl by @mlubin :: An optimization software for mixed-integer programs.
  • 🏚️ SCIP.jl by @ryanjoneil :: A Julia interface to the SCIP solver.
  • 🏚️ SCS.jl :: Julia Wrapper for SCS (
  • 🏚️ SemidefiniteProgramming.jl :: This package provides a Julia interface for low-level modeling of semidefinite programming problems and for solving semidefinite programs with solvers such as SDPA and CSDP.
  • 🏚️ simplex.jl :: Practice project program that performs the simplex algorithm.
  • 🏚️ VinDsl.jl :: A fast and furious domain-specific language for variational inference in Julia.

  1. Julia.jl is under COPYRIGHT © 2012-Now SVAKSHA, dual-licensed for the data (ODbL-v1.0+) and the software (AGPLv3+), respectively. ↩︎