Introduction

This article can be a comprehensive reference for academics and experts in industrial engineering (IE), supply chain management (SCM), operations research (OR), computer science (CS), machine learning (ML), simulation (SM), data science (DS), and others to get familiar with what is available for optimization in Python.

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

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

Package Link
casadi Official
gekko Official
knitro Official
lindo Official
midaco Official
naginterfaces Official
octeract Official
optalg Official
optmod Official
pydrake Official
pyomo Official
pyscipopt Official
xpress Official

MIQP+MILP+IP+LP Packages

Package Link
copt Official
cplex Official
docplex Official
gurobipy Official
highs Official
localsolver Official
mosek Official
optlang Official
sasoptpy Official

MILP+IP+LP Packages

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
cplex Official
cpmpy Official
gecode-python Official
kalis Official
minizinc Official
optapy Official
ortools 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
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
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
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 GitHub
yabox GitHub
zoofs GitHub
zoopt GitHub

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