Я пытаюсь найти способ в PULP закодировать так, чтобы все значения в блоке, указанном оператором IF в конце (т.е. если j >= 7 и j <= 21), были одинаковыми.
Я не уверен, с чего начать, так как я больше знаком с программированием на 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])






Я думаю, вам просто нужно добавить ограничения 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, но, надеюсь, вы поняли идею.
Работает отлично! Я знал, что это должно быть что-то в этом роде, но не был уверен. Спасибо!!
Вы можете поделиться минимальный воспроизводимый пример? Было бы намного проще предложить лучший способ сделать то, что вам нужно.