上一篇说,《施工管理》第三、四、五章其实是同一套“收集实际值—比较—纠偏”的循环在工期、质量、成本三个对象上各跑一遍,你只需要补每章特有的工具。进度这一章的工具就是网络计划。
工地上最常被问的一句话是:“这道工序晚了几天,总工期还保得住吗?”要回答它,得先把图算一遍。这是进度这一章的重点,也最难靠背拿分,实务案例题里进度几乎年年出现4。
先看懂图在说什么
“双代号”指的是:每一项工作用两个节点编号表示,写成“工作 i—j”,箭线代表工作本身,节点只代表一个时刻(到这个点,前面的活都干完了)。箭线上面写工作名,下面写持续时间;节点编号沿箭线方向由小到大,所以顺着箭头走不会绕回来。
从唯一的起点节点沿箭线走到唯一的终点节点,任意一条通路叫一条线路。下面这张图里时间是“天”,粗箭线是关键线路——为什么是它,马上就算出来:
第一步:顺箭线取大,算出最快什么时候能完
最早开始 ES 和最早完成 EF 的规则就一句话:本工作的最早开始 = 它所有紧前工作最早完成时间的最大值;最早完成 = 最早开始 + 持续时间3。
取大的原因很直白:一项工作得等它所有紧前工作都干完才能开始。几条线并到同一个节点时,慢的那条才是真正的门槛。
顺箭头算下去:
- A:ES=0,EF=3;
- B 的紧前是 A,ES=3,EF=7;C 的紧前也是 A,ES=3,EF=5;
- D 的紧前是 B,ES=7,EF=12;E 的紧前是 C,ES=5,EF=8;
- F 有 D、E 两个紧前,ES = max(12, 8) = 12,EF = 13。
终点节点的最早完成就是计算工期,13 天。
把所有线路列出来也一样:A→B→D→F 是 3+4+5+1=13 天,A→C→E→F 是 3+2+3+1=9 天。持续时间最长的那条就是关键线路,它的长度就是计算工期14。本图的关键线路是 A→B→D→F,A、B、D、F 这四项就叫关键工作。
第二步:逆箭线取小,算出最晚能拖到什么时候
最迟完成 LF 和最迟开始 LS 的规则正好对称:本工作的最迟完成 = 它所有紧后工作最迟开始时间的最小值;最迟开始 = 最迟完成 − 持续时间3。
取小是因为:一项工作必须在它所有紧后工作都还来得及赶上的最晚时刻之前收尾。哪条后续线路最紧,就按哪条倒排。
假设没有额外的工期要求,计划工期就取 13 天,从终点往前算:
- F:LF=13,LS=12;
- D、E 的紧后都是 F,LF 都取 LS(F)=12,于是 D:LS=7,E:LS=9;
- B 的紧后是 D,LF 取 LS(D)=7,LS=3;
- C 的紧后是 E,LF 取 LS(E)=9,LS=7;
- A 的紧后是 B 和 C,LF 取 min(3, 7)=3,LS=0。
A 这里能看出取小的意义:B 最迟只能第 3 天开始,比 C 紧得多,A 就得按 B 的时间表倒排。这个“最紧的紧后”通常正好在关键线路上。
两个“差”算的是两件不同的事
总时差 TF = 最迟开始 − 最早开始(也等于最迟完成 − 最早完成)。它回答的是:在不拖累总工期的前提下,这项工作一共能动用多少机动时间3。
自由时差 FF = 该工作所有紧后工作中最早开始时间的最小值 − 本工作最早完成。它回答的是:在不影响任何一个紧后工作最早开始的前提下,这项工作能动用多少机动时间3。如果它是最后一项工作,就用“计划工期 − 最早完成”。
两者结果不同,因为保护的对象不同:总时差保护整个工程的总工期,自由时差只保护紧后工作。自由时差是“下一道工序进场之前”的余量,总时差是“整条线还能宽容你多少”。所以永远有 总时差 ≥ 自由时差5。
把六个数填进一张表:
| 工作 | 紧前工作 | 持续时间 | 最早开始 | 最早完成 | 最迟开始 | 最迟完成 | 总时差 | 自由时差 |
|---|---|---|---|---|---|---|---|---|
| A | — | 3 | 0 | 3 | 0 | 3 | 0 | 0 |
| B | A | 4 | 3 | 7 | 3 | 7 | 0 | 0 |
| C | A | 2 | 3 | 5 | 7 | 9 | 4 | 0 |
| D | B | 5 | 7 | 12 | 7 | 12 | 0 | 0 |
| E | C | 3 | 5 | 8 | 9 | 12 | 4 | 4 |
| F | D、E | 1 | 12 | 13 | 12 | 13 | 0 | 0 |
回到那个问题:三个区间,三种答案
设某工作被延误了 d 天:
- d ≤ FF:什么也不影响,紧后工作照原计划开工;
- FF < d ≤ TF:紧后工作的最早开始被顶后,但这条线的余量还兜得住,总工期不变;
- d > TF:总工期延长,延长的天数 = d − TF。
对着表看具体数字:
- C 的总时差 4 天、自由时差 0 天。C 晚 2 天:2 已经超过自由时差,E 的最早开始从第 5 天推到第 7 天,E 最早第 10 天完成,还没顶到 12 天,所以总工期仍然是 13 天。反过来说,C 一天都不能拖而不影响紧后工作——这就是自由时差为 0 的含义。如果 C 晚 6 天:E 第 11 天开工、第 14 天完成,终点节点被推到 14 天,总工期变成 15 天,比原计划多 6−4=2 天。
- E 的总时差和自由时差都是 4 天。晚 3 天没有超过自由时差,F 照原样第 12 天开工;晚 5 天超过总时差 1 天,总工期延长 1 天。
- D 是关键工作,总时差 0,晚 1 天总工期就晚 1 天。
所以案例题里的标准动作是:先把图算一遍,找到这项工作位置上的总时差,再拿延误天数和它比。只回答“确实晚了”是拿不到分的,要落到数字上4。
三个容易踩空的边界
一,关键工作的总时差不一定等于 0。定义是“总时差最小的工作为关键工作”,只有计划工期等于计算工期时,关键工作的总时差才是 02。如果计算工期是 13 天、而合同要求的计划工期是 15 天,关键工作的总时差就是两者之差 2 天,这时再拿“总时差是不是 0”去判断关键工作就会判断错。
二,自由时差为 0 不等于总时差为 0,也就不等于关键工作。C 就是现成的反例:它对紧后工作一天都让不出来,但对总工期还有 4 天余地。
三,关键线路可能不止一条;某项工作延误超过它的总时差后,原本有余量那条线也被拖满,它自己就成了关键线路5。判断的落脚点始终是总时差,不是线路的名字。
还有一点是算法本身的边界:“延长天数 = d − TF”是只考虑这一项延误时最常用的算法。如果同时有多项延误,或者上游工序本身也变了,稳妥做法是把时间参数重算一遍,而不是拿几个数字相加减。
这套算法在案例题里怎么用
实务案例题里,判断工期能不能顺延,第一道门槛就是“这个延误有没有超过相应工作的总时差”;能不能索赔,还要看延误是不是施工方自己的责任,那是合同那一章的事。单代号网络计划用的是同一套顺推逆推的骨架,以后单独讲。