0

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

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

4

1 回答 1

1

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

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

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

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

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

于 2017-05-25T15:15:19.233 回答