Ograniczenie logiczne w ILP

Aug 16 2020

Chcę napisać następujące ograniczenie:

Pozwolić $z$ być taką zmienną typu integer $0\le z\le M$, i $t$ być zmienną binarną, gdzie $M$oznacza duże-M. Logiczne ograniczenie jest następujące:

  • gdyby $z \leq M$ i $z > 0$ następnie $t=1$;

  • gdyby $z=0$ następnie $t=0$.

Czy to jest $z≤Mt$wystarczający? Plik$t$ i $z$ zmienne nie znajdują się w mojej funkcji celu, ale zmienne $t$ jest powiązany z inną zmienną w funkcji celu?

Dziękuję bardzo, doceniam twoją pomoc.

Odpowiedzi

4 RobPratt Aug 16 2020 at 02:50

Ograniczenie dużego M $z \le M t$ egzekwuje $z > 0 \implies t = 1$, równoważnie jego kontrapozytywne $t = 0 \implies z = 0$, ale nie na odwrót $$z = 0 \implies t = 0. \tag1$$ Egzekwować $(1)$, rozważ jego kontrapozytywne $$t = 1 \implies z > 0 \tag2,$$ które możesz wymusić poprzez ograniczenie big-M $$\epsilon - z \le (\epsilon - 0)(1 - t),$$ równoważnie, $$z \ge \epsilon t,$$ gdzie $\epsilon > 0$ to tolerancja reprezentująca najmniejszą wartość $z$ które uważasz za pozytywne.