2017-06-11 12 views
2

私はpyomoを使用して多くのモデルを構築していますが、私が理解しているところでは、pyomoはモデルを解決する前に再定式化しています。`pyomo`スクリプトソルバーの中から` pyomo`から `nl`ファイルを取得する方法は?

モデルがソルバーファイルipoptcouenneに渡されたときに、そのモデルがどのように見えるかを知りたい。

hereが表示されているので、nlのファイルをスクリプトから取得する方法はわかりません(ただし、コマンドラインから取得する方法は分かります)。ここで

は、私がpyomoでモデルを解決しています方法です:

ipopt_solver = SolverFactory('ipopt') 
ipopt_results_solver = ipopt_solver.solve(my_model, tee=True) 
print ipopt_results_solver 

couenne_solver = SolverFactory('couenne') 
couenne_results_solver = couenne_solver.solve(my_model, tee=True) 
print couenne_results_solver 

私はちょうど解決する前にnlファイルを取得するにはどうすればよいですか? (そして私はnl以外のフォーマットを吐き出すのと同じように簡単だと思います)。

答えて

2

あなただけのNLファイルをしたい場合は、あなたがで終わるファイル名を持つモデルにwriteメソッドを呼び出すことができます.nl(例えば、my_model.write('junk.nl')

あなたは一時的に削除しないように、ソルバオブジェクトを伝えたい場合ソルバファイルにアクセスできるように、keepfiles=Trueをソルバコールに追加する必要があります。これにより、一時ソルバファイルの場所が表示されます。スクリプトからアクセスする必要がある場合は、NLファイル名を見つけることができますソルバオブジェクトの_problem_filesリスト属性のエントリの1つとして指定します。ログファイル名は、_log_file属性に格納されます。

関連する問題