2017-05-24 20 views
0

Pyomoを使用するとき(BARONソルバーを使用して)、関数評価の最大数を設定したいと思います。私のコードは:Pyomo - baronソルバーを使用して関数評価の最大数を設定する

from __future__ import division 
from pyomo.environ import * 
opt = SolverFactory('baron') 
m = ConcreteModel() 
m.x1 = Var(bounds=(-10.0, 10.0)) 
m.x2 = Var(bounds=(-10.0, 10.0)) 
m.o = Objective(expr=(2.0 * m.x2 + m.x1 - 7.0) ** 2.0 + (2.0 * m.x1 + m.x2 - 5.0) ** 2.0) 
results = opt.solve(m) # maxEvaluations=5 
print results 

ここで、exprはブースの機能に対応しています。 関数評価の最大数を終了基準として設定したいと思います。どうすればこれを達成できますか?

結果の出力をより詳細に表示することができれば、実行中の最良の結果を機能評価の数でリストすることが理想的です。これはボーナスになります。

答えて

1

solveメソッドのキーワードoptionsを使用して、ソルバーにオプションを送ることができます。オプションはそのままソルバーに渡されます。個々のソルバーのドキュメントを参照して、どのオプションがサポートされているかを確認する必要があります(BARONについては、hereを参照)。たとえば:

solver.solve(model, options={'MaxIter': 5}, tee=True) 

として、ほぼすべてのソルバー:あなたはリアルタイムでソルバーのプロセスを見たい場合は

solver = SolverFactory('baron') 
solver.solve(model, options={'MaxIter': 5}) 

、あなたはteeオプションを使用してソルバーのstdout/stderr出力を抑制しないようにPyomoを伝えることができます別のサブプロセスとして起動されているため、Soloの実行中にPyomoが侵入情報(現在の現行の変数値など)を取得する方法はありません。

関連する問題