Optimization
Mathematical Optimization packages in Julia.
Organizations
JuMP
JuMP.jl : Modeling Mathematical Optimization (linear, mixed-integer, conic, semidefinite, nonlinear).
- JuDO.jl: solving optimal control problems. See also
- MathOptInterface.jl: An abstraction layer for mathematical optimization solvers.
- PolyJuMP.jl : A JuMP extension for Polynomial Optimization.
- Progradio.jl : Projected Gradient Optimization. Julia Con 2023 video
- SDDP.jl: A JuMP extension for Stochastic Dual Dynamic Programming.
- StructJuMP.jl : A block-structured optimization framework for JuMP.
- SumOfSquares.jl : Sum of Squares Programming for Julia.
External solvers
Some of them require paid license to work.
- AmplNLWriter.jl : an interface between
MathOptInterface.jland AMPL-enabled solvers. - BARON.jl : A wrapper for the BARON mixed-integer nonlinear programming solver.
- Cbc.jl : Interface to the Coin-OR Cbc solver for mixed-integer programming.
- Clp.jl : Interface to the Coin-OR Linear Programming solver (CLP)
- CPLEX.jl : An interface for using IBM’s CPLEX Optimizer™ from the Julia language.
- CSDP.jl : Julia wrapper to CSDP semidefinite programming solver.
- ECOS.jl : Julia wrapper for the ECOS conic optimization solver.
- GLPK.jl : GLPK wrapper module for Julia.
- Gurobi.j : a Julia interface for the commercial Gurobi Optimizer.
- Ipopt.jl : Julia interface to the Ipopt nonlinear solver.
- KNITRO.jl : Julia interface for KNITRO solver.
- Mosek.jl : Interface to the Mosek solver in Julia. The interface to JuMP is MosekTools.jl
- NEOSServer.jl : A Julia interface for the NEOS Optimisation Server.
- SCS.jl : Julia Wrapper for SCS.
- Xpress.jl : A Julia interface for the FICO Xpress solver.
Optimization.jl
Optimization.jl : brings together all of the optimization packages it can find, local and global, into one unified Julia interface. The following list comes from it README.
OptimizationBBO: for BlackBoxOptim.jl : An experimental, work-in-progress global optimization framework for Julia, supporting both multiand single-objective optimization problems, focused on (meta-)heuristic/stochastic algorithms (DE, PSO, CMA-ES etc).OptimizationEvolutionary: for Evolutionary.jl : Evolutionary & genetic algorithms for Julia. Wikipedia: Genetic algorithmOptimizationGCMAESfor GCMAES.jl: Gradient-based Covariance Matrix Adaptation Evolutionary Strategy for Real Blackbox Optimization.OptimizationIpoptfor Ipopt.jlOptimizationLBFGSBfor LBFGSB.jl: Julia wrapper for L-BFGS-B Nonlinear Optimization Code.OptimizationMadNLPfor MadNLP.jl: a solver for nonlinear programming with GPU supportOptimizationManoptfor Manopt.jl : Optimization on Manifolds in Julia.OptimizationMetaheuristicsfor Metaheuristics.jl : High performance metaheuristics for global optimization.OptimizationMOIfor MathOptInterface.jlOptimizationMultistartOptimizationfor MultistartOptimization.jlOptimizationNLoptfor NLopt.jl : Package to call the NLopt nonlinear-optimization library from the Julia language.OptimizationNLPModelsfor NLPModels.jlOptimizationNOMADfor NOMAD.jl: a Julia interface for NOMAD, which is a C++ implementation of the Mesh Adaptive Direct Search algorithm (MADS), designed for difficult blackbox optimization problems.OptimizationOptimJLfor Optim.jl : Univariate and multivariate optimization solvers in Julia.OptimizationOptimisersfor FluxML’s Optimisers.jl.OptimizationPRIMAfor PRIMA.jl: a Julia interface to the PRIMA library.OptimizationQuadDIRECTfor QuadDIRECT.jl: Global optimization without derivatives.OptimizationSophiafor Sophia optimizer (second-order stochastic optimizer).OptimizationSpeedMappingfor SpeedMapping.jl: General fixed point mapping acceleration and optimization in Julia.
Linear Programming and Optimization
Wikipedia: Linear Programming-Optimization
- 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.
Nonlinear Programming
Wikipedia: Nonlinear Programming: some of the constraints are not linear equalities or the objective function is not a linear function.
- Convex.jl : Disciplined Convex Programming (DCP).
- EAGO.jl : A development environment for robust and global optimization. EAGO stands for Easy-Advanced Global Optimization.
- MadNLP.jl: a solver for nonlinear programming with GPU support
Julia smooth solvers
OptimizationProblems.jl: This package provides a collection of optimization problems in JuMP and ADNLPModels syntax.
- AmplNLReader.jl : A Julia Interface to AMPL.
- CUTEst.jl : Julia interface for CUTEst, a repository of constrained and unconstrained nonlinear programming problems for testing and comparing optimization algorithms.
- HSL.jl : Julia interface to the HSL Mathematical Software Library.
- JSOSuite.jl : accessing all the solvers available in the JuliaSmoothOptimizers organization.
- LinearOperators.jl : Linear Operators for Julia. Operators behave like matrices but are defined by their effect when applied to a vector.
- NLPModels.jl : Data Structures for non-linear programming (NLP) problems in Julia.
Misc
- Hyperopt.jl : A package to perform hyperparameter optimization. Currently supports random search, Latin hypercube sampling and Bayesian optimization.
- InfiniteOpt.jl : An interface for infinite-dimensional optimization problems. e.g. stochastic programming, dynamic programming, space-time optimization. See also the YouTube video.
- IntervalConstraintProgramming.jl : Calculates the feasible region for a set of real-valued inequalities with Julia.
- MetaheuristicsAlgorithms.jl : a collection of Metaheuristics Algorithms written in Julia. YT video
- OSQP.jl : A Julia wrapper for the Operator Splitting Quadratic Program (OSQP) solver, a numerical optimization package.
- SMM.jl : Simulated Method of Moments for Julia.