我试图找出一个计算一组任意任务的紧急程度的公式,根据“截止日期”之前的天数和已完成任务的完成百分比。
到目前为止,我有一个'函数',它给出了代表:
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 date
和current 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(因为某些任务没有开始/结束日期)
感谢您的帮助和帮助建议
答案 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
左右的范围,模仿非线性优先级。