Создать модель (экземпляр) Абстрактная модель

Я использую 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

Кто-нибудь может мне помочь?

Спасибо мария


person Michael    schedule 21.01.2017    source источник


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

person jsiirola    schedule 21.01.2017