В настоящее время я изучаю операционные исследования. Мне потребовалось сформулировать модель как модель LP.
Целевая функция
y = ( ai * C1i + bi * C2i)
,where ai = max(0, xi - Ti) ; bi = max(0, Ti - xi)
Это проблема расписания. xi - это переменные решения запланированного времени для задания i, а Ti - время, наиболее подходящее для задания i. За каждую более раннюю или позднюю единицу времени взимается штраф. C1i и C2i - штрафные затраты за единицу.
если работа i начинается до наилучшего времени Ti для работы i, штрафная стоимость будет
bi * C2i.
если работа i начинается после лучшего времени Ti для работы i, штраф будет
ai * C1i.
Во время формулировки я обнаружил, что сложно использовать функцию max (,) в Lingo или Cplex. На самом деле в программе нет функции max (,). Если задача запускается раньше Ti, ai = xi
- Ti будет отрицательным. bi = Ti - xi
будет положительным. Я не могу придумать, как преобразовать «если отрицательное, то значение изменится на 0».
Можно ли сформулировать цель с помощью функции ниже?
y = ( ai * C1i*yi + bi * C2i*(1-yi))
если Ti - xi >= 0
(Начать до лучшего времени для задания i), то yi = 1
В противном случае yi =0
.
Но как я могу сформулировать приведенное выше «если-то-утверждение» в модели LP?
Благодарность!