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 |