Как получить блок значений Python PULP - PullRequest
0 голосов
/ 12 июня 2019

Я пытаюсь найти способ в PULP кодировать так, чтобы все значения в блоке, указанном оператором IF в конце (т.е. если j> = 7 и j <= 21), были одинаковыми. </p>

Я не уверен, с чего начать, так как я более знаком с кодированием в Xpress Mosel, а не с языком PULP.

model += pulp.lpSum([YALL[(i,j)] for i in range(YPER) for j in range(HE) if j >= 23]) == pulp.lpSum([YALL[(i,j)] for i in range(YPER) for j in range(HE) if j <= 24])

Код выше - очень простой способ, которым я должен установить периоды 23 и 24 равными друг другу. Я пытаюсь сделать так, чтобы я мог указать начальный период (то есть 7) и конечный период (то есть 22) и иметь все значения между этими периодами равными друг другу. Код, который у меня есть, находится ниже, но не делает то, что мне нужно.

model += pulp.lpSum([YALL[(i,j)] for i in range(YPER) for j in range(HE) if j >= 7]) == pulp.lpSum([YALL[(i,j)] for i in range(YPER) for j in range(HE) if j <= 21])

1 Ответ

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

Я думаю, вам просто нужно добавить ограничения YALL[(i,j)] == YALL[(i,j+1)] для j в 7, ..., 20:

for i in range(YPER):
    for j in range(7, 21):
        model += YALL[(i,j)] == YALL[(i,j+1)]

Возможно, синтаксис PuLP немного ошибочен, но, надеюсь, вы получитеидея.

...