排队论(Queuing Theory)也称随机服务系统理论,就是为解决一些生活问题而发展的一门学科。它研究的内容有下列三部分:
(i)性态问题,即研究各种排队系统的概率规律性,主要是研究队长分布、等待时间分布和忙期分布等,包括了瞬态和稳态两种情形
(ii)最优化问题,又分静态最优和动态最优,前者指最优设计。后者指现有排队系统的最优运营
(iii)排队系统的统计推断,即判断一个给定的排队系统符合于哪种模型,以便根据排队理论进行分析研究。这里将介绍排队论的一些基本知识,分析几个常见的排队模型
各个顾客从顾客源出发,随机地来到服务机构,按一定的排队规则等待服务,直到按一定的服务规则接受完服务后离开排队系统
服务过程
服务规则:
排队模型的符号表示( X/Y/Z/A/B/C )
排队系统中的事件流包括顾客到达流和服务时间流。由于顾客到达的间隔时间和服务时间不可能是负值,因此,它的分布是非负随机变量的分布。最常用的分布有泊松分布、确定型分布,指数分布和爱尔朗分布
设 N(t) 表示在时间区间 [0,t) 内到达的顾客数 (t>0) ,令 Pn(t1,t2) 表示在时间区间 [t1,t2) 内有 n(n≥0) 个顾客到达的概率。当 Pn(t1,t2) 符合于下列三个条件时,我们说顾客的到达形成泊松流。
对于充分小的Δt,在时间区间[t,t + Δt)内有两个或两个以上顾客到达的概率极小,以致可以忽略,即
对充分小的 △t ,在时间区间 [t,t+△t) 内有一个顾客到达的概率与 t 无关,而约与区间长 △t 成正比,即
μ 表示单位时间能被服务完成的顾客数,称为平均服务率
连续型
均匀分布
正态分布
正态分布还可以作为二项分布一定条件下的近似
指数分布
Gamma 分布
Weibull 分布
Beta 分布
离散型
Bernoulli 分布(两点分布)
泊松(Poisson)分布
二项分布
在独立进行的每次试验中,某事件发生的概率为 p ,则 n 次试验中该事件发生的次数 K 服从二项分布
未完待续~
Matlab 可以产生常用分布的随机数。下面我们介绍按照给定的概率分布产生随机数的一般方法,这些方法都以 U(0,1) 分布的随机变量为基础
根据一般知识和经验,可以假定其概率分布的形式:
顾客到达间隔服从指数分布 Exp(λ)
产品需求量服从正态分布 N(μ,σ2)
订票后但未能按时前往机场登机的人数服从二项分布 B(n,p)
然后由实际数据估计分布的参数λ,μ,σ 等,参数估计
可用极大似然估计、矩估计等方法
未完待续~
直接由大量的实际数据作直方图,得到经验分布,再通过假设检验,拟合分布函数,可用 χ2 检验等方法
既缺少先验知识,又缺少数据时,对区间 (a,b) 内变化的随机变量,可选用 Beta 分布(包括均匀分布)。先根据经验确定随机变量的均值 μ 和频率最高时的数值(即密度函数的最大值点) m ,则 Beta 分布中的参数 α1,α2 可以求出见^162页^
当排队系统的到达间隔时间和服务时间的概率分布很复杂时,或不能用公式给出时,那么就不能用解析法求解。这就需用随机模拟法求解,现举例说明。
设某仓库前有一卸货场,货车一般是夜间到达,白天卸货,每天只能卸货2车,若一天内到达数超过2 车,那么就推迟到次日卸货。根据下表所示的数据,货车到达数的概率分布(相对频率)平均为1.5 车/天,求每天推迟卸货的平均车数
到达车数 0 1 2 3 4 5 ≥ 6 概率 0.23 0.3 0.3 0.1 0.05 0.02 0.00
这是单服务台的排队系统,可验证到达车数不服从泊松分布,服务时间也不服从指数分布(这是定长服务时间)。随机模拟法首先要求事件能按历史的概率分布规律出现。一定范围随机数对应一定区间的到达车辆数
这里直接用概率就行
程序如下:
clear
rand('state',sum(100*clock));
n=50000;
m=2
a1=rand(n,1);
a2=a1; %a2初始化
a2(find(a1<0.23))=0;
a2(find(0.23<=a1&a1<0.53))=1;
a2(find(0.53<=a1&a1<0.83))=2;
a2(find(0.83<=a1&a1<0.93),1)=3;
a2(find(0.93<=a1&a1<0.98),1)=4;
a2(find(a1>=0.98))=5;
a3=zeros(n,1);a4=zeros(n,1);a5=zeros(n,1); %a2初始化
a3(1)=a2(1);
if a3(1)<=m
a4(1)=a3(1);a5(1)=0;
else
a4(1)=m;a5(1)=a2(1)-m;
end
for i=2:n
a3(i)=a2(i)+a5(i-1);
if a3(i)<=m
a4(i)=a3(i);a5(i)=0;
else
a4(i)=m;a5(i)=a3(i)-m;
end
end
a=[a1,a2,a3,a4,a5];
sum(a)/n
案例二:
银行计划安置自动取款机,已知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 型机和 B 型机前100 名顾客的平均等待时间分别为4.13,3.70即B型机优
模拟:
tic
rand('state',sum(100*clock));
n=100;m=1000;mu1=1;mu2=0.9;
for j=1:m
cspan=exprnd(mu1,1,n);sspan=exprnd(mu2,1,n);
ctime(1)=cspan(1);
gtime(1)=ctime(1)+sspan(1);
wtime(1)=0;
for i=2:n
ctime(i)=ctime(i-1)+cspan(i);
gtime(i)=max(ctime(i),gtime(i-1))+sspan(i);
wtime(i)=max(0,gtime(i-1)-ctime(i));
end
result1(j)=sum(wtime)/n;
end
result_1=sum(result1)/m
toc
%类似地,模拟B 型机的程序如下:
tic
rand('state',sum(100*clock));
n=100;m=1000;mu1=1;mu2=1.8;
for j=1:m
cspan=exprnd(mu1,1,n);sspan=exprnd(mu2,1,n);
ctime(1)=cspan(1);ctime(2)=ctime(1)+cspan(2);
gtime(1:2)=ctime(1:2)+sspan(1:2);
wtime(1:2)=0;flag=gtime(1:2);
for i=3:n
ctime(i)=ctime(i-1)+cspan(i);
gtime(i)=max(ctime(i),min(flag))+sspan(i);
wtime(i)=max(0,min(flag)-ctime(i));
flag=[max(flag),gtime(i)];
end
result2(j)=sum(wtime)/n;
end
result_2=sum(result2)/m
toc