Zmienna decyzyjna musi być sumą wielu rozłącznych przedziałów
W moim programie liniowym próbuję wyrazić tę zmienną decyzyjną $x \in R$ może leżeć tylko w określonych odstępach czasu, np $x \in [0,2] \cup [5,8] \cup [9,15]$.
Jestem świadomy, że można modelować albo ograniczenie 1 lub ograniczenie 2 z trick Big M (np wyjaśnione tutaj w punkcie 7.3 i zapytałem tutaj , ale nie widać bezpośrednio, jak to może rozwiązać moje pytanie. Jakieś pomysły?
Odpowiedzi
Jeśli $[a_i,b_i]$ jest $i$-ty przedział, a następnie dla zmiennej binarnej $z_i$ nierówność
$$a_iz_i-(1-z_i)M\leq x\leq b_iz_i+(1-z_i)M$$
daje $x\in[a_i,b_i]$ kiedy $z_i=1$ i jest „bezpłatny” ($x\in [-M,M]$) kiedy $z_i=0$. Czyli rodzina takich ograniczeń razem z
$$\sum z_i= 1$$
modeluje członkostwo w zjednoczeniu interwałów $x\in\bigcup_i[a_i,b_i]$.
Z tymi samymi zmiennymi binarnymi $z_i$ jak w odpowiedzi @MichalAdamaszek, ściślejsze jest sformułowanie \begin{align} \sum_i a_i z_i \le x &\le \sum_i b_i z_i \\ \sum_i z_i &= 1 \end{align}