Я пытаюсь оптимизировать абстрактную модель pyomo (m). Модель имеет (целочисленный) параметр с именем a
. Я хочу вычислить другое целочисленное значение при построении модели. Пусть другая переменная будет c = a*(a-1)/2
. И я хочу массив бинарных переменных размером c
Для этого я пишу следующие строки -
#File - test.py#
from pyomo.environ import *
m = AbstractModel()
m.a = Param()
c = m.a*(m.a-1)/2
m.var = Var(range(1,c), within=Binary)
m.obj = Objective(expr = 0)
#File - data.dat#
param a := 5 ;
Чтобы решить эту проблему, я побежал - pyomo solve test.py data.dat --solver=glpk
После запуска я получаю следующую ошибку:
Implicit conversion of Pyomo NumericValue type `<class
'pyomo.core.kernel.expr_coopr3._ProductExpression'>' to an integer
is disabled. This error is often the result of using Pyomo components as
arguments to one of the Python built-in math
module functions when defining expressions. Avoid this error by using Pyomo-
provided math functions.
Я думаю, что ошибка возникает, когда я пытаюсь взять range(1,c)
. Поправьте меня, если я ошибаюсь.
У меня Python 2.7.12, Pyomo-5.3 (CPython-2.7.12 в Linux). Мне придется спросить у кого-нибудь метод установки, так как я его установил, так что это может занять время. Я обновлю метод установки, как только спрошу человека, который его установил.
Спасибо.
m.a
?), полной ошибкой (ваша (что-то здесь) действительно полезная информация!), платформой, интерпретатором и версией Python, версия pyomo и метод установки. - person jsiirola   schedule 21.02.2018