2017-07-11 4 views
0

私はPyomoとGLPKを使ってILPを解いています。コマンドラインで実行すると、pyomoは各ステップにかかる時間を秒単位で出力します。pyomoのresults.jsonの "時間"の意味

"Solver": [ 
    { 
     "Error rc": 0, 
     "Statistics": { 
      "Branch and bound": { 
       "Number of bounded subproblems": "13", 
       "Number of created subproblems": "13" 
      } 
     }, 
     "Status": "ok", 
     "Termination condition": "optimal", 
     "Time": 2.9578073024749756 
    } 
] 

「時間」の意味は何ですか、この文脈で:私は出力されresults.jsonファイルに見ると今、私はこのようなセクションを取得しますか? 私はいくつかの変数を修正するヒューリスティックを適用して解決時間を短縮しようとしています。面白いことに、これはコマンドラインの実行時間を短縮するものではありませんが、results.jsonファイルの時間の値は大きくなります。

答えて

0

ソルバーで実際に費やされた時間に相当します。コマンドラインの視点から見ると、(1)Pyomoモデルを構築する時間、(2)Pyomoモデルをソルバが期待するどのような形式(例えばLPファイル)に変換する時間、 3)ソルバ内部で費やされた時間、(4)ソルバ解をPyomoモデルに戻す時間。

モデルが実際に大きくなるにつれて、(1)と(2)が重要になり始める可能性があります。比較的簡単なモデルクラス(LPや時にはMIPなど)では、CplexやGurobiのような産業ソルバーが苦労し始める前に、Pyomoでボトルネックを起こす可能性が高いですが、Pyomoの時間を短縮するための手順があります問題。より困難なモデルクラス(MINLPなど)では、Pyomo(Python)の処理時間が問題になる前に、現在のソルバー機能の限界にぶつかる可能性があります。