Я относительно новичок в целочисленном программировании и (снова) застрял с формулировкой ограничения.
В моей упрощенной модели у меня есть (непрерывная) переменная с нижней границей LB ниже нуля и верхней границей UB выше нуля. Теперь я хочу присвоить значение переменной другим переменным в зависимости от значения, которое эта переменная приняла.
Логика, которую я хочу выразить, следующая:
LB > 0
UB > 0
-LB <= Variable1 <= UB
if Variable1 => 0:
Variable2 = Variable1
Variable3 = 0
else:
Variable2 = 0
Variable3 = abs(Variable1)
Как я могу описать это с помощью линейных (не) равенств?
Я думаю, я немного медленно осваиваю ...
Заранее спасибо!
** Изменить: для моделирования я использую Python, Pyomo и новейший решатель Gurobi.
*** Изменить: я сформулировал это следующим образом, используя двоичную переменную. (Я знаю, что он квадратичный, но позже его можно линеаризовать):
LB > 0
UB > 0
-LB <= Variable1 <= UB
0 <= Variable2 <= UB
0 <= Variable3 <= LB
Variable4 = Variable2 * BinaryVariable - Variable3 * (1-BinaryVariable)
Но теперь мне все еще нужно убедиться, что Variable3 равно 0, если Variable2> 0, и наоборот.
Любые идеи?