根据项目分配列表和已知产能高效计算可用日期

问题描述 投票:0回答:1

我正在寻找一种有效的方法来计算团队中每个成员在给定一组项目任务的情况下可用的日期。有 25 名团队成员,每个人都有一套能力和任务。

容量是两个日期之间的可用百分比(这就是支持兼职时间的方式,100% 是全职),对于容量不确定的情况,结束日期为空。容量可以为零,以支持借调或育儿假等事宜。

分配将团队成员与项目联系起来,以获取两个日期之间的百分比。这允许一名成员同时进行两个项目(例如 60/40 分配),这些项目加起来就等于该团队成员的能力。因此,如果一个人有 60% 的能力,他们可能有两个项目,各占 30%。

所有这些都很完美,但现在我想计算团队中每个人接下来有空的日期。我可以通过使用循环一次向前计数一天,直到到达总分配百分比小于容量的点,以一种感觉像是蛮力的方式来完成此操作,但这感觉效率极低 - 有吗有更好的办法吗?

我添加了甘特图图像来显示我的意思,我想计算红线所在的日期。任何帮助,即使是伪代码,我们都非常感激。应用程序堆栈是 NodeJS 和 Vue,我在暴力方法中使用 Luxon 库。语言并不重要,我正在寻求解决问题的一般方法的帮助,然后我可以在 JS 中实现。

enter image description here

javascript algorithm performance datetime matrix
1个回答
0
投票

我可以通过使用循环一次向前计数一天,直到到达总分配百分比小于容量的点,以一种感觉像是蛮力的方式来做到这一点,但这感觉非常低效 - 是有更好的办法吗?

没有必要一天一天都这样做。如果您拥有团队成员的能力和任务,您所需要做的就是查看百分比变化的日期 - 而不是每天,直到您找到解决方案(如果他们的能力无限期为 0%,则可能永远不会) ).

按日期对事件进行排序,然后按顺序处理它们,直到事件结束或找到容量超出分配的日期。由于在此之前您可能只需要几个事件,因此您甚至不必对整个事件列表进行排序,而是可以惰性地进行排序,例如具有最小堆。

© www.soinside.com 2019 - 2024. All rights reserved.