创建模型(实例)抽象模型

Create model (instance) Abstract Model

我正在使用 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

但它 returns 很好的解决方案!

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

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

谁能帮帮我?

谢谢,玛丽亚

正确:"deprecation warning" 是一个方法、属性或函数正在更改的警告,旧方法将在未来的版本中删除。因此,目前,旧方法(在这种情况下,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 示例通常使用 instanceopt(或 solver)和 results 来帮助使示例更加清晰。