基于蒙特卡罗模拟的量化项目管理研究与实践分享

2018-06-04   出处:大商所行业测试中心  作/译者:大连飞创  


摘要:为保证项目能够健康稳定进行,项目管理中的各项活动都是至关重要的。CMMI 4、5级强调对于项目的估计与决策不仅要依赖于项目经理的工作经验以及历史的度量数据,更要在此基础上通过建立统计模型使估计更加准确,决策更加合理。简单的说,就是通过实验法对项目策划、监控等活动进行预测、判断。本文将介绍一种可以有效预测、决策的分析方法--蒙特卡罗模拟,并通过实例说明如何使用这用这种解决项目管理中存在的问题。

一、引言

田忌赛马的故事,读者一定都不会陌生。田忌通过策划、安排,选择一个最好的方案,最终取得一个最好的结果。可见,合理的运筹安排是至关重要的。项目管理中的诸多问题,例如:在项目监控阶段,如何根据实际情况结合历史数据做出最优的决策?项目风险管理要求无论是在做计划还是估算成本时都要留有余地,那么需要预留多少才是最优的呢?要解决这些问题,对于项目的量化管理是必不可少的。量化管理的数据分析方法众多,例如:预测、风险分析、优化求解、假设检验、相关分析、回归分析、聚类分析等。相应的数据分析工具也是百花齐放,如EXCEL、LINGOCrystal BallJMPMinitabXcelsius等。蒙特卡罗模拟方法在最近10年得到快速的普及和发展。这种方法得以流行的原因就在于不必亲自动手做实验,而是借助魔力工具-水晶球,使得原本费时费力的实验过程,变成了快速和轻而易举的事情。它不但用于解决许多复杂的科学方面的问题,也被项目管理人员经常使用。



二、现状分析

近年来,随着质量体系的不断发展与完善,对于项目数据的简单度量已不能满足量化项目管理的要求以及项目的实际需要。例如,项目在进行估计、决策时,需要全面考虑影响估计、决策的各项因素。正是由于这些因素,增加了项目的不确定性和潜在的风险。在传统的项目管理中,由于手工环境下无法完成复杂环境下的数据计算和历史数据的欠缺,对于项目管理中的不确定性通常采用专家经验进行估计,所得的结果往往带有较强的主观性,甚至还可能由于遗漏一些信息,使决策结果产生误导。那么,如果可以通过简单的实验法对项目策划、监控等活动进行预测、判断,从而得到更为精准、客观的决策,便能够规避上述问题。对于项目量化管理的方法有很多,例如预测、回归分析、蒙特卡洛模拟、可靠性增长等方法。本文将介绍一种可以有效预测、决策的方法--蒙特卡罗模拟,以及实现这种模拟的魔力工具--水晶球,并结合具体实例展现该方法的魅力与作用。

三、蒙特卡罗模拟法的基本原理

18世纪让世人惊喜的蒲丰投针实验,通过大量的重复实验得出了圆周率的近似值。随着科技的发展,可以通过计算机实现大量的随机抽样实验,也使得用随机实验方法解决实际问题成为可能。蒙特卡罗模拟是源于赌场赌博的计算方法,将概率统计作为理论基础。蒙特卡罗仿真打破过去分析资料的能力限制,可以简单建立与分析数以万计的潜在结果,并对某个特定状况预测所有可能的结果。运用图表对分析进行总结,并显示每一个结果的概率。其原理为用随机实验的方法计算积分,即将所要计算的积分看作服从某种分布密度函数的随机变量的数学期望。通过某种试验,从分布密度函数中抽取N个子样,将相应N个随机变量的值的算数平均作为积分的近似值。

实施模拟的先决条件是建立数学模型,并明确假设变量、预测变量、决策变量,以及这些变量之间存在的关系。

(1)预测变量:即我们要做的事情,例如对工期的估计是否合理,哪种方案组合更有利提高效率等等。由于预测变量时需要多个因子,因子与预测变量之间往往存在函数关系,因此预测变量有时也称为“目标函数”。

(2)决策变量:决策者可以控制的因素,其值决定预测变量的值。

(3)假设变量:决策者无法控制的变量或因素,如各个阶段可能引入的缺陷数等等。

其次,要明确每个假设变量的分布类型,比如某变量服从正态分布,则假设变量X也是服从正态分布的,只有这样计算机才知道怎么发射随机数。然后,便可以应用工具(Crystal Ball)进行模拟了。

四、蒙特卡罗模拟方法的实现

蒙特卡罗模拟的实现方法有很多种,其中较为方便、高效的是自动化软件---Crystal Ball(水晶球),它作为excel的一款增益软件充分利用微软视窗环境,提供图形包的高级模拟技术的独特组合。该软件包的主要功能有:计算机仿真模拟功能、时间序列数据生成预测后OptQuest功能等,使其可以在运行结果中自动搜索仿真模型的最优解。事实上,Excel数据分析工具可以解决一些简单和变量较少的最优解问题当变量变成几十个或几百个,需要对各变量进行组合计算求解最优值时Excel显得不太便捷。

Crystal Ball帮助用户分析电子表格模型中的相关风险和不确定性,并且根据设置的假设变量、决策变量和约束条件计算预测变量的最优解和预测分析,以及预测变量对假设变量的敏感性分析等。Crystal Ball可以把日常生活生产中的事件抽象为数学模型来进行仿真计算,它可以清楚地展现因为变量变异造成模型产出的各种情况。Crystal Ball包含用户分析的所有可能使得用户充分了解风险,让用户握有最多信息而选择最佳方案。透过Crystal Ball的敏感度分析可以清楚知道不同因子(假设变量)变化造成的结果,如造成项目效率较低的主要因子包括人员能力不足、沟通成本较大等多种因素,透过敏感性分析可以知道提升效率的关键控制点在何处。

在实际实践中,当实施者在明确假设变量预测变量决策变量以及相应的数学模型后,就可以根据实际情况,进行蒙特卡罗模拟了。具体操作步骤为:

1 定义随机的输入单元格:加载Crystal Ball到Excel中,并且建立一个工作表,设置假设变量、预测变量;需要注意的是,为保证预测结果的有效性,在定义变量时,应注意变量的可度量性以及可控性。

(2)定义随机单元格的概率分布:利用软件Define Assumption功能为相应变量设定概率分布,利用Define Decision定义决策变量;只要有假设变量的历史数据,在定义模型过程中可以将历史数据形成的分布直接定义在假设变量中。这样在建模过程中就可以一气呵成地完成假设变量的概率分布定义。EPG在此过程中发挥巨大作用,首先,EPG在日常工作中应积极收集与项目相关的各项数据为后续工作提供相应输入;其次,EPG需根据历史数据建立自变量的所属分布类型。在Crystal Ball软件中已经提供了22种概率分布,如果这些分布不能满足模型的要求,可根据实际情况自定义分布。

(3)定义预测输出单元格:应用Defin Forecast 功能定义输出变量的单元格。

(4)设定运行参数:在Run Preference功能中定义模拟次数、敏感度分析等所需参数;为得到为准确的模拟结果,应定义尽可能多的模拟次数。

(5)运行仿真:点击Run进行模拟运算,分析模拟结果,并进行预测、方案选择以及敏感性分析等。

五、案例分析

前面几章对蒙特卡罗模拟以及水晶球的使用进行了简单的说明,下面将通过软件项目管理中的两个实例具体应用,希望可以给读者一些启发与参考。

5.1基于估计偏差率基线估计项目工作量以及敏感度分析

为合理估计项目成本,在项目开展的前期策划阶段需要对项目的工作量进行估算。某项目专家根据经验估计出:需求工作量为3.23人月;设计工作量为2.89人月;实现工作量34.69人月;系统测试工作量为30.79人月;项目管理工作量为6.77人月。专家经验估计总工作量为78.37人月。

由于不确定性因素的存在,对工作量的估计与项目的实际运行情况往往存在偏差。因此,可以根据蒙特卡罗模拟模拟方法以历史是数据为基础,对工作量做出为精确地估计,并对各工程阶段进行敏感性分析。下表为根据项目历史数据得出各个工程阶段的工作量偏差服从分布情况




1 历史项目工作量偏差数据

1为应用Crystal Ball软件进行5000模拟得出的结果,可以得出:根据各阶段工作量估计偏差基线得出总工作量在78.37人月以下的可能只有54.86%因此将工作量定义为78.37人月将有很大的风险超出预算,应将工作量估计为90人月更为合理。



若有由于实际情况,需要对工作量进行缩减,那么缩减哪个阶段的工作量效果会更加显著呢?因此,应用软件进行敏感度分析得出结果如图2所示,从中不难看出:实现阶段对工作量的影响最大,其次是项目管理和系统测试。因此,从编码的工作量入手来优化整个项目工作量的效果是更为显著的。需要注意的是,在项目运行中的各项指标应该综合考虑,尽量不要出现,因为过度压缩工作量而导致产品质量不过关的情况。


5.2规模估计的最优决策

本例用来展现蒙特卡罗模拟在项目管理中的典型应用。在介绍例子前,先来阐述几个关键词。关键路径法和计算评审技术是项目管理中最重要和应用最广泛的两项技术。关键路径法可以在网络模型上直观的分析项目所需时间,找到减少工作量的关键所在。但其不足之处是各活动的工作量是确定的,而实际上任何项目的大多数活动的工作量都是不确定的。在项目尚未开始时活动的工作量只能是一个估计值,在项目执行过程中工作量将受各种因素的影响而发生变化。计算评审技术在关键路径的基础上将随机性引入活动的工作量,项目的结束时间也具有随意性。再来评估项目结束时工作量是否在一定范围的概率,因此计算评审技术发较关键路径法更准确的模拟项目过程。

根据项目管理的特点,有经验的项目经理往往能够估计一个活动的3个参数,即活动工作量的最小值、最可能值和最大值。因此,通常将活动工作量假设服从三角分布。在项目正式启动之前需评估项目规模,并通过评审的方式确定项目的估计规模。某公司对于规模估计主要方法有:全功能估计法(FFP)和专家经验法;其中,将专家经验估计出代码行数转化成功能点数:1CFP=128 LOC。该公司采用的主要评审方法有:邮件评审、走查、技术复审审查。详细估计数据如下:



2历史项目规模估计的工作量及质量数据

3历史项目评审的工作量及质量数据

那么应该如何选择呢?如果以花费的工作量最小为目标,结果是显然的:选择专家经验法进行规模估计,并以邮件的方式进行评审。但更符合实际的情况是要兼顾质量与工作量的平衡,面对不同的目标应该如何选择才是最优的呢?蒙特卡罗模拟就可以很好的解决这个问题。假设某项目以花费的工作量最少为目标,并需要同时满足以下两个条件:

1. 功能点的遗留数量要少于28个;

2. 对于评审发现问题的解决率要在70%以上。

经过模拟仿真所得结果如图3所示,从中可以看出:为达到目标,应选择专家经验法进行规模估计并采用审查方式进行评审。此时的总工作量为:11.39人时,功能点遗留数量为27个,问题解决率为85%



3 优化计算结果

上述简单的实例验证了蒙特卡罗模拟在决策分析中卓著表现,并且可以将这种方法用于整个生命周期多目标的决策,从而实现CMMI 5级使用统计建模的方法进行过程裁剪的要求。

六、总结

本文首先介绍了蒙特卡罗模拟方法,并结合具体实例展现该方法在决策和估计方面的优势。只要有历史数据,就能够将“靠谱”的估计很好的实现,利用数据分析的一些功优化生产运行,让企业以更高的效率、更低的成本和更好的质量运营。但是,想要保证数据分析的有效实施,与历史的日常数据积累是密不可分的,希望本文能够给读者带来与数据分析的启发与思考,将量化项目的分析方法切实应用于项目之中并进一步指导项目实施。





欢迎给测试窝投稿或参与内容翻译工作,请邮件至editors@testwo.com。也欢迎大家通过新浪微博(@测试窝)或微信公众号(测试窝)关注我们,并与我们的编辑和其他窝友交流。
278°|2786 人阅读|0 条评论

登录 后发表评论
最新文章