Formulazione LP per if-condition


10

Ho il seguente LP:

/* Funzione obiettivo */
min: 1 w + 2 x + 0,5 y + z;

/ * Limiti di variabili * /
w + x <= T1;
w + y = U1;
x + z = U2;
T1 = 50;
U1 = 70;
U2 = 25;

In questo caso U1 + U2> T1 e la soluzione ottimale è y = 70 e z = 25. Voglio imporre la condizione che alle variabili w e x siano assegnati valori prima di assegnare valori a y e z. Se U1 + U2 <T1, allora voglio solo che w e x abbiano valori y = z = 0. Esiste un modo per applicare un tale vincolo in un LP o un MILP?


non so perché il downvote: è una domanda ragionevole, sebbene ristretta negli LP
Suresh Venkat,

Risposte:


11

Ecco le risposte alle tue due domande. I dettagli dipenderanno dal solutore che stai utilizzando:

  • wxyz

  • Il kit di programmazione lineare GNU ha in realtà un if-then-elsecostrutto per esprimere i condizionali. Cerca "condizionale" nel manuale . Si potrebbe avvolgere le clausole a cui sei interessato in questa affermazione un: if U1 + U2 < T2 then y = 0 and z = 0 else true. (Nota che in realtà non l'ho provato, quindi la sintassi potrebbe essere sbagliata.)

  • U1U2T1U1+U2<T1U1+U2T1


Grazie per le opzioni Per ora andrò con l'opzione 3.
Bala,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.