Формулировка LP для условий if

10

У меня есть следующий LP:

/ * Объективная функция * /
мин: 1 ш + 2 х + 0,5 у + z;

/ * Переменные границы * /
w + x <= T1;
w + y = U1;
х + z = U2;
Т1 = 50;
U1 = 70;
U2 = 25;

В этом случае U1 + U2> T1 и оптимальное решение - y = 70 и z = 25. Я хочу обеспечить условие, чтобы переменным w и x были присвоены значения, прежде чем присваивать значения y и z. Если U1 + U2 <T1, то я хочу, чтобы только w и x имели значения, а y = z = 0. Есть ли способ применить такое ограничение в LP или MILP?

Bala
источник
не уверен, почему отрицательный голос: это разумный, хотя и узкий вопрос в LP
Суреш Венкат

Ответы:

11

Вот ответы на два ваших вопроса. Детали будут зависеть от того, какой решатель вы используете:

  • wxyz

  • Набор для линейного программирования GNU фактически имеет if-then-elseконструкцию для выражения условных выражений. Ищите «условный» в руководстве . Вы можете обернуть пункты вы заинтересованы в в таком заявлении: if U1 + U2 < T2 then y = 0 and z = 0 else true. (Обратите внимание, что я на самом деле не пробовал это, поэтому синтаксис может быть неправильным.)

  • U1U2T1U1+U2<T1U1+U2T1

Дэйв Кларк
источник
Спасибо за варианты. Я пойду с вариантом 3 на данный момент.
Бала