1 votos

problema de formulación de la programación entera

Consideremos un problema con tres variables: $u$ , $\sigma_l$ y $\sigma_w$ donde $\sigma_w > \sigma_l$ . Quiero representar la siguiente relación mediante programación entera. \begin{equation} u = \begin{cases} \sigma_w - x & x < \sigma_l \\ 0 & x > \sigma_l \end{cases} \end{equation}

Utilizando restricciones simples de tipo "o" (con una variable binaria y una M grande) puedo obtener el valor correcto para los casos en que $x > \sigma_w$ y el caso en que $x < \sigma_l$ Sin embargo, cuando $x \in (\sigma_l , \sigma_w)$ estas restricciones de uno u otro tipo fallan. Para mostrar lo que he intentado hasta ahora, escribo las restricciones either-or que he probado:

$0 \leq u \leq Mz\\ \sigma_l - x + z(\sigma_w - \sigma_l) \leq u \leq \sigma_l - x + z(\sigma_w - \sigma_l) + M(1-z)$

donde $z \in \{0,1\}$ y $M$ es un número arbitrariamente grande.

2voto

holger3000 Puntos 144

Después de pensarlo un poco más, las siguientes restricciones de uno u otro tipo son suficientes. Así, cuando $x<\sigma_l$ entonces $z$ debe ser igual a uno y $u$ se ajusta a $\sigma_w-x$ . Por lo demás, $z=0$ y $u=0$

$ 0 \leq x - \sigma_l + Mz\\ 0 \leq -u + Mz \\ x - \sigma_l \leq 0 + M(1-z) \\ \sigma_w - x \leq u \leq \sigma_w - x + M(1-z) \\ u \geq 0 \\ $

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X