Gurobiでout of memoryになった
Gurobiを使っていると,out of memoryになることがある.Pythonでメモリの消費量を計算することができるとのこと.
Pythonのpsutilというライブラリを使う.pip install psutilでインストールできる.手元のAnaconda3には,psutilが既に入っていた.
import os
import psutil
process = psutil.Process(os.getpid())
print(process.memory_info().rss/1024**2)
最後のprint(process.memory_info().rss)だとbytes(バイト)単位で見ずらいので,1024^2で割って,Mbiytes(メガバイト)単位に直している.
Gurobiを使っていて,急に計算が終わっている場合は,メモリオーバを疑ってみてください.out of memoryの解決策としては,次があります.
メモリが多い計算機で走らせる,あるいは,メモリを足す.
変数を削減できないかなどモデルを見直す.
同時実行スレッド数を減らす.
V10よりSoftMemLimitパラメータができ,指定のメモリ量を超過した場合に正常終了できるそうです.
GurobiのパラメータThreadsのデフォルトは0で,0の設定でパフォーマンスがいいようですが,問題によっては,Threadsの値を少なく設定することで,省メモリになるそうです.
参考にしたサイトは,次のとおり.