Есть много способов реализовать это.
Вот способ использования двоичных переменных δ. Для простоты я опускаю здесь индекс i для всех переменных. Сначала предположим, что у нас есть хорошие оценки на x, например, L ≤ x ≤ U (с L <0). Тогда мы можем указать: </p>
x ≤ -ε + δ M1
x ≥ -(1-δ) M2
b = 1.08 δ + 0.91(1-δ)
δ ∈ {0,1}
x ∈ [L,U] (with L<0)
, где ε≥0 - маленькая константа (например, ε = 0,0001). На практике я просто использую ε = 0 в этих случаях. (По сути, это позволяет решающему решить, что происходит при x = 0; это означает, что он выберет наиболее выгодный выбор). Константы big-M M1 и M2 могут быть установлены на:
M1 = ε+U
M2 = -L
Более продвинутые системы допускают переменные SOS1. При подходе SOS1 нам больше не нужны большие M-константы или хорошие границы. Прочтите руководство по вашему LP / MIP-солверу или инструменту моделирования, чтобы узнать, поддерживается ли это.