Restrição lógica no ILP
Eu quero escrever a seguinte restrição:
Deixar$z$seja uma variável inteira tal que$0\le z\le M$, e$t$seja uma variável binária onde$M$denota grande-M. A restrição lógica é a seguinte:
E se$z \leq M$e$z > 0$então$t=1$;
E se$z=0$então$t=0$.
É isto$z≤Mt$suficiente? o$t$e$z$variáveis não estão na minha função objetivo, mas variável$t$está conectado a outra variável na função objetivo?
Muito obrigado, agradeço sua ajuda.
Respostas
A restrição do M grande$z \le M t$faz cumprir$z > 0 \implies t = 1$, equivalentemente a sua contrapositiva$t = 0 \implies z = 0$, mas não o inverso$$z = 0 \implies t = 0. \tag1$$Reforçar$(1)$, considere sua contrapositiva$$t = 1 \implies z > 0 \tag2,$$que você pode impor por meio da restrição big-M$$\epsilon - z \le (\epsilon - 0)(1 - t),$$equivalentemente,$$z \ge \epsilon t,$$Onde$\epsilon > 0$é uma tolerância que representa o menor valor de$z$que você consideraria positivo.