見出し画像

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の値を少なく設定することで,省メモリになるそうです.

参考にしたサイトは,次のとおり.


いいなと思ったら応援しよう!