背景
SCIPがv8.0.3からApache2.0となり、無償での商用利用が可能になったみたいですね。
(参考 https://qiita.com/samuelladoco/items/703bf78ea66e8369c455)
色々調べてみると並列化(FiberSCIP 略称FSCIPと呼ばれているようです。)が
可能なようなのでメモ程度に使用方法を記載しておきます。
(基本的なPulpの使用方法などは、他の文献を参照ください)
環境
・python 3.8.16
・pulp 2.7.0
・SCIP 8.0.3
使用方法
1. SCIP Optimization Suiteから、v8.0.3をダウンロードする。
適度な場所(以下Aとします。)においてください。
2. Githubを参考に、Pulpをインストールする。
pip install -U git+https://github.com/coin-or/pulp
Condaや通常のPipによるインストールだと、下記(4.)で使用するFSCIP_CMDが用意されていないようです。
3. コードの一部修正
starts_withをstartswithに置換
- if option.starts_with("-"):
+ if option.startswith("-"):
修正しない場合、FSCIP_CMDで使用するoptionsを指定する際、エラーが発生します。
(修正依頼のやり方がいまいち分からず…)
4. Solverにpulp.FSCIP_CMDを使用します。
引数のpathにはA/bin/fscip.exeを指定してください。
solver=pulp.FSCIP_CMD(path=r"(A)\SCIPOptSuite 8.0.3\bin\fscip.exe",
options=["TimeLimit=300"])
FSCIP_CMDの引数として、timeLimitが存在しますが、どうやらうまく作動しないようです。(2023/2/18現在)
よって、optionsにて直接渡しています。(そのために3.にて修正しました)
まとめ
PulpでのFiberSCIPの使用(Windows)方法をお伝えしました。