数学建模算法之蒙特卡罗方法——原理、编程及应用_第1页
数学建模算法之蒙特卡罗方法——原理、编程及应用_第2页
数学建模算法之蒙特卡罗方法——原理、编程及应用_第3页
数学建模算法之蒙特卡罗方法——原理、编程及应用_第4页
数学建模算法之蒙特卡罗方法——原理、编程及应用_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.数学建模算法之蒙特卡罗方法原理、编程及应用一、前言1946年,美国拉斯阿莫斯国家实验室的三位科学家John von Neumann,Stan Ulam和Nick Metropolis共同发明了蒙特卡罗方法。此算法被评为20世纪最伟大的十大算法之一。蒙特卡罗方法(Monte Carlo method),又称随机抽样或统计模拟方法,是一种以概率统计理论为指导的一类非常重要的数值计算方法。此方法使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。由于传统的经验方法由于不能逼近真实的物理过程,很难得到满意的结果,而蒙特卡罗方法由于能够真实地模拟实际物理过程,故解决问题与实际非常符合,可以得到很

2、圆满的结果。二、蒙特卡罗方法的基本原理以及思想1、蒲丰投针实验其基本思想源于法国数学家蒲丰提出著名的蒲丰投针实验,并以该方法求圆周率。为了求得圆周率值,在十九世纪后期,有很多人作了这样的试验:将长为2l的一根针任意投到地面上,用针与一组相间距离为2a(la)的平行线相交的频率代替概率P,再利用准确的关系式:求出值。其中为投针次数,n为针与平行线相交次数。这就是古典概率论中著名的蒲丰氏问题。2、 射击问题设r表示射击运动员的弹着点到靶心的距离,(r)表示击中r处相应的得分数(环数),f(r)为该运动员的弹着点的分布密度函数,它反映运动员的射击水平。则该运动员的射击成绩为 用概率语言来说,<

3、g>是随机变量(r)的数学期望,即 当所求解问题是某种随机事件出现的概率,或者是某个随机变量的期望值时,通过某种“实验”的方法,以这种事件出现的频率估计这一随机事件的概率,或者得到这个随机变量的某些数字特征,并将其作为问题的解。有一个例子可以使你比较直观地了解蒙特卡洛方法:假设我们要计算一个不规则图形的面积,那么图形的不规则程度和分析性计算(比如,积分)的复杂程度是成正比的。蒙特卡洛方法是怎么计算的呢?假想你有一袋豆子,把豆子均匀地朝这个图形上撒,然后数这个图形之中有多少颗豆子,这个豆子的数目就是图形的面积。当你的豆子越小,撒的越多的时候,结果就越精确。在这里我们要假定豆子都在一个平面上

4、,相互之间没有重叠。蒙特卡罗方法通过抓住事物运动的几何数量和几何特征,利用数学方法来加以模拟,即进行一种数字模拟实验。它是以一个概率模型为基础,按照这个模型所描绘的过程,通过模拟实验的结果,作为问题的近似解。蒙特卡罗方法与一般计算方法有很大区别,一般计算方法对于解决多维或因素复杂的问题非常困难,而蒙特卡罗方法对于解决这方面的问题却比较简单。其特点如下: 直接追踪粒子,物理思路清晰,易于理解。 采用随机抽样的方法,较真切的模拟粒子输运的过程,反映了统计涨落的规律。不受系统多维、多因素等复杂性的限制,是解决复杂系统粒子输运问题的好方法。三、蒙特卡罗方法的编程计算阴影部分面积。一

5、个古人要求一个图形的面积,他把图形画在一块方形布上,然后找来一袋豆子,然后将所有豆子洒在布上,落在图形内豆子的重量比上那块布上所有豆子的重量再乘以布的面积就是他所要求的图形的面积。两种编程思路来计算这个面积:方法一:将整个坐标轴看成一个边长为12的正方形,然后均匀的这个正方形分成N(N的大小取决于划分的步长)个点,然后找出N个点中有多少个点是属于阴影部分中,假设这个值为k,则阴影部分的面积为:k/N*122方法二:将整个坐标轴看成一个边长为12的正方形,然后在(-6,6)中随机出N(N越大越好,至少超过1000)个点,然后找出这N个点中有多少个点在阴影区域内,假设这个值为k,则阴影部分的面积为

6、:k/N*122。然后重复这个过程100次,求出100次面积计算结果的均值,这个均值为阴影部分面积。对比分析:以上两个方法都是利用蒙特卡罗方法计算阴影部分面积,只是在处理的细节有一点区别。前者是把豆子均匀分布在布上;后者则是随机把豆子仍在布上。就计算结果的精度而言,前者取决点的分割是否够密,即N是否够大;后者不仅仅通过N来控制精度,因为随机的因素会造成单次计算结果偏高和偏小,所以进行反复多次计算最后以均值来衡量阴影部分面积。附上MATLAB程序:方法一:clearx=-6:0.01:6;y=x;s=size(x);zs=s(1,2)2;k=0;for i=1:s(1,2) for j=1:s(

7、1,2) a1=(x(i)2)/9+(y(j)2)/36; a2=(x(i)2)/36+y(j)2; a3=(x(i)-2)2+(y(j)+1)2; if a1<1 if a2<1 if a3<9 k=k+1; end end end endendmj=(122)*k/zs;运行结果:mj =7.2150方法二:clearN=10000;n=100;for j=1:n k=0;for i=1:N a=12*rand(1,2)-6; x(i)=a(1,1); y(i)=a(1,2); a1=(x(i)2)/9+(y(i)2)/36; a2=(x(i)2)/36+y(i)2; a

8、3=(x(i)-2)2+(y(i)+1)2; if a1<1 if a2<1 if a3<9 k=k+1; end end endendm(j)=(122)*k/N;endmj=mean(m);运行结果:mj =7.2500四、蒙特卡罗方法在数学建模中的应用举例1.问题的提出某食品加工厂主要生产即食产品,一般当天生产的产品必须当天售出,否则就会出现不能保质、或变质、造成一定的经济损失,如果市场需求量大而生产量不足,则也会影响工厂的销售收入,该产品的单位成本为1.5元,单位产品售价为4元。工厂为了避免产品滞销存货过多而造成的经济损失,提出了如何制定合理的生产与库存数量的方案问题

9、,能够使得工厂能有尽可能多的收益,经初步考虑拟从以下两种生产与库存方案中选出一个较好的方案:方案(1):按前一天的销售量作为当天的生产库存量。方案(2):按前两天的平均销售量作为当天的生产库存量。2.问题的分析与假设及参数定义实际中的问题,生产与库存多了,销售不出去会造成经济损失,生产与库存少了不能满足需求也会造成一定的损失,工厂需要依据实际不确定的需求量来制定合理的生产与库存方案,使得能有尽量大的经济收益。解决问题的基本思路:利用蒙特卡罗方法随机模拟市场对该产品需求量,统计计算出按照两种不同方案T天后工厂的经济值,比较不同方案经济效益的大小,选出一个较好的方案。假设市场对该产品的每天需求数量

10、是一个随机变量,从统计学的角度分析得知,该随机变量服从正态分布。为了编程实现问题的目标,引入如下的变量:本文中参数符号定义:T表示模拟天数;C表示每天的需求量;KC1表示方案(1)当天的生产与库存量;KC2表示方案(2)当天的生产与库存量;S1表示方案(1)前一天的销售量;S21表示方案(2)前一天的销售量;S22表示方案(2)前二天的销售量;ST1表示方案(1)当天的实际销售量;ST2表示方案(2)当天的实际销售量;L1表示方案(1)当天的实际利润;L2表示方案(2)当天的实际利润;LS1表示方案(1)实际累计总利润;LS2表示方案(2)实际累计总利润。3.模型的建立与求解根据上面的分析,利

11、用蒙特卡罗方法编程实现,主要随机模拟前一天和前两天的各种不同的销售量,来确定当天的生产与库存量,依据可能的实际销售量,计算出当天的销售利润,选择使连续几天利润尽可能大的方案,下面给MATLAB程序。(1)建立蒙特卡罗方法的M文件,函数名:mcun.mFunction LS1,LS2=mcun(T,S1,S21,S22)LS1=0;LS2=0;k=1;While k<TKC1=S1;KC2=(S21+S22)/2;C=normrnd(1500,30*30)if C<KC1ST1=KC1;ElseST1=C;endif C<KC2ST2=KC2;elseST2=C;endL1=4

12、*ST11.5*KC1;L2=4*ST21.5*KC2;LS1=LS1+L1;LS2=LS2+L2;k=k+1;endS1=ST1:S22=S21;S21=ST2;(2)调用函数mcun(T,S1,S21,S22)4.模型的结果分析与推广在MATLAB命令窗口多次输入参数T,S1,S21和S22数值,分别调用函数meun(T,S1,S21,S22),进行求解计算,并对结果进行分析,由若干次模拟实演的结果可以看出,方案(1)的利润总是小于方案(2)的利润,所以该工厂实际按方案(2)进行组织生产与库存,工厂会有更好的经济效益。五、参考文献1蒙特卡罗方法及应用J. 尹增谦,管景峰,张晓宏,曹春梅. 物理与工程. 2002(03).45-49.2蒙特卡罗方法应用研究J. 王岩,尹海丽,窦在祥. 青岛理工大学学报. 2006(02).111-113.3高职数学中蒙特卡罗方法的应用J. 陈杨林,罗婷. 九江职业技术学院学报. 2013(02).22-23.4蒙特卡罗方法在教学中的应用J. 康件丽,黄俊杰. 电脑学习. 2008(02).46-47.5蒙特卡罗方法与问题的维数J. 裴鹿成. &#

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论