数学建模算法之蒙特卡罗方法论文.

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

zs=s(1,2)^2; k=0; for i=1:s(1,2) for j=1:s(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 end end mj=(12^2)*k/zs; 运行结果: mj = 7.2150
则该运动员的射击成绩为用概率语言来说是随机变量gr的数学期望即当所求解问题是某种随机事件出现的概率或者是某个随机变量的期望值时通过某种实验的方法以这种事件出现的频率估计这一随机事件的概率或者得到这个随机变量的某些数字特征并将其作为问题的解
数学建模算法之蒙特卡罗方法——原理、编程及应用
一、前言
1946 年,美国拉斯阿莫斯国家实验室的三位科学家 John von Neumann,Stan Ulam 和 Nick Metropolis 共同发明了蒙特卡罗方法。此算法被评为 20 世纪最伟 大的十大算法之一。 蒙特卡罗方法(Monte Carlo method) ,又称随机抽样或统计模拟方法,是 一种以概率统计理论为指导的一类非常重要的数值计算方法。 此方法使用随机数 (或更常见的伪随机数)来解决很多计算问题的方法。 由于传统的经验方法由于不能逼近真实的物理过程,很难得到满意的结果, 而蒙特卡罗方法由于能够真实地模拟实际物理过程, 故解决问题与实际非常符合, 可以得到很圆满的结果。
3.模型的建立与求解
根据上面的分析, 利用蒙特卡罗方法编程实现,主要随机模拟前一天和前两 天的各种不同的销售量,来确定当天的生产与库存量,依据可能的实际销售量, 计算出当天的销售利润,选择使连续几天利润尽可能大的方案,下面给 MATLAB 程序。 (1)建立蒙特卡罗方法的 M 文件,函数名:mcun.m Function [LS1,LS2]=mcun(T,S1,S21,S22) LS1=0;LS2=0;k=1; While k<T KC1=S1; KC2=(S21+S22)/2; C=normrnd(1500,30*30) if C<KC1
二、蒙特卡罗方法的基本原理以及思想
1、蒲丰投针实验
其基本思想源于法国数学家蒲丰提出著名的蒲丰投针实验, 并以该方法求圆 周率。 为了求得圆周率π值,在十九世纪后期,有很多人作了这样的试验:将长为 2l 的一根针任意投到地面上,用针与一组相间距离为 2a(l<a)的平行线相交 的频率代替概率 P,再利用准确的关系式:
四、蒙特卡罗方法在数学建模中的应用举例
1.问题的提出
某食品加工厂主要生产即食产品,一般当天生产的产品必须当天售出,否则 就会出现不能保质、或变质、造成一定的经济损失,如果市场需求量大而生产量 不足,则也会影响工厂的销售收入,该产品的单位成本为 1.5 元,单位产品售价 为 4 元。 工厂为了避免产品滞销存货过多而造成的经济损失,提出了如何制定合 理的生产与库存数量的方案问题,能够使得工厂能有尽可能多的收益,经初步考 虑拟从以下两种生产与库存方案中选出一个较好的方案: 方案(1):按前一天的销售量作为当天的生产库存量。 方案(2):按前两天的平均销售量作为当天的生产库存量。
g


用概率语言来说,<g>是随机变量g(r)的数学期望,即 g E g ( r ) 当所求解问题是某种随机事件出现的概率, 或者是某个随机变量的期望值时, 通过某种“实验”的方法,以这种事件出现的频率估计这一随机事件的概率,或 者得到这个随机变量的某些数字特征,并将其作为问题的解。有一个例子可以使 你比较直观地了解蒙特卡洛方法: 假设我们要计算一个不规则图形的面积, 那么图形的不规则程度和分析性计 算(比如,积分)的复杂程度是成正比的。蒙特卡洛方法是怎么计算的呢?假想 你有一袋豆子, 把豆子均匀地朝这个图形上撒,然后数这个图形之中有多少颗豆 子,这个豆子的数目就是图形的面积。当你的豆子越小,撒的越多的时候,结果 就越精确。在这里我们要假定豆子都在一个平面上,相互之间没有重叠。 蒙特卡罗方法通过抓住事物运动的几何数量和几何特征, 利用数学方法来加 以模拟,即进行一种数字模拟实验。它是以一个概率模型为基础,按照这个模型 所描绘的过程,通过模拟实验的结果,作为问题的近似解。 蒙特卡罗方法与一般计算方法有很大区别, 一般计算方法对于解决多维或因 素复杂的问题非常困难, 而蒙特卡罗方法对于解决这方面的问题却比较简单。其 特点如下: 直接追踪粒子,物理思路清晰,易于理解。 采用随机抽样的方法, 较真切的模拟粒子输运的过程, 反映了统计涨落的规律。 不受系统多维、多因素等复杂性的限制,是解决复杂系统粒子输运问题的好方 法。
假设市场对该产品的每天需求数量是一个随机变量, 从统计学的角度分析得 知,该随机变量服从正态分布。 为了编程实现问题的目标,引入ቤተ መጻሕፍቲ ባይዱ下的变量:本文中参数符号定义:T 表示 模拟天数;C 表示每天的需求量;KC1 表示方案(1)当天的生产与库存量;KC2 表 示方案(2)当天的生产与库存量;S1 表示方案(1)前一天的销售量;S21 表示方案 (2)前一天的销售量; S22 表示方案(2)前二天的销售量;ST1 表示方案(1)当天的 实际销售量; ST2 表示方案(2)当天的实际销售量;L1 表示方案(1)当天的实际利 润;L2 表示方案(2)当天的实际利润;LS1 表示方案(1)实际累计总利润;LS2 表 示方案(2)实际累计总利润。
五、参考文献
[1] 蒙 特 卡 罗 方 法 及 应 用 [J]. 尹 增 谦 , 管 景 峰 , 张 晓 宏 , 曹 春 梅 . 2002(03).45-49. [2] 蒙 特 卡 罗 方 法 应 用 研 究 [J]. 王 岩 , 尹 海 丽 , 窦 在 祥 . 2006(02).111-113. [3] 高 职 数 学 中 蒙 特 卡 罗 方 法 的 应 用 [J]. 陈 杨 林 , 罗 婷 . 2013(02).22-23. 九江职业技术学院学报. 青岛理工大学学报. 物理与工程.
0
g ( r ) f ( r ) dr
三、蒙特卡罗方法的编程
计算阴影部分面积。 一个古人要求一个图形的面积,他把图形画在一块方形布上,然后找来一袋 豆子, 然后将所有豆子洒在布上,落在图形内豆子的重量比上那块布上所有豆子 的重量再乘以布的面积就是他所要求的图形的面积。
两种编程思路来计算这个面积: 方法一:将整个坐标轴看成一个边长为 12 的正方形,然后均匀的这个正方 形分成 N(N 的大小取决于划分的步长)个点,然后找出 N 个点中有多少个点是 属于阴影部分中,假设这个值为 k,则阴影部分的面积为:k/N*12^2 方法二:将整个坐标轴看成一个边长为 12 的正方形,然后在(-6,6)中随 机出 N(N 越大越好,至少超过 1000)个点,然后找出这 N 个点中有多少个点在 阴影区域内,假设这个值为 k,则阴影部分的面积为:k/N*12^2。然后重复这个 过程 100 次,求出 100 次面积计算结果的均值,这个均值为阴影部分面积。 对比分析: 以上两个方法都是利用蒙特卡罗方法计算阴影部分面积,只是在 处理的细节有一点区别。 前者是把豆子均匀分布在布上;后者则是随机把豆子仍 在布上。就计算结果的精度而言,前者取决点的分割是否够密,即 N 是否够大; 后者不仅仅通过 N 来控制精度, 因为随机的因素会造成单次计算结果偏高和偏小, 所以进行反复多次计算最后以均值来衡量阴影部分面积。 附上 MATLAB 程序: 方法一: clear x=-6:0.01:6; y=x; s=size(x);
方法二: clear N=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; a3=(x(i)-2)^2+(y(i)+1)^2; if a1<1 if a2<1 if a3<9 k=k+1; end end end end m(j)=(12^2)*k/N; end mj=mean(m); 运行结果: mj = 7.2500
[4]蒙特卡罗方法在教学中的应用[J]. 康件丽,黄俊杰. [5]蒙特卡罗方法与问题的维数[J]. 裴鹿成.
电脑学习. 2008(02).46-47.
数学的实践与认识. 1994(02).35-40.
六、结语
由于科学技术的发展和电子计算机的发明, 这种方法作为一种独立的方法被 提出来,并首先在核武器的试验与研制中得到了应用。 蒙特卡罗方法是一种计算方法,但与一般数值计算方法有很大区别。它是以 概率统计理论为基础的一种方法。 由于蒙特卡罗方法能够比较逼真地描述事物的特点及物理实验过程, 解决一 些数值方法难以解决的问题,因而该方法的应用领域日趋广泛。
P
2l 2l 2l N ( ) a aP a n
求出π值。其中N为投针次数,n 为针与平行线相交次数。这就是古典概率论中 著名的蒲丰氏问题。
2、射击问题
设 r 表示射击运动员的弹着点到靶心的距离,g(r)表示击中 r 处相应的得 分数(环数) ,f(r)为该运动员的弹着点的分布密度函数,它反映运动员的射击 水平。则该运动员的射击成绩为
ST1=KC1;
Else ST1=C; end if C<KC2 ST2=KC2; else ST2=C; end L1=4*ST1—1.5*KC1; L2=4*ST2—1.5*KC2; LS1=LS1+L1; LS2=LS2+L2; k=k+1; end S1=ST1:S22=S21;S21=ST2; (2)调用函数 mcun(T,S1,S21,S22)
2.问题的分析与假设及参数定义
实际中的问题,生产与库存多了,销售不出去会造成经济损失,生产与库存 少了不能满足需求也会造成一定的损失, 工厂需要依据实际不确定的需求量来制 定合理的生产与库存方案,使得能有尽量大的经济收益。
解决问题的基本思路:利用蒙特卡罗方法随机模拟市场对该产品需求量,统计计算出按照两种不同方 案 T 天后工厂的经济值,比较不同方案经济效益的大小,选出一个较好的方案。
4.模型的结果分析与推广
在 MATLAB 命令窗口多次输入参数 T,S1,S21 和 S22 数值,分别调用函数 meun(T,S1,S21,S22),进行求解计算,并对结果进行分析,由若干次模拟实演的 结果可以看出, 方案(1)的利润总是小于方案(2)的利润,所以该工厂实际按方案 (2)进行组织生产与库存,工厂会有更好的经济效益。
相关文档
最新文档