通过对服务对象到来及服务时间的统计研究,得出这些数量指标(等待时间、排队长度、忙期长短等)的统计规律,然后根据这些规律来改进服务系统的结构或重新组织被服务对象,使得服务系统既能满足服务对象的需要,又能使机构的费用最经济或某些指标最优。

排队论基本构成与指标

排队论的基本构成

输入过程:描述顾客按照怎样的规律到达排队系统。顾客总体(有限/无限)、到达的类型(单个/成批)、到达时间间隔。
排队规则:指顾客按怎样的规定次序接受服务。常见的有等待制、损失制、混合制、闭合制。
服务机构:服务台的数量; 服务时间服从的分布。

排队系统的数量指标

队长:系统中的平均顾客数(包括正在接受服务的顾客)。
等待队长:系统中处于等待的顾客的数量。
等待时间:等待时间包括顾客的平均逗留时间。
忙期:连续保持服务的时长。

数学表示

A输入过程
B服务时间
C服务台数
n系统容量

模型

默认顾客为泊松分布,除非题里有额外说明

M/M/S/∞输入为泊松分布,服务时间服从负指数分布;系统有S个服务台,系统容量为无穷大的瞪大排队系统

M/M/S/S

顾客到达服从泊松分布,服务台服务时间服从负指数分布,当 S 个服务台被占用后,顾客自动离开,不再等待。

M/M/S/K

顾客到达服从泊松分布,服务台服务时间服从负指数分布,系统容量为 K,当 K 个位置被占用时,顾客自动离开。

M/M/S/K/K

顾客到达服从泊松分布,服务台服务时间服从负指数分布,

系统容量和潜在的顾客数都为 K。

M/M/S/∞

顾客到达规律服从泊松分布,[0,t]时间内到达的顾客平均数为λt。

排队系统仿真Python代码 排队仿真的基本参数有_指数分布


顾客接受服务的时间服从参数为μ的负指数分布。每个顾客接受服务的平均时间为1/μ。

排队系统仿真Python代码 排队仿真的基本参数有_排队系统仿真Python代码_02


当S=1时:

系统的服务强度

排队系统仿真Python代码 排队仿真的基本参数有_泊松分布_03


无顾客的概率

排队系统仿真Python代码 排队仿真的基本参数有_排队系统仿真Python代码_04


有 n 个顾客的概率

排队系统仿真Python代码 排队仿真的基本参数有_排队系统仿真Python代码_05


平均队长

排队系统仿真Python代码 排队仿真的基本参数有_排队系统仿真Python代码_06


平均等待队长

排队系统仿真Python代码 排队仿真的基本参数有_泊松分布_07


平均逗留时间

排队系统仿真Python代码 排队仿真的基本参数有_泊松分布_08


平均等待时间

排队系统仿真Python代码 排队仿真的基本参数有_数组_09


Little 公式

排队系统仿真Python代码 排队仿真的基本参数有_指数分布_10


当S>1时

服务能力和强度

排队系统仿真Python代码 排队仿真的基本参数有_数组_11


服务台都空闲的概率

排队系统仿真Python代码 排队仿真的基本参数有_数组_12


平均队长

排队系统仿真Python代码 排队仿真的基本参数有_排队系统仿真Python代码_13


平均逗留时间

排队系统仿真Python代码 排队仿真的基本参数有_数组_14


平均等待时间

排队系统仿真Python代码 排队仿真的基本参数有_数组_15


平均等待队长

排队系统仿真Python代码 排队仿真的基本参数有_排队系统仿真Python代码_16


对于单服务台,时间状态如下

排队系统仿真Python代码 排队仿真的基本参数有_泊松分布_17


排队系统仿真Python代码 排队仿真的基本参数有_泊松分布_18


对于多个服务台

假设所有人都是去“办事”

排队系统仿真Python代码 排队仿真的基本参数有_排队系统仿真Python代码_19

排队系统仿真Python代码 排队仿真的基本参数有_指数分布_20


exprnd函数

其中exprnd(x,y,z),y与z控制生成的矩阵高宽,x具体改变的是……

我直接放图吧,感受效果,这是x=5,10,15的效果

排队系统仿真Python代码 排队仿真的基本参数有_数组_21

x=[1:30];
for i=5:5:15
    y=(exprnd(i,1,30))'
    [m,n]=max(y);
    plot(x,y);
    hold on;
    plot(n,m,'*r');
    hold on;
end
legend('5max','5','10max','10','15max','15')

自动取款机案例

银行计划安置取款机, A 机价格和平均服务率都是 B 机的 2倍.。应购置 1 台 A 机还是 2 台 B 机?
顾客平均每分钟到达 1 位, A 型机的平均服务时间为 0.9, B型机为 1.8 分钟, 顾客到达间隔和服务时间都服从指数分布。

%一台A机器
people_num=100;%设置访问人数
at=1;ft=0.9;%到达和服务的指数分布参数
at_dis=cumsum(exprnd(at,1,people_num));%客户到达的时间分布
ft_dis=exprnd(ft,1,people_num);%每个客户需要的服务时间
ser_time=zeros(people_num,1);%新建服务时刻数组
lea_time=zeros(people_num,1);%新建离开时刻数组
wai_time=zeros(people_num,1);%新建等待时长数组
ser_time(1)=at_dis(1);%第一个客户出现
lea_time(1)=at_dis(1)+ft_dis(1);%第一个客户结束服务——离开时刻
wai_time(1)=0;%等待时长
for i=2:people_num
    ser_time(i)=max(at_dis(i),lea_time(i-1));%服务时刻
    lea_time(i)=ser_time(i)+ft_dis(i);%离开时刻
    wai_time(i)=at_dis(i)-lea_time(i-1);%等待时长
end
%两台B机器
ft_b=1.8;
ft_dis_b=exprnd(ft_b,1,people_num);
ser_time_b=zeros(people_num,1);%新建服务时刻数组
lea_time_b=zeros(people_num,1);%新建离开时刻数组
wai_time_b=zeros(people_num,1);%新建等待时长数组
cou=[0 0];%初始柜台
ser_time_b(1)=at_dis(1);%第一个客户出现
lea_time_b(1)=at_dis(1)+ft_dis(1);%第一个客户结束服务——离开时刻
wai_time_b(1)=0;%等待时长
cou(1)=lea_time(1);
for i=2:people_num
    [mi w]=min(cou);
    ser_time_b(i)=max(at_dis(i),cou(w));%服务时刻
    lea_time_b(i)=ser_time(i)+ft_dis_b(i);%离开时刻
    cou(w)=lea_time_b(i);
    wai_time_b(i)=at_dis(i)-cou(w);%等待时长
end
x=[1:people_num];
plot(x,at_dis,'r',x,ft_dis_b,'k',x,lea_time_b,'b',x,ft_dis,':k',x,lea_time,':b')
legend('到达时间','B服务时长','B离开时间','A服务时长','A离开时刻')

说实在的效果不是很明显,离开时间差的也不多。

排队系统仿真Python代码 排队仿真的基本参数有_泊松分布_22


两台B机,M/M/S/K模型下的程序编写

链接