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?
linear-programming
Bala
źródło
źródło
Odpowiedzi:
Oto odpowiedzi na twoje dwa pytania. Szczegóły zależą od używanego solvera:
Kit programowania GNU Linear faktycznie ma
if-then-else
konstrukcję 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).źródło