Contrainte logique dans ILP

Aug 16 2020

Je veux écrire la contrainte suivante :

Laisser$z$être une variable entière telle que$0\le z\le M$, et$t$être une variable binaire où$M$désigne grand-M. La contrainte logique est la suivante :

  • si$z \leq M$et$z > 0$alors$t=1$;

  • si$z=0$alors$t=0$.

Est-ce$z≤Mt$suffisant? La$t$et$z$les variables ne sont pas dans ma fonction objectif mais variable$t$est connecté à une autre variable dans la fonction objectif ?

Merci beaucoup, j'apprécie votre aide.

Réponses

4 RobPratt Aug 16 2020 at 02:50

La contrainte big-M$z \le M t$applique-t-il$z > 0 \implies t = 1$, de manière équivalente sa contraposée$t = 0 \implies z = 0$, mais pas l'inverse$$z = 0 \implies t = 0. \tag1$$Renforcer$(1)$, considérons sa contraposée$$t = 1 \implies z > 0 \tag2,$$que vous pouvez appliquer via la contrainte big-M$$\epsilon - z \le (\epsilon - 0)(1 - t),$$de manière équivalente,$$z \ge \epsilon t,$$$\epsilon > 0$est une tolérance qui représente la plus petite valeur de$z$que vous considérez comme positif.