Pyomo - 使用男爵解算器设置最大功能评估数

时间:2017-05-24 11:33:06

标签: solver pyomo

我想在使用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'功能。 我想将最大数量的函数评估设置为终止条件。我怎样才能做到这一点?

如果还可以得到更详细的结果输出,理想情况下列出运行的最佳结果和功能评估的数量,那么这将是一个奖励。

1 个答案:

答案 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无法在求解器执行期间获取侵入信息(如当前的现任变量值)。