Чтобы мое предложенное решение работало, сначала вам нужно определить значения Xij_min
и Xij_max
, чтобы представить минимальные и максимальные пределы переменной Xij
, когда она равна Xij > 0
.
Xij_min
может быть таким же маленьким, как вы sh или имеет смысл, а Xij_max
может быть сколь угодно высоким, если нет физических ограничений для ваших переменных.
Затем, добавив два следующих ограничения, можно достичь того, чего вы хотите:
Xij >= Xij_min * Yij
Xij <= Xij_max * Yij
Для примера рассмотрим Xij_min = 0.1
и Xij_max = 1000
. Это создаст ограничения:
Xij >= 0.1 * Yij
Xij <= 1000 * Yij
Если Xij
будет принимать значение от 0,1 до 1000 (которое мы определили как допустимый положительный диапазон), тогда Yij
должно быть равно 1.
Теперь, если Xij
становится 0, тогда для удержания этих ограничений Yij
должно быть 0, чтобы иметь Xij <= 0
и Xij >= 0
.