Можно ли сформулировать s_j=max{ a_j, s_i+t_ij } как линейное ограничение?

У меня вопрос, есть ли хитрость, чтобы выразить следующее как линейное ограничение?

S_j = max {a_j, S_i + t_ij}

где a_j и t_ij являются константами

Спасибо заранее

1 ответ

Да, вы можете сделать это, введя новую двоичную переменную y_j (0 или 1) и пару линейных ограничений.

Мы можем переписать ваше ограничение как:

Sj = a      if a > Si + T
Sj = Si + T if a < Si + T


Sj = a y_j + (Si + T) (1 - yj)       .....(1)

Допустим, что y_j = 0, если а больше

y_j = 1, если a меньше, чем Si + T

M y_j + a - (Si + T) > 0   ....(2) 
where M is a big number, much bigger than a or Si or T.

Если y_j равно 1, вышеуказанное ограничение тривиально выполняется, и Sj будет равно a. Если y_j равно 0, a должно быть больше, чтобы ограничения были выполнены, и Sj = Si + T

В вашей формулировке просто включите (1) и (2), и вы будете применять max ограничение.

Другие вопросы по тегам