0

我正在使用 Pyomo 4.4.1 (VOTD) (CPython 2.7.12) 并且我在一个抽象模型中。如果我使用:instance = model.create('datos.dat')

我得到:

WARNING: DEPRECATION WARNING: the Model.create() method is deprecated.  Call
        Model.create_instance() to create a concrete instance from an abstract
        model.  You do not need to call Model.create() for a concrete model.
Model unknown

但它返回了很好的解决方案!

我改变这一行,写作: Model.create_instance(datos.dat)但我得到一个错误:

results = opt.solve(instance)
NameError: name 'instance' is not defined

任何人都可以帮助我吗?

谢谢,玛丽亚

4

1 回答 1

1

正确:“弃用警告”是警告方法、属性或函数正在更改,并且旧方法将在未来版本中删除。所以,暂时,旧方法(在这种情况下,create()仍然像往常一样工作,但你应该开始改变你的模型以使用新的接口(在这种情况下create_instance()),这样你的模型将继续工作未来的版本。

也就是说,您仍然需要将结果分配给变量create()create_instance()然后您可以将其传递给求解器。所以,你会想要这样的东西:

instance = model.create_instance('datos.dat')
opt = SolverFactory('cbc')
solver_results = opt.solve(instance)

这些只是 Python 变量,因此您可以轻松完成

a = model.create_instance('datos.dat')
b = SolverFactory('cbc')
c = b.solve(a)

Pyomo 示例通常使用instance, opt(或solver) 和results来帮助使示例更清晰。

于 2017-01-21T16:14:44.100 回答