《1. 引言》

1. 引言

作为项目管理的一个重要方面,监控活动贯穿了整个项目生命周期[12]。挣值管理(EVM)是1967年至今应用范围最广的项目控制工具[3]。美国国防部(DoD)曾签发一项指令,将关键的挣值管理参数纳入了35项标准。任何工业企业就主要系统采购拟订某种成本补偿或激励合同时,均应满足这些标准。美国国防部提供了挣值管理系统(EVMS),美国政府是该系统的首位用户,并且近几十年来一直使用该系统。后来,该系统被澳大利亚、加拿大和瑞典等其他国家采用。采用挣值管理的关键在于,当政府作为预算超支的最终责任方时,需预防成本增长的风险。挣值管理最初用于监控项目成本。

有关挣值管理的详细说明,请参见参考文献[38]。提出了使用挣值管理参数的挣值进度(ES),为进度控制提供了新的指标。Pajares和López-Paredes [10]考虑到活动的内在不确定性,定义了进度控制指数(SCoI)和成本控制指数(CCoI)这两项指标,以克服挣值进度和挣值管理在进度控制方面的某些限制。Acebes等[11]进一步描述了一个集成本、进度和风险监测于一体的图形化框架。

Khamooshi和Golafshani [12]定义了一个挣值管理的替代框架,也称为挣值工期管理(EDM)法。挣值工期管理旨在通过以工作周期而非成本核算重新定义挣值管理参数,从而监控项目进度[13]。对于关注项目控制以及准确预测最终成本和工期的研究人员而言,对比挣值管理框架和挣值工期管理框架会带来丰厚的回报。De Andrade和Vanhoucke [14]介绍了他们关于挣值工期管理和挣值管理在项目工期预测精度方面的对比结果。根据真实项目的数据,他们的结论是当使用挣值工期管理项目规律性指标时,使用挣值工期管理能获得更准确的结果。

研究人员会在规划阶段估算每项活动的工作周期,同时考虑活动内在的偶然不确定性,以提高项目控制和最终工期预测的精度。如Acebes等[15]所述,在挣值管理框架内改进项目监控的过程作为起始点。将该过程用于挣值工期管理,以便进一步了解任何中间控制里程碑与计划进度之间是否存在偏差,并估算最终的项目工期。根据由此获得的结果以及从真实项目中获取的数据(网络拓扑存在显著差异),使用平均绝对百分比误差(MAPE)比较了挣值管理和挣值进度。

本文结构如下:第2节通过文献综述展示了通过挣值管理法作出的与项目监控紧密相关的贡献。第3节介绍了研究过程。第4节描述了随机挣值工期分析和项目控制技术,并提供了个案研究,以更好地说明将该研究方法应用于真实项目的过程。第5节,比较网络拓扑各异的项目在采用挣值管理和挣值进度法方面的效果。第6节得出主要结论和结果。

《2. 背景》

2. 背景

项目监控过程是项目管理中的超越函数[1,16]。它们旨在获取项目执行状态信息,并将其与基准情形进行比较。如分析与规划内容之间的差异,以便在是否采取纠正措施的决策过程中发挥作用[1718]。

本节对项目控制方法以及本文推荐的研究方法所使用的各种统计算法进行了概括性的研究总结。首先,讨论了使用挣值管理法的项目控制。其次,通过挣值工期管理对项目控制进行检查。最后,描述了用于分类和回归问题的不同统计技术。

《2.1. 进度监测——挣值管理》

2.1. 进度监测——挣值管理

Rozenes等[19]在文献综述中概述了项目控制的性质和重要性,包括决定项目成功的因素和控制系统分析。最近的文献集中探讨了作为用途最广泛的项目控制基本工具,即挣值管理如何发挥作用,特别是基于挣值进度概念将其用于监测成本[20]和控制时间[9]。

Willems和Vanhoucke [21]将与项目控制与挣值管理法关联的参考文献进行了分类。他们开展分类的依据之一为解决问题所采用的研究方法。Willems和Vanhoucke [21]根据每个项目的内在不确定性建立另一种分类,即确定、随机和模糊。因此,有些分析基于被标记为确定的平均值或期望值进行运算。部分分析认为项目活动的不确定性为概率分布函数,并被标记为随机。结果由分布以及与估算相关的置信区间组成。最后,模糊分析采用概率方法,其中涉及的数据不精确且不完整。因此,它们可以用模糊数字表示,并由模糊技术操作[22]。

已有大量文献探讨了确定性和随机性分析。针对项目控制部分的挣值管理,Pellerin和Perrier [1]编写了有关项目规划和控制的方法、技术和工具的著作。Hazir [18]通过确定项目控制的分析模型和决策支持工具开展了类似研究。他吸收了Pajares和López-Paredes [10]的工作成果,提出了一种在不确定环境中进行项目控制的新程序(参考文献[11]进一步扩展了该程序)。Colin和Vanhoucke [23]重点研究了项目执行期间的过程控制,并使用挣值管理比较了不同控制方法的效率。还回顾了关于过程控制中的公差范围的相关工作。本文引用的所有文章包含大量经审查、比较和分析的文章,为衡量挣值管理在项目控制方面的重要性提供了标准[6,2331]。

有关项目完工后的工期估算研究,可参见参考文献[3234]。Batselier和Vanhoucke[33]评估了基于挣值管理的各种预测技术的精度。Wauters和Vanhoucke [35]主要通过与计算实验比较,研究挣值管理的结果的稳定性。Batselier和Vanhoucke [36]将挣值管理应用于真实项目以比较获得的结果,从而评估不同的预测方法。最后,尽管可以广泛汇总各种相关研究,但要着重提及Wauters和Vanhoucke的工作[37],他们综述了结合人工智能预测最终项目工期的不同方法。

模糊技术和挣值管理已被不同研究人员广泛使用。Naeni等[38]提出了一个基于模糊理论的挣值模型,他们将人们判断中的不确定性纳入其中并转化为预言值。Mortaji等[39]在模糊环境中使用左-右(L-R)型模糊数进行挣值管理。Salari等[40]结合挣值管理和模糊技术处理成本控制系统的财务问题。Salari等[41]通过统计建模使用挣值管理预测未来的项目绩效。因为来自项目实例的数据具有模糊性和不精确性,所以将各方案的时间和成本行为假设为模糊数字。类似地,其他作者将模糊技术与挣值管理相结合,通过预测以改善项目的未来绩效[4144]。

应当注意,当不能对变量进行具体赋值时,将基于语言值采用模糊技术。最重要的是,这类变量可能被视为模糊、不精确或不完整。灰色系统理论[45]也会发生类似情况,该理论能与挣值管理[46]相结合。尽管这两种方法(模糊技术和灰色系统技术)均可用于处理不确定性,但它们有别于随机分析。在随机分析中,项目活动被绝对定义为其概率分布函数。

随着时间的推移,人们在该研究方法的基础上不断创新,从而在每次监测中调整对未来的预测和对项目的控制措施。人们在这两个研究方向(项目控制和预测)上对该研究方法的所有改进均旨在通过减少误差来提高结果的有效性。

《2.2. 进度监测——挣值工期管理》

2.2. 进度监测——挣值工期管理

Khamooshi和Golafshani [12]介绍了挣值工期管理概念。为去除挣值管理法中项目成本和工期之间的相关性,他们提出了一种衡量各时期开展的“工作”的方法。在该方法中,对项目工期的控制以及在每个控制时间对其最终工期的预测均与工期相关,与各活动的成本无关。

虽然参考文献[9]提出的挣值进度技术基于时间单位控制项目时间表,但该参数(即挣值进度)的计算却是以成本单位为基础。基于挣值工期管理,项目工期和成本可采用与其数值相对应的单位相互独立计算。自全新的挣值工期管理概念问世以来,人们已对其开展了多项研究。De Andrade和Vanhoucke [14]对比分析了使用挣值进度和挣值工期管理预测的时间。Khamooshi和Abdi [47]通过指数平滑技术使用挣值工期管理预测项目工期。Ghanbari等[4849]通过模糊技术和挣值工期管理解决不确定性问题。该研究涉及如何将模糊技术与挣值工期管理相结合[48,5052]。

De Andrade等[13]在真实项目中比较通过挣值工期管理和挣值管理估算的项目工期。Yousefi等[53]以统计控制图(基于挣值工期管理法提供的指数)来控制项目。

自首次引入挣值工期管理提供的概念和指标以来,我们发现了许多与之相关的创新。因此,本文的目标是使用该研究方法改进项目监控以及对工期和最终成本的预测;在此提出了一种基于挣值工期管理的项目控制研究方法,通过概率分布函数将不确定性纳入项目活动,从而预测项目的最终工期。

《2.3. 解决分类和回归问题的算法》

2.3. 解决分类和回归问题的算法

本节阐述了本文采用的统计分析的基本概念,简要说明了异常值检测、分类和回归的含义;还简要描述了这些技术采用的不同算法。

异常值检测包括识别源于或不符合相关样本数据的观测值[5455]。这种理念旨在建立描述正常的项目行为范围的模型。通过与实际项目开发的对比对该正常模型进行测试。

异常值检测研究方法侧重于根据从模拟数据中提取的数据估算生成的概率密度函数。该函数用于计算分布产生新观测值(实际项目)的概率[5457]。本文使用R软件的“MASS”包中的kde2d函数估算径向核的核密度[58]。

如按照分类问题的思路分析数据,则能估算项目按时完工的概率。分类问题旨在使用一组名为预测因子、自变量或简单变量的定性和(或)定量变量预测某个定量变量(通常被称为反应、结果或因变量)。

如按照回归问题的思路分析数据,则能量化任何项目延迟。与分类问题相似,回归问题使用一组名为预测因子的定性和(或)定量变量预测某个定性或连续变量(也称为反应、输出或自变量)。

现在继续阐释如何在模型中使用各种算法,这些算法均已被纳入R软件的“caret”包中[5960]。线性判别分析(LDA)是一种降维技术。它被用于机器学习和模式分类的预处理。线性判别分析旨在将高维空间中的特征映射至低维空间,以避免维数灾难并减少所需的资源和维度成本[6162]。

分类和回归树(CART)是一种解释如何根据其他值来预测结果变量值的预测模型。分类和回归树输出是一种决策树,其中每个分叉被拆分为一个预测变量,并且每个末端节点包含一个对结果变量的预测[63]。k最近邻(kNN)是一种基于受监督实例的机器学习算法。它可用于对新样本(离散值)进行分类或预测(回归和连续值),其本质是找到在训练阶段习得的“最相似”(就接近度而言)的数据点,并基于该分类对新数据点进行假设,从而对相关值进行分类[64]。

支持向量机(SVM)是一组受监督的学习算法。这些方法通常与分类和回归问题相关。可以使用一组训练样例(样本)标记类,并训练支持向量机以构建预测新样本类的模型。支持向量机直观体现为一种模型,它将分离超平面定义为两个类中互相接近的两个点之间的向量(即支持向量),从而将类划分为两个尽可能宽的空间,以此表示空间中的采样点。当新样本套用该模型时,则根据其所属空间划分为同类或不同类[65]。随机森林(RF)是预测树的组合,其中的每棵树都依赖于一个经单独测试的随机向量的值,每棵树的分布相同。这涉及较大规模的聚合修改,即将大量相互之间不相关的树集中后进行平均化[66]。线性回归是一种模拟标量反应以及一个或多个解释变量(也称为因变量和自变量)之间的关系的线性方法。如涉及一个解释变量,则该过程称为简单线性回归;如涉及多个解释变量,则该过程称为多元线性回归[67]。

《3. 随机挣值工期法(SEDM)》

3. 随机挣值工期法(SEDM)

Acebes等[15]描述了一种用于项目监控的研究方法,又被称为随机挣值分析。该方法首先通过蒙特卡罗模拟生成多个符合计划项目规范的项目。在每个控制里程碑开展的分析取决于研究该项目时采用的统计技术,即异常值检测算法以及分类和回归问题†。其最终目的在于为项目经理提供决策支持系统,以检测计划项目的异常偏差,估算超支的概率,并估算预期时间和工作周期,直至项目完工。

《3.1. 挣值工期管理》

3.1. 挣值工期管理

挣值工期管理是一种基于工期建立的绩效指标,以便完全分离进度和成本绩效度量的研究方法。挣值工期管理侧重于单独使用基于时间的数据生成工程进度指标。该方法以工作周期而非货币单位表示项目活动的值。因为挣值管理和挣值进度基于活动成本表示值,所以这是挣值工期管理与这两种方法之间的主要区别。

依靠这些信息,可以在规划阶段创建如图1所示的曲线:计划总工期(TPD)、挣值总工期(TED)和实际总工期(TAD)[12]。该方法与挣值管理有明显的相似之处:①计划总工期指整个项目中的累计计划工作周期;②实际总工期包括实际工期(AD)之前直至实际工期的所有工作周期;③挣值总工期指直至实际工期所挣值的工作周期[即按计划工作的比例表示已执行工作的值(如工作天数]。

《图1》

图1 基于参考文献[12]的挣值工期管理概念图。

与挣值管理类似,挣值总工期值等于项目完工时最终计划的计划总工期值。

无论执行活动耗费多少人力、资源或成本,各项活动中的每个计划日的权重均定义为1。每项活动i的实际工期(AD)是完成该活动所需的工作天数。如需计算一个工作日内有效执行的每项活动的挣值工期(ED)值(天数),活动i的计划工期(PD)必须除以其AD。某项活动i的挣值工期(天数)之和定义为该活动的挣值工期(ED)。在一个控制期内算出的项目挣值工期(挣值总工期)相当于所有项目活动的ED之和。

图1表示基于参考文献[12]绘制的挣值工期管理概念图,即根据时间显示项目中各工作日活动的计划(和实际)进度总累计工期的S曲线。如使用这种方法,y轴表示的数值是该周期内执行的各项活动的计划时间单位的累计总和。因为各项目进度安排或多或少近似于S曲线,所以该图理论上呈S形。

实际工期是预期用于项目监测的控制里程碑点。实际工期相当于挣值管理/挣值进度的实际时间。此时已知挣值总工期,因此可以计算出计划总工期曲线上的ED(t)。式(1)是计算ED(t)的解析表达式:

EDt=AD+TED-TPDtTPDt+1-TPDt(1)

式中,ED(t)是对应于控制周期的挣值工期。注意,tt + 1是在计划总工期曲线上的两个连续时间段,因此t < ED(t) < t + 1且t + 1 - t = 1(如采用日历单位)。

计算ED(t)能反映线性插值的分辨率,其中计划总工期曲线接近时间点tt + 1(均已知)之间的直线。如果曲线为S形或表示为线性,则计算与计划总工期曲线形状无关。

《3.2. 随机挣值工期分析》

3.2. 随机挣值工期分析

分两个阶段开展分析。首先,在规划阶段,收集关于各项活动的偶然不确定性的有用信息(即概率分布函数的类型和特征参数,如期望值、标准差、最乐观完工日期、最可能完工日期和最悲观完工日期等)。通过蒙特卡罗模拟生成大量模拟项目。这些获批的计划项目的“实例”是符合有用信息(即活动的网络拓扑和不确定性)的模拟计划项目的集合。如图1所示,活动的分布函数类型不影响指标表达(计划总工期、实际总工期和挣值总工期),原因是将采用预期值(工时单位)表示这些指标。当使用蒙特卡罗模拟时,分布函数的类型会影响活动赋值。因此,与各控制点的计划项目相比,正在进行的项目在实际情况下会受到影响,如第4.1节所示。

在第二阶段,在项目期间的各个控制里程碑使用先进的统计技术。目标是回答项目经理提出的问题:是否必须采取纠正措施,或观察到的与计划项目之间的偏差是否符合预期行为?能准确估算项目完工的最终时间吗?

将在以下各小节中详细阐释该研究方法,并在本节末尾提供全过程流程图。

《3.2.1. 规划阶段——蒙特卡罗模拟》

3.2.1. 规划阶段——蒙特卡罗模拟

在项目规划阶段,掌握构成项目的活动的相关信息,即顺序、工期以及对其进行限定的偶然不确定性。如图2所示,可以根据活动的最可能工期和挣值工期管理表示计划总工期曲线。

《图2》

图2 蒙特卡罗模拟:计划项目(计划总工期)、进行中的项目(TEDAD和TADAD)、模拟项目j(TEDADj和TADADj)和基线计划工期。

因为项目活动的工期包含偶然不确定性,所以可以将蒙特卡罗模拟应用于正在研究的项目。据此获得大量(N个)可能的模拟项目,这些项目符合针对各项活动定义的不确定性。每个模拟项目均代表了一个可能执行的项目,每项活动均按照其分布函数编程被随机指定一个工期。

可以为以上任一模拟项目j构建真实工期(RD)的TAD曲线;还能计算其相应挣值工期的TED曲线。在图2中,展示了计划项目(计划总工期)、当t = AD时正在进行的项目,以及唯一的模拟项目实例(j)。

与挣值管理类似,根据定义,当项目完工时,计划值等于挣值(PV = EV,与项目是否延迟或继续进行无关),挣值工期管理的挣值总工期等于计划总工期(TPDBPD = TEDAFD,其中BPD指基线计划工期、AFD指实际完工日期)。因此,各模拟项目的所有TED曲线将在项目完工时取相同值,并与项目完工时的计划总工期值一致(TPDBPD = TEDAFD)(图2)。在所述过程中,使用蒙特卡罗模拟后获得的所有项目将共有相同的计划项目(即相同的计划总工期曲线)。因此,如果TEDAD能反映计划总工期最终值的百分比,则任何模拟项目的TEDAD都将与前值一致;假如将相同的百分比应用于相同的最终值(TED= TPD),则每条曲线的挣值总工期值将一致(即TEDAD = TEDAD)。

了解正在进行的项目在各控制里程碑产生的点对(TEDAD, TADAD)。共有N个模拟项目,可以根据TEDAD用AD计算各模拟项目的三元组(AD、TEDAD和TADAD)。用实际工期计算正在进行的项目的项目进度指数(PPI)[式(2)]。

PPI=ED(t)BPD(2)

式中,基线计划工期指计划的完工日期。正在进行的项目和每个模拟项目j的ED(t)相等[因为是通过TEDAD执行计划项目时获得的,而每个模拟项目的TEDAD(即TEDAD)均相同]。

可以从N个模拟项目中获得该项目进度指数值的点云(AD, TADAD)。根据这些数据获取项目在任一控制里程碑的统计特性,并确认项目偏差是否属于预期差异性结果。之后,采用先进的统计技术处理这些数据,从而为真实项目监控(分类问题)和预测预期工期(回归问题)提供基准。

《3.2.2. 控制阶段——项目控制和预测最终工期》

3.2.2. 控制阶段——项目控制和预测最终工期

根据参考文献[15]中的分析,使用针对异常值检测开发的技术来研究项目偏差。最终目的是建立一个描述项目“正常”行为范围的模型。需要在聚合之前根据各项目进度指数值获得所有点云(AD, TADAD),以得到通用密度函数(图3)。使用R软件的“MASS”包中包含的kde2d函数[58],对于正在进行的真实项目,根据控制里程碑(AD, TADAD)计算项目符合预期差异的概率(图4)。

《图3》

图3 核密度估计。(a)点云(ADj, TADADj);(b)概率密度曲线。

《图4》

图4 流程图:随机挣值工期法。

为便于估算项目按时完工的概率,需将数据视为分类问题进行分析。使用的数据来自N个模拟项目的数据。使用部分数据开展算法模型训练,其余数据用于试验。采用控制里程碑(实际工期)表示各模拟项目的相应值(AD, TADAD)以及项目能否按时完工。首先使用R软件的“caret”包[5960]交叉验证培训和试验用数据。该软件包允许测试不同算法,以便选择更适合解决相应分类问题的算法[7882] †。测试线性判别分析、分类和回归树、k最近邻、基于径向核的支持向量机和随机森林,最后选择在该分类问题中表现最好的算法。在第4节中,展示了实例分析过程。

与处理分类问题一样,为了准确预测正在进行的项目的预期完工时间,必须将从模拟项目中获取的数据视为回归问题进行研究。在这种情况下,使用各模拟项目j的最终工期与计划值(基线计划工期)之间的偏差(提前或延后)的绝对值。还使用R软件的“caret”包测试以下算法:线性回归、广义线性回归(GLM)、惩罚线性回归(glmnet)、分类和回归树、基于径向基函数的支持向量机和k最近邻。必须选择回归问题的最佳算法,详见下节。

为评估和比较不同估算研究方法的精度,使用相关研究中曾经使用过的平均绝对百分比误差度量[6871]。该度量以百分比值的形式展示预测方法的预测精度[式(3)]。预测方法的平均绝对百分比误差值越低,则该方法越精确。

MAPE=100%nt=1nRD-EDACtRD(3)

式中,n指项目进行期间的总监测周期。完工工期估算(EDAC)用于表示最终估算项目工期,该工期在监测t周期时计算。

使用以下数据计算平均绝对百分比误差:真实工期和预测值(完工工期估算)。使用本文提出的模型在各控制周期进行预测,可获得真实工期(EDAC)。该公式使用真实工期而非实际工期进行计算。在每个控制时间均可计算真实项目工期与预测工期(EDAC)之间的误差。

《4. 计算实验》

4. 计算实验

为阐释随机挣值工期法,从OR-AS数据库中选择了一个真实项目[7274]。选择的项目名为“2016‒15住宅结构工程.xlsx”(2016‒15 Residential House Structural Work.xlsx),该项目由13项活动组成,计划工期(基线计划工期)为126个时间单位。但该项目最终持续了130个时间单位才完工。其工作周期计划为141个工作日,但真实的最终工作日为151天。

基线计划工期是项目计划工期。在计算了所有活动工期并将其适当排序后,得出结论:样例中的总项目计划工期为126个时间单位。在挣值工期管理中,计算了每项活动的工时单位。无论执行活动耗费多少人力、资源或成本,各计划工时单位(日、周、月等)的权重均定义为1。如果统计所有项目活动的所有工时单位,其结果为141个工作日。

除部分并行执行的活动外,该项目中的其他活动需串行执行。项目的最终工期是126个时间单位。如果所有活动均依次(连续)执行,并且没有时间缓冲,则计划工期将与计划工时(141个工作日)一致(因为在挣值工期管理中,为每项活动的每个工时单位分配了1个单位的权重)。

为了将给定的概率分布函数指派给项目活动,Hammad等[75]对不同的概率分布函数(PDF)进行了比较研究,并得出结论:最适合该项目的概率分布函数为正态分布。但因为项目活动的定义为本研究提供了最可能值、最乐观值和最悲观值,所以本文决定使用三角分布函数为活动的工期建模。此外,文献[28,76]中提到三角分布在风险分析中可用作β分布的替代方式。

本文通过三角分布函数建模体现了活动工期的不确定性,其参数包括每项活动的悲观工期、最可能工期和乐观工期。

图5用实际总工期曲线和挣值总工期曲线(图1)表示计划项目(计划总工期)和正在进行的真实项目的数据。可以看出这些曲线几乎呈线性。

《图5》

图5 根据挣值工期管理表示的项目运行情况。

在项目规划阶段,根据每项活动工期的不确定性通过蒙特卡罗模拟获得N个模拟项目。在该样例中,使用商业软件Matlab生成25 000个不同的模拟项目。该软件应用程序根据各项目活动在每个模拟中的概率分布函数为其分配一个随机工期。如果将该操作重复25 000次,则能通过蒙特卡罗模拟生成同等数量的不同项目,并且这些项目的最终工期各不相同。以上所有项目的最终时间点的模拟情况可用点云表示(参见图6中的蓝色点云)。

《图6》

图6 控制时间(项目进度指数为39.32%)和最终执行时间(项目进度指数为100%)对应的模拟项目。

《4.1. 控制里程碑偏差》

4.1. 控制里程碑偏差

当实际工期为45天时,监测到控制里程碑偏差。按照每项活动耗费的工时单位逐个获取发生偏差的控制周期之前的数据。此时,计划总工期为48个工作日,实际总工期为55个工作日,挣值总工期为52.54个工作日。使用式(1)测定ED(t)值为49.54天[ED(t) = 45 + (52.54 - 52) / (53 - 52) = 49.54]。然后,使用式(2)测定项目进度指数值为39.32%(PPI = 49.54/126 = 39.32%)。在规划阶段使用蒙特卡罗模拟后,获得了25 000个模拟项目(根据计划项目数据)。

在执行阶段,真实项目处于某个控制时间(实际工期AD = 45天,项目进度指数 PPI = 39.32%)。必须针对每个j模拟项目(P)和该控制时间(项目进度指数PPT = 39.32%)计算满足相应条件的点对(AD, TADAD)。

因此,计算进行中的真实项目的TEDAD值,该值将符合所有模拟项目的相应参数(TEDAD = TEDAD)(图2)。根据获得的TEDAD值,计算各项目P的相应时间值AD及其真实工期值TADAD。各模拟项目的AD和TADAD见表1。

《表1》

表1 包含蒙特卡罗模拟结果且项目进度指数为39.32%的样本

PjSimulation resultsBPD = 126TPD = 141
Control timeFinished projectYes (1) / No (0)Quantification
ADjTADjAFDTADDelayOverworkDelayOverwork
P153.52258.107125.135141.74801-0.8650.748
P246.99551.986125.177142.34301-0.8231.343
P350.52953.453125.053140.01400-0.947-0.986
P451.96155.968132.052148.910116.0527.910
P544.21349.246121.713139.25200-4.287-1.748
P650.65353.861126.977142.506110.9771.506

表1中的实际完工日期和实际总工期所在列是各模拟项目(P)的最终工期和最终工作周期。为便于对比这些结果与计划值,如果项目进度未滞后则赋值为0,否则赋值为1。在最后两列列出了模拟项目相对计划项目提前或延迟(P)的实际值。

例如,在标记为P1的模拟项目中,当项目进度指数为39.32%时,对应的点对为(AD= 53.522, TADAD= 58.107)。实际完工日期为125.135天,比最初计划的时间提前了0.865天(即延迟为 0)。

可展示全部模拟项目在项目进度指数为39.32%时的点对(AD, TADAD)(图6),即图片左下方的橙色点云。星号(*)表示基于该项目进度指数值,进行中的项目在图表中的位置:(AD = 45, TADAD = 55)。根据项目中各项活动的正态变化,如果正在进行的实际项目处于模拟项目的点云范围内(见图6中的红色点云),则说明真实项目正在进行中。如果实际项目(在图6中用*表示)位于点云范围外,则不能用活动的偶然不确定性解释这种情况。此时,执行情况偏离了项目活动不确定性集合的正态变化。图6右上角的蓝色点云代表全部模拟项目的最终时间(AFD, TAD)。

如果用橙色点云(AD, TADAD)表示控制里程碑(AD = 45, TADAD = 55)对应的提前完工的模拟项目(延迟为0,AFD≤基线计划工期)和延迟完工的模拟项目(延迟为1,AFD>基线计划工期),则能获得有关正在进行的真实项目(项目进度指数为39.32%)的更多信息(图7)。正在进行的项目更近似于延迟完工且工作量较大的项目。

《图7》

图7 实际工期为45的模拟项目(项目进度指数为39.32%)。红色点表示将提前完工的项目;青色点表示延迟完工的项目。

用异常值检测算法(R软件的“MASS”包中的kde2d函数)处理点对数据集(AD, TADAD)(实际工期为45,项目进度指数为32.39%),以便从进行中的项目获取更详细的偏差信息。如图8所示,该函数支持核密度估计。本研究发现正在进行的项目的表现低于98%的模拟项目,这可被视为一种警告,即需采取纠正措施。

《图8》

图8 概率密度曲线和正在进行的项目。

《4.2. 项目估算》

4.2. 项目估算

为进一步探查项目的完工时间,建议将项目同时作为分类问题和回归问题加以研究。使用R软件的“caret”包估算项目按时完工的概率(即没有延迟)和预期的最终时间。在获得结果前,将总样本(25 000个模拟结果)划分为用于建模的显式训练数据集(80%的结果)和用于评估该模型使用隐式数据时性能的隐式测试数据集(20%的结果)。

R软件支持通过多种指标评估机器学习算法。当使用“caret”评估模型时,分类问题输出的指标有别于回归问题输出的指标。分类问题的默认指标是“精度”(Accuracy),而回归问题的默认指标是均方根误差(RMSE)。

在解决分类问题时,图9显示了当实际工期为45(项目进度指数为32.39%)时,R软件的“caret”包根据推荐算法和模拟项目数据集返回的结果。图9表示测量算法精确度的两种不同方式:精度和Kappa值。“caret”默认采用精度和Kappa值算法评估处理二进制和多类别分类数据集。精度指所有实例中正确分类的实例所占的百分比。Kappa值(即Cohen’s Kappa)与分类精度相似,唯一的不同之处在于,Kappa值算法会在随机概率基线状态下将数据集归一化。

《图9》

图9 分类问题:选择个案研究的最佳算法。

图9底部显示了分别放入不同象限的两类指标:图左侧为精度,右侧为Kappa值。纵坐标表示待评估的不同推荐算法。根据各自的精度,算法按照递减顺序排列。图中可以直观比较平均值并观察不同算法的边界重叠情况。图中显示了平均估计精度和95%置信区间(即95%观察值在此范围内),能提供很多帮助。

如图所示,在0.95置信水平下,基于径向基函数的支持向量机的平均精度最高(0.80115),所以是该案例的最佳方案。R软件的“caret”包还以表格形式提供了相同结果,其中包括各算法的精度(图10)。

《图10》

图10 分类问题:以表格形式显示数据。Min:最小值;Qu:四分位数;Max:最大值;NA:不适用。

当实际工期为45时,这种支持向量机算法提供的概率为38.35%,即正在进行的项目将延迟完工。换言之,项目提前完工的概率为61.65%。回归问题将返回估算的项目预期完工时间。再次使用R软件的“caret”包选择处理问题的最佳算法,并以图形(图11)或数字表(图12)的形式获取(本案例)信息。

《图11》

图11 分类问题:选择个案研究的最佳算法。MAE:平均绝对误差。

《图12》

图12 回归问题:表格格式显示数据。

“caret”默认采用均方根误差和R2指标评估回归数据集算法。均方根误差是预测值与观测值的平均偏差。这有利于了解算法是否适用于输出变量单元。R2又称为R方或判定系数,提供了预测值和观测值的拟合优度度量。该值在无拟合的情况下为0,完全拟合的情况下为1。均方根误差大致指出了所有预测值的误差情况(0指完全无误差);R2 指出了模型与数据的拟合程度(1指完全无误差,0指误差率较高)。图11表示项目中使用各种回归算法得出的误差(按误差数量从小到大排列)。

选择惩罚线性回归作为最佳算法(平均绝对误差和均方根误差相对较低)。当将惩罚线性回归算法用于处理数据集时(实际工期为45),得到的预期延迟为-0.577天。

《4.3. 验证》

4.3. 验证

对于正在进行的项目,使用随机挣值工期法(实际工期为45)分析如下:项目提前完工的概率为0.6165,最终工期预期较基线计划工期(130天)提前0.577天,项目超出了预期行为(即全部模拟项目的98%)。仅在指定控制里程碑处开展该分析。

为验证本文的方案,在整个项目期间将该方法与另外两种方法,即挣值进度法(ESM)[9]和随机挣值法(SEVM)进行比较 [15]。表2显示了通过挣值进度法和随机挣值法获得的最终项目工期预测值,以及使用推荐的随机挣值工期法获得的工作周期。所有值均按项目执行百分比计算。

《表2》

表2 基于挣值进度法、随机挣值法和随机挣值工期法估算的最终项目工期

Control timeADESMSEVMADSEDM
00126.00126.000126.00
10%1887.34140.307122.37
20%41112.30125.1917122.32
30%52117.57130.6731123.27
40%63121.26127.0645125.42
50%68119.90125.9860126.29
60%77115.50122.9169124.32
70%86117.32124.0381123.14
80%94118.77124.3395123.80
90%105121.22124.64112126.93
100%130130.00130.00130130.00
PPI = 39.32%45114.22127.1845125.42

图13显示通过三种研究方法,从项目开始至完工按日计算的项目总工期估计值,实际工期为{1, 2, ……, 130}(真实项目在第130天完工)。这三种方法在控制里程碑处(实际工期为45)预测该项目将提前完工(即少于130天的项目实际工期)。

《图13》

图13 项目期间估算的最终项目工期。

对正在进行的真实项目开展的数据评审显示,项目进度较计划进度提前,直至最后周期。该观测值与随机挣值工期法和挣值进度法的预测结果一致(挣值进度法的结果过于乐观)。随机挣值法和随机挣值工期法均能有效预测项目完工日期。但随机挣值法有时预测该项目会提前完工,有时会延迟完工。

已采用平均绝对百分比误差[式(3)]比较不同研究方法获得的估算值的精度。图14在项目生命周期中说明该值。挣值进度法的估算值精度低于随机挣值法和随机挣值工期法。对于本次个案研究,随机挣值工期法和随机挣值法提供的估算值相近,平均误差约为5%。

《图14》

图14 平均绝对百分比误差:最终项目工期估算。

《5. 项目控制和监测基准——随机挣值工期法与随机挣值法和挣值进度法》

5. 项目控制和监测基准——随机挣值工期法与随机挣值法和挣值进度法

随机挣值工期法是一种用于监控项目的研究方法。在之前展示的个案研究中,随机挣值工期法和随机挣值法提供的最终项目工期估算值相近。为对两者进行比较,从OR-AS数据库中选择了真实项目样本,并评审这些样本的估算值精度(平均绝对百分比误差)[7274]。数据库包含基线进度数据(网络、资源等)、风险分析数据(用于蒙特卡罗模拟)和项目控制数据(使用挣值管理和挣值进度指标)。

选择四个具有不同拓扑网络[串行/并行(SP)指标]、计划总工期和活动数量的项目,即2012‒10、2014‒08、2016‒15和2016‒28。已有人使用串行/并行指标[13,29,70,74,77],其定义见式(4):

SP=ns-1nt-1(4)

式中,ns是串行路径数;nt是路径总数(包括并行路径)。串行/并行值从1到0不等,其中串行/并行为0表示100%并行项目网络,而串行/并行为1表示100%串行项目网络。

表3显示了各项目的数据:标识符、串行/并行指标(s/p)、nsnt、关键路径数(N)、基线计划工期、实际完工日期、计划总工期和实际总工期。

《表3》

表3 不同项目网络的数据

Projects/pntNnsBPDAFDTPDTAD
2012‒100.8231841554605967
2014‒080.410403717233275402496
2016‒150.66613129126130141151
2016‒280.450216107176151161

对于整个项目生命周期实施的挣值进度法、随机挣值法和随机挣值工期法,本文还提供了平均绝对百分比误差图(图15)。首先得出的结论是:在管理随机项目时,随机方法(即随机挣值工期法和随机挣值法)得出的估算值精度高于挣值进度法。随机挣值工期法和随机挣值法在2012‒10和2016‒15项目中表现出相似行为。这些项目的基线计划工期、实际完工日期、计划总工期、实际总工期和路径数量值各不相同,但串行/并行指标超过0.5(即采用串行项目网络)。2014‒08和2016‒28项目的串行/并行指标相近(0.41与0.45)。在2014‒08项目中,随机挣值法的表现优于随机挣值工期法,但在2016‒28项目中,随机挣值工期法的表现优于随机挣值法。因此,这场比较所获得的首要结果为:如两种研究方法返回不同的估算值,则使用随机挣值工期法更有意义。

《图15》

图15 不同项目网络的平均绝对百分比误差研究。(a) 2012‒10;(b)2014‒08;(c)2016‒15;(d) 2016‒28。

这些结果产生了一个新的研究课题:能否建立某种规则,以评估采用随机挣值工期法还是随机挣值法进行项目监控?这两种方法的精度分别受到哪些因素影响?

《6. 结论》

6. 结论

如不能基于活动成本准确估算项目工期,则挣值工期管理有助于实施项目监控。作为基于成本的挣值进度法和随机挣值法的替代方案,随机挣值工期法基于工作量实施。随机挣值工期法有助于监控成本为非关键指标的项目,如发展合作项目,以及难以明确估算成本的项目,包括大型复杂基础设施项目或研发项目。在这种情况下需考虑活动成本估算的不确定性,可根据工作量和随机挣值工期法为项目经理提供相关信息。

部分研究解释了如何在确定项目甚至模糊项目中实现挣值工期管理。但因为项目活动工期具有随机性,所以活动可能出现偶然性。因此,无法确定整个项目完工所需的时间。但文献中尚未提及对随机项目使用挣值工期管理的方法。如目前的研究满足该需求,则能将不确定性引入项目活动,并通过挣值工期管理法控制随机项目。项目经理可凭借该研究方法了解项目在不同控制时间的状态(延迟/提前)。此外,该方法允许项目经理确定项目超支是否符合预期差异,或者在整个项目生命周期中是否存在结构性和系统性变化。最后,这种方法允许探讨项目活动是否存在时间-成本相关性,以检测涉及项目定义的异常情况。该方法还可用于计算超出预期工期的概率。

本文阐述了如何参照随机挣值法将随机挣值工期法应用于随机项目,以便监测和准确估算最终项目工期。当处理随机项目时,通过蒙特卡罗模拟估算的项目工期比挣值进度法更精确。该过程可在真实项目中实现,同时允许项目经理监测工作量或工期估算的相关偏差。

本文不但提出个案研究说明如何在随机项目中使用随机挣值工期法,还在推荐的个案研究中验证了随机挣值工期法;比较了随机挣值工期法的结果与挣值进度法和随机挣值法的结果;最后,阐述了对随机挣值工期法的关注和该方法的可用性分析;一次性选择了四个项目进行分析,并通过随机挣值法估算出比较准确的最终项目工期。研究发现,随机挣值工期法和随机挣值法返回的最终工期估算值时有相同,但其中之一偶尔会比另一个更准确。

未来还需开展进一步研究,以确定网络拓扑(串行/并行指标)和其他参数会对随机挣值工期法和随机挣值法的精度产生哪些影响。虽然串行/并行指数值较高(接近1)可能意味着随机挣值工期法和随机挣值法效果相当,其他参数不会影响随机挣值工期法或随机挣值法的精度,但当串行/并行指数低于0.5时,则必需考虑其他项目参数。