排队论算法汇总含matlab代码_数学建模(十二)

排队论又称为随机服务系统。抽象地说,可以将有输入和输出的一个整体称为一个系统,将进入该系统希望得到某种服务的人或物称为顾客,提供某种服务的人或设施称为服务台。顾客进入到系统后等待接受服务,当其需要的服务得到满足后离开该系统。由于顾客达到该系统般都是随机的,到达后接受服务的时间也是随机的,所以也称排队论为随机服务系统理论,并可将排队论看成概率与统计研究的种具体的问题。该理论要研究的是排队系统运行的效率以及如何改进排队系统使得顾客接受服务的质量得到提升。
一般的排队系统主要由输入过程、排队规则和服务机构3个基本部分组成。
1.输入过程
输入是指顾客到达排队系统。这里顾客的概念是抽象的,所以有多种不同情况,将其列举如下。
(1)组成总体(称为顾客源)的个体(顾客)数可能是有限的,也可能是无限的。
(2)顾客到达系统的方式可能是逐个到达,也可能是成批到达。
(3)前后两个顾客达到系统的时间间隔般是随机的,但也有确定的情形。
(4)顾客到达一般是相互独立,没有互相关联的。但也有关联的情形。
(5)考虑顾客相继达到系统的时间间隔是随机的情形,这时,到达的时间间隔具有一定的概率分布,若该分布中涉及的数字特征,如数学期望、方差等与时间无关,则称为输入过程是平稳的,否则称为非平稳的。
2.排队规则
顾客达到系统后,若所有服务台都被占用,则顾客可能随即离去,也可能排队等待。前者称为即时制或损失制,后者称为等待制。对于等待制,有各种等待服务的规则。
(1)先到先服务(简记为FCFS)。即按照顾客到达系统的先后次序等待接受服务。在日常生活中,这是最常见的情况。
(2)后到先服务(简记为LCFS)。即后到者先接受服务。比如,仓库中存放同样的原材料,后到者意味着放在最上面或最外面,那么取出该材料即为后到先服务。
(3)随机服务。即服务台或服务员从等待接受服务的顾客中随机选取进行服务。了
(4)有优先权的服务。即按照某种优先权对达到的顾客进行服务。
3.服务机构
服务机构指的是提供服务的机构,在这里是个抽象的名称。 机构里可能有服务员(服务台、通道、窗口等,如超市收银员),也可能没有服务员(如机场跑道)。在有多个服务台的情况下,服务台可以是并联的(即平行排列),也可以是串联(即前后排列),以及串并联(即两种情况的混合)。例如,火车站的售票窗口即是多服务台并列的情况:在市政大厅办理某些业务时往往会碰到串联的情形,因为需要办理若干手续,且这些手续有前后次序之分。服务机构对顾客进行服务时,可能是一对一的服务,也可能是对成批的顾客进行服务。比如,公共汽车对在站台等候的顾客就是成批进行服务的。与顾客达到系统的时间间隔样, 服务时间也有确定性的和随机的两种。在随机的情形中,也有平稳和非平稳的区分。同样,本书只讨论服务时间是平稳的情形。
综上,排队系统虽然主要由3部分组成,但每个部分都有很多种情况,各种组合显得杂乱无章。1951 年D. G. Kendall提出排队论分类方法,将排队系统中最主要的3部分用不同的记号表示出来,称为Kendall记号
X/Y/Z
1971年将Kendall记号扩充为
X/Y/Z/A/B/C
式中: x处填写顾客相继达到系统的时间间隔服从的分布; Y处填写顾客接受服务时间所服从的分布: z处填写并列的服务台数目: A处填写系统对顾客数量的限制,即系统容量N: B处填写顾客源数目m; C处填写服务规则。并用下列符号表示各种含义。M表示随机变量的服从负指数分布: D表示确定性的(即相继到达的顾客时间间隔是确定的或者接受服务的时间是确定的); Ek表示k阶爱尔朗分布: GI表示一般相互独立的时间间隔的分布: G表示般服务时间的分布: FCFS表示先到先服务规则,LCFS表示后到先服务规则。
排队论研究的主要问题是排队系统的运行效率,估计服务质量,确定相应的最优参数以及设计、改进排队系统。在这些问题中涉及如下有关指标。
(1)队长。队长是排队系统中的顾客数,这是一个随机变量,其数学期望记为Ls.系统中的顾客数由正在接受服务的顾客数和等待接受服务的顾客数组成。这两者也是随机变量,记等待接受服务的顾客数的数学期望为Lq。一般来说Ls或Lq越大,说明排队系统的服务效率越低,因为这往往意味着顾客需要等待较长的时间才能得到服务。
(2)逗留时间和等待时间。逗留时间指的是顾客在系统中的停留时间,其数学期望记为Ws,等待时间的数学期望记为Wq.显然,逗留时间等于等待时间和接受服务的时间之和。
(3)忙期和闲期。忙期指的是从顾客到达系统开始到顾客离开系统,系统里没有顾客为止的时间段;闲期这是系统里没有顾客到来的时间段。这两个指标反映了系统里服务员的工作强度。一个合理的排队系统不仅关心顾客的等待队长、等待时间等,同时也要关心服务员的工作强度。
(4)损失率。在即时制或排队有限制的系统中,由于正在服务而拒绝后到的顾客或顾客离去使得企业受到损失的概率。
不论什么类型的排队系统,这些指标的计算都是在系统状态概率的基础上进行的。所谓系统状态是指时刻t系统中的顾客数,其概率记为Pn(t), 表示在时刻t系统中有n个顾客的概率。这种表达是即时的、瞬间的。我们常常考虑的是排队系统经过较长时间的运行后到达稳定状态时的概率Pn。

下面给出常见的排队论模型的数学推导结果:
排队论算法汇总含matlab代码_数学建模(十二)_第1张图片
排队论算法汇总含matlab代码_数学建模(十二)_第2张图片
排队论算法汇总含matlab代码_数学建模(十二)_第3张图片
排队论算法汇总含matlab代码_数学建模(十二)_第4张图片
排队论算法汇总含matlab代码_数学建模(十二)_第5张图片
排队论算法汇总含matlab代码_数学建模(十二)_第6张图片
程序实现排队系统:
Matlab代码:

function [P0,P,Ls,Lq,Ws,Wq] = MMC2(lambda,mu,c,N)
%M/M/c/N/inf排队系统
%lambda为顾客平均达到率
%mu为系统平均服务率
%c为服务器台数
%N为系统中顾客总数的限制
%P0为系统空闲率
%系统中有n个顾客的概率为向量P的第n个分量
%Ls为系统中平均顾客数(平均队长)
%Lq为系统中平均等待接收服务的顾客数(平均等待队长)
%Ws为顾客在系统中的平均逗留时间
%Wq为顾客在系统中的平均等待时间
rho=lambda/(c*mu);
T1=0;
P=zeros(1,N);
for k=0:c
    T1=T1+(c*rho)^k/factorial(k);
end
T2=(c^c/factorial(c))*(rho*(rho^c-rho^N)/(1-rho));
P0=(T1+T2)^(-1);
for i=1:c
    P(i)=((c*rho)^i/factorial(i))*P0;
end
for i=c:N
    P(i)=(c^c/factorial(c))*rho^i*P0;
end
Lq=((P0*rho*(c*rho)^c)/(factorial(c)*(1-rho)^2))*(1-rho^(N-c)-(N-c)*rho^(N-c)*(1-rho));
Ls=Lq+c*rho*(1-P(N));
Wq=Lq/(lambda*(1-P(N)));
Ws=Wq+1/mu;
end
 

function [P0,P,Ls,Lq,Ws,Wq] = MMC3(lambda,mu,c,m)
%M/M/c/inf/m排队系统
%lambda为顾客平均达到率
%mu为系统平均服务率
%c为服务器台数
%N为系统中顾客总数的限制
%P0为系统空闲率
%系统中有n个顾客的概率为向量P的第n个分量
%Ls为系统中平均顾客数(平均队长)
%Lq为系统中平均等待接收服务的顾客数(平均等待队长)
%Ws为顾客在系统中的平均逗留时间
%Wq为顾客在系统中的平均等待时间
rho=m*lambda/(c*mu);
T1=0;
T2=0;
Ls=0;
Lq=0;
P=zeros(1,m);
for k=0:c
    T1=T1+(c*rho/m)^k/(factorial(k)*factorial(m-k));
end
for k=c+1:m
    T2=T2+(rho/m)^k/factorial(m-k);
end
P0=(1/factorial(m))*(T1+(c^c/factorial(c))*T2)^(-1);
for i=1:c
    P(i)=(factorial(m)/(factorial(m-i)*factorial(i)))*(lambda/mu)^i*P0;
end
for i=c+1:m
    P(i)=((factorial(m)/(factorial(m-i)*factorial(c)*c^(i-c))))*(lambda/mu)^i*P0;
end
for k=1:m
    Ls=Ls+k*P(k);
end
for k=c+1:m
    Lq=Lq+(k-c)*P(k);
end
Le=lambda*(m-Ls);
Wq=Lq/Le;
Ws=Ls/Le;
end
 

应用举例:
[P0,P,Ls,Lq,Ws,Wq] = MMC2(6,0.5,8,8)
P0 =3.9633e-05
P = 0.0005 0.0029 0.0114 0.0342 0.0822 0.1644 0.2818 0.4227
Ls = 6.9281
Lq = 0
Ws = 2
Wq = 0
[P0,P,Ls,Lq,Ws,Wq] = MMC3(1,4,2,5)
P0 = 0.3149
P = 0.3937 0.1968 0.0738 0.0185 0.0023
Ls = 1.0941
Lq = 0.1176
Ws =0.2801
Wq =0.0301

参考文献:
[1]李工农.运筹学基础及其MATLAB应用.北京:清华大学出版社,2016

你可能感兴趣的:(数学建模,排队论,数学建模,matlab)