У меня есть две переменные: C, которая является двоичной, и X, которая неотрицательна.
Если С = 0, то Х = 0; Если C = 1, то X = X (это означает, что на X нет ограничений)
Как мне преобразовать это условное ограничение в линейное ограничение для LP?
Обратите внимание, что, строго говоря, модели LP содержат только непрерывные переменные. Поэтому мы предполагаем, что это модель MIP, которую нужно решить с помощью решателя MIP.
Вот три способа атаковать это, в зависимости от возможностей решателя.
(1) Если вы используете решатель, который поддерживает ограничения индикатора, вы можете просто использовать:
c=0 ==> x=0
(2) Для других решателей вы можете использовать:
x <= M*c
где M — (насколько это возможно) верхняя граница x.
(3) Наконец, если ваш решатель поддерживает наборы SOS1 (специальные упорядоченные наборы типа 1), вы можете использовать:
d = 1-c
{d,x} ∈ SOS1
d >= 0
Преимущество (1) и (3) состоит в том, что граница не требуется. Если у вас есть хорошая, жесткая граница x, (2) — хороший вариант.