计算网络图中有关的时间参数,主要目的是找到关键线路,为网络计划的优化、调增和执行提供明确的时间概念。
网络图的时间参数,包括工作所需时间、事项最早、最迟时间、工作的最早、最迟时间及时差等等。进行时间参数的计算不仅可以得到关键线路,确定和控制整个任务在正常进度下的最早完工期,而且在掌握非关键工作基础上可进行人、财、物等资源的合理安排,进行网络计划的优化。
工作 ( i , j ) (i,j) (i,j) 的所需工时可记为 t ( i , j ) t(i,j) t(i,j) ,有以下两种确定办法。
(1)确定型网络。在具备工时定额和劳动定额的任务中,工作的工时 t ( i , j ) t(i,j) t(i,j) 可以用这些定额资料确定。有些工作虽然无定额可查,但也可以通过分析有关工作的统计资料来确定。
(2)概率型网络。对于开发性、试制性的任务,往往不具备(1)中的资料,可以采用三点时间估计法来确定工作的工时。这种方法需要先作出下面三种情况的时间估计:
a a a —— 最快可能完成时间(最乐观时间); m m m 最可能完成时间; b b b 最慢可能完成时间(最悲观时间)。
利用 3 个时间 a , b , m a,b,m a,b,m 每项工作的期望工时可估计为 t ( i , j ) = a + 4 m + b 6 . t(i,j)=\frac{a+4m+b}{6}. t(i,j)=6a+4m+b. 方差估计为 σ 2 = ( b − a 6 ) 2 . \sigma_2=\big(\frac{b-a}{6}\big)^2. σ2=(6b−a)2. 华罗庚教授对上述两个式子的由来有以下说明:由实际工作情况表明,工作进行时出现最顺利和最不顺利的情况都比较少,更多的是在最可能完成的时间内完成,工时的分布近似服从正态分布。假定 m m m 的可能性两倍于 a a a 或 b b b 的可能性,应用加权平均法。
在 ( a , m ) (a,m) (a,m) 之间的可能性均值为 ( a + 2 m ) / 3 (a+2m)/3 (a+2m)/3 ,在 ( m , b ) (m,b) (m,b) 之间的可能性均值为 ( 2 m + b ) / 3 (2m+b)/3 (2m+b)/3 ,则工时可以用上述两种情况各 0.5 的概率分布来描述,计算其期望和方差即可到上述两式。
关于工作的其他时间参数计算原则和上述类似。
事项本身并不占用时间,它只表示某项工作应在某一时刻开始或结束。对箭尾事项来说,它表示以此事项为起始的各项工作的开始,因而存在最早可能开始的时间;对箭头事项来说,它表示以此事项为完结的各项工作的结束,因而存在最迟必须结束的时间。可见,事项的时间参数有事项的最早开始时间、最迟结束时间以及二者的差值 —— 事项的时差。
事项的最早开始时间,是指的从该事项开始的各项工作的最早开工时间。事项 i i i 的最早开始时间用 t E ( i ) t_E(i) tE(i) 表示, E E E 表示 early 吧。
事项的最早开始时间是从网络图的起始事项算起,按照事项的编号顺序,从小到大,逐个计算,直到终止事项为止。一般地,指定网络起始事项的最早开始时间为 0 ,即 t E ( 1 ) = 0 t_E(1)=0 tE(1)=0 。
其他事项的最早开始时间都是相对于起始事项在零时刻开始的时间,计算公式为 t E ( j ) = max { t E ( i ) + t ( i , j ) ∣ i 为射入 j 事项的箭线的箭尾事项的编号 } ( j = 2 , 3 , ⋯ , n ) t_E(j)=\max\{t_E(i)+t(i,j) \big| i 为射入j事项的箭线的箭尾事项的编号\}(j=2,3,\cdots,n) tE(j)=max{tE(i)+t(i,j) i为射入j事项的箭线的箭尾事项的编号}(j=2,3,⋯,n) 事项的最早开始时间算出后,写在网络图上该事项的上方或下方,用方框 [ ] [] [] 框起来表示,里面写上最早开始时间。
假设网络计划图如下图所示(图片来源:知乎-运筹说)。
则各事项的最早开始时间为: t E ( 1 ) = 0 , t E ( 2 ) = t E ( 1 ) + t ( 1 , 2 ) = 0 + 4 = 4 , t E ( 3 ) = t E ( 2 ) + t ( 2 , 3 ) = 4 + 6 = 10 , t E ( 4 ) = max { t E ( 2 ) + t ( 2 , 4 ) , t E ( 3 ) + t ( 3 , 4 ) } = max { 4 + 3 , 10 + 8 } = 18 , ⋯ , t E ( 10 ) = 32 t_E(1)=0,t_E(2)=t_E(1)+t(1,2)=0+4=4,t_E(3)=t_E(2)+t(2,3)=4+6=10,t_E(4)=\max\{t_E(2)+t(2,4),t_E(3)+t(3,4)\}=\max\{4+3,10+8\}=18,\cdots, t_E(10)=32 tE(1)=0,tE(2)=tE(1)+t(1,2)=0+4=4,tE(3)=tE(2)+t(2,3)=4+6=10,tE(4)=max{tE(2)+t(2,4),tE(3)+t(3,4)}=max{4+3,10+8}=18,⋯,tE(10)=32 。
事项的最迟结束时间是指,在不拖延总工期的前提下,以该事项为结束的各项工作最迟必须完成的时间。用 t L ( i ) t_L(i) tL(i) 表示事项 i i i 的最迟结束时间。
事项的最迟结束时间是从网络图的终止事项算起,按照事项编号的逆序,由大到小,逐个计算,知道起始事项为止。因为网络图的终止事项无后续工作,而且事项本身又不占时间,所以网络图的终止事项的最迟结束时间与它的最早开始时间应该相等,即 t E ( n ) = t L ( n ) t_E(n)=t_L(n) tE(n)=tL(n) 。
如果对某项工程或任务有规定的完成时间要求,终止事项的最迟结束时间应取这个时间值 —— 规定的目标工期。
各事项最迟结束时间计算方法为: t L ( i ) = min { t L ( j ) − t ( i , j ) ∣ j 为从 i 事项射出的箭线的箭头事项编号 } ( i = n − 1 , n − 2 , ⋯ , 1 ) t_L(i)=\min\{t_L(j)-t(i,j)\big|j为从i事项射出的箭线的箭头事项编号\}(i=n-1,n-2,\cdots,1) tL(i)=min{tL(j)−t(i,j) j为从i事项射出的箭线的箭头事项编号}(i=n−1,n−2,⋯,1) 事项的最迟结束时间算出后,写在网络图中该事项最早开始时间右侧的近旁,用 △ \triangle △ 框起来。
上面的例子中,各事项的最迟结束时间为: t L ( 10 ) = 32 , t L ( 9 ) = 31 , t L ( 8 ) = 26 , t L ( 7 ) = min { t L ( 9 ) − t ( 7 , 9 ) , t L ( 8 ) − t ( 7 , 8 ) } = min { 31 − 8 , 26 − 2 } = 23 , ⋯ , t L ( 1 ) = 0 t_L(10)=32,t_L(9)=31,t_L(8)=26,t_L(7)=\min\{t_L(9)-t(7,9),t_L(8)-t(7,8)\}=\min\{31-8,26-2\}=23,\cdots,t_L(1)=0 tL(10)=32,tL(9)=31,tL(8)=26,tL(7)=min{tL(9)−t(7,9),tL(8)−t(7,8)}=min{31−8,26−2}=23,⋯,tL(1)=0 。
事项的时差又称事项的机动时间、事项的宽裕时间,是指在不影响总工期按时完成时,该事项可以推迟的最大机动时间。计算方法为 Δ t ( i ) = t L ( i ) − t E ( i ) \Delta t(i)=t_L(i)-t_E(i) Δt(i)=tL(i)−tE(i) 。特别地,时差为 0 的事项称为关键事项。时差一般不标在网络图上,很轻易就能计算出来。
把网络图中所有线路的路长都计算出来,找到最大的那一条即为关键线路,这种方法称为穷举法。
还有一种利用事项的时间参数来寻找关键线路的方法:连接关键事项的工作若满足: t E ( j ) − t E ( i ) = t L ( j ) − t L ( i ) = t ( i , j ) t_E(j)-t_E(i)=t_L(j)-t_L(i)=t(i,j) tE(j)−tE(i)=tL(j)−tL(i)=t(i,j) 则由此形成的线路即为关键线路。