Ich habe die folgende LP:
/* Zielfunktion */ min: 1 w + 2 x + 0,5 y + z; / * Variable Grenzen * / w + x <= T1; w + y = U1; x + z = U2; T1 = 50; U1 = 70; U2 = 25;
In diesem Fall ist U1 + U2> T1 und die optimale Lösung ist y = 70 und z = 25. Ich möchte die Bedingung erzwingen, dass w- und x-Variablen Werte zugewiesen werden, bevor y und z Werte zugewiesen werden. Wenn U1 + U2 <T1, dann möchte ich, dass nur w und x Werte haben und y = z = 0. Gibt es eine Möglichkeit, eine solche Einschränkung in einer LP oder einer MILP durchzusetzen?
linear-programming
Bala
quelle
quelle
Antworten:
Hier finden Sie Antworten auf Ihre beiden Fragen. Die Details hängen davon ab, welchen Löser Sie verwenden:
Das GNU Linear Programming Kit verfügt tatsächlich über ein
if-then-else
Konstrukt zum Ausdrücken von Bedingungen. Suchen Sie im Handbuch nach "bedingt" . Sie könnten die Klauseln, an denen Sie interessiert sind, in eine solche Aussage einschließen :if U1 + U2 < T2 then y = 0 and z = 0 else true
. (Beachten Sie, dass ich dies nicht ausprobiert habe, sodass die Syntax möglicherweise falsch ist.)quelle