随机模拟方法及习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
随机模拟方法
在用传统方法难以解决的问题中,某些问题含有不确定的随机因素,分析起来通常比确定性的问题困难。有的模型难做定量分析,得不到解析的结果或者是有解析结果,但计算代价太大以至不能使用,在这种情况下,可以考虑随机模拟的方法即Monte Carlo 方法。该方法是一类以概率统计理论为指导的非常重要的数值计算方法,也是一种用于解决数值问题的基于计算机的统计抽样方法。目前,随机模拟方法已广泛应用于诸如生物信息学、统计物理学、计算机科学、材料科学、金融学和经济学等领域。
基本知识
基本思想
为了求解物理、数学、工程技术以及生产管理等方面的问题,首先建立一个概率或者随机过程,使它的参数等于问题的解;然后通过对模型或过程的观察或者抽样实验来计算所求参数的统计特征,最后给出所求解的近似值。而解的精确度可用估计值的标准误差来表示。随机模拟方法是一种独具风格的数值计算方法,其优点大致有如下三方面:(A )方法的程序结构简单;(B )算法的概率性和问题的维数无关;(C )方法的适应强。
随机数和伪随机数
用Monte Carlo 方法模拟某过程的时候,需要产生各种概率分布的随机变量。最基本、最简单、最重要的随机变量是在[0,1]上均匀分布的随机变量。为了方便,通常把[0,1]上均匀分布随机变量的抽样值称为随机数,其他分布随机变量的抽样都可以借助于随机数来实现,因此,随机数是随机抽样的基本工具。在计算机上用数学的方法产生随机数是目前广泛使用的方法,它的特点是占用内存少、产生速度快、又便于重复产生,比如说平方取中法、移位指令加法、同余法等等。然而这种随机数是根据确定的递推公式求得的,存在着周期现象,初值确定后所有随机的数便被唯一确定下来,不满足真正随机数的要求,所以通常称数学方法产生的随机数为伪随机数。在实际应用中,只要这些伪随机数序列通过一系列的统计检验,还是可以把它当称“真正”的随机数来使用。
产生随机数的命令
在Matlab 软件中,可以直接产生满足各种分布的随机数,相关命令如下:
(1)产生m n 阶[,]a b 均匀分布(,)U a b 的随机数矩阵:unifrnd (a,b,m, n);
产生一个[,]a b 均匀分布的随机数:unifrnd (a,b);
(2)产生m n ⨯阶[0,1]均匀分布的随机数矩阵:rand (m, n); 产生一个[0,1]均匀分布的随机数:rand ;
(3) 产生m n ⨯阶均值为μ,方差为2
σ的正态分布的随机数矩阵:normrnd (,μσ,m,
n);
(4) 产生m n ⨯阶期望值为μ的指数分布的随机数矩阵:exprnd(μ,m,n)
若连续型随机变量X 的概率密度函数为
0()00
x
e x
f x x λλ-⎧≥=⎨
<⎩,
其中0λ>为常数,则称X 服从参数为λ的指数分布。排队服务系统中顾客到达率为常数时的到达间隔、故障率为常数时零件的寿命都服从指数分布。指数分布在排队论、可靠性分析中有广泛应用。
注:参数为λ的指数分布的期望值为1
λ,故在MATLAB 中产生参数为λ的指数分布的命令为:exprnd(1/λ)
(5)产生m n ⨯阶参数为λ的泊松分布的随机数矩阵:poissrnd(λ,m,n) 注:参数为λ的泊松分布的期望值为λ。 应用示例
例一:排队论中的模拟
排队论主要研究随机服务系统的工作过程。在排队系统中,服务对象的到达时
间和服务时间都是随机的。排队论通过对每个个别的随机服务现象的统计研究,找出反映这些随机现象平均特性的规律,从而为设计新的服务系统和改进现有服务系统的工作提供依据。对于排队服务系统, 顾客常常注意排队的人是否太多, 等候的时间是否长, 而服务员则关心他空闲的时间是否太短。 于是人们常用排队的长度、等待的时间及服务利用率等指标来衡量系统的性能。
单服务员的排队模型:
在某商店有一个售货员,顾客陆续来到,售货员逐个地接待顾客。当到来的顾客较多时,一部分顾客便须排队等待,被接待后的顾客便离开商店。
设:
(1)顾客到来间隔时间服从参数为0.1的指数分布;
(2)对顾客的服务时间服从[4,15]上的均匀分布; (3)排队按先到先服务规则,队长无限制。
假定一个工作日为8小时,时间以分钟为单位。要求:
[1] 模拟一个工作日内完成服务的个数及顾客平均等待时间t 。
[2] 模拟100个工作日,求出平均每日完成服务的个数及每日顾客的平均等待时间。 假设:
(1)顾客源是无穷的; (2)排队的长度没有限制;
(3)到达系统的顾客按先后顺序依次进入服务, 即“先到先服务”。 符号说明
w :总等待时间; i c :第i 个顾客的到达时刻; i
b :第i 个顾客开始服务时刻;
i
e :第i 个顾客服务结束时刻;
i x :第i 个顾客与第1i +个顾客之间到达的间隔时间;
i
y :对第i 个顾客的服务时间。
显然,如下关系式成立:
1i i i
c c x -=+;
i i i
e b y =+;
1m ax(,)
i i i b c e -=
模拟框图:
图8-1 程序框图
求解
经过编写程序计算,模拟出一个工作日内完成服务的顾客数34m =人,平均等待时间约42t =分钟。注意每次运行的结果会不一样,甚至结果的偏差较大。 类似地,模拟出100个工作日内完成服务的顾客数43m =人,平均等待时间约27t =分钟。注意每次运行的结果会不一样,但是结果的偏差较小,总的来说,数值结果