5

我试图找出一个公式来计算一组任意任务的紧迫性,基于“截止日期”之前的天数和已完成任务的完成百分比。

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

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 date,end datecurrent date差异以及完成百分比来计算紧迫性

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

这将在 MySQL 和 javascript 中使用,因为我想要一种显示任务如何使用 U 值的方法。因此,找到一种方法来正确(比我目前的方法)计算 U 的值是我正在尝试做的。

解决方案

我采用的解决方案(基于标记的解决方案):

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

所做的小改动

使用rule of three作为开始,乘以 10 只是为了增加值并创建更广泛的范围,而无需过多考虑浮点值。也乘以 -1,这样完成的任务就会给出一个负数,而未完成的任务显示一个更高的数字(有道理:任务的紧迫性更高,因此数字更高)我将来可能会添加到这个,增加速度对于建议的任务并考虑分配给给定任务的人数。此功能仅用于粗略指南,以向某人显示可能需要首先执行的任务(在给定列表中)。

此外,当我在 MySQL 中使用它时,需要将函数包装在 IFNULL 中(由于我的情况下存在现有数据)

IFNULL( *function* ,-200)

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

感谢您的帮助和建议

4

1 回答 1

2

鉴于:

  • 到期日是截止日期与当前日期的天差
  • 估计是完成一项任务所需的时间
  • done是百分比的进度

这将是三个简单的规则:

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的,模仿非线性优先级。

于 2013-03-19T15:09:52.800 回答