给定开始和结束时间而不是成本的关键路径

时间:2012-10-07 20:19:49

标签: algorithm project-management

我无法计算活动网络的关键路径。我必须使用的数据与我在网络上的简单示例中看到的数据略有不同。那就是我有每个活动的开始和结束时间,我从中推断出它的长度。我一直在使用该算法计算每个活动的最早和最晚开始和结束时间:

“要找到最早的开始时间,请从没有前任的活动开始,并说它们从时间零点开始。然后重复查找其前任的开始时间已全部填满的活动,并将开始时间设置为最大前驱完成时间。

要查找最新的开始时间,请向后运行上述算法。从没有继任者的活动开始。将完成时间设置为上一阶段的最长完成时间。反复找到一位前任的继任者都已经过评估。将完成时间设置为最早的继任者的开始时间。

现在评估slack =最新开始 - 最早的开始是微不足道的。某些事件链的松弛时间等于零;这是关键的道路。“

来源:https://stackoverflow.com/questions/6368404/find-the-critical-path-and-slack-time

我的代码有时正确地识别组成关键路径的关键活动,但由于我拥有的数据,它有时会失败。我发现它什么时候发生:当活动的给定时间(从中推断出成本)不考虑计算的早期和最晚时间。现在我只考虑每项活动的成本,但显然它还不够,因为如下图所示,计算的关键路径不准确: one fail case for algorithm above http://imageshack.us/a/img688/2420/casemp.png

显然,活动B是关键的(如果它的结束时间被移动,项目的结束也会移动)但算法会计算出1的松弛...

我不知道如何更改算法以使其适用于上述情况。

1 个答案:

答案 0 :(得分:0)

我找到了一些从我拥有的数据中识别关键活动的简单方法。对于每个活动,我模拟一秒延迟(将一秒延迟到结束时间)并将该延迟传播给所有后继者并测试它是否影响上次活动的时间。如果是这样,这项任务至关重要。

这种方式效果很好,我现在已经列出了所有关键活动,但在某些情况下,它可能需要几秒钟(450次活动需要23秒才能有很多依赖性!)。所以仍然试图找到一个更好的方法。