排队论模型
排队论模型
1. 模型背景
排队论发源于上世纪初。当时美国贝尔电话公司发明了自动电话,以适应日益繁忙的工商业电话通讯需要。这个新发明带来了一个新问题,即通话线路与电话用户呼叫的数量关系应如何妥善解决,这个问题久久未能解决。1909 年,丹麦的哥本哈根电话公司 A.K. 埃尔浪( ( Erlang) ) 在热力学统计平衡概念的启发下解决了这个问题。
2. 模型介绍
- 由于顾客到达和服务时间的随机性,现实中的排队现象几乎不可避免;
- 排队过程,通常是一个随机过程,排队论又称 “ 随机服务系统理论 ”
3. 排队 系统的 要素
- 顾客输入过程;
- 排队结构与排队规则;
- 服务机构与服务规则;
4. 顾客 输入过程
- 顾客源( ( 总体) ) :有限/ / 无限;
- 顾客到达方式:逐个/ / 逐批 ;( 仅研究逐个情形) )
- 顾客到达间隔:随机型/ / 确定型;
- 顾客前后到达是否独立:相互独立/ / 相互关联;
- 输入过程是否平稳:平稳/ / 非平稳;( ( 仅研究平稳性) )
5. 排队 结构与排队规则
- 顾客排队方式:等待制/ / 即时制( ( 损失制 );
- 排队系统容量:有限制/ / 无限制 ;
- 排队队列数目 : 单列/ / 多列;
- 是否中途退出 : 允许/ / 禁止;
- 是否列间转移 : 允许/ / 禁止;
( ( 仅研究禁止退出和转移的情形) )
6. 服务 机构与服务规则
- 服务台( ( 员) ) 数目; ; 单个/ / 多个;
- 服务台( ( 员) ) 排列形式; 并列/ / 串列/ / 混合;
- 服务台( ( 员) ) 服务方式; 逐个/ / 逐批 ;( 研究逐个情形) )
- 服务时间分布; 随机型/ / 确定型;
- 服务时间分布是否平稳: 平稳/ / 非平稳 ;( 研究平稳情形) )
7. 服务台( ( 员) ) 为顾客服务的顺序:
- 先到先服务( ( FCFS);
- 后到先服务( ( LCFS);
- 随机服务;
- 优先服务;
8. 到达间隔和服务时间典型分布
- 泊松分布 M ;
- 负指数分布 M ;
- k k 阶爱尔朗分布 E E k k ;
- 确定型分布 D D ;
- 一般服务时间分布 G G ;
9. 排队模型示例
—— M/M/1 , M/D/1 , M/ Ek /1 ;
—— M/M/c, M/M/c/∞ /m ,
—— M/M/c/N/∞
对于M /M /1 模型有如下公式
µ: 单位时间服务的顾客数,平均( 期望) 服务率;
λ: 单位时间前来的顾客数。
Ls :队长 ,系统中的顾客数(n)期望值
Lq:排队长 ,系统中排队等待服务的顾客数; 期望值记为Lq
Ws:逗留时间:—— 指一个顾客在系统中的全部停留时间 为 期望值,记为 Ws
Wq: 等待时间: —— 指一个顾客在系统中的排队等待时间为 期望值,记为 Wq
Ws=Wq + E[ 服务时间]
s : 服务台数目
服务强度:ρ = λ/sµ
M/M/1 模型
某医院急诊室同时只能诊治一个病人,诊治时间服从指数分布,每个病人平均需要 15 分钟。病人按泊松分布到达,平均每小时到达3 3 人。试对此排队队系统进行分析。
解: 对此排队队系统分析如下:
程序:
% =================================================================需要改的地方
s=1; %服务台个数
mu=4; %单个服务台单个时间内能服务的个数
lambda=3; %单位时间到达的顾客数
% =================================================================需要改的地方
ro=lambda/mu;
ros=ro/s;
sum1=0;
for i=0:(s-1)
sum1=sum1+ro.^i/factorial(i);
end
sum2=ro.^s/factorial(s)/(1-ros);
p0=1/(sum1+sum2);
p=ro.^s.*p0/factorial(s)/(1-ros);
Lq=p.*ros/(1-ros);
L=Lq+ro;
W=L/lambda;
Wq=Lq/lambda;
fprintf('排队等待的平均人数为%5.2f人\n',Lq)
fprintf('系统内的平均人数为%5.2f人\n',L)
fprintf('平均逗留时间为%5.2f分钟\n',W*60)
fprintf('平均等待时间为%5.2f分种\n',Wq*60)
结果:
排队等待的平均人数为 2.25人
系统内的平均人数为 3.00人
平均逗留时间为60.00分钟
平均等待时间为45.00分种
M/M/S 模型
此模型与 M/M/1 模型不同之处在于有S 个服务台 ,各服务台的工作相互独立 , 服务率相等 , 如果顾客到达时 ,S 个服务台都忙着 , 则排成一队等待 , 先到先服务的单队模型.
对于例一增加一个服务台就有如下结果:
排队等待的平均人数为 0.12人
系统内的平均人数为 0.87人
平均逗留时间为17.45分钟
平均等待时间为 2.45分种
很明显各个结果都有很大的优化。
例三
某医院挂号室有三个窗口,就诊者的到达服从泊松分布,平均到达率为每分钟 0.9 人,挂号员服务时间服从指数分布,平均服务率每分钟 0.4 人,现假设就诊者到达后排成一队,依次向空闲的窗口挂号,显然系统的容量和顾客源是不限的,属于 M/M/S 型的排队服务模型。求:该系统的运行指标
结果:
排队等待的平均人数为 1.70人
系统内的平均人数为 3.95人
平均逗留时间为 4.39分钟
平均等待时间为 1.89分种
使用图像来分析:
代码:
clear
clc
%*****************************************
%初始化顾客源
%*****************************************
% =================================================================需要改的变量
%总仿真时间
Total_time = 10;
%队列最大长度
N = 10000000000;
%到达率与服务率
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,:)<= Total_time);
%*****************************************
%计算第 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
2009.1516
%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;
更多详细资料点击这里
相关阅读
OSI模型,即开放式通信系统互联参考模型,是国际标准化组织提出的一个试图是各种计算机或者通信系统在世界范围内互联为网络的标准框
本人产品狗一枚,好奇心驱动着自己不断地去吸收知识,来提升自己的产品力,近期对增长黑客方面的知识有了一些个人的理解,因此选取了喜马
1.本项目需解决的问题本项目通过利用P2P平台Lending Club的贷款数据,进行机器学习,构建贷款违约预测模型,对新增贷款申请人进行预测
本连载分为【认知产品】、【从0到1架构一款产品】、【产品人员的成长途径】三大部分,主要面向2年左右或尚未完整经历从0到1的产品
目前这份工作做的大部分系统都是ToB性质,几乎每个都涉及到了权限管理。经过多个系统的设计,知识的丰富,慢慢的发现主流的权限管理系