数学建模必看--随机模拟与系统仿真
?3.5
一. 随机现象的模拟
例: 超市出口有若干个收款台,两项服务:收款、装袋。顾客的到达的时间间隔是随机的;
因顾客购买的货物量不同,所以服务时间的长短是随机的。 模拟这些随机现象,即利用计算机产生一系列数,每重复这一过程,产生的数列都不同,但是
数列的构成服从一定的规律(概率分布),称这些数为随机数。
1. 随机变量及其分布
随机事件:在一定条件下有可能发生的事件, 其全体记为, 。 概率:随机事件A , ,发生的可能性的度量 P(A), 0 ,P(A) , 1.
定义: 在,的,-集合类F上的实值函数,P: , , P(,), , , F , 满足: 1. 非负性:P(,),0,
2. 规范性:P(,)=1,
3. 可列可加性:对 , =UA ,,, {A }是两两不相容的事件,则 P(,)= ,P(A) , iii
称P为F上的概率测度.
随机变量: 称在,上定义的实值函数 , :A , , (A) 为随机变量。
离散型: , ,{a;k=1,2,…(,n)}, k
连续型: , ,(a, b) . -1-1随机变量的分布函数:F(x):=P(,
证明
住所证明下载场所使用证明下载诊断证明下载住所证明下载爱问住所证明下载爱问
: P( p< R < p) = p= P (, = a ). 即随机事件 k k(k-1) (k) ― p< R < p‖ 与 ―, =a‖ 有相同的概率分布。因此取可以取在[0, 1]区间上均匀分布的随机k(k-1) (k)数R=rand ,当p< R < p时,则认为事件 , =a发生。 k
例如,―顾客到达收款台的的规律是:40%的时间没有人来,30%的时间有1个人来,30%的时间有2个人来。‖ 取随机数 y=rand, 记n为新到的顾客数, 则当0,y<0.4时, 令n=0; 当0.4 , y<0.7时,令n=1;当0.7, y, 1时,令n=2。
03.模拟连续随机变量
设连续型随机变量,具有分布函数F(x), 记 ,为[0, 1]上服从均匀分布的随机变量。令-1-1,=F(,), 则 P(,,(-,, x))= P(F(,) ,(-,, x)) =P(,,(-,, F( x)))= F(x), 即,与, 同分布。因-1此可以取在[0, 1]区间上均匀分布的随机数y=rand , 令 x=F(y), 则x 为服从分布函数为F(x) 的随机数.
例如, ― 顾客到达收款台的平均间隔时间是0.5 分钟‖, 即认为顾客到达的时间间隔服从
1/,=0.5 的指数分布,由随机数y=rand ,得到服从指数分布的随机数x= - ln y/ ,。 于是,后一位顾客到达时间-前一位顾客到达时间=x.
1/2 特别,当y=randn 是服从N(0,1) 正态分布的随机数时, x=,+,y 是服从N(,, ,) 正态分布.
二. 系统仿真(Simulation)
1. 系统仿真:使用计算机对一个系统的结构和行为进行动态模拟,为决策提供必要的参考信
息。 特点:对象真实、复杂,进行模仿。
2. 仿真模型:由计算机程序控制运行,从数值上模仿实际系统的动态行为。
3. 仿真过程
1. 现实系统的分析:了解背景,明确目的,提出总体
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
。
2. 组建模型:确定变量,明确关系,设计流程,编制程序。
3. 运行检验:确定初始状态,参量数值,运行程序,检验结果,改进模型。
4. 输出结果
2
三. 动态系统的仿真
1. 时间步长法:把整个仿真过程分为许多相等的时间间隔,每个间隔为一个时间单位—时间步长。在每个时间步长内模拟系统的动态。
用以控制时间步进(每一次进一个步长)的程序称为仿真时钟。 例 池水含盐
33 3 池中有水 2000 m,含盐 2 kg,以 6m/ 分 的速率向池中注入浓度为 0.5 kg / m的盐水,3 3又以 4 m/ 分的速率从池中流出混合后的盐水。问欲使池中盐水浓度达到 0.2 kg / m,需要多
长时间?
系统分析:池中有盐水,匀速注入浓盐水,匀速流出混合后的盐水,池中盐水的浓度变化。
目的:仿真池中盐水浓度的变化,给出达到给定浓度的时间。
变量、参量: 时间 t,体积 V(t), 盐量 S(t), 浓度 p(t); 流入流速 r=6,流入浓度 p=0.5 , II
流出流速 r=4, 流出浓度 p(t), 给定浓度 p=0.2 O*
时间步长 ,t=1 , 打印步长 T=10.
平衡关系:
V( t+ , t)=V(t)+ (r – r), t IO S( t+ , t)=S(t)+ (r p– rp(t)), tIIO
P ( t+ , t)=S( t+ , t) /V( t+ , t)
初始状态:
V(0)=2000, S(0)=2, p(0)=0.001
Matlab程序
clf
t=1; v=[2000];s=[2];p=[1/1000];
V=[v(end)];S=[s(end)];P=[p(end)];x=[0];
while p(end)<=0.2
T=0;
while T<10
T=T+1; t=t+1;
v=[v 1];s=[s 1];p=[p 0];
v(t)=v(t-1)+2;s(t)=s(t-1)+3-4*p(t-1);p(end)=s(end)/v(end);
if p(end)>0.2
T=20;
end;
end;
x=[x t-1];V=[V v(end)];S=[S s(end)];P=[P p(end)];
end; V1=10^3.*V; a=[x',V1',S',P']
例 市场服务
超市有两个出口的收款台,两项服务:收款、装袋。两名职工在出口处工作。有两种安排
方案:开一个出口,一人收款、一人装袋;开两个出口,每个人既收款又装袋。问商店经理应
选择哪一种收款台的服务方案。
选择服务方案的标准:1. 顾客等待时间长短,2. 每分钟服务的顾客数量,3.服务的工作效率。
这里我们以第1个标准选择服务方案。
假设:
1. 顾客的到达收款台是随机的, 服从规律:40%的时间没有人来,30%的时间有1个人来,30%的时间有2个人来。
2. 收款装袋的时间是相同的。
3. 第一种方案中,收款与装袋同时进行。
参量,变量:n(t) 在时刻 t 到达收款台人数, L(t) 在时刻 t 在收款台等待人数,
3
T1(t) 到时刻 t为止所有排队顾客等待时间的总和。
T2(t) 到时刻 t为止,所有已交款顾客接受服务的总时间,
, 收款或装袋的时间。
平衡关系:当 L(t)=0 且 n(t)=0 时, L(t+, t)=L(t); T1(t+, t)=T1(t); T2(t+, t)=T2(t);
否则 L(t+, t))=L(t)+n(t)-1; T1(t+, t)=T1(t)+l(t); T2(t+, t)=T2(t)+ ,
取时间步长 ,t=1 , 收款或装袋的时间, =1 。 在t时刻, 取随机数r=rand,
当0,r<0.4时, n(t)=0,
当0.4, r<0.7时, n(t)=1,
当0.7, r ,1时, n(t)=2.
仿真30分钟内收款台处的排队情况,
Matlab程序
clf
L=zeros(1,31); %L 等待的顾客人数,
T1=zeros(1,31); %T1等待时间的累加,
T2=zeros(1,31); %T2服务时间的累加,
L1=zeros(1,31);% L1到达顾客人数累加。 t=1; tau=1; x=0:30; r=rand(1,30);
for i=1:30;
t=t+1;
if 0<=r(i) & r(i)<0.4
n=0;
elseif 0.4<=r(i) & r(i)<0.7
n=1;
else n=2;
end;
if L(t-1)==0 & n==0
L(t)=L(t-1);T1(t)=T1(t-1);T2(t)=T2(t-1);L1(t)=L1(t-1);
else
L(t)=L(t-1)+n-1;T1(t)=T1(t-1)+L(t);T2(t)=T2(t-1)+tau; L1(t)=L1(t-1)+n;
end;
end;
r=[0 r]; a=[x',r',L',L1',T1',T2']
eL=T2(end)/tau %已被服务的人数, L2=(find(L1>eL))
L3=sum(L(L2))%未被服务的顾客等待时间总和 g1=(T1(end)-L3)/eL %平均等待时间
g2=g1+tau %平均逗留时间
g3=eL/30 %平均每分钟服务的顾客人数.
练习
飞向蓝天的恐龙练习非连续性文本练习把字句和被字句的转换练习呼风唤雨的世纪练习呼风唤雨的世纪课后练习
:编写设两个收款台时的仿真程序,根据两个模拟结果评价两个方案。
2. 事件表法(面向事件法):每处理一个事件就前进一步(每步的时间可能不同),以事件为中
心安排。对系统中的一系列不同类型的事件按发生的前后顺序逐个进行分析、处理。
事件表:记录今后将要发生的事件及其属性(发生的时间,事件的类型等),调度事件执行
的顺序。它随着程序的执行过程不断地更新和补充以保证仿真过程有序地进行。
4
例 市场服务
假设:1. 顾客的到达收款台是随机的,平均时间间隔为0.5分钟,即间隔时间服从,=0.5的负指
数分布。2. 对不同的顾客收款和装袋的时间服从正态分布 N(1,1/3)。
参量,变量: t(i): 第i位顾客到达时间,t2(i):第i位顾客受到的服务时间(随机变量),T(i): 第
i位顾客离去时间.
将第i位顾客到达作为第i件事发生; t(i+1)- t(i)= t1(i) (随机变量)
平衡关系:
当 t(i+1),T(i) 时, T(i+1)=t(i+1)+t2(i); 否则, T(i+1)=T(i)+t2(i) 模拟20位顾客到收款台前的排队情况。
Matlab程序
clf
t=zeros(1,21);%每位顾客到达时间
T=zeros(1,21);%每位顾客离去时间
w=zeros(1,21);%顾客等待时间累加
ww=zeros(1,21);%收款台空闲时间累加 r=rand(1,21);t1=-log(r)./2;%服从指数分布的随机数 t2=1/2.*(1+(1/3)^(1/2) .*randn(1,21)+abs(1+(1/3)^(1/2).*randn(1,21)));%服从正态分布的随机数列
for i=1:1:20
t(i+1)=t(i)+t1(i);
if t(i+1)>=T(i);
w(i+1)=w(i); T(i+1)=t(i+1)+t2(i); ww(i+1)=t(i+1)-T(i)+ww(i);
else w(i+1)=T(i)-t(i+1)+w(i); T(i+1)=T(i)+t2(i); ww(i+1)=ww(i);
end;
end;
b=[t',T',w',ww'];
%求队伍长
[brow,bcol]=size(b);
b=[b,zeros(brow,1)];
b(1,bcol+1)=0;
for j=2:brow
l=0;
if j-l-1>0
while b(j,1)<=b(j-l-1,2)
l=l+1;
end;
b(j,bcol+1)=l;
end;
end; b
g1=w(end)/20 %平均等待时间
g2=sum(T-t)/20 %平均逗留时间
g3=T(end)/20 % 3. 系统仿真软件
MATLAB---SIMULINK
Simulink 是一个用来对动态系统进行建模、仿真和分析的软件包。它支持线性和非线性系
统,连续和离散时间模型等。
Smulink 提供了一个图形化的用户界面,可以用鼠标点击和拖拉模块的图标建模。通过图
形界面,可以象用铅笔在纸上画图一样画模型图。
5
Simulink 包括一个复杂的由接受器、信号源、线性和非线性组件及连接件组成的模块库,
每个组件是包含若干模块的模块集。当然也可以定制或者创建用户自己的模块。
Simulink 可以对模型进行仿真,使用显示模块可以在运行仿真时观察到仿真的结果。还可
以改变参数并且立即就可以看到它的变化。仿真结果放在工作空间(workspace)中以待进一步的处理或可视化。
Simulink 使用不同窗口分别显示模块库,模型和仿真图形的输出:simulink library browser, model space, work space.
使用命令―simulink‖ 或工具条中的快捷钮进入模块库浏览器。
在―File‖下点击―Model‖就可以进入模型空间组建模型。直接从模块库中将模块拖拉过来就
可以拼接成所需要的模型。它可以以 .M 文件的形式保存下来。
打开 Scope 模块以观察仿真的结果。
选择菜单―Simulation‖的―Parameters‖以打开
―Simulation parameters‖窗口设置参数。
选择―simulation | start‖菜单开始仿真,并观察Scope模块的输出。 例 池水含盐的仿真
问题
1. 在池水含盐的问题中令r
3=r=6m/分 OI0 1. 池中盐水的浓度如何变化? 03 3 2. 若当p(t) = 0.3kg/m时令p=0,需要多少时间达到 p= 0.2kg / m? I*0 3. 若池中盐水的初始浓度为 p,对于不同的初始体积V,当p=0时,计算池中盐水浓*0I
度降低一半所用的时间。
2. 进一步建模分析市场服务的问题,
0 1. 假设对不同的顾客一位服务员收款并装袋所需的服务时间服从正态分布 N(1,1/3),
两位服务员分别收款装袋所需的服务时间服从正态分布 N(0.6,0.2). 0 2. 假设顾客到达的平均时间间隔是0.5分钟。
6