排队论的计算机模拟,排队论模型(八):Matlab 生成随机数、排队模型的计算机模拟...

1 产生给定分布的随机数的方法+ ?7 _' l  B. q2 t( a

Matlab 可以产生常用分布的随机数。下面我们介绍按照给定的概率分布产生随机数的一般方法,这些方法都以U(0,1) 分布的随机变量为基础。9 T8 K  d1 b' [' z3 |

9 ^1 k0 Q+ z, h9 @5 C(i)反变换法

8 h, |# }# T7 }; \$ y. w% ^3 @1 M定理 设 X 是一个具有连续分布函数 F(x) 的随机变量,则 F(X ) 在 [0,1] 上服 从均匀分布。

3 A/ F! a" ], c, k" \) q

/ Z! H; _. Y, l& z3 w6 }, y. Y

forum.php?mod=viewthread&tid=467061

) ]% D: X" ~- q

0 S* Z& a- `; |0 p5 a) N; \

forum.php?mod=viewthread&tid=467061l  c. B- j3 D  s

1 ]* s5 i" Z: r# c- Q(ii)卷积法

8 h& N1 D& k/ V2 v$ H5 K" b' C8 ], W' y

forum.php?mod=viewthread&tid=467061( }' W) s) d& z

+ a0 O+ h$ w1 f, Q( @

(iii)取舍法

1 L8 j, l2 I5 F: w3 Z5 K# g若随机变量 X 在有限区间(a,b) 内变化,但概率密度 f (x)具有任意形式(甚至没 有解析表达式),无法用前面的方法产生时,可用取舍法。一种比较简单的取舍法的步 骤是:* b' S& g6 _/ K! K

* C: e: W; E7 A7 J

forum.php?mod=viewthread&tid=467061

+ x4 n3 |( e' n+ k( b) L

9 i% W4 r: [& \9 r/ c0 U5 B+ y2 排队模型的计算机模拟

+ q/ m' b1 E- y6 _0 I! X, ]2.1 确定随机变量概率分布的常用方法

3 F0 F$ O5 V: b在模拟一个带有随机因素的实际系统时,究竟用什么样的概率分布描述问题中的随 机变量,是我们总是要碰到的一个问题,下面简单介绍确定分布的常用方法:

1 k1 F2 _$ G- c- [2 [

# N  w. I3 K3 j0 J: r+ r7 d【1 】根据一般知识和经验,可以假定其概率分布的形式,如顾客到达间隔服从指数 分布 Exp(λ) ;产品需求量服从正态分布   ;订票后但未能按时前往机场登机 的人数服从二项分布 B(n, p) 。然后由实际数据估计分布的参数 λ,μ,σ 等,参数估计 可用极大似然估计、矩估计等方法。) I0 |* p$ ]4 w3 @3 U

: B* M: k. ~: r0 M) _: o0 b& z

【2】 直接由大量的实际数据作直方图,得到经验分布,再通过假设检验,拟合分布 函数,可用  检验等方法。 3 o 既缺少先验知识,又缺少数据时,对区间(a,b) 内变化的随机变量,可选用 Beta 分布(包括均匀分布)。先根据经验确定随机变量的均值 μ 和频率最高时的数值(即密度函数的最大值点)m ,则 Beta 分布中的参数   可由以下关系求出:

1 P' I# ^/ O) }3 }! G! J% J1 j# g. J1 y" ]- D. G: V

forum.php?mod=viewthread&tid=467061/ c8 X1 j. V( m4 I$ E- u7 G

$ J; Q: s7 s2 D& J! g; x

2 .2  计算机模拟

9 W' L3 o+ o9 j7 f% t# `7 k4 l4 ^1 X当排队系统的到达间隔时间和服务时间的概率分布很复杂时,或不能用公式给出 时,那么就不能用解析法求解。这就需用随机模拟法求解,现举例说明。7 ?6 z8 R& e9 a8 P

0 J  L  D  ]& X% ~9 m2 g. |' W

例 14 设某仓库前有一卸货场,货车一般是夜间到达,白天卸货,每天只能卸货 2 车,若一天内到达数超过 2 车,那么就推迟到次日卸货。根据表 3 所示的数据,货车到 达数的概率分布(相对频率)平均为 1.5 车/天,求每天推迟卸货的平均车数。

/ t2 o: z7 v7 y  ?5 D4 G- \k" e+ q8 l/ b1 l# l

forum.php?mod=viewthread&tid=467061

: _& l, e5 D/ R4 w4 V, d" ?- j; w6 R

解 这是单服务台的排队系统,可验证到达车数不服从泊松分布,服务时间也不服 从指数分布(这是定长服务时间)。 随机模拟法首先要求事件能按历史的概率分布规律出现。模拟时产生的随机数与事 件的对应关系如表 4。3 p6 ]' G/ x7 F

2 a; q$ P" p, j4 M  b1 t0 |

forum.php?mod=viewthread&tid=4670617 c% I8 F1 a- @4 `

# z3 s# |) c. r2 W+ g% |) D& O

我们用 a1 表示产生的随机数,a2 表示到达的车数,a3 表示需要卸货车数,a4 表 示实际卸货车数,a5 表示推迟卸货车数。编写程序如下:4 M7 O" v0 f( Y% a

4 h- \! T/ v2 L) c

clear

! K3 y( L% n2 \/ ?5 f: Y5 |1 Lrand('state',sum(100*clock));

* X  B- O& _. b& tn=50000;

5 d' \3 `% f- ]+ \- i3 |m=2

: }. `0 c( Y! q- @a1=rand(n,1);

/ n+ F& I  U1 W1 Ca2=a1; %a2初始化3 c+ r: I1 C  F' }

a2(find(a1<0.23))=0;' s6 @# f" e% o

a2(find(0.23<=a1&a1<0.53))=1;

_' P) E2 D; K7 p' z( Na2(find(0.53<=a1&a1<0.83))=2;+ {! K8 }; w; C

a2(find(0.83<=a1&a1<0.93),1)=3;

( J# K3 \8 s% `a2(find(0.93<=a1&a1<0.98),1)=4;8 n! w" S3 K7 v( ^2 }

a2(find(a1>=0.98))=5;

# `$ ]% x, V6 u3 j; L, Ba3=zeros(n,1);a4=zeros(n,1);a5=zeros(n,1); %a2初始化+ r: r' e, _8 A. W6 a! K

a3(1)=a2(1);

0 Q% c: D$ h! I0 A+ wif a3(1)<=m

4 |4 U4 I: |" `6 k0 x/ L9 ]' c    a4(1)=a3(1);a5(1)=0;- @0 s  o! D5 ?/ b' e5 \" O

else

% J, Z) S% W5 L. a* ^$ B. M( F     a4(1)=m;a5(1)=a2(1)-m;2 ]8 V$ ?' e! s4 \

end

. R4 h9 v$ L' {5 Q3 u! n' c) S& Kfor i=2:n9 e! u2 ?+ }3 \9 t+ g) a& y4 L

a3(i)=a2(i)+a5(i-1);

0 G3 Z- n  V) p) `, Q    if a3(i)<=m' S1 S/ N! a( P* [9 D

a4(i)=a3(i);a5(i)=0;2 f8 F) k6 @* I# n; x( ~7 I9 s" c

else0 i" k" z, |( t# e1 s$ {9 d$ Y7 |9 \

a4(i)=m;a5(i)=a3(i)-m;2 ?+ ?! M1 ^5 R! [# p

end3 ~5 @6 T9 G  G1 c9 {# E

end& \4 x3 \0 d! x" A& E  n4 [

a=[a1,a2,a3,a4,a5];9 k5 o/ x$ q: N, s

sum(a)/n 7 G" K% n! E# |" }6 O

例 15 银行计划安置自动取款机,已知 A 型机的价格是 B 型机的 2 倍,而 A 型机 的性能—平均服务率也是 B 型机的 2 倍,问应该购置 1 台 A 型机还是 2 台 B 型机。 为了通过模拟回答这类问题,作如下具体假设,顾客平均每分钟到达 1 位, A 型 机的平均服务时间为 0.9 分钟, B 型机为 1.8 分钟,顾客到达间隔和服务时间都服从 指数分布,2 台 B 型机采取 M / M / 2 模型(排一队),用前 100 名顾客(第 1 位顾客到 达时取款机前为空)的平均等待时间为指标,对 A 型机和 B 型机分别作 1000 次模拟, 进行比较。

( A% K8 g" ~; J" ]' j1 _; C. Z$ a7 w" y

forum.php?mod=viewthread&tid=467061

9 E" \- G6 j2 O

8 O  A7 S6 y. l在模拟 A 型机时,我们用cspan表示到达间隔时间,sspan表示服务时间,ctime 表示到达时间,gtime表示离开时间,wtime表示等待时间。我们总共模拟了m 次, 每次n 个顾客。程序如下:

( n: z/ r& V* N

$ U8 ]2 \! K, u! V  h" mtic

% c$ Y# P% I+ Xrand('state',sum(100*clock));

* U( }6 y7 q6 t0 V" w# V7 un=100;m=1000;mu1=1;mu2=0.9;

; r* W$ G! S6 R  @! Y# `for j=1:m' b1 ?8 u0 k* Y) s* a

cspan=exprnd(mu1,1,n);sspan=exprnd(mu2,1,n);

+ ]6 h5 E# G0 Q0 _) h4 ?    ctime(1)=cspan(1);$ |4 P, p, L+ E

gtime(1)=ctime(1)+sspan(1);

" b  u# f7 t& `% J2 W    wtime(1)=0;4 P2 m: t) B" ]  Y. v4 d

for i=2:nb) K. w: R+ L" {& P

ctime(i)=ctime(i-1)+cspan(i);9 f7 ~: D& e% C; w+ M) a' |: ?; ^

gtime(i)=max(ctime(i),gtime(i-1))+sspan(i);

( m5 I! x5 o3 [+ e. ^7 T        wtime(i)=max(0,gtime(i-1)-ctime(i));

4 C, D. B0 @+ }. z, i; ^. i  P2 e# S    end6 T) q  A6 v' _& j( k* G# l

result1(j)=sum(wtime)/n;

) k  d2 N" d# ^& X$ S) k' u; Gend

4 h" V7 u- ^8 f5 {# P8 hresult_1=sum(result1)/m

- d4 U% y  q& y8 E* |toc

4 s. ^* e( f5 [; m5 c7 o% J; N' H2 W# n类似地,模拟 B 型机的程序如下:

% ~+ f5 I7 k0 x, W6 Z

; l' p$ [5 C+ W5 V3 u  j7 ttic3 g9 \7 j2 J# G; H! r0 c2 d

rand('state',sum(100*clock));

) `- K5 _1 a0 w6 pn=100;m=1000;mu1=1;mu2=1.8;5 R  Y5 _% s/ I6 H* [( ]: F8 A

for j=1:m! v6 a) e' y& l

cspan=exprnd(mu1,1,n);sspan=exprnd(mu2,1,n);

' s& I# f6 G; i    ctime(1)=cspan(1);ctime(2)=ctime(1)+cspan(2);

1 T4 r/ b' y& g  u9 `3 \    gtime(1:2)=ctime(1:2)+sspan(1:2);% i7 i  p: ^# a, s

wtime(1:2)=0;flag=gtime(1:2);

1 X2 U$ |# m; @: |) ~    for i=3:n

/ x# {4 a. s/ x! q% {$ L: Y        ctime(i)=ctime(i-1)+cspan(i);

' F2 \, L* n# h: _        gtime(i)=max(ctime(i),min(flag))+sspan(i);

! g1 N, K6 x3 q1 b8 D        wtime(i)=max(0,min(flag)-ctime(i));+ e, s1 |# k+ U4 W1 Q

flag=[max(flag),gtime(i)];

; r3 Q- [% Y/ n( a$ w: \    end7 c( S+ c1 H; r! q' m# m9 |3 x

result2(j)=sum(wtime)/n;# S8 Q+ {0 z' p7 h6 v* _7 @1 H

end

/ H0 F9 F: z" s" F- K7 d' e6 Tresult_2=sum(result2)/m

$ ?. I0 D, _/ B9 x8 E8 Wtoc

$ y) J1 z& x) ^  i9 x* \7 u读者可以用下面的程序与上面的程序比较了解编程的效率问题。- x1 D/ I0 l  ~# j7 M

6 ~* C" E) J% L# z& [1 I" j% J2 Htic

% g% p2 O! ?( g7 i" x" k2 |2 nclear9 `8 A8 ]1 B; k" h6 S# ^$ h" i

rand('state',sum(100*clock));

l  P& \7 F( _4 |. v& ]n=100;m=1000;mu1=1;mu2=0.9;: n" ?- U' s' `# C0 s9 U+ r& {0 a2 u# b

for j=1:m1 q  d( L( C. O

ctime(1)=exprnd(mu1);

% K0 D# }8 \4 w6 P- E$ S' n    gtime(1)=ctime(1)+exprnd(mu2);

9 C6 w- @$ M5 c& ^7 s4 E    wtime(1)=0;

; P2 [5 ?) T# d) Z1 G9 C    for i=2:n2 J& j2 C  }) C$ {4 P# N

ctime(i)=ctime(i-1)+exprnd(mu1);: Y5 I# S/ n1 B2 S, o" P; ~

gtime(i)=max(ctime(i),gtime(i-1))+exprnd(mu2);

* J3 S) ~  ]" H  I+ T$ G! X$ W9 `        wtime(i)=max(0,gtime(i-1)-ctime(i));

; D( T; S& r. {: J/ d8 x6 L    end* G; w3 j: w( I( W' U

result(j)=sum(wtime)/n;

D/ C: X2 T+ J+ \end

% [; C& }( v. t6 l8 |+ d; ^result=sum(result)/m1 M2 O% h* J5 b  F+ O5 b

toc

' v8 L  t- A& |$ G; Q1. 一个车间内有10台相同的机器,每台机器运行时每小时能创造4元的利润,且平 均每小时损坏一次。而一个修理工修复一台机器平均需4小时。以上时间均服从指数分 布。设一名修理工一小时工资为6元,试求:

, Q6 C8 \% _$ ]; D

2 z% T0 D, R& X+ q(i)该车间应设多少名修理工,使总费用为最小;

& F% G" c4 T6 ]6 {2 m/ p6 i3 C) j

(ii)若要求不能运转的机器的期望数小于4台,则应设多少名修理工;$ ]9 k: l% W  V) F

3 M9 f( p3 ?0 T1 Z(iii)若要求损坏机器等待修理的时间少于4小时,又应设多少名修理工。

+ o0 L6 J& a5 E8 A

# b+ U6 H+ K! N6 {* W' B: n1 x- W2. 到达某铁路售票处顾客分两类:一类买南方线路票,到达率为λ1 /小时,另一 类买北方线路票,到达率为λ2 /小时,以上均服从泊松分布。该售票处设两个窗口,各窗口服务一名顾客时间均服从参数 μ = 10 的指数分布。试比较下列情况时顾客分别等 待时间Wq :0 q7 G1 a: K9 `% T& z7 R

1 C; T) c) z* a" N

(i)两个窗口分别售南方票和北方票;

! p7 `2 a9 @: L' l5 O! O

$ }+ p  y  ]  _; n(ii)每个窗口两种票均出售。(分别比较 λ1 = λ2 = 2,4,6,8 时的情形)

& y: c$ t& A- F& ]4 k8 N; a# C. `: A- `) h3 X

3. 一名修理工负责5台机器的维修,每台机器平均每2h损坏一次,又修理工修复一 台机器平均需时18.75min,以上时间均服从负指数分布。试求:2 f% a& p$ a: S+ ^  i3 i

2 m7 O8 O7 E* W. d" A5 X/ q7 H2 f; P& c) F(1)所有机器均正常运转的概率;2 G! u: P6 g' s+ v& S$ r

2 B, H5 c9 L$ c) A( g' U- Z5 r

(2)等待维修的机器的期望数;

. Y, S7 [& k4 A: C6 q2 o: F& g2 V2 W: J2 X+ Y" p" ^; g& X# b

(3)假如希望做到有一半时间所有机器都正常运转,则该修理工最多看管多少台 机器。7 G5 N' k- N/ f: z& c& u

7 i+ H, j& F3 U+ w" |" m& G. ?- A

(4)假如维修工工资为8元/h,机器不能正常运转时的损失为40元/h,则该修理工 看管多少台机器较为经济合理。

1 x$ w4 u" a: Y0 r9 n) s————————————————

8 `8 [6 ]' E  |  M版权声明:本文为CSDN博主「wamg潇潇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

9 W6 `7 @# I' v' K$ z原文链接:https://blog.csdn.net/qq_29831163/java/article/details/89738145

9 {( O2 J' p0 g  K

# S5 }! h8 I0 Y% K6 L& z- M

% L* h! b+ G. t5 \

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值