logo资料库

蒙特卡洛模拟.doc

第1页 / 共13页
第2页 / 共13页
第3页 / 共13页
第4页 / 共13页
第5页 / 共13页
第6页 / 共13页
第7页 / 共13页
第8页 / 共13页
资料共13页,剩余部分请下载后查看
蒙特卡洛模拟法简介
Dwass (1957)蒙特卡罗模拟
蒙特卡洛模拟法简介 蒙特卡洛(Monte Carlo)模拟是一种通过设定随机过程,反复生成时间 序列,计算参数估计量和统计量,进而研究其分布特征的方法。具体的,当 系统中各个单元的可靠性特征量已知,但系统的可靠性过于复杂,难以建立 可靠性预计的精确数学模型或模型太复杂而不便应用时,可用随机模拟法近 似计算出系统可靠性的预计值;随着模拟次数的增多,其预计精度也逐渐增 高。由于涉及到时间序列的反复生成,蒙特卡洛模拟法是以高容量和高速度 的计算机为前提条件的,因此只是在近些年才得到广泛推广。 这个术语是二战时期美国物理学家 Metropolis 执行曼哈顿计划的过程 中提出来的。 蒙特卡洛模拟方法的原理是当问题或对象本身具有概率特征时,可以用 计算机模拟的方法产生抽样结果,根据抽样计算统计量或者参数的值;随着 模拟次数的增多,可以通过对各次统计量或参数的估计值求平均的方法得到 稳定结论。 编辑本段蒙特卡洛模拟法的应用领域 蒙特卡洛模拟法的应用领域主要有: 1.直接应用蒙特卡洛模拟:应用大规模的随机数列来模拟复杂系统,得 到某些参数或重要指标。 2.蒙特卡洛积分:利用随机数列计算积分,维数越高,积分效率越高。 3.MCMC:这是直接应用蒙特卡洛模拟方法的推广,该方法中随机数的产 生是采用的马尔科夫链形式。 编辑本段蒙特卡洛模拟法的概念 (也叫随机模拟法)当系统中各个单元的可靠性特征量已知,但系统的 可靠性过于复杂,难以建立可靠性预计的精确数学模型或模型太复杂而不便 应用则可用随机模拟法近似计算出系统可靠性的预计值。随着模拟次数的增 多,其预计精度也逐渐增高。由于需要大量反复的计算,一般均用计算机来 完成。 编辑本段蒙特卡洛模拟法求解步骤 应用此方法求解工程技术问题可以分为两类:确定性问题和随机性问 题。解题步骤如下: 1.根据提出的问题构造一个简单、适用的概率模型或随机模型,使问题 的解对应于该模型中随机变量的某些特征(如概率、均值和方差等),所构 造的模型在主要特征参量方面要与实际问题或系统相一致 2 .根据模型中各个随机变量的分布,在计算机上产生随机数,实现一 次模拟过程所需的足够数量的随机数。通常先产生均匀分布的随机数,然后 生成服从某一分布的随机数,方可进行随机模拟试验。
3. 根据概率模型的特点和随机变量的分布特性,设计和选取合适的抽 样方法,并对每个随机变量进行抽样(包括直接抽样、分层抽样、相关抽样、 重要抽样等)。 4.按照所建立的模型进行仿真试验、计算,求出问题的随机解。 5. 统计分析模拟试验结果,给出问题的概率解以及解的精度估计。 在可靠性分析和设计中,用蒙特卡洛模拟法可以确定复杂随机变量的概 率分布和数字特征,可以通过随机模拟估算系统和零件的可靠度,也可以模 拟随机过程、寻求系统最优参数等。 编辑本段蒙特卡洛模拟法的实例 益 资产组合模拟: 假设有五种资产,其日收益率(%)分别为 0.02460.0189 0.0273 0.0141 0.0311 标准差分别为 0.95091.4259, 1.5227, 1.1062, 1.0877 相关系数矩阵为 1.0000 0.4403 0.4735 0.4334 0.6855 0.4403 1.00000.7597 0.7809 0.4343 0.4735 0.75971.0000 0.6978 0.4926 0.4334 0.78090.6978 1.0000 0.4289 0.6855 0.43430.4926 0.4289 1.0000 假设初始价格都为 100,模拟天数为 504 天,模拟线程为 2,程序如下 %run.m ExpReturn = [0.0246 0.0189 0.0273 0.0141 0.0311]/100; %期望收 Sigmas = [0.9509 1.4259, 1.5227, 1.1062, 1.0877]/100;%标准差 Correlations = [1.0000 0.4403 0.4735 0.4334 0.6855 0.4403 1.00000.7597 0.7809 0.4343 0.4735 0.75971.0000 0.6978 0.4926 0.4334 0.78090.6978 1.0000 0.4289 0.6855 0.43430.4926 0.4289 1.0000 ];%相关系数 ExpCov = corr2cov(Sigmas, Correlations);%协方差 StartPrice = 100;%初始价格 NumObs = 504; NumSim = 2; RetIntervals = 1; NumAssets = 5; %开始模拟 randn('state', 0); RetExact = portsim(ExpReturn, ExpCov, NumObs, RetIntervals, NumSim); Weights = ones(NumAssets, 1)/NumAssets;
PortRetExact = zeros(NumObs, NumSim); for i = 1:NumSim PortRetExact(:, i) = RetExact(:,:,i)*Weights; end PortExact = ret2tick(PortRetExact,repmat(StartPrice, 1, NumSim)); plot(PortExact, '-r');
蒙特卡罗方法(MC) 蒙特卡罗(Monte Carlo)方法: 蒙特卡罗(Monte Carlo)方法,又称随机抽样或统计试验方法,属于计算数学 的一个分支,它是在本世纪四十年代中期为了适应当时原子能事业的发展而发展 起来的。传统的经验方法由于不能逼近真实的物理过程,很难得到满意的结果, 而蒙特卡罗方法由于能够真实地模拟实际物理过程,故解决问题与实际非常符 合,可以得到很圆满的结果。这也是我们采用该方法的原因。 蒙特卡罗方法的基本原理及思想如下: 当所要求解的问题是某种事件出现的概率,或者是某个随机变量的期望值时,它 们可以通过某种“试验”的方法,得到这种事件出现的频率,或者这个随机变数的 平均值,并用它们作为问题的解。这就是蒙特卡罗方法的基本思想。蒙特卡罗方 法通过抓住事物运动的几何数量和几何特征,利用数学方法来加以模拟,即进行 一种数字模拟实验。它是以一个概率模型为基础,按照这个模型所描绘的过程, 通过模拟实验的结果,作为问题的近似解。 可以把蒙特卡罗解题归结为三个主要步骤:构造或描述概率过程;实现从已 知概率分布抽样;建立各种估计量。 蒙特卡罗解题三个主要步骤: 构造或描述概率过程: 对于本身就具有随机性质的问题,如粒子输运问题,主要是正确描述和模拟这个 概率过程,对于本来不是随机性质的确定性问题,比如计算定积分,就必须事先 构造一个人为的概率过程,它的某些参量正好是所要求问题的解。即要将不具有 随机性质的问题转化为随机性质的问题。 实现从已知概率分布抽样:构造了概率模型以后,由于各种概率模型都可以看作 是由各种各样的概率分布构成的,因此产生已知概率分布的随机变量(或随机向 量),就成为实现蒙特卡罗方法模拟实验的基本手段,这也是蒙特卡罗方法被称 为随机抽样的原因。最简单、最基本、最重要的一个概率分布是(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 年期刊论文数量增长了 五倍,有几 本好书是关于电子? 光子蒙特卡罗问题的[注 1],蒙特卡罗方法的代码被认为是 黑匣子, 它已成为计算数学中不可缺少的组成部分,这主要是因为以下原因: · 传统的分析方法受到了问题复杂性的限制。 · MC 方法直观,对实验者很有吸引力。 · 计算机变得更快更便宜。 · 量子理论的发展为我们提供了辐射与物质相互作用的截面数据。 [注 1]: · I.Lux and L.Koblinger,MONTE CARLO PARTICLE TRANSPORT METHODS:MEUTRON AND PHOTO CALCULATIONS (CRC Press,1991). · R.L.Morin(Editor),MONTE CARLO SIMULATION IN THE RADIOLOGICAL SCIENCES (CR C Press,1988).[Contributors: H.-P. Chan, K.Doi, J.E.Goin, R.L.Morin, R.Nath, D.E.Raeside,J.C.Widman and J.F.Williamson] · T.M.Jenkins, W.R.Nelson, A.Rindi, A.E.Nahum and D.W.O.Rogers (Editors), M
ONTE CARLO TRANSPORT OF ELECTRONS AND PHOTOS (Plenum Press,1988). [Contribut ors: P.Andro, M.J.Berger, A.F.Bielajew, A.Del Guerra, B.Grosswendt, J.Halble ib, A.Ito, T.M.Jenkins, R.Monhan, A.E.Nahum, W.R.Nelson, D.W.O.Rogers, S.Sel tzer and R.Wang] 蒙特卡罗方法的计算程序: 关于蒙特卡罗方法的计算程序已经有很多,如:EGS4、FLUKA、ETRAN、ITS、 MCNP、GEA NT 等。这些程序大多经过了多年的发展,花费了几百人年的工作量。除 分藓俗 友芯恐 心(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 Trans port 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 容纳进来以完成对光子和电子输运过程的模拟,并且对低能电子的 输运算法进
行了改进。 Dwass (1957)蒙特卡罗模拟 当科学家们使用计算机来试图预测复杂的趋势和事件时, 他们通常应用一类需要长串的随机数的复杂计 算。设计这种用来预测复杂趋势和事件的数字模型越来越依赖于一种称为蒙特卡罗模似的统计手段, 而这 种模拟进一步又要取决于可靠的无穷尽的随机数目来源。 蒙特卡罗模拟因摩洛哥著名的赌场而得名。它能够帮助人们从数学上表述物理、化学、工程、经济学 以及环境动力学中一些非常复杂的相互作用。数学家们称这种表述为“模式”, 而当一种模式足够精确时, 他能产生与实际操作中对同一条件相同的反应。但蒙特卡罗模拟有一个危险的缺陷: 如果必须输入一个模 式中的随机数并不像设想的那样是随机数, 而却构成一些微妙的非随机模式, 那么整个的模拟(及其预测 结果)都可能是错的。 最近, 由美国佐治亚大学的费伦博格博士作出的一分报告证明了最普遍用以产生随机数串的计算机程 序中有 5 个在用于一个简单的模拟磁性晶体中原子行为的数学模型时出现错误。科学家们发现, 出现这些 错误的根源在于这 5 个程序产生的数串其实并不随机, 它们实际上隐藏了一些相互关系和样式, 这一点只 是在这种微小的非随机性歪曲了晶体模型的已知特性时才表露出来。贝尔实验室的里德博士告诫人们记住 伟大的诺伊曼的忠告:“任何人如果相信计算机能够产生出真正的随机的数序组都是疯子。” 蒙特卡洛模拟法 一、蒙特卡洛模拟法的概念:(也叫随机模拟法)当系统中各个单元的可靠性特征量已知,但系统的 可靠性过于复杂,难以建立可靠性预计的精确数学模型或模型太复杂而不便应用则可用随机模拟法近似计 算出系统可靠性的预计值。随着模拟次数的增多,其预计精度也逐渐增高。由于需要大量反复的计算,一 般均用计算机来完成。 二、蒙特卡洛模拟法求解步骤:应用此方法求解工程技术问题可以分为两类:确定性问题和随机性问题。 解题步骤如下: 1.根据提出的问题构造一个简单、适用的概率模型或随机模型,使问题的解对应于该模型中随机变量 的某些特征(如概率、均值和方差等),所构造的模型在主要特征参量方面要与实际问题或系统相一致 2 .根据模型中各个随机变量的分布,在计算机上产生随机数,实现一次模拟过程所需的足够数量的随 机数。通常先产生均匀分布的随机数,然后生成服从某一分布的随机数,方可进行随机模拟试验。 3. 根据概率模型的特点和随机变量的分布特性,设计和选取合适的抽样方法,并对每个随机变量进行 抽样(包括直接抽样、分层抽样、相关抽样、重要抽样等)。 4.按照所建立的模型进行仿真试验、计算,求出问题的随机解。 5. 统计分析模拟试验结果,给出问题的概率解以及解的精度估计。 在可靠性分析和设计中,用蒙特卡洛模拟法可以确定复杂随机变量的概率分布和数字特征,可以通过 随机模拟估算系统和零件的可靠度,也可以模拟随机过程、寻求系统最优参数等。 蒙特卡罗法历史悠久。1773 年法国 G.-L.L.von 布丰曾通过随机投针试验来确定圆周率π的近似值,这就 是应用这个方法的最早例子。蒙特卡罗是摩纳哥著名赌城,1945 年 J.von 诺伊曼等人用它来命名此法,沿
用至今。数字计算机的发展为大规模的随机试验提供了有效工具,遂使蒙特卡罗法得到广泛应用。在连续 系统和离散事件系统的仿真中,通常构造一个和系统特性相近似的概率模型,并对它进行随机试验,因此 蒙特卡罗法也是系统仿真方法之一。 蒙特卡罗法的步骤是:①构造实际问题的概率模型;②根据概率模型的特点,设计和使用降低方差的各 类方法,加速试验的收敛;③给出概率模型中各种不同分布随机变量的抽样方法;④统计试验结果,给出 问题的解和精度估计。 概率模型 用概率统计的方法对实际问题或系统作出的一种数学描述。例如对离散事件系统中临时实 体的到达时间、永久实体的服务时间的描述(见离散事件系统仿真方法)就是采用概率模型。虽然由这些 模型所确定的到达时间、服务时间可能与具体某一段时间内实际到达时间、服务时间有出入,但它是通过 多次统计获得的结果,所以从概率分布的规律来说还是相符的。概率模型不仅可用来描述本身就具有随机 特性的问题或系统,也可用来描述一个确定型问题。例如参数寻优中的随机搜索法(见动力学系统参数寻 优)就是将参数最优化问题构造为一个概率模型,然后用随机投点、统计分析的方法来进行搜索。 随机数的产生 用蒙特卡罗法进行仿真时,需要应用各种不同分布的随机变量。只要有一种连续分布 的随机变量,就可设法得到任意分布的随机变量。在(0,1)上均匀的分布函数是一种最简单的连续分布函 数。因此在 蒙特卡罗法中,多是先产生均匀分布随机变量 R 的抽样值 ri(i=1,2,…),称为随机数。在计算机中产生 随机数的方法有:①把已有的随机数表输入计算机;②用物理方法,如噪声型随机数发生器产生出真正的 随机数;③用数学方法根据递推公式 由程序来产生。这种方法速度高,占用机器的内存少,使用最为普遍。在计算机中表示一个数字的字长有 限,因此只能表示有限个不同的数,而且用递推方法产生的数值序列{rn}是完全确定的,到一定长度便周 而复始,这些都与随机数的基本性质相矛盾。但是只要产生的数值序列{rn}能够通过随机数的各种统计检 验,仍可以把它当作随机数来使用。为区别起见,常将用数学方法产生的随机数称为伪随机数。 蒙特卡罗(Monte Carlo)方法,又称随机抽样或统计试验方法,属于计算数学的一个分支,它是在本世纪 四十年代中期为了适应当时原子能事业的发展而发展起来的。 传统的经验方法由于不能逼近真实的物理过程,很难得到满意的结果,而蒙特卡罗方法由于能够真实地模 拟实际物理过程,故解决问题与实际非常符合,可以得到很圆满的结 果。这也是我们采用该方法的原因。蒙特卡罗方法的基本原理及思想如下:当所要求解的问题是某种事件 出现的概率,或者是某个随机变量的期望值时,它们可以 通过某种“试验”的方法,得到这种事件出现的频率,或者这个随机变数的平均值,并用它们作为问题的 解。这就是蒙特卡罗方法的基本思想。蒙特卡罗方法通过抓住事物运 动的几何数量和几何特征,利用数学方法来加以模拟,即进行一种数字模拟实验。它是以一个概率模型为 基础,按照这个模型所描绘的过程,通过模拟实验的结果,作为问题 的近似解。可以把蒙特卡罗解题归结为三个主要步骤:构造或描述概率过程;实现从已知概率分布抽样; 建立各种估计量。 蒙特卡罗解题三个主要步骤: 构造或描述概率过程: 对于本身就具有随机性质的问题,如粒子输运问题,主要是正确描述和模拟这个概率过程,对于本来不是 随机性质的确定性问题,比如计算定积分,就必须事先构造一个人为 的概率过程,它的某些参量正好是所要求问题的解。即要将不具有随机性质的问题转化为随机性质的问题。 实现从已知概率分布抽样: 构造了概率模型以后,由于各种概率模型都可以看作是由各种各样的概率分布构成的,因此产生已知概率 分布的随机变量(或随机向量),就成为实现蒙特卡罗方法模拟实验
分享到:
收藏