什么是蒙特卡洛仿真实验?
蒙特卡罗实验是在处理不确定性时获得精确估计的一种方法。它使用随机性来获得有意义的信息,并有效地计算业务风险和预测失败,如成本或调度超支。

这项技术是由斯坦尼斯拉夫·乌拉姆和约翰·冯·诺依曼在20世纪40年代作为曼哈顿计划的一部分对核武器进行绝密研究时开发的。蒙特卡罗的名称来自于需要为该技术分配一个码字,并且与该方法的结果有些不同,蒙特卡罗的名称不是由偶然决定的。
乌拉姆的同事尼古拉斯·梅托拉斯(Nicholas Metropolis)可能是受乌拉姆的赌徒叔叔在蒙特卡洛赌亲戚的钱的故事启发,建议以公国著名的赌场命名这种技术。这个名字从此流传下来,这项技术也得到了广泛的应用。
这个技术是一种有效的提高决策能力的方法并可用于作出准确的长期预测。它也被称为蒙特卡罗方法和多概率仿真。
蒙特卡罗用Excel还是仿真建模?
对于一些挑战,例如公式中容易获取到的挑战,蒙特卡罗模拟可以使用常规电子表格进行。微软在Excel中的蒙特卡罗仿真介绍中给出了可以解决的问题类型,其中包括诸如根据需求概率查找要排序的项目数量的任务。
在Excel中创建的模型由简单的数学关系和公式驱动。因此,蒙特卡罗实验采用了反复插入随机分布数到模型公式中的形式,直到形成一系列可能的结果。
然而,当面临的挑战很难或不可能用公式得到令人满意的答案时,就需要另一种方法。这就是AnyLogic之类的仿真软件出现的原因。
如果基础模型是动态仿真,则模型可能是复杂的、非线性的,并且会随时间变化。此外,模型可以具有内部随机性,因此,不管输入是随机的还是确定性的,模型的内部工作也可以具有随机元素。以这种方式,例如,呼叫中心模型的输入参数可能包括人员和呼叫者的数量,而在模型内部,呼叫长度随运行而随机变化。
Andrei Borschsev和Ilya Grigoryev的Big Book of Simulation Modeling详细涵盖了 AnyLogic 模型的随机性主题[PDF,第15章(2020年更新)]。
当一个系统被捕获到一个仿真模型中时,系统的每个部分以及它的工作方式都会被建模,这样当仿真运行时,系统的行为会随着时间的推移变得明显。用这种方式表示一个系统意味着没有必要用公式(如Excel)来描述一个系统的所有过程,这使我们有分析非常复杂的系统和场景的可能。
云中的蒙特卡罗
乌拉姆能够发展蒙特卡罗技术的部分原因是由于他与冯·诺依曼的合作以及获得了最新的先进计算能力。
蒙特卡罗模拟需要多次迭代才能产生有用的结果,并因此受益于快速的计算机处理。当模型非常复杂并且动态变化时,处理需求可能变得非常重要,并且运行时间非常长。这减少了假设实验的可能性,并可能限制了模型在决策中的实用性。
AnyLogic仿真自动利用多核处理器,并将并行运行蒙特卡洛迭代,以减少实验时间。为了获得更强的处理能力,AnyLogic仿真还可以访问云计算提供的资源。复杂的仿真模型和多次迭代实验可以从服务器群的多高性能处理核心中获益,以扩展并行迭代和重复的数量。
AnyLogic 公有云的可访问版本的几个示例,演示了蒙特卡洛模拟和云计算的功能。

要查看此模型的蒙特卡罗仿真示例,请转到该模型的仪表板。
AnyLogic云还具有蒙特卡罗二阶实验。该实验允许多次重复和迭代,使得实验的输入参数和内部参数都是按照概率分布随机设置的。例如,消费信贷应用程序模型可以改变在线和离线申请的比率(输入参数)以及申请处理时间(内部参数)。蒙特卡洛一阶实验只会随机化模型的内部参数。
如果消费者信贷业务只有很少的有关在线和离线应用程序分布的数据,则蒙特卡罗二阶实验可以帮助您根据一系列不同的应用程序比例方案分析人员配备水平。 这将有助于公司进行规划,并更灵活地应对应用程序趋势的变化。
下面展示的消费者信贷应用云仿真具有蒙特卡罗二阶实验的特点。

消费者信贷应用模型。蒙特卡罗二阶实验可以在模型的仪表板上获得。
上面的示例托管在AnyLogic公有云中,为简单起见,可以通过web浏览器访问。然而,AnyLogic云平台具有高度的适应性和可配置性。公司可以创建和集成他们自己的云模拟解决方案,这些解决方案可以是私有的,也可以是内部的,使用自定义接口,并且可以通过RESTful API访问(参见我们的 JavaScript和Python博客)。了解更多信息,AnyLogic help和AnyLogic Cloud help演示了如何运行蒙特卡罗模拟。
蒙特卡罗仿真在商业中的应用
蒙特卡罗仿真对商业领域所面对的各种挑战都很有用,例如相对简单地计算可能的产品需求或计算复杂的业务风险。由于现代计算技术的发展,使蒙特卡罗模拟的应用成为可能。随着公司获得更强大的多核处理器和云计算的更多访问权,仿真和蒙特卡罗优化可以应对挑战的能力将继续增强。
AnyLogic可以对高度复杂的系统进行蒙特卡罗仿真。通过多方法建模,仿真系统可以是复杂的、动态的、非线性的。这些仿真模型的结果可以来自并行处理和云计算,并可以通过多种方式提供,包括通过API和自定义UI。