排队论的计算机模拟,8.2 排队论模型(二)-----计算机模拟.pdf

排队论模型计算机模拟

排队论中的问题有的可以通过理论计算解决,但当理论计算难以

解决时,则可以考虑采用计算机模拟的方法解决。

问题1 收款台服务问题

该问题中顾客服务时间服从正态分布,不再是负指数分布,不能直接采用前面的

模型计算,因此我们可以考虑采用计算机模拟计算得到需要的结果。

程序见后,某次仿真结果为:

顾客平均逗留时间 13.32秒, 系统工作强度 0.659

Matlab模拟计算程序:

n=10000; %模拟顾客数

dt=exprnd(10,1,n); %到达时间间隔

st=normrnd(6.5,1.2,1,n); %服务台服务时间

%st=exprnd(2.5,1,n); %服务台服务时间

a=zeros(1,n); %每个人到达时间

b=zeros(1,n); %每个人开始接受服务时间

c=zeros(1,n);%每个人离开时间

a(1)=0;

for i=2:n

a(i)=a(i-1)+dt(i-1);%第i个人到达时间

end

b(1)=0;%第1个人开始服务时间为到达时间

c(1)=b(1)+st(1); %第1个人离开时间为服务时间

for i=2:n

if(a(i)<=c(i-1)) b(i)=c(i-1);

else b(i)=a(i);

end

c(i)=b(i)+st(i); %第i个人离开时间为其开始服务时间+接受服务时间

end

cost=zeros(1,n); %记录每个人在系统逗留时间

for i=1:n

cost(i)=c(i)-a(i); %第i个人在系统逗留时间

end

T=c(n); p=sum(st)/T; %服务率

avert=sum(cost)/n; %每个人系统平均逗留时间

fprintf('顾客平均逗留时间%6.2f秒\n',avert);

fprintf('系统工作强度%6.3f\n',p);

问题2 卸货问题

解答:该问题可以看作单服务台的排队系统。到达时间服从的是给定的离散分

布,服务时间也不服从负指数分布。不能直接利用理论公式求解,可采用计算机模

拟求解。

1. 随机到达船数的产生

首先我们需要产生每天随机到达的船数,该随机数服从离散分布

,可以先产生一个0~1之间的均匀随机数,其落在不同区间则寿命取

不同值,具体见表2 。

2. 计算机仿真分析

某次模拟结果为:

每天推迟卸货的平均船数2.68 。

下面是Matlab实现程序

1) 产生随机到达船数的函数BoatNumber.m

function X=BoatNumber

Boat=0:7; %到达船数取值范围

%到达船数概率分布

Prob=[0.05,0.1,0.1,0.25,0.20,0.15,0.1,0.05];

n=length(Prob);

Qu=zeros(1,n+1);

Qu(1)=0;

for i=1:n

Qu(i+1)=Qu(i)+Prob(i); %产生概率区间

end

Qu(n+1)=1.01;

%将最后一个数值超过1,便于后面的随机数r取到1

%产生一次到达船数

r=rand(1); %产生一个[0,1]随机变量

for i=1:n

if(r>=Qu(i)&&r

end

end

return

2) 模拟计算的主程序Boat.m

n=10000; %模拟总天数

x=zeros(n,1); %存储每天到达船数

a=zeros(n,1); %存储每天需要卸货的船数

b=zeros(n,1); %存储每天实际卸货的船数

d=zeros(n,1); %存储每天推迟卸货的船数

for i=1:n

x(i)=BoatNumber; %模拟n天到达船数

end

a(1)=x(1);

if a(1)>4 b(1)=4; %计算每天实际卸货船数

e

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值