张俊光 季 飞
(北京科技大学经济管理学院)
GOLDRATT[1]于1997年将约束理论应用到项目管理领域,提出关键链项目管理理论(CCPM)及缓冲的概念,通过将活动的安全时间集中到项目尾部形成缓冲,以实现风险共担;并提出剪切粘贴法(C&PM)的缓冲确定方法及静态缓冲监控方法。在此基础上,后续学者在缓冲管理领域进行了大量的研究,从剪贴法和根方差法(RSEM),再到基于排队论的缓冲确定方法,这些方法都是从项目工期的特性角度出发进行研究[2,3],之后又提出基于项目属性的缓冲确定方法[4,5]。在应用方面,CCPM被应用到不同的领域,如大型科研工程项目[6]、EPC(engineering procurement construction)项目[7]、施工类项目[8,9]以及不确定性较大的IT类项目[10]等。
近年来的研究进一步细化到基于项目活动特性的缓冲确定方法,具体的活动特性包括项目活动开工柔韧性、活动工期长短、活动成本大小等因素[11,12]。但是,目前的缓冲确定方法研究尚存在如下不足:①不同项目活动的成本不同且不同项目阶段的成本也不相同,在缓冲确定时应充分考虑各个活动的成本属性;②项目活动的工期存在极限工期,也叫应急工期,其大小随着项目及活动的不同而不同。所以本研究基于这两个因素,利用项目活动弹性来确定适合提取的项目活动缓冲尺寸。在缓冲监控方面,现有的缓冲监控模型对项目的再计划方面研究不足,因此本研究提出累计缓冲的概念,并结合滚动期的设置来提高项目监控时的再计划能力。
本研究主要有以下几个创新点:①提出项目活动弹性的概念,根据活动弹性来衡量项目活动可以提取的缓冲大小,并在缓冲确定时考虑到成本的因素;②提出累计缓冲的概念,并结合滚动期的设置来提高项目缓冲监控的再计划能力;③将缓冲确定、缓冲分配和缓冲监控模型集成在一起,弥补了现有方法只考虑单一因素的不足,从而实现更为全面的缓冲管理。
缓冲管理是关键链项目管理的两个核心问题之一,主要包括项目缓冲确定和项目缓冲监控两个方面[1]。在缓冲确定方面,HERROELEN等[13]提出C&PM计算的缓冲区大小随着关键链的长度线性增加,可能导致无竞争力的提案和商业机会的损失;WEI等[14]表示对所有任务应用50%的削减可能会不合理地缩短某些任务。为此,NEWBOLD[2]提出基于中心极限定理的根方差法。后续学者在此基础上进行了大量的研究,TUKEL等[4]提出基于资源紧张度和网络复杂性的项目缓冲确定方法;刘士新等[15]基于资源受限项目调度理论与方法,设计了一种接驳缓冲确定方法;ZHANG等[5]提出了基于综合资源紧张度的项目缓冲确定方法。在活动属性方面,ZHANG等[16]提出考虑活动之间的相互依赖关系的缓冲确定方法;林晶晶等[17]提出基于工序不确定性的关键链缓冲设置方法;胡雪君等[18]提出基于活动工期风险和资源约束风险的缓冲计算方法;杨立熙等[19]考虑工序数大小、工序执行时间的不确定程度和开工柔性来进行缓冲确定。
在缓冲监控方面,GOLDRATT[1]提出静态缓冲监控法;LEACH[20]针对静态缓冲监控的不足,提出相对缓冲监控法;别黎等[21]考虑项目执行的动态环境,提出了一种关键链动态缓冲监控方法,通过动态地调整两个触发点的位置来监控项目实际进度和计划进度之间的差异;别黎等[22]引入项目进度风险分析方法中的活动敏感性信息,研究了动态环境下活动敏感性指标的计算和监控阈值的设定,提出基于活动敏感性信息的关键链动态缓冲监控方法;KUO等[23]提出依据项目计划阶段确定缓冲大小,对缓冲量进行合理的分配并进行监控;HERROELEN等[13]提出随着活动的完成,检查缓冲的消耗和剩余量,并据此采取相应的纠正措施;胡勇等[24]对软件项目的风险进行了预测;郭鹏等[25]建立了双模式风险预警机制;ZHANG等[26]基于灰色预测模型提出偏差监测和控制模型,从而建立了动态缓冲监控模型;VANHOUCKE[27]建立了基于活动敏感性和网络拓扑信息的项目监控模型;HU等[28]提出综合进度监测方法;胡雪君等[29]还针对现有缓冲监控机制存在的忽视活动层面不确定信息及项目动态执行特征的不足,提出一种基于统计过程控制的两阶段统计缓冲监控方法。
综上,现有缓冲确定方法没有将不同活动加入的安全时间不同及成本不同等因素进行综合考量。而缓冲监控的再计划能力仍有待提高,且缓冲监控模型没有与缓冲确定方法相结合,而缓冲确定方法会影响到缓冲监控的频率和强度,应该综合来考虑。基于此,本研究拟将成本因素融入缓冲确定方法中,提出项目活动弹性概念来衡量项目可提取缓冲的大小;为提高项目缓冲监控的再计划能力,将累计缓冲结合滚动期的设置融入缓冲监控模型,便于缓冲的实时调整与监控。
下面首先根据项目的工期和成本因素来确定项目活动弹性,然后根据项目活动的弹性确定项目缓冲。
项目活动包括正常工期和应急工期,正常工期是指在项目计划时所估计的项目正常完工时间;应急工期是指项目活动可能的最短的完工时间,即无论投入多少额外的资源,都不可能在比应急工期短的时间内完成这项活动。
正常工期和应急工期的差值为最大合理缓冲,活动提取的缓冲不应该超过最大合理缓冲。从正常工期压缩到应急工期会产生额外成本,可用压缩工期的单位时间成本来表示增加的成本[30],即
(1)
式中,ARi为活动i压缩工期的单位时间成本;Cci为活动i应急成本;Cni为活动i正常成本;Tni为活动i正常工期;Tci为活动i应急工期。
根据压缩工期的单位时间成本和项目提前完工奖励之间的差额,可以确定项目活动的合理压缩程度,即项目活动弹性。RP为项目提前完工单位时间(如1天)的奖励。若ARi-RP≤0,说明该活动压缩工期的单位时间成本不大于项目提前完工奖励,则可提取全部的最大合理缓冲,项目活动弹性系数为
(2)
若ARi-RP>0,说明该活动压缩工期的单位时间成本大于项目提前完工奖励,则不能提取全部最大合理缓冲,项目活动弹性系数为
(3)
式中,Ki为第i个活动的活动弹性系数;ARmax为所有活动中压缩工期的单位时间成本最大值;Tni-Tci为活动i的最大合理缓冲时间;1-(ARi-RP)/(ARmax-RP)为活动缓冲的成本校正系数。
根据前文所确定的项目活动弹性系数,可知活动i的缓冲为
PBi=Tni·Ki。
(4)
根据活动缓冲公式,得出关键链的项目缓冲为
(5)
项目缓冲的提取考虑了各活动的可压缩程度并兼顾了成本因素。当用该方法来计算非关键链上的接驳缓冲时,可能会因为非关键链上的活动弹性系数较小,而导致非关键链的工期比关键链还长,这时应当舍弃原有关键链,将该非关键链作为新的关键链,因为活动弹性系数越小,越容易发生延迟,且应急成本也越高。
根据项目的活动弹性可以确定项目缓冲,以实现项目的风险共担。但不同项目可以风险共担的程度是不同的,因此本研究引入项目弹性概念来研究不同项目的弹性情况,项目弹性为
(6)
式中,PK为项目弹性系数;T为项目的正常工期。
用根方差法和剪贴法计算的项目缓冲分别为PB1和PB2,则可以得出以下两个参数:α=PB1/T,β=PB2/T。其中,α为根方差法计算的项目缓冲与项目正常工作时间的比值;β为用剪贴法计算的项目缓冲与项目正常工作时间的比值(假设α<β,反之亦然)。则可得到以下结论:①若0≤PK<α,则说明项目基于活动弹性计算的项目缓冲小于根方差法计算的项目缓冲,即项目弹性较小,可以风险共担的项目缓冲较少,易发生项目延迟。但是如果采用根方差法计算的项目缓冲,则容易造成缓冲消耗过快,从而导致项目正常运营却警报频出的状况。②若α≤PK<β,则说明项目基于活动弹性计算的项目缓冲大于等于根方差法计算的项目缓冲,但是小于剪贴法计算的项目缓冲,即项目弹性适中。③若β≤PK< 1,则说明项目基于活动弹性计算的项目缓冲大于等于剪贴法计算的项目缓冲,即项目弹性较大,项目中活动的弹性很大,安全时间较多。
下面根据前文所确定的缓冲,首先进行缓冲分配,然后基于所分配的缓冲进行预警触发点的设置和动态缓冲监控。
根据活动弹性公式确定了项目缓冲后,以去除缓冲后的活动工期长短为权重分配项目缓冲,每个活动分配的缓冲为
(7)
根据式(4)所计算的PBi有可能大于、等于或小于实际所需要的尺寸,这是因为项目缓冲并不只是根据项目活动的工期长短来确定的。本研究的缓冲确定方法考虑了不同项目活动的工期和成本因素,确定缓冲之后的活动工期在工期和成本因素上都处于同一水平,故缓冲分配只需根据活动工期的长短来进行。
本研究主要根据项目滚动期内累计缓冲消耗情况来进行缓冲的再分配,从而提高缓冲监控过程中的再计划能力。在活动实施过程中,有些活动可能会消耗的缓冲多一些,有的可能会消耗的少一些。本研究提出累计缓冲(APB)的概念,利用累计缓冲来对项目进行控制。当活动i结束以后,该活动的累计缓冲为
(8)
项目累计缓冲APB为
(9)
式中,PBAi为活动i实际运行中消耗的缓冲。可以看出,活动累计缓冲与项目累计缓冲可能为正也可能为负,项目累计缓冲的值即为项目完工的提前量或者延迟量。
通过对项目设置滚动期,建立滚动计划来实现对项目的动态滚动监控。滚动期的设定可以根据项目的实际情况,参考项目的弹性大小来进行。例如,可以设置一周或一个月为一个滚动期。若某项目第一期共6个月,设定一个月为一个滚动期,并据此制定缓冲监控计划。在经过一个月的滚动期以后,根据计划与实际的差异,并参照计划修正因素(如差异分析、环境变化、方针变化等)来细化后面5个月的缓冲监控计划。在此基础之上,根据项目累计缓冲来确定是否更改下一个滚动期各活动的分配缓冲,主要有以下两种可能的情况:①APB≥0,即活动完成情况良好,项目缓冲计划不需因项目累计缓冲变化而改变;②APB<0,即活动完成情况不好,发生了延期,后一个滚动期的项目缓冲计划需更改,共同分担项目累计缓冲的负值。从而得到项目后期的工期计划:各滚动期的工期计划会随着工期的临近逐渐细化,其中项目后期的工期计划的缓冲分配,会根据项目前期的累计缓冲量进行再分配。通过滚动期和累计缓冲的设置,形成良好的缓冲消耗反馈和缓冲再分配再计划机制。
为了验证本研究方法的有效性,将该方法与经典的缓冲管理方法进行对比,缓冲确定方法对比根方差法,缓冲监控方法对比静态缓冲监控法和相对缓冲监控法。本研究选择的案例关键链上共有10个活动,总的计划工期为168天,计划成本为1 242 000,该项目的原型为《项目计划与控制》中时间-成本平衡法的案例[30]。相关基础数据见表1,项目提前完工奖励RP=6 000/天。
案例的选择上把项目关键链上的活动控制在10个,原因如下:①项目缓冲确定方法尤其是根方差法,尾部集中需要保证活动数大于4;②本研究方法考虑了累计缓冲和滚动监控,项目活动过少很难体现出这两点的作用。为了便于仿真数据处理,本研究将案例的10个关键链活动划分为10个滚动期。支链部分的接驳缓冲可以保护主链的活动,所以在案例仿真模拟部分不考虑支链的影响。
表1 关键链项目基础数据
基于表1中的数据,根据项目活动弹性公式,可以算出项目每项活动的活动弹性系数,并得出项目活动缓冲,进而确定项目缓冲,相关数据见表2。
表2 活动弹性及缓冲
根据表2可以算出项目的计划工期为168天,其中项目工期为124天,项目缓冲为44天。而根据根方差法计算的结果为缓冲30天,工期84天。根据本研究中的缓冲确定方法对缓冲进行分配,结果见表3。
表3 缓冲分配相关数据
由表3可知,每个活动被提取的缓冲和分配的缓冲并不相同。经计算可得,静态缓冲监控法中绿色缓冲区、黄色缓冲区及红色缓冲区所分配的缓冲都各为10天。而相对缓冲监控方法随着完工率的变化,将缓冲分为3个部分,绿色缓冲区通过(0,15%×30)、(100%,75%×30)两点确定的直线分割,红色缓冲区通过(0,30%×30)、(100%,90%×30)两点确定的直线分割。
获得了上述基础数据后,通过Matlab来对3种缓冲监控方式进行1 000次仿真;最后得出3种缓冲监控方式相对应的工期表现、成本表现以及产生的预警次数,并进行分析比较。为了体现滚动监控的作用,本研究将案例中的每个活动按照一个滚动期来做仿真,这样不断形成累计缓冲,通过再分配去体现滚动监控的作用。
5.2.1仿真的数据处理
本研究假设项目活动工期服从对数正态分布[1],对项目工期、预警频次和项目成本的进行1 000组仿真模拟。另外,为了避免产生个别极值数据干扰仿真的结果,将每个活动的最大工期限制在正常工期的150%。
3种缓冲监控方法的缓冲区都由3部分构成,绿色缓冲区、黄色缓冲区和红色缓冲区。本研究设定活动进入绿色缓冲区的部分不采取行动,工期不变,成本不变;进入黄色缓冲区的部分进度加快为计划工期的1.5倍,成本为在黄色缓冲区完成工程量的百分比乘以正常成本的1.5倍;进入红色缓冲区的部分进度加快为计划工期的2倍,成本为在红色缓冲区完成工程量的百分比乘以正常成本的2倍,充分体现使用不同的缓冲所带来的成本不同。
表4 静态缓冲监控
5.2.2仿真结果与分析
本研究的仿真结果从预警频次、项目工期和成本3个方面对不同的缓冲管理方法进行有效性评估。
(1)预警频次本研究经过1 000次仿真模拟后,所得3种方法的预警表现分别见表4~表6。由表4可见,静态缓冲监控的黄色预警和红色预警呈现递增的情况,因为缓冲设定为定值且监控模型不具备再计划能力,而相对缓冲监控的情况有了一定的改善。
由表5可见,相对缓冲监控法在缓冲分配上有了极大的改善,3个缓冲区的预警数据也较静态缓冲监控法有了较大的改善;但是仍然存在初始缓冲确定不合理的情况(如活动3、4、7的情况没有改善),且红色预警递增的趋势仍未改变。
表5 相对缓冲监控
由表6可见,本研究缓冲监控方法在不使用缓冲的数据上有较大改善,说明本研究的缓冲确定方法更为合理;另外,本研究方法的黄色预警和红色预警都呈现出递减的状态,说明滚动监控起到了缓冲再分配的良好作用。
表6 缓冲监控
综上,本研究的缓冲确定模型在考虑了应急工期的情况下更为合理,在不考虑应急工期时,此方法在不使用缓冲的次数方面和绿色预警的次数方面的表现也有大幅改善;另外,本研究的监控方法有效地使黄色预警和红色预警频次呈现递减的趋势,而不像静态缓冲监控法和相对缓冲监控法,呈现黄色预警中期偏高、红色预警不断增加的趋势,证明了此方法的有效性。
(2)成本与综合绩效3种缓冲管理方法的成本对比见图1,是否考虑应急工期的两组数据仿真结果相类似,故这里仅给出考虑应急工期的数据。由图1可知,本研究的缓冲监控方法在成本上有较大的优势,静态缓冲监控法的成本均值为1 731 500,相对缓冲监控法的成本均值为14 931 00,本研究的分散式累计滚动缓冲监控的成本均值为1 271 500,而该项目的计划成本为1 242 000。
图1 3种缓冲监控方法的成本对比
图2 3种缓冲监控方法的综合绩效对比
图3 综合绩效相对值对比
本研究考虑了项目提前完工奖励,将工期因素转化为成本因素,考虑项目工期因素的3种缓冲管理方法的综合绩效对比见图2。由图2可知,在考虑项目工期因素后,静态缓冲监控法的综合绩效为1 673 300,相对缓冲监控法的综合绩效为1 463 700,本研究缓冲管理方法的综合绩效为1 271 500。以本研究缓冲管理方法的综合绩效值为参照,将静态缓冲监控和相对缓冲监控的1 000组综合绩效值与之对比(见图3)。结合图1,由图3可知,从成本均值角度来讲,相对于本研究的缓冲管理方法,静态缓冲监控法的成本均值增加了36.17%,相对缓冲监控法的成本均值增加了17.43%。在综合考虑工期因素后,相对于本研究的缓冲管理方法,静态缓冲监控法的综合成本均值增加了31.60%,相对缓冲监控法的综合成本均值增加了15.12%。另外,在1 000次仿真中,静态缓冲监控法的综合成本只有21次低于本研究的缓冲管理方法,相对缓冲监控法的综合成本有125次低于本研究的缓冲管理方法。
综上所述,本研究的缓冲管理方法在综合成本上有较大的优势。原因可归纳为以下两点:①本研究的缓冲确定方法考虑了应急工期和应急成本因素,因此提取的缓冲更加合理,且提取的缓冲更多来自成本相对低的活动;②本研究的累计缓冲结合滚动期的设置,使得缓冲能够及时地再分配,有效地减少了黄色和红色预警频次,大幅降低了成本。
本研究提出了基于活动弹性的缓冲确定模型,以及基于累计缓冲和滚动期设置的缓冲监控模型,两个模型的结合可以使得项目在运行过程中大大减少错误预警。静态缓冲监控法和相对缓冲监控法的仿真工期提前的原因,正是不正常的预警导致工期盲目加快,从而大幅增加了项目运营成本。本研究的缓冲确定和监控模型在相互配合情况下,有效地提前了工期,并且减少了多余的错误预警,大幅度降低了成本。另外,本研究模型使得红色预警和黄色预警随着项目运行逐渐降低,这对项目意义重大,因为项目中后期阶段也正是资源集中投入的时候,需要有效地保证项目平稳正常运营。
本研究的不足之处在于没有考虑项目活动的开工柔韧性。在对关键链缓冲的研究中,资源缓冲的研究还很匮乏,而资源的及时供应才能使得项目活动正常展开,这与项目活动的开工柔韧性密切相关;另外,资源的过早等待也会产生额外的库存缓冲,这又将资源缓冲与库存管理、采购管理进行了联系。鉴于此,本研究后续将结合项目活动的开工柔韧性,对资源缓冲、资源预警机制进行探究。