当前位置:
文档之家› 随机模拟(仿真)-simulation
随机模拟(仿真)-simulation
• (2)固定时间步长法:此种方法模拟时间每次均 以相等的固定步长向前推进,每到达一个新的模 拟时间点需要检查相应的时间段内是否发生了事 件;(有时候需要动态调整步长)
5
模拟的一般步骤
• 明确问题,建立模型:正确描述研究的问题,明确规定模 拟的目标和任务,确定衡量系统性能或模拟输出结果的目 标函数,然后根据系统的结构及作业规则,分析系统各状 态变量之间的关系,以次为基础建立所研究的系统模型;
f(k)=x1(k)+x2(k)^2+x3(k)^ 3; end n=floor(a*m); f1=[]; for k=1:m
b=max(f ); bb=find(f>b-0.00001); rr=bb(1); f1=[f1;f(rr)]; f(rr)=[];
计算结果: >> fbar=jieji(10000,0.8) fbar = 4.9698
1、在[2,3]上抽样x1,x2,…,xn;
2、计算 yi
1
x
2 i
,i 1,2,...,n
3、整理估计定积分;
3 1 x 2 dx 3 2 n
2
n i1
1
x
2 i
15
将上述过程编写M文件如 下 function I=jifen1(a,b,n) X=unifrnd(2,3,n,1); L=(b-a)/n; for k=1:n
合理假设
1、进入系统的顾客没有人因为不愿意等而离开系统;
2、先到先服务;
21
仿真步骤: 1、产生初始事件表,并从初始事件表中找出最靠前的
事件; 2、启动仿真时钟; 3、判别当前事件是哪一个事件,如果是顾客到达事
件,则启动顾客到达子程序;如果是服务事件,则 启动服务结束子程序; 4、重复2-3,直到仿真完毕; 5、整理、分析并输出结果。
优方案。
6
仿真的基础
• 概率论的大数定理; • 微积分基础; • 各种分布:在matlab模拟中,常用的随机分布为unif(均
匀分布),exp(指数分布),norm(正态分布),chi2(χ2分 布),t(t分布),f(F分布),bino(二项分布),poiss(泊松分 布),unid(整数均匀分布); • 有关分布的计算功能:pdf(概率密度),cdf(分布函 数 ),inv(逆概率分布),stat(均值与方差),rnd(随机数生成); • 将分布与计算功能结合在一起,就是实现某种及算功能, 例如,expinv就是计算指数分布的逆分布。
实际问题
数学、逻辑模型
计算机模型
实际解
数学、计算机解
1
为什么要进行仿真
• 实际系统建立之前,要对系统的行为或结果进行分析研究; • 有些真实系统做实验会影响系统运行,例如,在生产中任
意改变工艺系数可能导致废品,在经济活动中随意将一个 决策付诸行动会导致经济混乱; • 在系统上做多次试验,很难保证每次试验的操作条件相同, 因而对实验结果好坏很难作出正确的判断; • 当人是系统的一部分时,他的行为往往实验结果有所影响, 这时,最好进行模拟研究; • 实验时间太长,费用太大,或者有危险,使得试验不容易 进行; • 有些系统一旦建立起来后无法复原,例如,建立大型企业, 要分析社会和经济效益,不能用建立起来试试看的办法。
2
那些问题适合计算机仿真解决
• 难以用数学公式表示的系统,或者没有求解数学 模型的有效方法;
• 虽然可以用解析的方法解决问题,但是问题的分 析与计算过于复杂,这时计算机仿真可能提供简 单可行的求解方法;
• 希望在较短时间内观察到系统的发展全过程,以 估计某参数对系统行为的影响;
• 难以在实际环境中进行试验和观察,计算机仿真 是唯一的方法;
9
对于估计 4k 只有不断重复做实验,这种试验可以 n
具体去操作,(均匀投石块,然后数数,这样需要较高成本)。 也可以让计算机去重复试验,但是需要将数学模型转化为计算 机模拟模型(让计算机完成均匀投石块,自动计数,也需要成 本)。 用计算机模拟投石块过程和步骤如下: 1、自动生成随机点[0,1]x[0,1],模拟石块在正方形内的任 意位置,用(xi,yi)表示,共n个点;
5^(1/2)-1/2*log(2+5^(1/2))
>> double(ans)
ans = 2.6948
16
例3 估计事件发生的概率
Pr{X1
X
2 2
3, X3
X
2 4
9}
其中X1服从均匀分布U[2,5],X2服从指数分布exp(3), X3和X4分别服从正态分布 N(3,2)和N(1,1)。
步骤:
随机模拟(仿真)-simulation
仿真(也称为模拟):就是用计算机程序在计算机上模 仿各种实际系统的运行过程,并通过计算了解系统随时 间变化的行为或特性。
计算机仿真:是在已经建立的数学、逻辑模型之上,通 过计算机实验,对一个系统按照一定的决策原则或作业 规则,由一个状态变换为另外一个状态的行为进行描述 和分析。
• 需要对系统或过程进行长期运行的比较,从大量 方案中寻找最优。
3
仿真的分类
• 模拟是系统状态随时间而变化的动态写照, 因此,通常时间是模拟的主要自变量,其 它的变量为因变量。
• (1)按照模拟过程中因变量的变化情况, 可以将模拟分为离散、连续、混合3种类型;
• (2)如果采用模拟计算机、采用数字计算 机以及联合使用则分为模拟仿真、数字仿 真以及混合仿真;
>> for k=1:length(n)
pai(k)=fangzhenpai(n(k));
end
>> pai 值得注意的是,每次模拟即或程序相同,不同人不同计算 时p间ai,=结果一般不同(因为随机)。
2.0000 3.2000 3.3400 3.1740 3.1464 3.1460 3.1393 3.1423
23
产生初始事件表 从事件表中找出最靠前的事件
E[f (X)]
b f (x) dx
b
f (x)dx (b a)E[f (X)]
a ba
a
13
而另外一方面,根据大数定理,设y1,y2,…,yn为来自总体Y 的一组样本,有
lim{| y E(y) | } 1
n
其中
y
1 n
n i 1
yi
, E(y) E(Y) E[f (X)]
所以有
• (3)根据仿真变量的特征分为随机模拟仿 真和模糊模拟仿真。
4
模拟的方法
• 设计正确的模拟时间推进机理是进行模拟的一个 非常重要的问题,模拟过程应该根据系统的特征 正确推进模拟时间,使系统中各项要素与发生的 事件保持同步,推进时间模拟的基本方法有:
• (1)下次事件法:是将模拟时间由一个事件发生 时间点推进到紧接着下一个事件发生的时间点。 既时间变化幅度由事件变化确定;
2、判别(xi,yi)是否满足xi2+yi2≤1,即判别石块是否落在1/4 单位圆内,共k个点满足;
3、整理、统计模拟结果,用4k/n估计π。
10
利用matlab编程计算过
程1、编写M文件:
function [pai]=fangzhenpai(n)
%生成均匀分布;
X=unifrnd(0,1,n,2);
7
用随机模拟计算积分
例1
如下图所示,在正方形内有1/4单位圆。向正方形内投
小石头,假设每次都能够投进正方形内且可以落在正方形内
任何一点。问,小石头落在1/4单位圆内(包含边界)的概率多
大?
y
分析:假设头入正方形内的 石头有n块,有k块落入了1/4
1
单位圆内。P为小石头落入
1/4单位圆内的概率。那么根
• 收集和整理数据资料:模拟的实现往往离不开大量数据的 输入,且需要确定随机因素的概率分布特性,并以此为抽 样的根据;
• 编制程序:模拟运行,选择适当的计算机语言,按照系统 数学、逻辑模型编写计算机程序。
• 分析模拟输出结果:一般包括如下几个方面 • (1)模拟结果的统计特性:均值、方差以及置信区间; • (2)灵敏度分析; • (3)根据确定的目标函数,在众多的实现方案中选取最
计算结果如下:
>> a=2;b=3;n=30000; >> I=jifen1(a,b,n) I = 2.6912
Y(k)=(1+X(k)^2)^(1/2); end 而I=该L*积su分m的(Y准); 确值为:
syms x
>> int((1+x^2)^(1/2),2,3)
ans = 3/2*10^(1/2)-1/2*log(-3+10^(1/2))-
12
例2 计算定积分 3 1 x2dx 2 分析:若随机变量X的概率分布密度是P(x)(a≤x≤b),则随机 变量Y=f(X)的数学期望为 b E(Y) E[f (X)] a f (x)p(x)dx
当X是[a,b]上的均匀分布时,有
p(x) 1 , a x b ba
将p(x)代入上面的期望算子,有
步骤:
1、产生N个独立随机序列(X1k,X2k,X3k),k=1,2,…,N; 2、计算fk=f(X1k,X2k,X3k),k=1,2,…,N; 3、从序列f1,f2,…,fN中 取[0.8N]作为f的估计值。
19
编写文件:
function [fbar]=jieji(m,a) x1=unifrnd(1,3,m,1); x2=exprnd(1,m,1); x3=normrnd(2,1,m,1); for k=1:m
22
顾客到达的子程序 1、产生下一个顾客到来的时刻,记入事件表; 2、判别服务台是否忙s=1?,若是,则顾客则排队长 L=L+1;否则,服务台空闲,L=0; 3、产生一个服务结束时刻,记入事件表; 4、统计所需的数据;