Ответ профессора Хендрегена
Я не могу воспроизвести вашу проблему, потому что она требует ввода вашей функции. Сообщение об ошибке состоит в том, что одно из ваших выражений неравенства использует значение списка [45.4545] вместо числа 45.4545 в выражении. Вы можете решить эту проблему, используя значение (x[0])
вместо списка (x)
. Если вы поставите [0] в конце этих списков, он будет использовать только значение.
Если вам нужно передать дополнительные аргументы при создании массива переменных, вы можете использовать что-то вроде следующего:
Вариант 1
Создайте массив numpy
с помощью функции m.Array
:
y = m.Array(m.Var,4,lb=0,ub=1,integer=True)
См. https://gekko.readthedocs.io/en/latest/model_methods.html?highlight=array
Вариант 2
Создайте список переменных с пониманием списка:
y = [m.Var(lb=0,ub=1,integer=True) for i in range(4)]
Вариант 3
Кроме того, вы можете создать пустой список (y) и добавить двоичные значения в этот список.
y = []
for i in range(3):
y.append(m.Var(lb=0,ub=1,integer=True)