从两个变量计算任务的紧急程度

时间:2013-03-19 13:29:03

标签: javascript mysql math statistics pseudocode

我试图找出一个计算一组任意任务的紧急程度的公式,根据“截止日期”之前的天数和已完成任务的完成百分比。

到目前为止,我有一个'函数',它给出了代表:

U = ((dd * 25) - (100 - cp))

Where: 
dd = Day difference from deadline to current date (in an integer value)
cp = current completion % (in an integer value - in increments of 5 currently)

这给了我一个线性函数,函数中的25表示每天25%的任务进展。

所以在任何给定日期:

Where U <0 task is urgent
Where U =0 task is on schedule
Where U >0 task is ahead of schedule
(The actual display on if a task is on schedule (within a range) would be handled separately)

是否有其他方法可以计算任务的紧急程度,从两个日期的差异和变量加权? 根据目前的回复: 使用start dateend datecurrent date差异以及完成百分比来计算紧急度

当cp> 75%时可能使用非线性函数来增加U并且当cp <0时减少U. 75%。线性与非线性函数有什么优势吗?

这将用于MySQL&amp; javascript,因为我想要一种方式来显示一个任务正在使用U值的轨道。因此,找到一个正确的方法(比我当前的方法更多)计算U的值是我正在尝试做的。

解决方案

我选择的解决方案(基于标记解决方案):

((((((end_date - now) / (end_date - start_date)) * 100) * (100 - cp)) * 10) * -1)

进行了小修改

使用rule of three作为开头,乘以10只是为了增加值&amp;创建更宽范围而无需过多地考虑浮点值。 也乘以-1,这样完成的任务就会给出一个负数,而不完整的任务则显示更高的数字(有意义:因此任务的紧急程度更高) 我可能在将来添加这个,为建议的任务添加速度&amp;还考虑到分配给特定任务的人数。 此功能仅用于粗略指导,以向某人显示可能需要先执行的任务(在给定列表中)。

同样正如我在MySQL中使用的那样,函数需要包含在IFNULL中(由于我的情况下的现有数据)

IFNULL( *function* ,-200)

如果为空值,则初始任意值为-200(因为某些任务没有开始/结束日期)

感谢您的帮助和帮助建议

1 个答案:

答案 0 :(得分:2)

鉴于:

  • 到期是截止日期到当前日期之间的差异
  • 估计是任务所需的时间
  • 已完成是百分比进度

这将是一个简单的三条规则:

var rest = estimated / 100 * (100 - done);

if(due < rest) {
    state = 'behind';
}
if(due == rest) {
    state = 'on';
}
if(due > rest) {
    state = 'ahead';
}

请注意,可能只有极少数任务会“按计划”,因为它们必须完全匹配,您还可以检查rest < due + 0.5 && rest > due - 0.5左右的范围,模仿非线性优先级。