蒙特卡罗算法综述

蒙特卡罗算法综述
摘要:本文介绍了蒙特卡罗算法的起源,原理,描述及应用,列举了一个蒙特卡罗全局光照算法得实例及研究过程。
关键词:蒙特卡罗;全局光照;统计;自适应
Monte Carlo Algorithms
Liu Bingkun
Abstract: This article describes a Monte Carlo algorithm for the origin of principle, description and application cited the instance of a MonteCarlo global illumination algorithms and the research process.
Keywords: Monte Carlo; global illumination; statistics; adaptive
1引言
蒙特·卡罗算法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。蒙特·卡罗方法的名字来源于摩纳哥的一个城市蒙地卡罗,该城市以赌博业闻名,而蒙特·卡罗方法正是以概率为基础的方法。起源于早期的用几率近似概率的数学思想 ,它利用随机数进行统计试验 ,以求得的统计特征值 (如均值、概率等) 作为待解问题的数值解. 随着现代计算机技术的飞速发展 ,蒙特卡罗算法也在不断的改进。
全局光照是三维软件中的特有名词,光具有反射和折射的性质。在真实的大自然中,光从太阳照射到地面是经过无数次的反射和折射的,所以我们看到地面的任何地方都是清晰的(白天),在三维软件中,里面的光虽然也具有现实当中光的所有性质,但是光的热能传递却不是很明显。
全局光照,表现了直接照明和间接照明的综合效果。光线碰到拍摄对象,反射正反射光或漫反射光,这就控制了彩、物体间相互作用的反射、折射、焦散等光效,最后演绎了现实的自然光。所以在渲染的时候,为了实现真实的场景效果,就要在渲染器中指定全局光
照,全局光照有多种实现方法,例如辐射度、光线追踪、环境光遮蔽(ambient occlusion)、光子贴图、Light Probe等[1]。当光从光源被发射出来后,碰到障碍物就反射和折射,经过无数次的反射和折射,物体表面和角落都会有光感,像真实的自然光。全局光照占内存是很厉害的。它属于间接照明,缩写为GI,全名为Global Illumination(全局光照)[1]
1986 年,Kajiya 首次将蒙特卡罗方法应用到全局光照领域,提出以建立从视点到光源的随机游动链为基础的蒙特卡罗光径跟踪算法来逐像素地生成图像。须注意的是,蒙特卡罗光径跟踪属于蒙特卡罗全局光照方法,如目前应用广泛的Phtoton Mapping 算法,生成图像的基本框架。蒙特卡罗光径跟踪的核心环节在于抽样穿过像素的光径样本,像素值即为所有光径样本光照值的均值。
被禁止的爱光径的建立过程是:在像素区域内随机地抽样一个以视点出发产生一条射线穿过
射进场景,计算该光线与第一个物体的交点1y ,以1y 为起点、根据1y 所在物体表面的散射特性随机产生一个方向而形成一条射线,再求出另一个交点2y ,上述过程反复进行,在任一交点处,光径均可以一定的概率而终止。整个光径的光照值按照蒙特卡罗积分可以得
到。
2007年中国天津大学徐庆老师提出了一种基于基于信息熵的蒙特卡罗全局光照的自适应抽样算法,在真实感图形生成领域里,[2]蒙特卡罗方法是计算整体光照问题的极佳选择。但是,在用基于蒙特卡罗的全局光照算法生成的图像中,当没有足够多的采样量的时候,存在大量的噪声。自适应抽样方法是减少这种噪声的一种很好的方法。该文提出了一种新的基于信息熵的自适应抽样算法。实验结果表明,该方法的效果优于香农信息熵等经典方法。
2来源
1946年,美国拉斯阿莫斯国家实验室的三位科学家John von Neumann,Stan Ulam 和 Nick Metropolis共同发明,被称为蒙特卡洛方法。它的具体定义是:在广场上画一个边长一米的正方形,在正方形内部随意用粉笔画一个不规则的形状,现在要计算这个不规则图形的面积,怎么计算呢?蒙特卡洛(Monte Carlo)方法告诉我们,均匀的向该正方形内撒N(N 是一个很大的自然数)个黄豆,随后数数有多少个黄豆在这个不规则几何形状内部,比如说有M个,那么,这个奇怪形状的面积与正方形的面积之比便近似于M/N,N越大,算出来的
值便越精确。在这里我们要假定豆子都在一个平面上,相互之间没有重叠。蒙特卡洛方法可用于近似计算圆周率:让计算机每次随机生成两个0到1之间的数,看这两个实数是否在单位圆内。生成一系列随机点,统计单位圆内的点数与总点数,(圆面积和正方形面积之比为PI:1,PI为圆周率),当随机点取得越多(但即使取10的9次方个随机点时,其结果也仅在前4位与圆周率吻合)时,其结果越接近于圆周率。就数学特性而言 ,蒙特卡罗方法的发展可以追溯到 18 世纪著名的蒲丰问题. 1777年 ,法国科学家蒲丰(Buffon)提出用投针试验计算圆周率π值的问题. 这里我们用蒲丰问题来初步说明蒙特卡罗方法的基本原理和解决问题的基本手续.蒲丰问题是这样一个古典概率问题:在平面上有彼此相距为 2 a 的平行线 ,向此平面任意投一长度为 2 l 的针 ,假定 l < a ,显然 ,所投的针至多可与一条直线相交 ,那么 ,此针与任意条平行线相交的概率可以求出 ,由下面的分析可知 ,此概率与所取针长 2 l、平行线间距 2 a 有关 ,并且包含有π值. 在这里 ,任投一针的概率含义有以下三点 :(1) 针的中点 Ml在平行线之间等概率落入 ,即 Ml距平行线的距离 x 均匀分布在区间[0 , a ]之内; (2) 针与线的夹角θ均匀分布在区间-π2,π2之内;(3) x 与θ互相独立.在某一条平行线上的 x 轴 ,不失一般性 ,假定针的中心处于图示中的 x 轴上. 由于对称性 ,我们只需分析针中心处在 x ∈(0 , a) 范围的情况即可. 令探针中心的坐标值为 x ,显然 ,只有 x ≤l 时才可能发生相交的事件. 我们
来分析在条件 x ≤l 满足时 ,针与线相交的概率 :只有当θ≤θ0 = arccosxl时才能相交 ,且相交的概率为P1 =2πarccosxl(1)下面再来分析针中心位置在轴上的分布 ,显然 ,这是一个均匀分布 ,即针中心处于区间( x , x + d x)内的概率为d P2 =d xa
(2)这样 ,一次投掷 ,针中心落入( x , x + d x) 且与线相交的概率为d P = P1d P2 =2π陈学祥aarccosxld x(3)则一次投掷 ,针与线相交的总概率为P =∫d P =∫l0πaarccosxld x =2 lπa(4)即 :π =2 lPa从(5) 式可见 ,可利用投针试验计算π值 :设投针 N 次 ,其中 n 次针与线相交 ,则可用频率值 n/ N 作为概率 P 的估计值 ,从而求得π的估计值为π≈2 laNn(6)这就是早期的用频率值作为概率近似值的方法的应用实例 ,表 1 是在历史上一些有名的用投针试验计算π值的结果[2],其中针长以 a为单位。需要指出的是 ,上述由投针试验求得π
的近似值的方法 ,是进行真正的试验 ,并统计试验结果 ,要使获得的频率值与概率值偏差小 ,就要进行大量的试验[3],这在实际中 ,往往难以做到. 可以设想 ,对蒲丰问题这样一个简单的概率问题 ,若要进行 10 万次投针试验 ,以每次投针、作出是否相交判断并累加相交次数用时 5 秒钟计算 ,则需用时 50 万秒 ,即大约 139 个小时. 那么 ,可以设想 ,对于象上述确定条件下的核裂变、直流气体放电中粒子的输运过程及粒子输运的总效应 ,若要用多次掷骰子的
方法近似求出就是不可能的了.所以 ,在现代计算机技术出现之前 ,用频率近似概率的方法 ———抑或称为雏形时代的蒙卡罗方法 ———并没有得到实质上的应用.
若用数值模拟方法代替上述的真正的投针试验 ,是利用均匀分布于(0 ,1)之间的随机数序列 ,并构造出随机投针的数学模型 ,然后进行大量的随机统计并求得π的近似值.
3原理
美国中情局女局长蒙特卡罗方法的基本原理及思想如下:当所要求解的问题是某种事件出现的概率,或者是某个随机变量的期望值时,它们可以通过某种“试验”的方法,得到这种事件出现的频率,或者这个随机变数的平均值,并用它们作为问题的解。这就是蒙特卡罗方法的基本思想。蒙特卡罗方法通过抓住事物运动的几何数量和几何特征,利用数学方法来加以模拟,即进行一种数字模拟实验。它是以一个概率模型为基础,按照这个模型所描绘的过程,通过模拟实验的结果,作为问题的近似解。可以把蒙特卡罗解题归结为三个主要步骤:构造或描述概率过程;实现从已知概率分布抽样;建立各种估计量。蒙特卡罗解题三个主要步骤:构造或描述概率过程:对于本身就具有随机性质的问题,如粒子输运问题,主要是正确描述和模拟这个概率过程,对于本来不是随机性质的确定性问题,比如计算定积分,就必须
事先构造一个人为的概率过程,它的某些参量正好是所要求问题的解。即要将不具有随机性质的问题转化为随机性质的问题。实现从已知概率分布抽样:构造了概率模型以后,由于各种概率模型都可以看作是由各种各样的概率分布构成的,因此产生已知概率分布的随机变量(或随机向量),就成为实现蒙特卡罗方法模拟实验的基本手段,这也是蒙特卡罗方法被称为随机抽样的原因[4]。最简单、最基本、最重要的一个概率分布是(0,1)上的均匀分布(或称矩形分布)。随机数就是具有这种均匀分布的随机变量。随机数序列就是具有这种分布的总体的一个简单子样,也就是一个具有这种分布的相互独立的随机变数序列。产生随机数的问题,就是从这个分布的抽样问题。在计算机上,可以用物理方法产生随机数,但价格昂贵,不能重复,使用不便。另一种方法是用数学递推公式产生。这样产生的序列,与真正的随机数序列不同,所以称为伪随机数,或伪随机数序列。不过,经过多种统计检验表明,它与真正的随机数,或随机数序列具有相近的性质,因此可把它作为真正的随机数来使用。由已知分布随机抽样有各种方法,与从(0,1)上均匀分布抽样不同,这些方法都是借助于随机序列来实现的,也就是说,都是以产生随机数为前提的。由此可见,随机数是我们实现蒙特卡罗模拟的基本工具。建立各种估计量:一般说来,构造了概率模型并能从中抽样后,即实现模拟实验后,我们就要确定一个随机变量,作为所要求的问题
的解,我们称它为无偏估计。建立各种估计量,相当于对模拟实验的结果进行考察和登记,从中得到问题的解。例如:检验产品的正品率问题,我们可以用1表示正品,0表示次品,于是对每个产品检验可以定义如下的随机变数Ti,作为正品率的估计量:于是,在N次实验后,正品个数为:显然,正品率p为:不难看出,Ti为无偏估计。当然,还可以引入其它类型的估计,如最大似然估计,渐进有偏估计等。但是,在蒙特卡罗计算中,使用最多的是无偏估计。用比较抽象的概率语言描述蒙特卡罗方法解题的手续如下:构造一个概率空间(W ,A,P),其中,W 是一个事件集合,A是集合W 的子集的s 体,P是在A上建立的某个概率测度;在这个概率空间中,选取一个随机变量q (w ),w Î W ,使得这个随机变量的期望值正好是所要求的解Q ,然后用q (w )的简单子样的算术平均值作为Q 的近似值。
蒙特卡罗方法与一般计算方法有很大区别,一般计算方法对于解决多维或因素复杂的问题非常困难,而蒙特卡罗方法对于解决这方面的问题却比较简单。其特点如下:· 直接追踪粒子,物理思路清晰,易于理解。· 采用随机抽样的方法,较真切的模拟粒子输运的过程,反映了统计涨落的规律。· 不受系统多维、多因素等复杂性的限制,是解决复杂系统粒子输运问题的好方法。· MC程序结构清晰简单。· 研究人员采用MC方法编写程序来解决粒子输运问题,比较容易得到自己想得到的任意中间结果,应用灵活性强。· MC方法主要
弱点是收敛速度较慢和误差的概率性质,其概率误差正比于,如果单纯以增大抽样粒子个数N来减小误差,就要增加很大的计算量。近十年来,蒙特卡罗方法发展很快,从1983年到1988年期刊论文数量增长了五倍[5],有几本好书是关于电子¾ 光子蒙特卡罗问题的[注1],蒙特卡罗方法的代码被认为是黑匣子,它已成为计算数学中不可缺少的组成部分,这主要是因为以下原因余粮收集制[6]
· 传统的分析方法受到了问题复杂性的限制。
· MC方法直观,对实验者很有吸引力。
· 计算机变得更快更便宜。
· 量子理论的发展为我们提供了辐射与物质相互作用的截面数据。
4算法描述
它是一种以概率和统计理论方法为基础的一种计算方法。将所求解的问题同一定的概率模型相联系,用计算机实现统计模拟或抽样,以获得问题的近似解。比如,给定x=a,和x=b
[7],你要求某一曲线f和这两竖线,及x轴围成的面积,你可以起定y轴一横线 y=c 其中c>=f(x)max,很简单的,你可以求出 y=c,x=a,x=b及 x轴围成的矩形面积,然后利用随机产生大量在这个矩形范围之内的点,统计出现在曲线上部点数和出现在曲线下部点的数目,记为:dotUpCount,dotDownCount,然后所要求的面积可以近似为 dotDownCount所占比例*矩形面积。
5问题描述
在数值积分法中,利用求单位圆的1/4的面积来求得Pi/4从而得到Pi。单位圆的1/4面积是一个扇形[8],它是边长为1单位正方形的一部分。只要能求出扇形面积S1在正方形面积S中占的比例K=S1/S就立即能得到S1,从而得到Pi的值。怎样求出扇形面积在正方形面积中占的比例K呢?一个办法是在正方形中随机投入很多点,使所投的点落在正方形中每一个位置的机会相等看其中有多少个点落在扇形内乡村神话[9]。将落在扇形内的点数m与所投点的总数n的比m/n作为k的近似值。P落在扇形内的充要条件是x^2+y^2<=1。

本文发布于:2024-09-22 03:32:40,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/592255.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:方法   问题   概率
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议