我正在使用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
答案 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示例通常使用instance
,opt
(或solver
)和results
来帮助您更清楚地展示示例。