概要
最適化問題を解くことが多くなってきていたが、どのライブラリを使ったらいいか迷うことが多かったため簡単にまとめる。
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から利用できる最適化ソルバー
ソルバー名 | 公式サイト | 特徴 | 商用利用 | ライセンス |
---|---|---|---|---|
CPLEX | ibm.com/analytics/cplex-optimizer | 高性能な商用ソルバー。線形計画法、混合整数計画法、二次計画法に強い。 | 要ライセンス | 商用 |
Gurobi | gurobi.com | 高速で信頼性の高い商用ソルバー。大規模最適化問題に適している。 | 要ライセンス | 商用 |
MOSEK | mosek.com | 線形、二次、円錐最適化問題に特化した商用ソルバー。 | 要ライセンス | 商用 |
GLPK | gnu.org/software/glpk | オープンソースの線形計画法ソルバー。中小規模の問題に適している。 | 可 | GNU GPL |
CBC | github.com/coin-or/Cbc | オープンソースの混合整数線形計画法ソルバー。 | 可 | Eclipse Public License 2.0 |
IPOPT | github.com/coin-or/Ipopt | 大規模な非線形最適化問題向けのオープンソースソルバー。 | 可 | Eclipse Public License 2.0 |
SCIP | scipopt.org | 混合整数計画法と制約整数計画法のためのフレームワーク。 | (8.0.2まで)要ライセンス,(8.0.3以降)可 | (8.0.2まで)ZIB Academic License, (8.0.3以降) Apache 2.0 |
XPRESS | fico.com/en/products/fico-xpress-optimization | 高性能な商用ソルバー。線形計画法、混合整数計画法、非線形最適化に対応。 | 要ライセンス | 商用 |
BARON | minlp.com/baron | 全域的最適化のための商用ソルバー。非凸最適化問題に強い。 | 要ライセンス | 商用 |
ECOS | github.com/embotech/ecos | 組込みシステム向けの軽量な凸最適化ソルバー。 | 可 | GNU GPL v3 |
SCS | github.com/cvxgrp/scs | 大規模な凸錐計画問題向けのソルバー。 | 可 | MIT |
OSQP | osqp.org | 高速な二次計画法ソルバー。組込みシステムにも適している。 | 可 | Apache 2.0 |