大家好,又见面了,我是你们的朋友全栈君。
关键路径:
从开始到结束的所有路径中,时间最长的一条为关键路径。(特点:在关键路径上,所有任务的松弛时间都为0);
松弛时间:
第一种方法:最晚开始时间 – 最早开始时间;
第二种方法:关键路径的总时间 – 包含该任务的任务路径花的时间;(前提条件:必须不影响该任务以后的任务路径)
举例:
关键路径: A – B – D – G – I – K – L = 22
由前向后推可得出最早时间:
注意:需要按最大值(max)计算;
需要注意的里程碑:F、I
到达F的路径有:ABCEF = 11 和 ABF = 8;只有EF和BF同时完成,才算到达里程碑F。如果按照ABF(8)计算,此时EF还未完成,即未到达里程碑F。所以需要按照最大值计算,即:F的最早时间 = 11。
到达I的路径有:ABCEFI = 15 、ABFI = 12 和 ABDGI = 15;只有FI和GI同时完成,才算到达里程碑I。同理要按照最大值计算,即:I的最早时间 = 15。
项目里程碑 | 最早开始时间 |
---|---|
A | 0 |
B | 2 |
C | 5 |
D | 7 |
E | 7 |
F | 11 |
G | 9 |
H | 11 |
I | 15 |
J | 18 |
K | 19 |
L | 22 |
由后向前推可得出最晚时间:
注意:需要按照最小值(min)计算;
需要注意的里程碑:I、E、B
L的完成时间是22,可推算出J的最晚开始时间为21(此时 I 的最晚开始时间为18);K的最晚开始时间为19(此时 I 的最晚开始时间为15);
如果 I 的最晚开始时间取最大值18,那么加上 IK 的时间后,到达里程碑 K 的时间就为21,比 K 的最晚开始时间晚,是错误的!
所以 I 的最晚开始时间要取最小值15进行计算。
同理计算出 E 的最晚开始时间为7;B的最晚开始时间为2。
项目里程碑 | 最晚开始时间 |
---|---|
A | 0 |
B | 2 |
C | 5 |
D | 7 |
E | 7 |
F | 11 |
G | 9 |
H | 16 |
I | 15 |
J | 21 |
K | 19 |
L | 22 |
将最早开始时间和最晚开始时间合并:
项目里程碑 | 最早开始时间 | 最晚开始时间 |
---|---|---|
A | 0 | 0 |
B | 2 | 2 |
C | 5 | 5 |
D | 7 | 7 |
E | 7 | 7 |
F | 11 | 11 |
G | 9 | 9 |
H | 11 | 16 |
I | 15 | 15 |
J | 18 | 21 |
K | 19 | 19 |
L | 22 | 22 |
此时,我们的结论也验证了:关键路径上的所有任务的松弛时间都为0。
问题练习:
1、完成该项目的最少时间是:
22天。即关键路径所消耗的时间。
2、活动 EH 和 IJ 的松弛时间分别是:
第一种方法:
EH 的松弛时间:H 的最晚开始时间 – H 的最早开始时间 = 16 – 11 = 5 天;
IJ 的松弛时间:J 的最晚开始时间 – J 的最早开始时间 = 21 – 18 = 3 天;
第二种方法:
EH 的松弛时间(A – H 的路径只有一条,所以不会影响H – L 的路径 ):关键路径的总时间 – HL 路径的时间 – AE 路径的时间 – EH 路径时间 = 22 – 6 – 7 – 4 = 5;
IJ 的松弛时间(A – J 的路径有三条,所以会影响 J – L 的路径,此时应取 AI 路径的最大值):关键路径的总时间 – JL 路径的时间 – max(AI 路径时间) – IJ 路径时间 = 22 – 1 – 15 – 3 = 3;
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/145929.html原文链接:https://javaforall.cn