0

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

“要找到最早的开始时间,从没有前任的活动开始,说从零开始。然后反复找一个前任的开始时间都被填满的活动,并将开始时间设置为前任的最大完成时间。

要查找最新的开始时间,请向后运行前面的算法。从没有继任者的活动开始。将他们的完成时间设置为上一阶段的最大完成时间。反复寻找其继任者都被评估过的前任。将其完成时间设置为最早的后继者的开始时间。

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

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

我的代码有时会正确识别构成关键路径的关键活动,但由于我拥有的数据,它有时会失败。我发现它什么时候发生:当活动的给定时间(从中扣除成本)不尊重计算的早期和最近时间。现在我只考虑每个活动的成本,但显然这还不够,因为在下图中的情况下,计算的关键路径不准确: http: //imageshack.us/ 以上算法的一个失败案例a/img688/2420/casemp.png

显然活动 B 是关键的(如果它的结束时间发生了变化,项目的结束也发生了变化)但是算法计算出 1 的 slack...

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

4

1 回答 1

0

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

这种方式效果很好,我现在有一个所有关键活动的列表,但在某些情况下,它可能需要几秒钟(450 个活动需要 23 秒,有很多依赖!)。所以还在努力寻找更好的方法。

于 2012-10-10T02:07:58.327 回答