LP-Formulierung für If-Bedingungen

10

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?

Bala
quelle
Ich bin mir nicht sicher, warum die Abstimmung: Es ist eine vernünftige, wenn auch enge Frage in LPs
Suresh Venkat

Antworten:

11

Hier finden Sie Antworten auf Ihre beiden Fragen. Die Details hängen davon ab, welchen Löser Sie verwenden:

  • wxyz

  • Das GNU Linear Programming Kit verfügt tatsächlich über ein if-then-elseKonstrukt 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.)

  • U1U2T1U1+U2<T1U1+U2T1

Dave Clarke
quelle
Danke für die Möglichkeiten. Ich werde vorerst mit Option 3 gehen.
Bala