Contrainte logique dans ILP
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
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,$$où$\epsilon > 0$est une tolérance qui représente la plus petite valeur de$z$que vous considérez comme positif.