Restrição lógica no ILP

Aug 16 2020

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

4 RobPratt Aug 16 2020 at 02:50

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.