Назначение веса для определения целевой функции

У меня есть набор заданий со временем выполнения (C1,C2...Cn) и сроками (D1,D2,...Dn). Каждое задание завершит свое выполнение через некоторое время, то есть время отклика (R1,R2,....Rn). Однако существует вероятность того, что не каждая работа завершит свое выполнение до истечения срока. Поэтому для каждой работы я определяю переменную Slack, т. Е. (S1,S2,...Sn). Slack - это разница между крайним сроком и временем отклика рабочих мест, т. Е.

S1=D1-R1 S2=D2-R2 и т. Д.

У меня есть набор слабаков [S1,S2,S3,...Sn]. Эти слабины могут быть положительными или отрицательными в зависимости от срока и времени выполнения задач, т. Е. D и R.

Проблема в том, что мне нужно определить веса (W) для каждой работы (или провисания) так, чтобы работа с отрицательным провалом (т. Е. R>D, задания, которые не укладывались в сроки) имела больший вес (W), чем работы с положительным провалом и основываясь на этих весах и слабостях, мне нужно определить целевую функцию, которая может быть использована для максимального ослабления.

Проблема не кажется сложной. Однако я не мог найти решение. Некоторая помощь в этом отношении высоко ценится.

Спасибо

1 ответ

Это часто можно легко сделать с помощью разделения переменных:

splus(i) - smin(i) = d(i) - r(i)
splus(i) ≥ 0, smin(i) ≥ 0

Если у нас есть термин в цели, чтобы мы минимизировали:

sum(i, w1 * splus(i) + w2 * smin(i) )

это будет работать нормально: нам не нужно добавлять условие дополнительности splus(i)*smin(i)=0,

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