# 🔖 (Mathematical) Optimization in Julia

Contents

Mathematical Optimization packages in Julia

^{1}

## See also

- JuMP-dev organization.
- Julia Opt organization.
- Julia Smooth Optimizers organization.

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

## Frameworks

- 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

## 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

- 🏚️ DReal.jl :: A Julia wrapper for Nonlinear SMT solving using the dReal SMT solver.
- 🏚️ OptimizationServices.jl :: Julia interface to COIN-OR Optimization Services.
- 🏚️ Quadprog.jl :: A wrapper around Ipopt.jl to solve quadratic programming problems.

## Misc

- 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 (https://github.com/cvxgrp/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.