※記事内に商品プロモーションを含むことがあります。
はじめに
Pythonの最適化モデリングツールPyomoで利用できる無償の数理最適化ソルバと、その導入方法をまとめました。この記事では以下のソルバを扱います。
- 線形ソルバ
- CLP
- GLPK
- CBC
- 非線形ソルバ
- IPOPT
- Bonmin
- Couenne
検証環境は以下の通りです。
バージョン | |
---|---|
Windows 10 Home | 21H1 |
Python | 3.10.4 |
Pyomo | 6.4.1 |
CLP | 1.17.7 |
GLPK | 5.0 |
CBC | 不明 |
IPOPT | 3.11.1 |
Bonmin | 1.4.0 |
Couenne | 0.3.2 |
Pyomoのインストール方法は以下の記事を参照ください。
Pyomoで線形計画問題を解く – Helve Tech Blog
以降では、OSに関して特に記述がない場合、Windows 10を対象としています。
ソルバの比較
ソルバ | 対象の問題 | ライセンス |
---|---|---|
CLP | LP | EPLv2 |
GLPK | LP, MILP | GPLv3 |
CBC | LP, MILP | EPLv2 |
IPOPT | NLP | EPLv2 |
Bonmin | NLP, MINLP | EPLv1 |
Couenne | NLP, MINLP | EPLv1 |
- LP: Linear Programming(線形計画問題)
- MILP: Mixed Integer Linear Programming(混合整数線形計画問題)
- NLP: Nonlinear Programming(非線形計画問題)
- MINLP: Mixed Integer Nonlinear Programming(混合整数非線形計画問題)
- GPL: GNU General Public License
- EPL: Eclipse Public License
ソルバの呼び出し方
Pyomoでソルバを使用する方法は以下の2つがあります。
- Pythonのライブラリとしてソルバをインストールする
- ソルバの実行ファイルにパスを通す
ライブラリとして使用する場合、以下のようにソルバを呼び出します。
|
|
一方、実行ファイルとして使用する場合、以下のように.exe
を付けます。
|
|
CLP
LinuxまたはmacOSの場合、以下のコマンドでCondaからインストールできます(Windowsは不可)。
conda install -c conda-forge coin-or-clp
CLPの実行ファイルはGitHubからダウンロード可能です。
Releases · coin-or_Clp · GitHub
ここでは、Clp-releases.1.17.7-x86_64-w64-mingw64.zip
をダウンロードします。zipファイルを解凍し、bin
フォルダにあるclp.exe
を使用します。
GLPK
Condaでインストールする場合、以下を実行します。
conda install -c conda-forge glpk
pipでインストールする場合、以下を実行します。
pip install glpk
また、GLPKの実行ファイルは以下からダウンロードできますが、Pyomoから上手く呼び出すことができませんでした。
GLPK for Windows download SourceForge.net
CBC
LinuxまたはmacOSの場合、以下のコマンドでCondaからインストールできます(Windowsは不可)。
conda install -c conda-forge coin-or-cbc
また、LinuxまたはWindowsで、かつPythonのバージョンが2.7, 3.5~3.7の場合、以下のコマンドでpipからインストールできます。
pip install cbcpy
WindowsでPython 3.8以降の場合、実行ファイルを使用します。CBCの実行ファイルは以下からダウンロード可能です。
Index of _download_binary_Cbc
ここでは、2021-04-27 15:54に配布されたCbc-master-win64-msvc16-mt.zip
をダウンロードします。zipファイルを解凍し、bin
フォルダにあるcbc.exe
を使用します。
また、zipファイルの末尾にmd
などが付けられていますが、コンパイルのオプションを指すと思われます。オプションの意味は以下の通りです。
md
: リリースバージョンの動的リンクライブラリmdd
: デバッグバージョンの動的リンクライブラリmt
: リリースバージョンの静的リンクライブラリmtd
: デバッグバージョンの静的リンクライブラリ
動的リンクライブラリでは、ライブラリが*.dll
として付属しており、cbc.exe
と同じフォルダに置く必要があります。一方、静的リンクライブラリでは、ライブラリが全てcbc.exe
に納まっており、取り回しが楽です。mt
を使用すればまず問題ないと思います。
IPOPT
Condaでインストールする場合、以下を実行します。
conda install -c conda-forge ipopt
pipでインストールする場合、以下を実行します。
pip install ipopt
IPOPTの実行ファイルは以下からダウンロード可能です。
Index of _download_binary_Ipopt
ここでは、2013-06-15 08:42に配布されたIpopt-3.11.1-win64-intel13.1.zip
をダウンロードします。zipファイルを解凍し、bin
フォルダにあるipopt.exe
を使用します。
Bonmin
LinuxまたはmacOSの場合、以下のコマンドでCondaからインストールできます(Windowsは不可)。
conda install -c conda-forge coinbonmin
Bonminの実行ファイルは以下からダウンロード可能です。
Index of _download_binary_Bonmin
ここでは、2011-09-19 17:39に配布されたBonmin-1.4.0-win32-msvc9.zip
をダウンロードします。zipファイルを解凍し、bin
フォルダにあるbonmin.exe
を使用します。
Couenne
CouenneはPythonライブラリとして配布されていないようですので、実行ファイルを使用します。Couenneの実行ファイルは以下からダウンロード可能です。
Index of _download_binary_Couenne
ここでは、2011-09-19 20:34に配布されたCouenne-0.3.2-win32-msvc9.zip
をダウンロードします。zipファイルを解凍し、bin
フォルダにあるcouenne.exe
を使用します。