Комбинированное среднее для приоритета и срока исполнения - PullRequest
0 голосов
/ 04 марта 2010

Предположим, что задача существует с двумя атрибутами: приоритет и срок выполнения.

Приоритет p - это числовое значение. Важность приоритета увеличивается до бесконечности, что означает, что 5 является приоритетом выше 4. Приоритет 0 является нормальным приоритетом.

Срок исполнения d - это дата в прошлом или будущем по сравнению с текущей датой. d дата до сих пор важнее, чем дата в будущем.

Идея состоит в том, чтобы объединить эти два атрибуты, приоритет и срок выполнения, в соответствии с правилами выше, в порядке произвести числовой вывод, который может использоваться для заказа списка задач.

Это должно быть возможно смоделировать как математическую функцию, но я, по меньшей мере, ржав в этой области. Я даже не уверен, должна ли это быть 2D-функция или 3D-функция.

Я начал с двухмерного графика, где ось x - для приоритета, а ось y - для разницы между текущей датой и датой исполнения.

  • В верхнем левом квадранте A1 есть даты выполнения в прошлом и высокие приоритеты.
  • Верхний правый квадрант A2 имеет даты выполнения в будущее и высокие приоритеты.
  • Нижний левый квадрант A3 имеет даты выполнения в прошлое и низкие приоритеты.
  • Нижний правый квадрант A4 имеет сроки выполнения в будущее и низкие приоритеты.

Какие-нибудь парни со знанием математики, которые могут бросить указатели платы?

Ответы [ 3 ]

2 голосов
/ 04 марта 2010

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).
0 голосов
/ 04 марта 2010

Вы можете просто сложить их вместе, чтобы получить общее количество.Я полагаю, что вы хотели бы отменить срок выполнения, хотя, чтобы сделать элементы просроченными с более высоким приоритетом.
Примеры:
Приоритет 0 Срок оплаты вчера (-1) будет иметь общее значение 1 (0 + 1)
Приоритет 20 Через 3 дня будет в общей сложности 17 (20 + -3)

Как указывал первый комментатор - вы можете затем взвесить каждую переменную, если она важнее, умножив ее нафактор.
Примеры (срок исполнения в два раза важен, поэтому умножьте приоритет на .5):
Приоритет 0 Срок исполнения вчера (-1) будет иметь в общей сложности 1 (0 + 1)
Приоритет 20 Срок выполнения 3дней с этого момента в общей сложности будет 7 (.5 * 20 + -3)

0 голосов
/ 04 марта 2010

Ну, один из подходов - следовать уже изложенной вами идее. Постройте все точки на двухмерном графике, трансформируйтесь в 1D, измерив расстояние от (0,0) до точки. Так что функция будет:

fun(x,y) = sqrt(x^2+y^2)

Или, поскольку ваши данные являются категориальными, вы можете просто разделить плоскость вашего графика на маленькие блоки, по одному для каждой пары дата / приоритет, и использовать, скажем, манхэттенское расстояние от источника этого блока. Если вы не знакомы с манхэттенскими расстояниями, зайдите в Google.

Я оставляю на ваше усмотрение решение, соответствует ли какой-либо из этих подходов вашим требованиям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...