我正在使用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有人能帮我吗?
谢谢你,玛丽亚
发布于 2017-01-22 00:14:44
更正:“弃用警告”是一种警告,说明方法、属性或函数正在更改,旧方法将在未来的版本中删除。因此,就目前而言,旧方法(在本例中,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来帮助使示例更清晰。
https://stackoverflow.com/questions/41779272
复制相似问题