关键链法在不确定项目调度问题中的应用分析
关键链法在不确定项目调度问题中的应用分析
摘 要:在实践中,项目的执行往往伴随着不确定因素的出现,因此项目经理需要采取措施以应对这些不确定。关键链法作为约束理论在项目管理中的应用,其在项目不确定性的应对中有着很大的潜力。关键链法应对不确定性是通过设置时间缓冲的方式来进行的。其首先将任务的安全时间从工期估计中分割出来,再通过某种缓冲区设置方法,如剪贴法、根方差法、APRT和APD,将安全时间以项目缓冲和输入缓冲的形式设置用以吸收不确定性。通过与其他不确定性项目调度方法的比较,指出了关键链法的优势和不足。 关键词:关键链;不确定;项目调度 中图分类号:C93 文献标志码:A 文章编号:1673-291X(2013)01-0218-03 引言 项目管理是管理科学的一个重要分支,它为项目成功的实施提供了一种有效的手段,是种特别适合于大型、复杂、环境多变、不确定性因素很多的一次性任务或项目的管理方法。项目管理改善了对各种资源利用的计划、组织、指挥和控制,对管理实践做出了重要贡献。随着科学技术的发展和经济的全球化,生产规模越来越大,复杂性越来越高,市场竞争也越来越激烈,对企业的管理和对生产过程的监控都提出了更高的要求,企业组织结构和生产组织方式更加趋向于面向项目的方式,项目管理问题也由此广泛地存在于产品研发、软件开发、建筑工程、飞机及轮船制造、过程重组、运营维护等领域之中。 项目进度是项目管理的重要目标之一。经典的项目进度管理方法是在确定性的环境实施的。然而在实际情况中,项目总是或多或少地面临一些不确定因素,如任务工期不确定、资源约束不确定、工序关系不确定等。不确定因素可能打破预期的假设,并且破坏方案的可行性,影响原计划方案的优化性能。因此对于项目经理而言,采用有效手段以应对项目环境中存在的不确定性,是提高项目成功率的必要条件。 关键链项目管理(Critical Chain Project Management,CCPM)[1]是约束理论(Theory of Constraints,TOC)在项目管理上的应用成果。在传统的CPM/PERT技术的基础上,CCPM 在项目进度管理中考虑了人类行为的影响因素,并将约束理论、聚集理论等引入到计划的制订中,通过设置缓冲区、监控关键链、使用最晚开工的计划、消除资源冲突等一系列措施[2~3],来解决传统项目管理中存在的种种问题,如工序工期估计过高却又很少被提前完成、工序提前完工的时机得不到利用、路径合并与资源并行分配导致项目延期等 [4],并有效地控制了学生综合症和帕金森定律在项目员工行为中的出现。CCPM为项目进度管理问题提供了一整套全新的解决方案,其中也包括应对不确定性,但Herroelen [5] 指出CCPM本身仍存在很多缺陷,其应对不确定性在某些方面仍有不足。 本文的目的是分析关键链法在不确定项目调度问题中的应用。首先本文介绍了关键链方法提出的背景。其次我们对关键链法应对不确定性的原理进行了分析。最后我们将关键链法与其他不确定项目调度方法进行了比较。 一、从约束理论到关键链 前文已经指出,CCPM是约束理论(TOC)在项目管理中的应用成果。约束理论是Goldratt提出的一种崭新的管理理论。它倡导从整体的、系统的角度来看待问题,指出要改进整个系统,必须找到系统中最薄弱的那个环节,通过改进这个环节,来提高整个系统的性能。实际上,TOC否定了一个传统的观点,即对系统的局部改进最终能导致系统的整体改进,它认为只有改进系统最薄弱的环节,才能提高系统的性能,而其他的局部改进均是在做无用功。对于系统的最薄弱环节,Goldratt称其为制约因素。TOC实施的步骤如下所示:(1)识别系统的制约因素;(2)决定如何利用系统的制约因素;(3)将系统中的其他因素从属于制约因素;(4)采取措施改进系统的制约因素;(5)如果经过前面的步骤,系统的制约因素已经被打破,那么回到第一步。注意不要让惰性成为系统的制约因素。 TOC通过重复这些步骤,不断地改进系统的性能。并且从理论上说,这些步骤适用于所有的系统。 按照约束理论的思想,提高项目管理效果的首要步骤是找出项目的制约因素。对于大多数情况而言,工期目标是项目最重要的目标。因此项目经理首先要找出制约项目工期的因素。传统的项目进度管理技术CPM/PERT,将决定项目工期的最长的一条任务路径成为关键路径。但是关键路径仅仅考虑了任务之间的紧前紧后关系,并没有考虑任务之间资源冲突的可能性,因为Goldratt这条路径并不是真正制约项目工期的制约因素,而提出了关键链的概念作为项目的制约因素。Newbold [6] 定义关键链为考虑项目的技术约束和资源约束下决定项目总工期的任务序列。因此CCPM首先需要识别出项目的制约因素—关键链。当关键链被识别出之后,CCPM通过设置时间缓冲的方式对其完工进行保护,这个被设置在关键链后的时间缓冲被称为项目缓冲(PB)。对于那些不属于关键链的任务,Goldratt将它们称作非关键链。为了防止非关键链对关键链的执行造成影响,CCPM通过在非关键链与关键链相接的地方设置时间缓冲的方式来对关键链进行保护,这个时间缓冲则被称为输入缓冲(FB)。Oya [7] 将CCPM实施的步骤总结如下:(1)估计项目每个任务的最可能工期;(2)依照任务的紧前紧后关系调度每个任务到它的最晚开工时间进行开工;(3)消除任务之间的资源冲突;(4)识别项目的关键链和非关键链;(5)在关键链的后面设置项目缓冲;(6)在每条非关键链与关键链的交接处设置输入缓冲。 二、关键链法应对不确定性的原理 关键链应对不确定性的能力实际上是通过时间缓冲区的设置而得来的。Goldratt认为人们在估计任务所需的完工时间时往往会给出完工概率很大的安全估计而不是最可能估计,安全估计与最可能估计的时间差被称为安全时间。采用安全估计的目的是为了提高任务的完工率,然而统计学理论告诉我们,实际上为了达到所需的完工率,项目并不需要这么多的安全时间进行保护。如任务工期的标准差为σi,而由这些任务组成的序列工期的标准差为σ。当任务工期之间相互独立时,根据统计学定理,得: 那么可知,即项目为了应对不确定性所需的安全时间小于每个任务为应对不确定性所需安全时间的加和。Goldratt同时指出,由于学生综合症等因素的影响,员工总倾向于降低工作效率以充分使用分配的时间而不是按照正常的效率提前完工,因此每个任务安全时间的设置实际上没有达到应有的效果。由于以上的原因,Goldratt提出将任务的安全时间分割出来统一以时间缓冲区的模式进行设置和管理,以更好地应对项目的不确定性。 CCPM设置的缓冲区分为项目缓冲PB、输入缓冲FB和资源缓冲RB三种,其中项目缓冲和输入缓冲属于时间缓冲。项目缓冲被设置在关键链的最后,用以吸收关键链上的任务的不确定性,因此它的安全时间来自于关键链上的任务拥有的安全时间。输入缓冲被设置在每条非关键链与关键链相交接的地方,用以吸收非关键链上任务的不确定性,以保证非关键链不会对关键链的执行造成影响,它的安全时间来自于相应非关键链上的.任务拥有的安全时间。对于从任务的时间估计中分割出来的安全时间,CCPM并不直接将其作为时间缓冲进行设置。由于前面的分析我们已经知道,项目为了应对不确定性所需的安全时间小于每个任务为应对不确定性所需安全时间的加和,因此CCPM均先通过某种缓冲区设置方法将这些分割的安全时间缩小,再将其作为缓冲区进行设置。 目前最主要的缓冲区设置方法有四种:剪贴法、根方差法、APRT和APD。剪贴法由Goldratt提出,它直接将安全时间的一半作为缓冲区进行设置。剪贴法最大的优点就是简便,然而使用剪贴法设置的缓冲区大小会随着任务工期的增长而线性增长,Herroelen[5]指出这种设置方法在大项目中会生成过大的缓冲区。根方差法是基于中心极限定理提出的。当任务工期之间相互独立时,工期的标准差之间存在等式(1)所示的关系。Newbold[6]认为任务的安全时间是标准差的2倍,因此从等式(1)上我们可以得出: 其中,Ui表示每个任务的安全时间。APRT和APD均由Oya [7] 提出,它们是考虑了项目网络特性的自适应缓冲区设置方法。在计算公式上APRT和APD与根方差法类似,只不过它们二者是对任务工期的方差之和进行开方,同时乘以