Preparat LP na warunki warunkowe

10

Mam następujący LP:

/* Funkcja celu */
min: 1 w + 2 x + 0,5 y + z;

/ * Zmienne granice * /
w + x <= T1;
w + y = U1;
x + z = U2;
T1 = 50;
U1 = 70;
U2 = 25;

W tym przypadku U1 + U2> T1, a optymalnym rozwiązaniem jest y = 70 i z = 25. Chcę wymusić warunek, aby zmiennym w i x były przypisywane wartości przed przypisaniem wartości do y i z. Jeśli U1 + U2 <T1, to chcę, aby tylko w i x miały wartości, ay = z = 0. Czy istnieje sposób wymuszenia takiego ograniczenia w LP lub MILP?

Bala
źródło
nie jestem pewien, dlaczego opinia negatywna: jest to rozsądne, choć wąskie pytanie w LP
Suresh Venkat

Odpowiedzi:

11

Oto odpowiedzi na twoje dwa pytania. Szczegóły zależą od używanego solvera:

  • wxyz

  • Kit programowania GNU Linear faktycznie ma if-then-elsekonstrukcję do wyrażenia warunkowe. Poszukaj „warunkowy” w instrukcji . Można owinąć klauzul jesteś zainteresowany w takim oświadczeniu o: if U1 + U2 < T2 then y = 0 and z = 0 else true. (Pamiętaj, że tak naprawdę nie próbowałem tego, więc składnia może być niepoprawna).

  • U1U2T1U1+U2<T1U1+U2T1

Dave Clarke
źródło
Dzięki za opcje. Pójdę na razie z opcją 3.
Bala,