概要
最適化問題を解くことが多くなってきていたが、どのライブラリを使ったらいいか迷うことが多かったため簡単にまとめる。
Pythonの最適化ライブラリ
| ライブラリ名 |
公式サイト |
特徴 |
使用できるソルバー |
商用利用 |
ライセンス |
| SciPy |
scipy.org |
科学技術計算のための包括的なライブラリ。最適化モジュールを含む。 |
BFGS、L-BFGS-B、SLSQP、Nelder-Mead、Powell、CG、Newton-CG、TNC、COBYLA、信頼領域法など |
可 |
BSD |
| PuLP |
coin-or.github.io/pulp |
線形計画問題に特化したライブラリ。モデリングが直感的。 |
CBC、GLPK、CPLEX、Gurobi、XPRESS |
可 |
BSD |
| Pyomo |
pyomo.org |
数理最適化モデリング言語。複雑な最適化問題にも対応。 |
GLPK、CBC、CPLEX、Gurobi、BARON、IPOPT など多数 |
可 |
BSD |
| CVXPY |
cvxpy.org |
凸最適化問題のモデリングと解法に特化。 |
ECOS、SCS、OSQP、GLPK、CPLEX、Gurobi、MOSEK など多数 |
可 |
Apache 2.0 |
| Gurobi |
gurobi.com |
商用の高性能ソルバー。Pythonインターフェースあり。 |
Gurobi |
要ライセンス |
商用 |
| CPLEX |
ibm.com/analytics/cplex-optimizer |
IBMの商用ソルバー。大規模問題に強い。 |
CPLEX |
要ライセンス |
商用 |
| OR-Tools |
developers.google.com/optimization |
Googleが開発した最適化ツールキット。 |
GLOP、CBC、SCIP、CP-SAT |
可 |
Apache 2.0 |
| Gekko |
gekko.readthedocs.io |
動的最適化問題に特化。制御系の最適化に強い。 |
APOPT、BPOPT、IPOPT、SPOPT |
可 |
MIT |
| PyOpt |
pyopt.org |
多様な最適化アルゴリズムを提供。 |
SNOPT、NLPQL、CONMIN、COBYLA、SOLVOPT、PSQP、NLPQL、NSGA-II など |
可(一部制限あり) |
LGPL |
Pythonから利用できる最適化ソルバー