体检中的排队论
摘要
一个好的体检排队方案不仅可以提高体检中心的体检效率和仪器的使用率,还可为体检者节约时间和费用。本文利用数学建模的方法,根据排队论知识建立体检中心排队系统的数学模型,通过MATLAB软件求解。 对于问题一、二
对一个新来的顾客要体检,他通过取票进队、排队等待、叫号服务等功能,通过分析发现体检队的队长是随机的,体检所等待的时间是随机的,服务台是否忙碌也是随机的。本文我们主要研究队长的分布和等待时间的分布及忙碌期的分布状况。最终以达到顾客可以最短时间通过所有体检,即以最优化方案得到最接近的方法。
我们采用排队规则中等待制的先到先服务方法求出队列的队长、等待时间、服务窗口的忙碌状态,服务规则是先到先服务以泊松分布方法建模型。最后问题二引用一组数据通过极大似然法验证问题一结论的真实性。
1、平均排队等待的队长
Lq
1n1
n1!n1
2
P0
2、系统队长(或系统中平均顾客数)的均值
LSLqL服Lq1
1
n1!n1
1n1
2
P01
LSLqL服Lq1
n1!n1
2
P01
3、顾客在系统内平均等待时间
Wq
Lq
1n
un!n1
2
p0
对于问题三
分析可知:对于在服务窗口忙碌情况下,则团队人数N与可服务窗口n数量是不确定,因此我们需要分为三种情况来讨论。
第一种情况:团队人数
第二种情况:团队人数
第三种情况:团队人数>服务窗口数并在排队规则等待制中的先到先服务情况下。
关键字: 排队论 泊松分布 负指数分布 极大似然法 最优化方案
一、 问题重述
某城市的体检中心每天有许多人前去体检,全部体检项目包括:抽血、内科、外科、B超、五官科、胸透、身高、体重、„等等。每个人的体检项目可能各不相同,假设每个体检项目的服务时间是确定的,并且只有1个医生值班,每次只能为1个客户服务。为提高设备利用率、降低客人的等待时间,中心请你帮助完成如下任务:
(1)为某个新来的客人安排他的体检顺序,使其完成需要的全部检查的时间尽量少(在各个体检项目处都可能有人排队等待);
(2)设计1组数据来验证上述结论。
(3)接待团体客人时,如何安排每个人的体检顺序,使得体检中心能尽快完成任务,设计1组数据来验证该结论。
二、 问题分析
问题一
每个体检项目的服务时间是确定的,并且只有1个医生值班,每次只能为1个客户服务。经过分析发现顾客要体检,他通过取票进队、排队等待、叫号服务等功能,对他而言体检的队长是随机的,体检所等待的时间是随机的,服务台是否忙碌也是随机的。本文我们主要研究队长的分布和等待时间的分布及忙碌期的分布状况。最终尽可能使顾客可以最短时间通过所有体检,即以最优化方案得到最接近的方法,服务规则是先到先服务,以泊松分布方法建模型。
顾客到达体检中心排队流程示意图
图1排队模型框图
由排队论中M/M/1模型中假设顾客到达时间间隔从参数为λ的泊松分布,顾客的服务时间为固定值t,到达时间与服务时间是相互独立的,且有n个服务台,若顾客到达时服务窗全部处于忙的状态,则进行等待。
1. 平均排队等待的队长
Lq
1n1
n1!n1
2
p0
2. 平均忙着的服务窗个数
L服=ρ1
3. 系统队长(或系统中平均顾客数)的均值
LsLqL服Lq1
1n1
n1!n1
2
p01
4. 顾客在系统内平均等待时间
Wq
Lq
1n
un!n1
2
P0
首先,我们用极大似然估计法来估计泊松分布中报还的未知参数。设总体X服从泊松分布
PXk
k
k!
e,k0,1,2...
得参数λ的极大似然估计量为:
x
问题二
问题二是在问题一的基础上研究的,所以我们用一组数据通过极大似然法来验证其是否正确。
因为每个体检项目中只有一个服务台并只为顾客服务,故系统只有两种可能的状态:0——服务台空闲;1——服务台正在为顾客服务
图2 服务系统流程图
说明:
表示一个顾客进入体检时,服务系统就从状态“0”以变换到状态“1”。当体检的一个项目完毕,顾客离开系统,系统从状态“1”以服务速率µ变到状态“0”。 把“输入=输出”看作系统的稳态,
即:
P0 = µP1 又因为 P0 + P1 =1
故: P0 = µ/(+µ) (闲着概率) P1 = /(+µ) (忙着概率) 问题三
根据三种不同的状态做出以下的讨论:
第一种情况:团队人数
第二种情况:团队人数
第三种情况:团队人数>服务窗口并在排队规则等待制中的先到先服务情况下。
三、 模型的假设
1. 假设顾客到达服务台后一切均正常进行(服务人员、顾客状态均良好,且仪
器无故障出现),没有突发情况出现。
2. 在本次建模不做出特殊要求的情况下以先到先服务为前提。
从一个项目到另一个项目的时间忽略不计。 四、 符号说明
五、 模型的建立与求解
问题一
顾客到达 图3 多服务窗口排队服务系统
正在接服务的顾客数
3.
图4 单服务窗口系统
问题一是为一个新来的顾客安排一个科学、合理、快速的体检顺序,他面对一个多服务窗口等待制排队系统,我们从单服务系统分析,以单服务系统来求解多服务系统,我们有如下的定理:
定理1 若X(t)表示时刻t系统中的顾客数(队长),则{X(t),t≧0}是状态空间E={0,1,2,···}且生率为:
λ=λk ,k=0,1,2,3„„
灭率为:
μ={knu ku k==0n,+11,,...
2,3...nk
的生灭过程。
定理2 若X(t)表示时刻t系统中的顾客数,设
PklimXtk
t
则当
nu
1时,系统可以达到稳态,且有平稳分布
n1kn1
P1110k0k!n!1!
Ln1
1q
n1!n2
P0
1
对系统进行分析,可计算出如下相应的目标参量: 1、损失概率
在等待制中,因到达系统请求服务的顾客迟早会被服务窗服务,故:
P损=0
2、系统的相对通过能力与绝对通过能力
Q=1-P损=1 A=λQ=λ
3、平均排队等待的队长
Ln1
1q
n1!nP0
1
2
4、平均忙着的服务窗个数
L服=ρ1
5、系统队长(或系统中平均顾客数)的均值
n1
LsLqL服Lq1
1n1!n1
2
p01
6、顾客在系统内平均等待时间
Wq
n
1q
L
un!nP0
1
2
7、顾客在系统内的逗留时间
8、来到系统的顾客必须排队等待的概率
Ws
Ls
Wq
1 u
Cn,1
npn
n1
特别的,当n=1时(即单服务窗口等待制M/M/1排队模型),系统的平稳分布为
k
Pk1 k>=0
故相应的目标参量为:
1. 服务台空闲的概率
P01
2.
系统额相对通过能力与绝对通过能力
Q1P损1
AQ
3. 平均排队等待的队长
Lq
4. 5.
平均忙着的服务窗口个数
2
uu
L服 =ρ
系统队长的均值
Ls
u
首先,我们用极大似然估计法来估计泊松分布中报还的未知参数。设总体X服从泊松分布
PXk
k
k!
e,k0,1,2...
则参数λ的似然函数为:
n
n
LPXxi
i1
i1
x
i1en xi!x1!...xi!
i
xi
n
两边取对数得:
lnLnxilnlnxi!
i1
i1
n
n
得似然方程:
dlnL1n
nxi0 di1
解得:
又可算得:
1n
xix ni1
d2lnLnn
||0 22
xxdx
故得到参数λ的极大似然估计量为:
x
与顾客达到时间一样,进行x拟合检验,同样可验证:该体检中心排队系
统中体检人员接受体检的时间服务参数为u的负指数分布。
综上所述,体检排队模型的假设是成立的。 该顾客总共平均所花时间:
W总N*
Lq
2
N*
1n
un!n1
2
P0
结论:通过假设再论证可知在体检中如果平均等待队长Lq越小,则顾客体检中所用时间就越少,即顾客在检查完一项后,应该选择所有没检查项目中平均队长最短的队列排队检查,且顾客到达该对列的平均到达率最低,这是让顾客以最短时间体检完的较好的方法。
问题二:
系统处于稳态时,对每个状态来说,输入=输出。 对于状态n来说,有:
Pn-1+µPn+1 = (µ+1)Pn n≥1 对于状态“0”,有: P0 = µP1
表2 状态从0到n的稳定方程
求解以上方程组可以得到:
P 0 = 1- ρ 0≤ ρ= /µ ≤1 P n = ρn(1- ρ) n=0,1,2,„
即来到服务台必须等待的概率为: C(n,ρ1)=nρn(1-ρ)/ n-ρ1
图4 顾客体检时间图
图5 顾客等待与停留时间图
由问题一得知:
平均排队等待的队长:
Lq
1n1
n1!n1
2
P0
平均队长与到达率是存在一定联系的,要使顾客所化时间最少,则平均等待队长Lq和平均到达率λ越小越好。因此验证了问题一的正确性。
问题三:
服务台窗口数:n,团队人数:N
假设一:团队享有优先权服务,n
服务台窗口数n
W团=N*t
此时所花时间最少
假设二:团队采用等待制先来先服务,n
此时顾客群为连续到达,服务台窗口数n
W团N*
1n
un!n1
2
P0
假设三:团队采用等待制先来先服,n>N
此时顾客群为连续到达,服务台窗口数n>团队人数N,由于每个项目所花时间是相同的,则由表三可知,每个体检项目每小时所到达的人数μ是不同的,所以对于平均队长最短的项目,则安排超过3个顾客排队等待;平均队长最长的项目,则安排一个人排队等候;居于中间区域的平均队长,就安排2~3个人排队等待。每个项目均如此循环下午,这样既提高了服务台仪器的利用率,同时也降低了顾客体检需要等待的时间,医生也可轻松、快速完成工作。
六、 模型的评价与推广
优点:
我们用泊松分布法建立模型之后可以用极大似然法来验证器正确性,并在问2中引入数据来论证,该模型是成立的,有比较好的理论依据;且抽象的概念用图形的方式展现,易于理解。 缺点:
体检中的突发情况很多,且不容易控制,所分析的与实际有一定的误差,参考资料不太完善,对医院的项目没有过多的了解,有待于再次考量。 推广:
本模型的排队系统不仅可以用于体检中心的排队,同样可以考虑运用在服务行业的单位和机构,如:银行、铁路局、电信、超市等。
七、 参考文献
[1]汪晓银,周宝平,《 数学建模与数学实验 》,科学出版社,2010
[2]宗容,施继红,《数学实验与数学建模》,云板大学出版社,2009 [3]孟玉珂,《排队论基础及应用》,同济大学出版社,1989 [4]杨连国,《医院智能排队叫号系统的设计与实现》,河南大学,2005
八、 附录
MATLAB的数据 clc
%***************************************** %初始化顾客源
%***************************************** %总仿真时间 Total_time = 10; %队列最大长度 N = [1**********]; %到达率与服务率 lambda = 10; mu = 6;
%平均到达时间与平均服务时间 arr_mean = 1/lambda; ser_mean = 1/mu;
arr_num = round(Total_time*lambda*2); events = [];
%按负指数分布产生各顾客达到时间间隔 events(1,:) = exprnd(arr_mean,1,arr_num); %各顾客的到达时刻等于时间间隔的累积和 events(1,:) = cumsum(events(1,:)); %按负指数分布产生各顾客服务时间 events(2,:) = exprnd(ser_mean,1,arr_num);
%计算仿真顾客个数,即到达时刻在仿真时间内的顾客数 len_sim = sum(events(1,:)
%***************************************** %计算第 1个顾客的信息
%***************************************** %第 1个顾客进入系统后直接接受服务,无需等待 events(3,1) = 0;
%其离开时刻等于其到达时刻与服务时间之和 events(4,1) = events(1,1)+events(2,1); %其肯定被系统接纳,此时系统内共有 %1个顾客,故标志位置1 events(5,1) = 1;
%其进入系统后,系统内已有成员序号为 1 member = [1]; for i = 2:arr_num
%如果第 i个顾客的到达时间超过了仿真时间,则跳出循环
if events(1,i)>Total_time
break;
else
number = sum(events(4,member) > events(1,i));
%如果系统已满,则系统拒绝第 i个顾客,其标志位置 0
if number >= N+1
events(5,i) = 0;
%如果系统为空,则第 i个顾客直接接受服务
else
if number == 0
%其等待时间为 0
%PROGRAMLANGUAGEPROGRAMLANGUAGE
events(3,i) = 0;
%其离开时刻等于到达时刻与服务时间之和
events(4,i) = events(1,i)+events(2,i);
%其标志位置 1
events(5,i) = 1;
member = [member,i];
%如果系统有顾客正在接受服务,且系统等待队列未满,则 第 i个顾客进入系统
else len_mem = length(member);
%其等待时间等于队列中前一个顾客的离开时刻减去其到 达时刻
events(3,i)=events(4,member(len_mem))-events(1,i);
%其离开时刻等于队列中前一个顾客的离开时刻加上其服
%务时间
events(4,i)=events(4,member(len_mem))+events(2,i);
%标识位表示其进入系统后,系统内共有的顾客数
events(5,i) = number+1;
member = [member,i];
end
end
end
end
%仿真结束时,进入系统的总顾客数
len_mem = length(member);
%***************************************** %输出结果
%*****************************************
%绘制在仿真时间内,进入系统的所有顾客的到达时刻和离 %开时刻曲线图(stairs:绘制二维阶梯图)
stairs([0 events(1,member)],0:len_mem);
hold on;
stairs([0 events(4,member)],0:len_mem,'.-r');
legend('到达时间 ','离开时间 ');
hold off;
grid on;
%绘制在仿真时间内,进入系统的所有顾客的停留时间和等 %待时间曲线图(plot:绘制二维线性图)
figure;
plot(1:len_mem,events(3,member),'r-*',1:
len_mem,events(2,member)+events(3,member),'k-'); legend('等待时间 ','停留时间 ');
grid on;
体检中的排队论
摘要
一个好的体检排队方案不仅可以提高体检中心的体检效率和仪器的使用率,还可为体检者节约时间和费用。本文利用数学建模的方法,根据排队论知识建立体检中心排队系统的数学模型,通过MATLAB软件求解。 对于问题一、二
对一个新来的顾客要体检,他通过取票进队、排队等待、叫号服务等功能,通过分析发现体检队的队长是随机的,体检所等待的时间是随机的,服务台是否忙碌也是随机的。本文我们主要研究队长的分布和等待时间的分布及忙碌期的分布状况。最终以达到顾客可以最短时间通过所有体检,即以最优化方案得到最接近的方法。
我们采用排队规则中等待制的先到先服务方法求出队列的队长、等待时间、服务窗口的忙碌状态,服务规则是先到先服务以泊松分布方法建模型。最后问题二引用一组数据通过极大似然法验证问题一结论的真实性。
1、平均排队等待的队长
Lq
1n1
n1!n1
2
P0
2、系统队长(或系统中平均顾客数)的均值
LSLqL服Lq1
1
n1!n1
1n1
2
P01
LSLqL服Lq1
n1!n1
2
P01
3、顾客在系统内平均等待时间
Wq
Lq
1n
un!n1
2
p0
对于问题三
分析可知:对于在服务窗口忙碌情况下,则团队人数N与可服务窗口n数量是不确定,因此我们需要分为三种情况来讨论。
第一种情况:团队人数
第二种情况:团队人数
第三种情况:团队人数>服务窗口数并在排队规则等待制中的先到先服务情况下。
关键字: 排队论 泊松分布 负指数分布 极大似然法 最优化方案
一、 问题重述
某城市的体检中心每天有许多人前去体检,全部体检项目包括:抽血、内科、外科、B超、五官科、胸透、身高、体重、„等等。每个人的体检项目可能各不相同,假设每个体检项目的服务时间是确定的,并且只有1个医生值班,每次只能为1个客户服务。为提高设备利用率、降低客人的等待时间,中心请你帮助完成如下任务:
(1)为某个新来的客人安排他的体检顺序,使其完成需要的全部检查的时间尽量少(在各个体检项目处都可能有人排队等待);
(2)设计1组数据来验证上述结论。
(3)接待团体客人时,如何安排每个人的体检顺序,使得体检中心能尽快完成任务,设计1组数据来验证该结论。
二、 问题分析
问题一
每个体检项目的服务时间是确定的,并且只有1个医生值班,每次只能为1个客户服务。经过分析发现顾客要体检,他通过取票进队、排队等待、叫号服务等功能,对他而言体检的队长是随机的,体检所等待的时间是随机的,服务台是否忙碌也是随机的。本文我们主要研究队长的分布和等待时间的分布及忙碌期的分布状况。最终尽可能使顾客可以最短时间通过所有体检,即以最优化方案得到最接近的方法,服务规则是先到先服务,以泊松分布方法建模型。
顾客到达体检中心排队流程示意图
图1排队模型框图
由排队论中M/M/1模型中假设顾客到达时间间隔从参数为λ的泊松分布,顾客的服务时间为固定值t,到达时间与服务时间是相互独立的,且有n个服务台,若顾客到达时服务窗全部处于忙的状态,则进行等待。
1. 平均排队等待的队长
Lq
1n1
n1!n1
2
p0
2. 平均忙着的服务窗个数
L服=ρ1
3. 系统队长(或系统中平均顾客数)的均值
LsLqL服Lq1
1n1
n1!n1
2
p01
4. 顾客在系统内平均等待时间
Wq
Lq
1n
un!n1
2
P0
首先,我们用极大似然估计法来估计泊松分布中报还的未知参数。设总体X服从泊松分布
PXk
k
k!
e,k0,1,2...
得参数λ的极大似然估计量为:
x
问题二
问题二是在问题一的基础上研究的,所以我们用一组数据通过极大似然法来验证其是否正确。
因为每个体检项目中只有一个服务台并只为顾客服务,故系统只有两种可能的状态:0——服务台空闲;1——服务台正在为顾客服务
图2 服务系统流程图
说明:
表示一个顾客进入体检时,服务系统就从状态“0”以变换到状态“1”。当体检的一个项目完毕,顾客离开系统,系统从状态“1”以服务速率µ变到状态“0”。 把“输入=输出”看作系统的稳态,
即:
P0 = µP1 又因为 P0 + P1 =1
故: P0 = µ/(+µ) (闲着概率) P1 = /(+µ) (忙着概率) 问题三
根据三种不同的状态做出以下的讨论:
第一种情况:团队人数
第二种情况:团队人数
第三种情况:团队人数>服务窗口并在排队规则等待制中的先到先服务情况下。
三、 模型的假设
1. 假设顾客到达服务台后一切均正常进行(服务人员、顾客状态均良好,且仪
器无故障出现),没有突发情况出现。
2. 在本次建模不做出特殊要求的情况下以先到先服务为前提。
从一个项目到另一个项目的时间忽略不计。 四、 符号说明
五、 模型的建立与求解
问题一
顾客到达 图3 多服务窗口排队服务系统
正在接服务的顾客数
3.
图4 单服务窗口系统
问题一是为一个新来的顾客安排一个科学、合理、快速的体检顺序,他面对一个多服务窗口等待制排队系统,我们从单服务系统分析,以单服务系统来求解多服务系统,我们有如下的定理:
定理1 若X(t)表示时刻t系统中的顾客数(队长),则{X(t),t≧0}是状态空间E={0,1,2,···}且生率为:
λ=λk ,k=0,1,2,3„„
灭率为:
μ={knu ku k==0n,+11,,...
2,3...nk
的生灭过程。
定理2 若X(t)表示时刻t系统中的顾客数,设
PklimXtk
t
则当
nu
1时,系统可以达到稳态,且有平稳分布
n1kn1
P1110k0k!n!1!
Ln1
1q
n1!n2
P0
1
对系统进行分析,可计算出如下相应的目标参量: 1、损失概率
在等待制中,因到达系统请求服务的顾客迟早会被服务窗服务,故:
P损=0
2、系统的相对通过能力与绝对通过能力
Q=1-P损=1 A=λQ=λ
3、平均排队等待的队长
Ln1
1q
n1!nP0
1
2
4、平均忙着的服务窗个数
L服=ρ1
5、系统队长(或系统中平均顾客数)的均值
n1
LsLqL服Lq1
1n1!n1
2
p01
6、顾客在系统内平均等待时间
Wq
n
1q
L
un!nP0
1
2
7、顾客在系统内的逗留时间
8、来到系统的顾客必须排队等待的概率
Ws
Ls
Wq
1 u
Cn,1
npn
n1
特别的,当n=1时(即单服务窗口等待制M/M/1排队模型),系统的平稳分布为
k
Pk1 k>=0
故相应的目标参量为:
1. 服务台空闲的概率
P01
2.
系统额相对通过能力与绝对通过能力
Q1P损1
AQ
3. 平均排队等待的队长
Lq
4. 5.
平均忙着的服务窗口个数
2
uu
L服 =ρ
系统队长的均值
Ls
u
首先,我们用极大似然估计法来估计泊松分布中报还的未知参数。设总体X服从泊松分布
PXk
k
k!
e,k0,1,2...
则参数λ的似然函数为:
n
n
LPXxi
i1
i1
x
i1en xi!x1!...xi!
i
xi
n
两边取对数得:
lnLnxilnlnxi!
i1
i1
n
n
得似然方程:
dlnL1n
nxi0 di1
解得:
又可算得:
1n
xix ni1
d2lnLnn
||0 22
xxdx
故得到参数λ的极大似然估计量为:
x
与顾客达到时间一样,进行x拟合检验,同样可验证:该体检中心排队系
统中体检人员接受体检的时间服务参数为u的负指数分布。
综上所述,体检排队模型的假设是成立的。 该顾客总共平均所花时间:
W总N*
Lq
2
N*
1n
un!n1
2
P0
结论:通过假设再论证可知在体检中如果平均等待队长Lq越小,则顾客体检中所用时间就越少,即顾客在检查完一项后,应该选择所有没检查项目中平均队长最短的队列排队检查,且顾客到达该对列的平均到达率最低,这是让顾客以最短时间体检完的较好的方法。
问题二:
系统处于稳态时,对每个状态来说,输入=输出。 对于状态n来说,有:
Pn-1+µPn+1 = (µ+1)Pn n≥1 对于状态“0”,有: P0 = µP1
表2 状态从0到n的稳定方程
求解以上方程组可以得到:
P 0 = 1- ρ 0≤ ρ= /µ ≤1 P n = ρn(1- ρ) n=0,1,2,„
即来到服务台必须等待的概率为: C(n,ρ1)=nρn(1-ρ)/ n-ρ1
图4 顾客体检时间图
图5 顾客等待与停留时间图
由问题一得知:
平均排队等待的队长:
Lq
1n1
n1!n1
2
P0
平均队长与到达率是存在一定联系的,要使顾客所化时间最少,则平均等待队长Lq和平均到达率λ越小越好。因此验证了问题一的正确性。
问题三:
服务台窗口数:n,团队人数:N
假设一:团队享有优先权服务,n
服务台窗口数n
W团=N*t
此时所花时间最少
假设二:团队采用等待制先来先服务,n
此时顾客群为连续到达,服务台窗口数n
W团N*
1n
un!n1
2
P0
假设三:团队采用等待制先来先服,n>N
此时顾客群为连续到达,服务台窗口数n>团队人数N,由于每个项目所花时间是相同的,则由表三可知,每个体检项目每小时所到达的人数μ是不同的,所以对于平均队长最短的项目,则安排超过3个顾客排队等待;平均队长最长的项目,则安排一个人排队等候;居于中间区域的平均队长,就安排2~3个人排队等待。每个项目均如此循环下午,这样既提高了服务台仪器的利用率,同时也降低了顾客体检需要等待的时间,医生也可轻松、快速完成工作。
六、 模型的评价与推广
优点:
我们用泊松分布法建立模型之后可以用极大似然法来验证器正确性,并在问2中引入数据来论证,该模型是成立的,有比较好的理论依据;且抽象的概念用图形的方式展现,易于理解。 缺点:
体检中的突发情况很多,且不容易控制,所分析的与实际有一定的误差,参考资料不太完善,对医院的项目没有过多的了解,有待于再次考量。 推广:
本模型的排队系统不仅可以用于体检中心的排队,同样可以考虑运用在服务行业的单位和机构,如:银行、铁路局、电信、超市等。
七、 参考文献
[1]汪晓银,周宝平,《 数学建模与数学实验 》,科学出版社,2010
[2]宗容,施继红,《数学实验与数学建模》,云板大学出版社,2009 [3]孟玉珂,《排队论基础及应用》,同济大学出版社,1989 [4]杨连国,《医院智能排队叫号系统的设计与实现》,河南大学,2005
八、 附录
MATLAB的数据 clc
%***************************************** %初始化顾客源
%***************************************** %总仿真时间 Total_time = 10; %队列最大长度 N = [1**********]; %到达率与服务率 lambda = 10; mu = 6;
%平均到达时间与平均服务时间 arr_mean = 1/lambda; ser_mean = 1/mu;
arr_num = round(Total_time*lambda*2); events = [];
%按负指数分布产生各顾客达到时间间隔 events(1,:) = exprnd(arr_mean,1,arr_num); %各顾客的到达时刻等于时间间隔的累积和 events(1,:) = cumsum(events(1,:)); %按负指数分布产生各顾客服务时间 events(2,:) = exprnd(ser_mean,1,arr_num);
%计算仿真顾客个数,即到达时刻在仿真时间内的顾客数 len_sim = sum(events(1,:)
%***************************************** %计算第 1个顾客的信息
%***************************************** %第 1个顾客进入系统后直接接受服务,无需等待 events(3,1) = 0;
%其离开时刻等于其到达时刻与服务时间之和 events(4,1) = events(1,1)+events(2,1); %其肯定被系统接纳,此时系统内共有 %1个顾客,故标志位置1 events(5,1) = 1;
%其进入系统后,系统内已有成员序号为 1 member = [1]; for i = 2:arr_num
%如果第 i个顾客的到达时间超过了仿真时间,则跳出循环
if events(1,i)>Total_time
break;
else
number = sum(events(4,member) > events(1,i));
%如果系统已满,则系统拒绝第 i个顾客,其标志位置 0
if number >= N+1
events(5,i) = 0;
%如果系统为空,则第 i个顾客直接接受服务
else
if number == 0
%其等待时间为 0
%PROGRAMLANGUAGEPROGRAMLANGUAGE
events(3,i) = 0;
%其离开时刻等于到达时刻与服务时间之和
events(4,i) = events(1,i)+events(2,i);
%其标志位置 1
events(5,i) = 1;
member = [member,i];
%如果系统有顾客正在接受服务,且系统等待队列未满,则 第 i个顾客进入系统
else len_mem = length(member);
%其等待时间等于队列中前一个顾客的离开时刻减去其到 达时刻
events(3,i)=events(4,member(len_mem))-events(1,i);
%其离开时刻等于队列中前一个顾客的离开时刻加上其服
%务时间
events(4,i)=events(4,member(len_mem))+events(2,i);
%标识位表示其进入系统后,系统内共有的顾客数
events(5,i) = number+1;
member = [member,i];
end
end
end
end
%仿真结束时,进入系统的总顾客数
len_mem = length(member);
%***************************************** %输出结果
%*****************************************
%绘制在仿真时间内,进入系统的所有顾客的到达时刻和离 %开时刻曲线图(stairs:绘制二维阶梯图)
stairs([0 events(1,member)],0:len_mem);
hold on;
stairs([0 events(4,member)],0:len_mem,'.-r');
legend('到达时间 ','离开时间 ');
hold off;
grid on;
%绘制在仿真时间内,进入系统的所有顾客的停留时间和等 %待时间曲线图(plot:绘制二维线性图)
figure;
plot(1:len_mem,events(3,member),'r-*',1:
len_mem,events(2,member)+events(3,member),'k-'); legend('等待时间 ','停留时间 ');
grid on;