У меня есть способ указать два ограничения для одной и той же переменной при использовании Puthon PuLP для линейной программы

Мне было интересно, есть ли способ иметь переменную с двумя разными ограничениями при использовании Python PuLP.

prob += lpSum([evaptwohundredF[i] * component_vars[i] for i in name]) >= 30.0000, "evaptwohundredFrequirement"
prob += lpSum([evaptwohundredF[i] * component_vars[i] for i in name]) <=70.0000, "evaptwohundredFrequirement"

Это пример того, что я хотел бы, когда одна и та же переменная имеет два ограничения:> = 30 и ‹= 70, но проблема в том, что я получаю сообщение об ошибке« pulp.constants.PulpError: перекрывающиеся имена ограничений: esptwohundredrequirement », так как бы я мог разрешить оба ограничения?


person Community    schedule 04.08.2017    source источник


Ответы (1)


Я не большой пользователь целлюлозы, но то, о чем вы просите, очевидно, разрешено в линейном программировании (и, следовательно,, вероятно, во всех инструментах моделирования).

Проблема в вашем случае: pulp ожидает уникальный идентификатор / str для каждого ограничения (и ваши равны).

Сделайте что-нибудь вроде (изменили только имена ограничений):

prob += lpSum([evaptwohundredF[i] * component_vars[i] for i in name]) >= 30.0000, "evaptwohundredFrequirement_a"
prob += lpSum([evaptwohundredF[i] * component_vars[i] for i in name]) <=70.0000, "evaptwohundredFrequirement_b"
person sascha    schedule 04.08.2017