Restricción lógica en ILP

Aug 16 2020

Quiero escribir la siguiente restricción:

Dejar$z$Sea una variable entera tal que$0\le z\le M$, y$t$ser una variable binaria donde$M$denota gran M. La restricción lógica es la siguiente:

  • si$z \leq M$y$z > 0$después$t=1$;

  • si$z=0$después$t=0$.

Es esto$z≤Mt$¿suficiente? los$t$y$z$las variables no están en mi función objetivo pero variable$t$está conectado a otra variable en la función objetivo?

Muchas gracias, agradezco su ayuda.

Respuestas

4 RobPratt Aug 16 2020 at 02:50

La restricción de la gran M$z \le M t$hace cumplir$z > 0 \implies t = 1$, equivalentemente su contrapositivo$t = 0 \implies z = 0$, pero no al revés$$z = 0 \implies t = 0. \tag1$$Hacer cumplir$(1)$, considere su contrapositivo$$t = 1 \implies z > 0 \tag2,$$que puede hacer cumplir a través de la restricción big-M$$\epsilon - z \le (\epsilon - 0)(1 - t),$$de manera equivalente,$$z \ge \epsilon t,$$dónde$\epsilon > 0$es una tolerancia que representa el valor más pequeño de$z$que consideraría positivo.