所有模拟方法都是某种形式的蒙特卡洛吗?


35

有没有不是蒙特卡洛的模拟方法?所有模拟方法都涉及将随机数代入函数中以找到函数的值范围。那么所有的模拟方法本质上都是蒙特卡洛方法吗?


2
我认为“斯坦”只是乌兰的名字,而不是其他任何人的姓。
Nick Cox 2014年

Stan 确实是Stanislas的缩写。这就是为什么安德鲁·盖尔曼(Andrew Gelman)选择STAN作为他的新模拟语言的原因。
西安

给定一个很小的,可能是微不足道的琐碎的组合问题,穷举搜索仍然是“蒙特卡洛”吗?
尼克T

3
我从随机算法讲座中记得的是,与运行时间随机但结果正确的拉斯维加斯方法相反,蒙特卡洛方法具有运行时间已知的随机结果。除了我的抽屉里有一个五年的手写脚本,没有其他参考。编辑:蒙特卡洛拉斯维加斯的维基百科页面似乎对此表示赞同。
bayerj 2014年

详尽的搜索可能是蛮力计算。蒙特卡洛方法从样本空间提取。该样本通常只是结果范围的一小部分,这使得统计分析变得容易处理。
Alex Reynolds 2014年

Answers:


41

有些模拟不是蒙特卡洛。基本上,所有的蒙特卡洛方法都使用大量的(弱)定律:均值收敛于其期望值。

然后是拟蒙特卡罗方法。通过随机数和等距网格的折衷对它们进行仿真,以产生更快的收敛。

非蒙特卡洛的模拟例如用于计算流体动力学。在流体的单个部分的“微尺度”上建模流体动力学很容易。这些部分具有初始速度,压力和大小,并受来自相邻部分的力或固体的影响。模拟通过计算所有部分及其相互作用来计算流体的整体行为。有效地做到这一点使这成为一门科学。那里不需要随机数。

在气象学或气候研究中,事情也是如此。但是现在,初始值尚不完全清楚:您只能在已测量过的某些点获得气象数据。必须猜测很多数据。

由于这些复杂的问题通常在输入数据中并不连续,因此您可以使用不同的猜测来运行模拟。最终结果将从最常见的结果中选择。实际上,这实际上是一些模拟天气预报的方式。


5
稍作修正:蒙特卡洛模拟可以使用非随机计算。如果模拟的初始条件发生变化,则称其为“蒙特卡洛”是有效的,然后从那里应用非随机计算。由于边界条件是通过统计定义的,因此许多CFD情况都需要蒙特卡洛。
Cort Ammon 2014年

14

蒙特卡洛方法是将计算机模拟用于统计问题的第一种方法。它是由Los Alamos实验室的John von Neumann,StanisławUlam和Nicholas Metropolis团队开发的,该团队在第二次世界大战期间致力于曼哈顿项目。它于1949年由Metropolis&Ulam首次描述,这是该名称第一次出现在印刷版中。这是可能的,因为发现它的科学家还能够使用他们正在研究的第一批计算机之一。在他们的工作中,他们使用了蒙特卡洛方法来模拟物理问题,并且想法是您可以通过采样此过程的一些示例来模拟一个复杂的问题。关于蒙特卡洛的历史有很多有趣的文章,例如大都会本人或最近的一些人,例如Robert&Casella

因此,“ Monte Carlo”是为计算机模拟解决统计问题而描述的第一种方法的名称。然后,该名称成为整个模拟方法系列的通用名称,并且通常以这种方式使用。

某些模拟方法被认为是非Monte Carlo的,但是,虽然Monte Carlo是计算机模拟的首次使用,但是“计算机模拟”和“ Monte Carlo”通常可以互换使用。

关于“模拟”有不同的定义,即

Merriam-Webster字典:

3a:一个系统或过程的功能通过另一个功能的模仿表示b:对问题的检查通常无需借助模拟设备直接进行实验

剑桥词典:

做或做一些行为或看起来像真实的东西,但不是真实的东西

维基百科

模仿现实世界中的流程或系统的运行

仿真需要工作的是一种模仿某些系统或过程的能力。这不需要涉及任何随机性(与蒙特卡洛一样),但是,如果尝试了所有可能性,则该过程将是详尽的搜索,或者通常是优化问题。如果涉及到随机元素,并且使用计算机对某个模型进行仿真,则该仿真类似于最初的蒙特卡洛方法的精神(例如Metropolis&Ulam,1949)。随机元素是仿真的关键部分,例如,Ross(2006,Simulation。Elsevier)。但是,问题的答案在很大程度上取决于您假设的模拟定义。例如,如果你假设确定的算法,利用优化或穷举搜索,其实都是模拟,那么我们就需要考虑各种各样的算法是模拟,这使得模拟的定义本身非常模糊。

从字面上看,每个统计程序都采用某种模型或对现实的近似,即对其进行“尝试”和评估。这与仿真的字典定义一致。但是,我们并不认为所有统计信息都是基于模拟的。问题和讨论似乎是由于缺乏对“模拟”的精确定义而引起的。蒙特卡洛似乎是模拟的原型(也是第一个)示例,但是,如果考虑模拟的非常笼统的定义,那么许多非蒙特卡洛方法都属于该定义。因此,存在非蒙特卡洛模拟,但是所有基于模拟的清晰方法都类似于蒙特卡洛的精神,以某种方式与之相关或受其启发。这就是为什么“ Monte Carlo”经常被用作“模拟”的同义词的原因。


3
我认为“斯坦”只是乌兰的名字,而不是其他任何人的姓。
Nick Cox 2014年

1
Stan 确实是Stanislas的缩写。这就是为什么安德鲁·盖尔曼(Andrew Gelman)选择STAN作为他的新模拟语言的原因。
西安

给定一个很小的,可能是微不足道的琐碎的组合问题,穷举搜索仍然是“蒙特卡洛”吗?
尼克T

6
我不明白:这如何回答这个问题?
o0'。

1
@西安,这是Stanisław用“Ł”(英语中读为“ woo”)写的。
蒂姆

13

所有模拟方法都涉及将随机数代入函数中以找到函数的值范围。

我从未听说过模拟的定义。例如,维基百科关于模拟计算机模拟的文章仅简要提及诸如随机随机之类的术语。

一个简单的模拟示例,其中不涉及任何随机性,因此显然不是蒙特卡洛模拟:

我想模拟一个简单的摆的行为,并做一些简化的假设(无质量的绳索,准点质量,无摩擦,没有科里奥利力之类的外力)。然后,我获得了一个数学摆,并且可以写下描述其运动的微分方程。然后,我可以使用一些求解器来求解微分方程,例如Runge–Kutta方法,以模拟给定初始条件下的轨迹。(从理论上讲,我也可以说我不需要考虑进一步的初始条件。)

这样,我就无需使用随机数就可以很好地模拟真实的摆。因此,这不是蒙特卡洛模拟。

在另一个示例中,考虑logistic映射,它是一个简单的总体模型,没有任何随机性。


7

不可以。可以使用Runge-Kutta或其他确定性算法(不是Monte Carlo)来完成在力作用下的粒子模拟。

蒙特卡洛用于计算积分(您可以称其为模拟,但最终它仅计算估计器的数值近似值)。同样,您可以使用确定性方法(例如梯形规则)来执行此操作。

广义上讲,您可以将算法分开,以确定性和非确定性方式计算积分。蒙特卡洛是一种不确定的方法。准蒙特卡洛是另一个。梯形法则是确定性算法。


4

让我a一句简单的解释。“假设分析”模型是(确定性)模拟。假设您有一个复杂的系统,例如小部件加工厂。您希望能够估计一些性能参数,例如成本。您建立工厂的数学模型,然后为模型中的特定因素选择各种假设,例如小部件在不同操作中的移动速度,各个方向上的流动百分比或将处理的小部件数量。该模型是对工厂的模拟,每组假设都为您提供了该性能参数的估计值。

现在介绍不确定性。您不知道下个月对小部件的需求是什么,但是您需要估算成本。因此,您不必估计需求将是1,000个小部件,而是估计需求的概率分布。然后,您从该分布中随机抽取需求值,并将其用作假设。在进行此操作时,也可以将概率分布用于其他假设。您反复使用模型,插入从各种概率分布中采样的假设。结果将是成本估算的分布。那是蒙特卡洛的方面。

蒙特卡洛是位于仿真模型之上的“功能”或“引擎”。它不是使用单个假设的单个假设集进行仿真,而是使用随机选择的假设来执行一系列模拟。


2

特别是在博弈论中,在模拟中使用随机性的方法称为蒙特卡洛技术。它通常在现代程序中用作“ 蒙特卡洛树搜索”(MCTS)的一部分。

(原始问题并未在“ 蒙特卡洛算法 ”和“ 蒙特卡洛方法 ” 之间进行区分,这可能解释了此处对某些答案的分歧。)

例如,在围棋游戏(我知道的所有其他游戏都使用MCTS)中,模拟称为播出。随机播放会使用最严格的规则集。简易播放是随机播放的代名词,或过滤掉一些容易检测到的不良动作。繁重的淘汰赛使用更多的试探法来过滤更多的动作。(顺便说一句,淘汰赛总是到比赛结束,所以每个淘汰赛花费的时间大致相同。)但是,所有这些都称为“蒙特卡洛”模拟。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.