我想在使用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
对应于Booth'功能。 我想将最大数量的函数评估设置为终止条件。我怎样才能做到这一点?
如果还可以得到更详细的结果输出,理想情况下列出运行的最佳结果和功能评估的数量,那么这将是一个奖励。
答案 0 :(得分:1)
您可以使用options
方法的solve
关键字参数将解决方案选项作为字典发送给解算器。选项逐字传递给求解器。您需要查看单个解算器文档以查看它支持的选项(对于BARON,请参阅here)。例如:
solver = SolverFactory('baron')
solver.solve(model, options={'MaxIter': 5})
如果要实时观察求解器过程,可以告诉Pyomo不要使用tee
选项抑制求解器stdout / stderr输出:
solver.solve(model, options={'MaxIter': 5}, tee=True)
由于几乎所有求解器都是作为单独的子进程启动的,因此(当前)Pyomo无法在求解器执行期间获取侵入信息(如当前的现任变量值)。