La variable de decisión debe estar en la unión de múltiples intervalos disjuntos
En mi programa lineal, intento expresar que una variable de decisión $x \in R$ solo puede estar en ciertos intervalos, p. ej. $x \in [0,2] \cup [5,8] \cup [9,15]$.
Soy consciente de que puede modelar la restricción 1 O la restricción 2 con un truco Big M (por ejemplo, explicado aquí en la sección 7.3 y preguntado aquí , pero no veo directamente cómo esto podría resolver mi pregunta. ¿Alguna idea?
Respuestas
Si $[a_i,b_i]$ es el $i$-th intervalo entonces para una variable binaria $z_i$ la desigualdad
$$a_iz_i-(1-z_i)M\leq x\leq b_iz_i+(1-z_i)M$$
da $x\in[a_i,b_i]$ cuando $z_i=1$ y es "gratis" ($x\in [-M,M]$) cuando $z_i=0$. Entonces, una familia de tales limitaciones junto con
$$\sum z_i= 1$$
modela la membresía en una unión de intervalos $x\in\bigcup_i[a_i,b_i]$.
Con las mismas variables binarias $z_i$ como en la respuesta de @ MichalAdamaszek, una formulación más estricta es \begin{align} \sum_i a_i z_i \le x &\le \sum_i b_i z_i \\ \sum_i z_i &= 1 \end{align}