一、引言
在项目进度管理过程中,估算活动持续时间项目进度计划制定的重要环节,活动持续时间估算的准确性决定了项目进度计划的合理性。在项目活动时间不确定的情况下,常常采用三点估算,三点估算是通过考虑估算中的不确定性和风险,以提高持续时间估算的准确性。
然而,三点估算适合对单个活动持续时间进估算,那么如何估算整个项目所有持续时间呢?此时,我们可以使用风险管理过程中的定量分析工具——蒙特卡洛模拟,来对整个项目活动持续时间进行估算,从而对项目工期风险进行定量分析。
二、蒙特卡洛模拟介绍
蒙特卡洛模拟(Monte Carlo Simulation) 一种计算机模型分析技术,具体的方法就是通过蒙特卡洛模型计算出每个工作包工期估计区间,通过随机数进行大量成千上万甚至百万次的模拟计算,最终得出一个累计概率分布图。在《项目管理知识体系指南》中蒙特卡洛模拟做为数据分析工具用来对风险进行定量分析,也可以对项目工期和成本进行模拟分析。
蒙特卡罗方法的解题过程可以归结为三个主要步骤:构造或描述概率过程;实现从已知概率分布抽样;建立各种估计量。
三、蒙特卡·洛模拟实例
3.1 项目背景
智慧校园项目是一个给中小学提供限软硬件服务的系统集成项目。项目建设内容包括RFID采集器、智能门禁、校务管理系统、家校互联APP等。项目主要活动如下:
3.2 蒙特卡洛模拟分析工具
专业的蒙特卡洛模拟分析一般采用专业的蒙特卡洛模拟软件,Excel表格也是常用的蒙特卡洛模拟分析工具。本次实例,我采用Excel表格来对智慧校园项目工期进行蒙特卡洛模拟来。
3.3 蒙特卡洛模拟分析步骤
3.3.1 工作包工期估算
智慧校园SaaS项目的工作包主要包括计划制定、获取基础数据、系统配置、线下培训、平台启用和平台交付。首先,估算出各个工作包的平均工期、标准差以及最悲观、最可能和最乐观的估计工期。如下图表所示:
根据贝塔分布三点估算的计算公式,可以算出:
均值=(乐观值+4 * 最可能值 + 悲观值)/ 6
标准差=(悲观值-乐观值)/ 6
3.3.2 工作包工期随机数生成
然后,产生每个工作包的随机工期值。Excel里面有个函数可以生成呈正态分布的随机数,就是NORMINV。我们的设计要素的第一个随机工期取值的公式就是这么写的:=ROUND(NORMINV(RAND(),$E$3,$F$3),0),如下图所示:
解释一下这个公式:ROUND(NORMINV(RAND(),$E$3,$F$3),0),RAND() 是生成0到1之间的随机数,NORMINV(RAND(),$E$3,$F$3) 是生成呈均值为E3(图1所示)、标准差为F3(图2所示)的正态分布的随机数,ROUND 是四舍五入的意思,这样回车我们就生成了设计这个要素的第一个随机工期值4。同理我们把这个公式值往下拉,复制1000次(我们此例中模拟1000次),就得到了1000个呈正态分布的随机工期值;然后其他5个工作包的随机工期值也是照葫芦画瓢,这样我们就得到了这6个工作包的1000次模拟的随机值,再每次的6个工作包的随机值相加得到总工期的模拟值,如下图所示:
3.3.3 工期随机数分组
估算出将所有工作包可能存在的工期最小值和最大值,新增一列升序排列。我们在案例中选择最小值为2,最大值为80。
3.3.4 分组概率统计
计算每个分组数据在【计划定制】工作包这组数据中出现的概率,这儿需要用到函数FREQUENCY,计算概率的公式为=FREQUENCY(B13:B1119,I13:I93)/1000,意思是统计每个分组数据在【计划定制】这一组数据中出现的次数,再除以模拟总次数1000就得到这个分组数据出现的概率。
参照这种方法计算出其他工作包的分组数据概率。
3.3.5 工作包工期概率分布图
得到每个工作包的工期概率分布统计表,我们可以根据表格中的各自的工期概率大致画出这6个工作包工期的概率分布图。如下图所示,横轴(X轴)代表工期分组数据,竖轴(Y轴)表示工期概率。
3.3.6 总工期随机数统计
总工期需要计算出每一种总工期出现的概率,同时统计积累的概率,以此可以得知项目工期合理的范围。将每一行得出的6个工作包的工期数据进行累加,得到1000种情况下总工期的随机数值。如下图所示:
3.3.7 总工期概率
然后计算每个分组数据在总工期这组数据中出现的概率,计算概率的公式为:=FREQUENCY(H13:H1119,I13:I93)/1000,意思是统计每个分组数据在总工期这一组数据中出现的次数,再除以模拟总次数1000就得到这个分组数据出现的概率。
然后计算一个累积概率值,累积概率值就是前面的所有单个概率值加起来的概率,比如算分组数据6的累积概率值就是把6以下的数值的概率值全部加起来,这样我们就得到关于分组数据在总工期这组数据中出现的概率和累积概率的数据,如下图表所示:
3.3.8 项目总工期概率分布图
通过对上面表格的数据,以分组数据为X轴,出现概率和累积概率的值为Y轴于是可以做出下面关于总工期的概率分布图:
蓝色柱状图是整个项目估计刚好多少天完工的概率数据,绿线就是我们PMBOK上定量风险分析得到的那张S曲线图,也是我们最终蒙特卡洛模拟需要得到的最终的模拟输出:总工期的概率分布图。
3.4 蒙特卡洛模拟分析结论
3.4.1 工作包工期概率分布
在图7中工作包工期概率分布图的正态分布图,我们可以看到6个工作包工期的概率区间,比如计划定制工期2天的概率为36%,工期3天的概率是22%。
3.4.2 总工期概率分布
通过图11:总工期的概率分布图的S曲线,我们可以预测整个项目在多少天内完工的概率。比如我们需要预测整个项目在51天完工的概率,通过S曲线了解到51天对应的累积概率是77.7%左右,也就是整个项目51天内完工的概率是70%,那么51天内不能完工的概率就是1-77.7%=22.3%,这就是项目工期风险。
四、总结
综上所述,蒙特卡洛模拟对项目工期进行定量分析,更加准确的评估出智慧校园项目的完成工期范围,给项目的成本预算和计划的制定提供了更加准确的数据。蒙特卡洛模拟在项目管理过程中还可以用在项目风险定量分析和成本预算等流程。
参考书籍:
- 《数据化决策》:任何项目的投资风险最终可用一个方法表达,那就是风险和收益的范围以及可能对它们产生影响的其他事件的发生概率。
- 《软件项目管理与素质拓展》:梳理风险意识,掌握风险识别方法,重视风险综合分析,加强风险全场监控,提高风险应对能力,从容应对意外状况,缓解风险带来的损失,将项目风险控制在可以接受的范围内。