随机模拟系统仿真与MATLAB实现

  • 格式:pdf
  • 大小:176.36 KB
  • 文档页数:9

e x , x 0 p ( x) 0, x 0
2. 随机数和随机现象的模拟 10.随机数可由计算机产生 Matlab 的统计工具箱提供了 21 种随机数发生函数, 例如: 1. (a,b) 区间上的连续均匀分布随机数:unifrnd(a,b) 2. 正态分布随机数 normrnd(mu, sigma) 它满足均值为 mu, 方差为 sigma 的正态分布。 3. =2 的指数分布随机数 exprnd(1/2) 特别,rand=unifrnd(0,1)是在区间(0,1)上的均匀分布的随机数,Randn=normrnd(0,1)是服从 N(0,1) 正态分布的随机数。 Matlab 程序 unifrnd(0,1,1,6)=rand(1,6) ans = 0.4303 0.3455 0.9137 0.1602 0.3879 0.9672 unifrnd(0,10,1,5) ans = 6.1543 7.9194 9.2181 7.3821 1.7627 unidrnd(10,1,10) ans = 10 3 7 5 9 8 5 1 9 5 normrnd(1,1/3,1, 6) ans = 1.0515 1.8602 0.5646 1.3412 1.2593 0.7220 normrnd(0,1,1,6)=randn(1,4) ans = -0.4326 -1.6656 0.1253 0.2877 20.模拟随机现象 例 1. 顾客到达收款台的的规律是: 40% 的时间没有人来, 30% 的时间有 1 个人来, 30% 的 时间有 2 个人来。模拟十分钟内顾客到达收款台的情况。 每分钟到达超市收款台的人数是随机变量 n {0,1,2},具有分布列 0 1 2 nk 0.4 0.3 0.3 pk 模拟方法:取(0,1) 区间上均匀连续分布的随机数 y=rand, 记 n 为新到的顾客数, 当 0y<0.4 时, 令 n=0 ; 当 0.4 y<0.7 时,令 n=1 ; 当 0.7 y 1 时, 令 n=2 。
a
b



p (t )dt 1
的分布函数
则称 函数 p(x) 为随机变量
的分布密度, 称 F(x)= P((-, x))为随机变量
几类常见的随机分布 两点分布 只有两种可能结果(成功、失败)的实验称为贝努里试验。试验成功的概率为 p


1 成功 0 失败
二项分布
p P( x) 1 p
随机模拟与系统仿真
一. 随机现象的模拟 例: 超市出口有若干个收款台,两项服务:收款、装袋。顾客的到达的时间间隔是随机的; 因顾客购买的货物量不同,所以服务时间的长短也是随机的。 可以利用计算机产生服从一定的规律(概率分布)的(伪)随机数,用随机数确定时间间隔和服 务时间。 1. 随机变量及其分布 随机事件:在一定条件下有可能发生的事件, 其全体记为 。 概率:随机事件 A 发生的可能性的度量 P(A), 0 P(A) 1. 定义: 在的-集合类 F 上的实值函数,P: P(), F , 满足: 1. 非负性:P()0, 2. 规范性:P()=1, 3. 可列可加性:对 =UA i , {A i }是两两不相容的事件,则 P()= P(A i ) , 称 P 为 F 上的概率测度. 随机变量: 称在上定义的实值函数 :A (A) 为随机变量。 离散型: {a k ;k=1,2,…(,n)}, 连续型: (a, b) . 随机变量的分布函数:F(x):=P( <x):=P(-1 (- , x)), 其中 -1 (-,x)={A ; - < (A)<x} F 离散型 若
3
3. 运行检验:确定初始状态,参量数值,运行程序,检验结果,改进模型。 4. 输出结果 三. 动态系统的仿真 1. 时间步长法:把整个仿真过程分为许多相等的时间间隔,每个间隔为一个时间单位—时间 步长。在每个时间步长内模拟系统的动态。 用以控制时间步进(每一次进一个步长)的程序称为仿真时钟。 例 池水含盐 池中有水 2000 m3,含盐 2 kg,以 6m3 / 分 的速率向池中注入浓度为 0.5 kg / m3 的盐水, 又以 4 m3 / 分的速率从池中流出混合后的盐水。问欲使池中盐水浓度达到 0.2 kg / m3,需要多 长时间? 系统分析:池中有盐水,匀速注入浓盐水,匀速流出混合后的盐水,池中盐水的浓度变化。 目的:仿真池中盐水浓度的变化,给出达到给定浓度的时间。 模型: 变量、 参量:时间 t, 体积 V(t), 盐量 S(t), 浓度 P(t); 流入流速 r I =6, 流入浓度 p I =0.5 , 流出流速 r 0 =4, 流出浓度 P(t), 给定浓度 p*=0.2 时间步长 t=1 , 打印步长 T 0 =10. 初始状态: V(0)=2000, S(0)=2, P(0)=0.001 平衡关系: V( t+ t)=V(t)+ (r i – r 0 ) t S( t+ t)=S(t)+ (r i p i – r 0 p(t)) t P ( t+ t)=S( t+ t) /V( t+ t) 目的:求 t , 使得 P(t - t)<p*, P(t)>=p* 动态系统模拟的伪代码 运算 池水含盐动态系统模拟 变量 t=仿真时钟 T=打印时钟 v(t)=在 t 时刻池中盐水体积 p(t)= 在 t 时刻池中盐水浓度 s(t)= 在 t 时刻池中盐水含盐量 Δt=时间单位 t 0 =初始时刻 T 0 =打印时间 P*=停止阈值 输入 Δt=1,t 0 =0, p*=0.2, v(0), p(0), s(0). 过程 Begin t=t 0 ; while p(t)<p* do Begin T=0; While T< T 0 do Begin t=t+Δt; T=T+Δt; v(t)←v(t-Δt)+(r I -r 0 )Δt; s(t)←s(t-Δt)+[r i p i -r 0 p(t-Δt)]Δt; p(t)←s(t)/v(t);
P ( ak ) pk ,
p
k 1
n
k
1
则称 a1 a2 … an ak P(=a k ) p 1 p2 … pn 为离散随机变量 的分布列, 称函数 F(x)=P( <x)= ak<x p k 为随机变量 的分布函数。 连续型 若
P( [a, b]) p (t )dt

2
能够用(0,1)区间上均匀连续分布的随机数这样来模拟离散的随机现象的理由如下: 设离散型随机变量 有分布列 p k =P{=a k }, k=1,2,…n.。令
p ( k ) pi ,
i 1
k
p ( 0) 0
p ( k ) p ( k 1) ,
p (n) 1
则得到数组{p(k); k=1,2,…n.} 以 p(k)为分点,将[0,1]分为 n 个小区间。取服从[0, 1]区间上 均匀分布的随机数 R[0, 1]。则容易证明: P( “ p(k-1) < R < p(k) ” ) = p k = P ( “ = a k ” ). 即随机 事件 “ p(k-1) < R < p(k) ” 与 “ =a k ” 有相同的概率分布。 因此,可以取在[0, 1]区间上均匀连续分布的随机数R=rand ,当p(k-1) < R < p(k)时,则认为事件 =a k 发生。 每隔一分钟记录一次系统状态,模拟 10 分钟的过程如下。 r=rand(1,10); for i=1:10; if r(i)<0.4 n(i)=0; elseif 0.4<=r(i)&r(i)<0.7 n(i)=1; else n(i)=2; end; end 两次运行的结果: >> r r =0.5678 0.7942 0.0592 0.6029 0.0503 0.4565 0.0185 0.8214 0.4447 0.6154 >> n n=1 2 0 1 0 1 0 2 1 1 >>r r =0.2311 0.6068 0.4860 0.8913 0.7621 0.7919 0.9218 0.7382 0.1763 0.4057 >>n n=0 1 1 2 2 2 2 2 0 1 例 2.顾客到达收款台的平均间隔时间是 0.5 分钟。模拟 10 位顾客到达收款台的情况。 假设顾客到达的时间间隔服从 1/=0.5 的指数分布。 模拟方法:取随机数 r=exprnd(2),后一位顾客到达时间=前一位顾客到达时间+y。记 t(i)为第 i 位顾客到达收款台时间。 模拟 10 位顾客到达收款台的过程如下。 r=exprnd(2,1,10);t=zeros(1,10); t(1)=r(1); for i=2:10 t(i)=t(i-1)+r(i); end 结果: >>r = 0.1023 2.9295 0.9990 1.4432 0.2302 0.5434 1.5685 7.9796 0.3935 1.6207 >>t= 0.1023 3.0318 4.0308 5.4739 5.7041 6.2474 7.8159 15.7955 16.1890 17.8097 二. 系统仿真(Simulation) 1. 系统仿真:使用计算机对一个系统的结构和行为进行动态模拟,为决策提供必要的参考信 息。 特点:对象真实、复杂,进行模仿。 2. 仿真模型:由计算机程序控制运行,从数值上模仿实际系统的动态行为。 3. 仿真过程 1. 现实系统的分析:了解背景,明确目的,提出总体方案。 2. 组建模型:确定变量,明确关系,设计流程,编制程序。
1

泊松分布 在单位时间间隔内随机事件平均发生的次数 .
P ( k )
k
k!
e ,