Pyomo - 使用 baron 求解器设置函数评估的最大数量

Pyomo - Set maximum number of function evaluations using baron solver

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

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

您可以使用 solve 方法的 options 关键字参数将选项作为字典发送给求解器。选项逐字传递给求解器。您将需要查看各个求解器文档以了解它支持哪些选项(对于 BARON,请参阅 here)。例如:

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

如果您想实时观看求解器过程,可以使用 tee 选项告诉 Pyomo 不要抑制求解器 stdout/stderr 输出:

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

由于几乎所有求解器都是作为单独的子进程启动的,因此(目前)Pyomo 无法在求解器执行期间获取侵入性信息(如当前的现有变量值)。