2017-01-21 3 views
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 

Любой человек может мне помочь?

Спасибо, Мария

ответ

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, чтобы помочь с созданием примеры более ясным.

+0

Это работает! :) Большое спасибо! – Michael