A простая линейная функция должна делать. Нечто, основанное на 3 переменных и одной константе; что-то вроде
CombinedPriority = k * (cd - d) + p
Где k - коэффициент, выражающий относительную важность даты относительно значения приоритета, а cd - текущую дату.
Как / почему это работает?
- (cd - d), выраженное в дневных единицах, указывает, насколько мы опоздали (если положительные), или сколько дней мы оставили (если отрицательные) по отношению к d. Чем больше значение, тем более «сдут» дата доставки; чем меньше значение, тем больше у нас времени до его наступления.
- k используется для «преобразования» этого значения «поздний или ранний день» в любые единицы ранга переменной p.
- возьмите сумму двух, и у вас есть значение рейтинга для данной задачи (т.е. пара значений ad и p) относительно других задач, на сегодня (это, конечно, изменится завтра, как когда мы движемся во времени, d имеет большее значение).
Другой, похожий, но менее интуитивно понятный подход заключается в увеличении степени уравнения, чтобы выразить тот факт, что, скажем, когда мы опаздываем на два дня, важность даты должна оказывать большее влияние на CombinedPriority, чем когда мы опоздали только на один день.
Функция будет выглядеть примерно так:
CombinedPriority = kd2 * ((cd - d) ^ 2)
+ kd1 * (cd - d)
+ kp2 * (p^2)
+ kp1 * p
Где kd1, kd2, kp1, kp2 - константы, выражающие относительную важность четырех элементов сложения. некоторые из этих констант могут даже быть нулевыми; в этом смысле первая функция является частным случаем второй функции, где
kd2 = 0, kp2 = 0, kp1 = 1 и kd1 = k
Подводя итог : сложность заключается не столько в математике как таковой, сколько в определении хорошего набора констант, выражающих относительную важность d и p, и, возможно, шкалы, на которой d и р измеряются.
Первая функция предполагает, что каждый из этих двух факторов находится в линейной шкале (работа с p = 6 вдвое срочнее, чем работа с p = 3, и / или работа с опозданием на 3 дня в три раза срочнее работы до вчерашнего дня и т. д.), благодаря чему вторая функция позволяет коэффициентам d и / или p иметь квадратичную шкалу.
Предварительный план, помогающий определить коэффициент (ы):
- сначала рассмотрим p-фактор индивидуально (как если бы d-фактор не существовал). Только учитывая p-фактор, насколько срочна работа с p = 3 относительно работы с p = 6 (или p = 9) и т. Д.?
- секунду рассмотрим фактор d индивидуально. (Как и выше: насколько срочной является работа, которая должна быть выплачена через 5 дней, по сравнению с работой, которая должна быть выплачена завтра? Или работа должна быть выполнена два дня назад?
- эти два шага помогают определить, является ли какая-либо из шкал нелинейной, и ориентируют нас на функцию или другую
- тогда мы просто оставляем определение относительной важности "нормализованных" p и d факторов; это делается путем настройки постоянной (ий) k (или kpn, kdn).