Skip to content

List of Optimization Packages in Python: Update 2024

This article serves as a comprehensive reference for academics and experts in the following fields to get familiar with what is available for optimization in Python:

  • Industrial engineering (IE)
  • Supply chain management (SCM)
  • Operations research (OR)
  • Computer science (CS)
  • Machine learning (ML)
  • Simulation (SM)
  • Data science (DS)

Guide

Package capability Description
MINLP Mixed integer nonlinear programming
MIQP Mixed integer quadratic programming
MILP Mixed integer linear programming
NLP Nonlinear programming
IP Integer programming
LP Linear programming
CP Constraint programming
GPP General purpose programming
MOP Multi-criteria/objective programming

MINLP+MIQP+MILP+NLP+IP+LP Packages

Note: Some packages might not accept a mixed group of discrete and continuous variables.

Package Link
amplpy Official
casadi Official
feloopy Official
gekko Official
gamspy Official
insideopt-seeker Official
knitro Official
lindo Official
midaco Official
naginterfaces Official
octeract Official
omlt Official
optalg Official
optmod Official
pydrake Official
pyepo Official
pyomo Official
pyscipopt Official
xpress Official

MIQP+MILP+IP+LP Packages

Note: Some packages might not accept a mixed group of discrete and continuous variables.

Package Link
copt Official
cplex Official
docplex Official
gurobipy Official
hexaly Official
highs Official
mosek Official
optlang Official
qpsolvers Official
rsome Official
sasoptpy Official

MILP+IP+LP Packages

Note: Some packages might not accept a mixed group of discrete and continuous variables.

Package Link
cvxopt Official
cvxpy Official
cylp Official
flowty Official
linopy Official
lpsolve55 Official
mindoptpy Official
mip Official
ortools Official
picos Official
pulp Official
pymprog Official
swiglpk Official

NLP+LP Packages

Package Link
acadopy Official
acados Official
cyipopt Official
dymos Official
gpkit Official
iminuit Official
nlopt Official
nlpy Official
openmdao Official
openopt Official
polyopt Official
pyipopt Official
pyopt Official
scipy Official
trustregion Official
worhp Official

CP Packages

Package Link
choco Ofiicial
cplex Official
cpmpy Official
feloopy Official
gecode-python Official
kalis Official
minizinc Official
optapy Official
ortools Official
python-constraint Official
timefold Official
z3-solver Official

GPP Packages

Package Link
arm-mango Official
ax Official
bayesian-optimization Official
bayesianevolution Official
bayeso Official
bayesopt Official
black-box Official
bolib Official
cma Official
cmaes Official
cobyqa Github
cuopt Official
deap Official
dfoalgos Official
dfogn Official
dlib Official
evolopy Official
evoopt Official
evostra Official
feloopy Official
freelunch Official
gaft Official
geneticalgorithm Official
goptpy Github
gradient-free-optimizers Github
gyopt Official
hebo Official
heuristic_optimization Official
hpbandster Official
hyperopt Official
inspyred Official
mealpy Official
mipego Official
moptipy Official
mystic Official
nevergrad Official
niapy Official
oasis Official
optuna Official
optuner Official
opytimizer Official
pagmo Official
pdfo Official
platypus Official
prodyn Official
proxmin Official
psopt Official
psopy Official
py-bobyqa Official
pydogs Official
pygmo Official
pygpgo Official
pymetaheuristic Official
pymoo Official
pyopus Official
pypesto Official
pyriad Official
pysmac Official
pysot Official
pyswarms Official
qiskit-optimization Official
rapids-NeurIPS Official
ray Official
rbfopt Official
scikit-opt Official
scikit-optimize Official
simanneal Official
simple Official
solidpy Official
spearmint Official
spotpy Official
ssb-optimize Official
swarm-cg Github
swarmlib Official
swarmpackagepy Official
tgo Official
turbo-NeurIPS Official
turbo Official
ultraopt Official
yabox Official
zoofs Official
zoopt Official

MOP Packages

Package Link
feloopy Official
parmoo Official
pydecision Official
pymoo Official
pymultiobjective Official

Notes

1- If you are having trouble while installing via !pip install <PACKAGE> (in-line code) or pip install <PACKAGE> (terminal code), you may use the following piece of code. Also, please be aware that some of the introduced packages require installing software or downloading and compiling a copy of their binary files to be imported into Python. Therefore, some of them are not easily pip installable.

import pip

#Function:
def install(package):
    if hasattr(pip, 'main'):
        pip.main(['install', package])
    else:
        pip._internal.main(['install', package])

#Example:
install('pyomo')

2- There are some benchmarkig tools and websites, which are introduced as follows:

Benchmark Link
humpday Official
pycutest Official
Mittelmann Official