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

时间:2017-01-21 12:21:28

标签: model abstract pyomo

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

任何人都可以帮助我吗?

谢谢,Maria

1 个答案:

答案 0 :(得分:1)

正确:a"弃用警告"是一个警告,方法,属性或功能正在改变,旧的方式将在未来的版本中删除。因此,暂时使用旧方法(在这种情况下,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来帮助您更清楚地展示示例。