Python PULP Неподдерживаемые типы операндов TypeError - PullRequest
0 голосов
/ 12 июня 2019

Я пытаюсь установить какое-то конкретное ограничение в PULP и чувствую, что упускаю что-то простое.Все проблемы одинаковы: TypeError показывает UNSUPPORTED OPERAND между «generator» и int или непрерывным.

Я пробовал различные решения, предоставленный код, хотя и не работает.

YPER = 365
HE = 24

yearlyhours = [(i,j) for i in range(YPER) for j in range(HE)]

YAHL = pulp.LpVariable.dicts('YAHL', yearlyhours, lowBound=0, cat='Continuous')
YALL = pulp.LpVariable.dicts('YALL', yearlyhours, lowBound=0, cat='Continuous')
YAHLINT = pulp.LpVariable.dicts('YAHLINT', yearlyhours, lowBound=0, cat='Integer')
YAHLBIN = pulp.LpVariable.dicts('YAHLBIN', yearlyhours, lowBound=0, cat='Binary')

model += pulp.lpSum([YAHLINT[(i,j)] for i in range(YPER) for j in range(HE) if j >= 7 and j <= 22]) == (YAHL[i][j] for i in range(YPER) for j in range(HE) if j >= 7 and j <= 22) / 25

model += pulp.lpSum([YAHL[(i,j)] for i in range(YPER) for j in range(HE) if j >= 7 and j <= 22]) >= 0 * (YAHLBIN[i][j] for i in range(YPER) for j in range(HE) if j >= 7 and j <= 22)

TypeError: неподдерживаемые типы операндов для /: 'generator' и 'int'

и

TypeError: неподдерживаемые типы операндов для *: 'int' и 'generator'

1 Ответ

1 голос
/ 12 июня 2019

Вы используете генератор выражения здесь:

(YAHL[i][j] for i in range(YPER) for j in range(HE) if j >= 7 and j <= 22)

Я думаю, это не то, что вы действительно хотите.

Вы должны измениться в соответствии с вашей целью

например,

== pulp.lpsum([YAHL[i][j] for i in range(YPER) for j in range(HE) if j >= 7 and j <= 22])
...