Formulation LP pour les conditions if


10

J'ai le LP suivant:

/ * Fonction objectif * /
min: 1 w + 2 x + 0,5 y + z;

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

Dans ce cas, U1 + U2> T1 et la solution optimale est y = 70 et z = 25. Je veux appliquer la condition d'attribution de valeurs aux variables w et x avant d'attribuer des valeurs à y et z. Si U1 + U2 <T1, alors je veux que seuls w et x aient des valeurs et y = z = 0. Existe-t-il un moyen d'appliquer une telle contrainte dans un LP ou un MILP?


Je ne sais pas pourquoi le downvote: c'est une question raisonnable, quoique étroite dans les LPs
Suresh Venkat

Réponses:


11

Voici les réponses à vos deux questions. Les détails dépendront du solveur que vous utilisez:

  • Veiller à ce que et reçoivent des valeurs avant et peut souvent être fait par programme en exprimant l'ordre des variables utilisé par le solveur. Autrement dit, en spécifiant les variables pour lesquelles le solveur essaie de trouver des valeurs en premier. Cela est possible, par exemple, dans le solveur choco (qui est un solveur de problème de satisfaction de contrainte (CSP) pas un pour LP ou MILP), bien que je suis sûr que d'autres solveurs offrent également cette possibilité.x y zwxyz

  • Le kit de programmation linéaire GNU a en fait une if-then-elseconstruction pour exprimer les conditions. Recherchez «conditionnel» dans le manuel . Vous pouvez envelopper les clauses qui vous intéressent dans une telle déclaration: if U1 + U2 < T2 then y = 0 and z = 0 else true. (Notez que je n'ai pas vraiment essayé cela, donc la syntaxe peut être erronée.)

  • Une réponse alternative à la deuxième question profite du fait que , et sont des constantes. Simplement, ayez deux variantes du problème LP, une pour quand et une pour quand .U 2 T 1 U 1 + U 2 < T 1 U 1 + U 2 T 1U1U2T1U1+U2<T1U1+U2T1


Merci pour les options. J'irai avec l'option 3 pour l'instant.
Bala
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.