Monte carlo

转载 http://blog.sciencenet.cn/blog-324394-292355.html

蒙特卡罗(Monte Carlo)方法,也称为计算机随机模拟方法,是一种基于"随机数"的计算方法。

1、起源

这一方法源于美国在第二次世界大战进研制原子弹的"曼哈顿计划"。Monte Carlo方法创始人主要是这四位:Stanislaw Marcin Ulam, Enrico Fermi, John von Neumann(学计算机的肯定都认识这个牛人吧)和 Nicholas Metropolis。

蒙特卡罗方法的名字来源于摩纳哥的一个城市蒙地卡罗,该城市以赌博业闻名,而蒙特·罗方法正是以概率为基础的方法。与它对应的是确定性算法。

2、解决问题的基本思路

Monte Carlo方法的基本思想很早以前就被人们所发现和利用。早在17世纪,人们就知道用事件发生的"频率"来决定事件的"概率"。19世纪人们用投针试验的方法来决定圆周率π。本世纪40年代电子计算机的出现,特别是近年来高速电子计算机的出现,使得用数学方法在计算机上大量、快速地模拟这样的试验成为可能。

为了说明Monte Carlo方法的基本思想,让我们先来看一个简单的例子,从此例中你可以感受如何用Monte Carlo方法考虑问题。

例1:比如y=x^2(对x)从0积到1。结果就是下图红色部分的面积:

注意到函数在(1,1)点的取值为1,所以整个红色区域在一个面积为1的正方形里面。所以所求区域的面积即为 在正方形区域内任取点,点落在所求区域的概率。这个限制条件是y<x^2。用matlab模拟,做一百万次(即共取1000000个点),结果为0.3328。

1)总结Monte Carlo方法的基本思想:所求解问题是某随机事件A出现的概率(或者是某随机变量B的期望值)。通过某种“实验”的方法,得出A事件出现的频率,以此估计出A事件出现的概率(或者得到随机变量B的某些数字特征,得出B的期望值)。

2)工作过程

  
  在解决实际问题的时候应用蒙特卡罗方法主要有两部分工作:
  用蒙特卡罗方法模拟某一过程时,需要产生各种概率分布的随机变量。 
  用统计方法把模型的数字特征估计出来,从而得到实际问题的数值解。

3)蒙特卡罗解题三个主要步骤:

(1)构造或描述概率过程: 对于本身就具有随机性质的问题,如粒子输运问题,主要是正确描述和模拟这个概率过程,对于本来不是随机性质的确定性问题,比如计算定积分,就必须事先构造一个人为的概率过程,它的某些参量正好是所要求问题的解。即要将不具有随机性质的问题转化为随机性质的问题。

(2)实现从已知概率分布抽样: 构造了概率模型以后,由于各种概率模型都可以看作是由各种各样的概率分布构成的,因此产生已知概率分布的随机变量(或随机向量),就成为实现蒙特卡罗方法模拟实验的基本手段,这也是蒙特卡罗方法被称为随机抽样的原因。最简单、最基本、最重要的一个概率分布是(0,1)上的均匀分布(或称矩形分布)。随机数就是具有这种均匀分布的随机变量。随机数序列就是具有这种分布的总体的一个简单子样,也就是一个具有这种分布的相互独立的随机变数序列。产生随机数的问题,就是从这个分布的抽样问题。在计算机上,可以用物理方法产生随机数,但价格昂贵,不能重复,使用不便。另一种方法是用数学递推公式产生。这样产生的序列,与真正的随机数序列不同,所以称为伪随机数,或伪随机数序列。不过,经过多种统计检验表明,它与真正的随机数,或随机数序列具有相近的性质,因此可把它作为真正的随机数来使用。由已知分布随机抽样有各种方法,与从(0,1)上均匀分布抽样不同,这些方法都是借助于随机序列来实现的,也就是说,都是以产生随机数为前提的。由此可见,随机数是我们实现蒙特卡罗模拟的基本工具。 建立各种估计量: 一般说来,构造了概率模型并能从中抽样后,即实现模拟实验后,我们就要确定一个随机变量,作为所要求的问题的解,我们称它为无偏估计。

(3)建立各种估计量,相当于对模拟实验的结果进行考察和登记,从中得到问题的解。 例如:检验产品的正品率问题,我们可以用1表示正品,0表示次品,于是对每个产品检验可以定义如下的随机变数Ti,作为正品率的估计量: 于是,在N次实验后,正品个数为: 显然,正品率p为: 不难看出,Ti为无偏估计。当然,还可以引入其它类型的估计,如最大似然估计,渐进有偏估计等。但是,在蒙特卡罗计算中,使用最多的是无偏估计。 用比较抽象的概率语言描述蒙特卡罗方法解题的手续如下:构造一个概率空间(W ,A,P),其中,W 是一个事件集合,A是集合W 的子集的s 体,P是在A上建立的某个概率测度;在这个概率空间中,选取一个随机变量q (w ),w &Icirc; W ,使得这个随机变量的期望值 正好是所要求的解Q ,然后用q (w )的简单子样的算术平均值作为Q 的近似值。

三 本方法特点

  
  直接追踪粒子,物理思路清晰,易于理解。 
  · 采用随机抽样的方法,较真切的模拟粒子输运的过程,反映了统计涨落的规律。
  · 不受系统多维、多因素等复杂性的限制,是解决复杂系统粒子输运问题的好方法。 
  · MC程序结构清晰简单。
  · 研究人员采用MC方法编写程序来解决粒子输运问题,比较容易得到自己想得到的任意中间结果,应用灵活性强。
  · MC方法主要弱点是收敛速度较慢和误差的概率性质,其概率误差正比于,如果单纯以增大抽样粒子个数N来减小误差,就要增加很大的计算量。

另一类形式与Monte Carlo方法相似,但理论基础不同的方法-"拟蒙特卡罗方法"(Quasi-Monte Carlo方法)-近年来也获得迅速发展。我国数学家华罗庚、王元提出的"华-王"方法即是其中的一例。这种方法的基本思想是"用确定性的超均匀分布序列(数学上称为Low Discrepancy Sequences)代替Monte Carlo方法中的随机数序列。对某些问题该方法的实际速度一般可比Monte Carlo方法提出高数百倍,并可计算精确度。

蒙特卡罗方法在金融工程学,宏观经济学,计算物理学(如粒子输运计算、量子热力学计算、空气动力学计算)等领域应用广泛。

四 Monte Carlo方法的计算程序

  
  关于蒙特卡罗方法的计算程序已经有很多,如:EGS4、FLUKA、ETRAN、ITS、MCNP、GEANT等。这些程序大多经过了多年的发展,花费了几百人年的工作量。除欧洲核子研究中心(CERN)发行的GEANT主要用于高能物理探测器响应和粒子径迹的模拟外,其它程序都深入到低能领域,并被广泛应用。就电子和光子输运的模拟而言,这些程序可被分为两个系列:
  1.EGS4、FLUKA、GRANT 
  2.ETRAN、ITS、MCNP 这两个系列的区别在于:对于电子输运过程的模拟根据不同的理论采用了不同的算法。 
  EGS4和ETRAN分别为两个系列的基础,其它程序都采用了它们的核心算法。 
  ETRAN(for Electron Transport)由美国国家标准局辐射研究中心开发,主要模拟光子和电子,能量范围可从1KeV到1GeV。 
  ITS(The integrated TIGER Series of Coupled Electron/Photon Monte Carlo Transport Codes )是由美国圣地亚哥(Sandia)国家实验室在ETRAN的基础上开发的一系列模拟计算程序,包括TIGER 、CYLTRAN 、ACCEPT等,它们的主要差别在于几何模型的不同。
  TIGER研究的是一维多层的问题,CYLTRAN研究的是粒子在圆柱形介质中的输运问题,ACCEPT是解决粒子在三维空间输运的通用程序。 
  NCNP(Monte Carlo Neutron and Photo Transport Code)由美国橡树林国家实验室(Oak Ridge National Laboratory)开发的一套模拟中子、光子和电子在物质中输运过程的通用MC 计算程序,在它早期的版本中并不包含对电子输运过程的模拟,只模拟中子和光子,较新的版本(如MCNP4A)则引进了ETRAN,加入了对电子的模拟。 
  FLUKA 是一个可以模拟包括中子、电子、光子和质子等30余种粒子的大型MC计算程序,它把EGS4容纳进来以完成对光子和电子输运过程的模拟,并且对低能电子的输运算法进行了改进。

五 Monte Carlo方法相关的一些资料

一个网站:http://csep1.phy.ornl.gov/mc/mc.html
    《蒙特卡罗方法》 徐钟济著 上海科学技术出版社
    《科学计算中的蒙特卡罗策略》(当代科学前沿论丛)(Monte Carlo Strategies in Scientific Computing) 作者:刘军  译者:唐年胜 周勇 徐亮  
     统计物理学中的蒙特卡罗模拟方法  ( 德) 宾德(Binder,K.),赫尔曼(Heermann,D.W.) 著  北京大学出版社  1994.2 
     小尺寸半导体器件的蒙特卡罗模拟  叶良修编著  科学出版社  1997.2 
     蒙特卡罗方法及其在粒子输运问题中的应用  裴鹿成, 张孝泽著  科学出版社  1980.10   
     统计试验法:( 蒙特卡罗法) 及其在电子数字计算机上的实现  (苏) 布斯连科( Н. П. Бусленко), (苏) 施  上海科学技术出版社  
     若干本书:人大经济论坛http://www.pinggu.org/bbs/thread-445802-1-1.html
     高分子科学中的Monte Carlo方法  杨玉良  复旦大学出版社  1993.12  7-309-01361-1 
     Monte Carlo simulation of semiconductor devices  C. Moglestue.  Chapman & Hall,  1993.  041247770X 
     Monte Carlo methods in statistical physics  with contributions by K. Binder ... [et al.] ; edi  Springer-Verlag,  1979.  
     guide to Monte Carlo simulations in statistical physics  David P. Landau, Kurt Binder.  Cambridge University Press,  c2000.  
     Monte Carlo methods in statistical physics  edited by K. Binder ; with contributions by K. Bin  Springer-Verlag,  c1986. 
     Applications of the Monte Carlo method in statistical physics  edited by K. Binder.  Springer,  1984.  
     Monte Carlo Device Simulation  Karl Hess  Kluwer Acadmic

参考资料:1、http://baike.baidu.com/view/1675475.htm?fr=ala0_1
                     2、http://baike.baidu.com/view/42460.htm?fr=ala0_1_1
                     3、http://gorilla.blogbus.com/logs/4669.html
                     4、http://blog.sina.com.cn/s/blog_5e8154170100cgc4.html
                     5、http://www.charlesgao.com/?p=121

时间: 2024-10-24 00:41:49

Monte carlo的相关文章

Introduction to Monte Carlo Tree Search (蒙特卡罗搜索树简介)

 部分翻译自“Monte Carlo Tree Search and Its Applications”. MCTS 结合了传统 MC 随机采样的方法 和 树搜索的方法.MC 方法利用重复的随机采样来得到结果.在 MCTS 中,随机采样的过程是在随机模拟的形式中,用来拓展游戏树.该游戏树紧接着别用来决定下一个 move.MCTS 随着游戏树迭代的生长.每一次迭代,game tree 就 traversed 和 expanded.一段时间之后,game tree 就会收敛.这意味着在每次迭代中都

History of Monte Carlo Methods - Part 1

History of Monte Carlo Methods - Part 1 Some time ago in June 2013 I gave a lab tutorial on Monte Carlo methods at Microsoft Research. These tutorials are seminar-talk length (45 minutes) but are supposed to be light, accessible to a general computer

MCMC(Markov Chain Monte Carlo) and Gibbs Sampling

MCMC(Markov Chain Monte Carlo) and Gibbs Sampling 1.   随机模拟 随机模拟(或者统计模拟)方法有一个很酷的别名是蒙特卡罗方法(Monte Carlo Simulation).这个方法的发展始于20世纪40年代,和原子弹制造的曼哈顿计划密切相关,当时的几个大牛,包括乌拉姆.冯.诺依曼.费米.费曼.Nicholas Metropolis, 在美国洛斯阿拉莫斯国家实验室研究裂变物质的中子连锁反应的时候,开始使用统计模拟的方法,并在最早的计算机上进行

(转)Monte Carlo method 蒙特卡洛方法

转载自:维基百科  蒙特卡洛方法 https://zh.wikipedia.org/wiki/%E8%92%99%E5%9C%B0%E5%8D%A1%E7%BE%85%E6%96%B9%E6%B3%95 蒙特卡洛方法[编辑] 维基百科,自由的百科全书 蒙特卡洛方法(英语:Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法.是指使用随机数(或更常见的伪随机数)来解决很多

用python实现Monte Carlo Tic-Tac-Toe(井字游戏)

1 """ 2 Monte Carlo Tic-Tac-Toe Player @author dark_guard 3 """ 4 5 import random 6 import poc_ttt_gui 7 import poc_ttt_provided as provided 8 9 # Constants for Monte Carlo simulator 10 # Change as desired 11 NTRIALS = 20 # N

[matlab]Monte Carlo模拟学习笔记

理论基础:大数定理,当频数足够多时,概率可以逼近频率,从而依靠频率与$\pi$的关系,求出$\pi$ 所以,rand在Monte Carlo中是必不可少的,必须保证测试数据的随机性. 用蒙特卡洛方法进行计算机模拟的步骤:[1] 设计一个逻辑框图,即模拟模型.[2] 根据流程图编写程序,模拟随机现象.可通过具有各种概率分布的模拟随机数来模拟随机现象.[3] 分析模拟结果,计算所需要结果. ex1.投针试验求$\pi$ %蒲丰投针实验的计算机模拟 format long; %设置15位显示精度 a=

Introduction To Monte Carlo Methods

Introduction To Monte Carlo Methods I’m going to keep this tutorial light on math, because the goal is just to give a general understanding. The idea of Monte Carlo methods is this—generate some random samples for some random variable of interest, th

Monte Carlo Approximations

准备总结几篇关于 Markov Chain Monte Carlo 的笔记. 本系列笔记主要译自A Gentle Introduction to Markov Chain Monte Carlo (MCMC) 文章下给出的链接. Monte Carlo Approximations Monte Carlo Approximation for Integration 理论部分 蒙特卡洛方法是用来近似计算积分的,通过数值方法也可以计算积分:最简单的近似方法是通过求小矩边梯形的面积再累加.但是当函数的

A Monte Carlo Simulation to Draw 3 same Color Balls Without Replaced From A Bucket With 3 Red Balls and 3 Green Balls

You have a bucket with 3 red balls and 3 green balls. Assume that once you draw a ball out of the bucket, you don't replace it. What is the probability of drawing 3 balls of the same color? Write a Monte Carlo simulation to solve the above problem. F