人工智能遇上敏捷性:动手做之蒙特卡罗模拟

点击上方关注,All in AI中国

作者:Ramesh Manickavel

在我的文章"数据科学中项目经理的角色"( https://dzone.com/articles/role-of-project-manager-in-data-science)发布之后,一些项目经理建议我详细说明满足目标交付承诺的用例。我们将采用模拟技术探索,这是人工智能中令人惊叹的概念之一。定量分析技术(例如蒙特卡罗模拟)可以通过潜在结果的概率分布帮助项目经理做出决策。

蒙特卡洛模拟技术在很大程度上依赖关键变量的随机性来解决问题。除了关键参数,我们还需要了解它们之间的关系以及足够的数据以进一步分析。

要想深入了解程序管理中的蒙特卡罗模拟,此链接可能会有所帮助。(https://www.academia.edu/8939341/Monte-Carlo_Simulation_in_Agile_Project_Estimation_Forecasting_Schedule_and_Required_Velocity)让我们用大多数人熟悉的案例研究使用MS Excel进行一个实验。

案例研究

Shubham是XYZ公司的首席执行官。在发布计划之后,他的团队致力于为客户提供关键功能。Mohit是该公司的项目经理,根据他一直跟踪的风险和工作进度总结,已经确定了在达到目标交付日期方面的挑战:

人工智能遇上敏捷性:动手做之蒙特卡罗模拟

Mohit:老板,我们可能无法按照我们最初的计划交付所有承诺的项目。

Shubham:这可不是一个好消息。Mohit,你能详细说明一下吗?

Mohit:由于团队正在处理优先需求,我们正在按计划交付高优先级项目,但是基于我们迄今为止消耗的速度和对计划范围的更改,我们在完成剩余的工作方面存在挑战。

Shubham:好的,你有什么建议?

Mohit:让我们将可交付成果分为两个阶段。客户的交易展示所需的所有高优先级项目将按计划交付。我们需要重新规划剩余的工作。

Shubham:这听起来像一个很好的计划。我和项目管理团队还有我们的客户讨论下这个问题。虽然其余项目的优先级相对较低,但我们仍需要提供一个可以交付的日期。你能给你的建议提供一个可靠的计划吗,以确保计划不会影响我们的团队。

Mohit:好的。

可靠的计划意味着更有可能履行对剩余工作的承诺。让我们一起帮助Mohit实施蒙特卡罗模拟的分步指导。Mohit的目标是根据历史速度和相关的随机性寻找乐观和悲观的选择。这个电子表格包含以下步骤的摘要。

步骤1:确定随机数种子

在我们的场景中,因为我们知道最低的速度(Velocity)和最高速度(Velocity),我们可以得出:MIN (最后3次冲刺的实际速度)+RAND()*(MAX(最后3次冲刺的实际速度)-MIN (最后3次冲刺的实际速度))

我们可以选择任何函数(例如添加风险或范围参数),但为了简单起见,选择这个函数作为通常考虑调整大小时涉及的工作、复杂性和不确定性的速度。

步骤2:设置试验

行业标准表明,蒙特卡罗模拟至少有10000次运行。由于我们无论如何都在Excel中进行,因此我们可以进行15000次运行(或更多)。设置一个1至15000的试验列。

步骤3:随机运行

为第一次运行作为种子函数设置速度(Velocity)的另一列(如步骤1中所述)。我们现在有两个15000列,采用运行值填充第一列,第二列填充第一次运行的值。为了随机化所有运行,我们需要遵循以下内容:

•选择值为"1"的单元格(在"Trial"列下)和种子值(在"Velocity"列下)

•按Ctrl + Shift +向下箭头键(我们现在选择了2行×15000列)

•选择数据->假设分析->数据表

•点击"列输入单元格"条目,然后从电子表格中选择任何不包含任何值的单元格

"Velocity"列下的15000个单元格保持随机运行

•如果要频繁刷新数据,请单击文件->选项->公式->工作簿计算->"自动"。

步骤4:绘制直方图

•要绘制频率分布图,我们首先需要bin(bucketizing)

•让bin速度从400到625开始,增量为25

•单击数据->分析->数据分析

•如果没有找到这个,需要通过文件->选项->加载项->管理-> Excel加载项->'Go ' - >启用"分析工具库"来添加它

•单击直方图 ->输入范围(列1至列15000,其中包含"Velocity"的随机值),Bin的范围(Col 1至Col n,其保持bin值为425,... 625)。可以选中其他复选框,将获得bin摘要和直方图,如下所示:

人工智能遇上敏捷性:动手做之蒙特卡罗模拟

人工智能遇上敏捷性:动手做之蒙特卡罗模拟

现在,Mohit可以为其首席执行官提供各种选择:乐观的选择(可能有500个故事点(Story Point),Velocity为33%)或悲观的选择(可能是575个故事点(Story Point),Velocity为83%)。然后,基于剩余的努力,Mohit可以计算出需要多少额外的sprints。

虽然这个问题听起来很简单,但是为了根据历史速度计算所需的sprints次数,蒙特卡洛模拟构建提供了更好的可能的结果范围和相关概率,特别是当种子函数如上所述正确设置时。

总而言之,蒙特卡罗模拟与行业领域知识结合,识别影响决策的参数,收集相关数据,以及通过大量试验建立适当的实验时是有效的。与任何其他模型一样,这需要恒定的反馈机制来提高预测准确性。

人工智能遇上敏捷性:动手做之蒙特卡罗模拟


分享到:


相關文章: