排队是在日常生活中经常遇到的现象,如顾客到商店购买物品、病人到医院看病常常要排队。此时要求服务的数量超过服务机构(服务台、服务员等)的容量。也就是说,到达的顾客不能立即得到服务,因而出现了排队现象。这种现象不仅在个人日常生活中出现,电话局的占线问题,车站、码头等交通枢纽的车船堵塞和疏导,故障机器的停机待修,水库的存贮调节等都是有形或无形的排队现象。排队论又叫随机服务系统理论或公用事业管理中的数学方法,它是研究各种各样的排队现象的。它所要解决的主要问题是:在排队现象中设法寻求能够达到服务标准的最少设备,使得在满足服务对象条件下,服务机构的花费最为经济,使服务系统效率最高。

一、随机服务系统实例

现实生活中存在大量有形和无形的排队或拥挤现象,如旅客购票排队,市内电话占线等现象,上述问题都可以抽象为排队系统进行分析。排队系统是由服务机构和服务对象(顾客)构成。顾客到来的时刻和服务时间(即占用服务系统的时间)都是随机的。上图为一最简单的排队系统模型。排队系统包括三个组成部分:输入过程、排队规则和服务机构。

到达顾客 服务内容 服务机构
病人 诊断/手术 医生/手术台
进港的货船 装货/卸货 码头泊位
到港的飞机 降落 机场跑道
电话拨号 通话 交换台
故障机器 修理 修理技工
修理技工 领取修配零件 仓库管理员
上游河水 入库 水闸管理员

智能仓库中配置多个搬运机器人,中心控制系统接收到订单后,经过分析拆解为相应的拣选任务,然后根据任务优先级,通过一定的分配算法,将任务分配给当前处于空闲状态的搬运机器人。这里,我们将订单看作顾客,搬运机器人看作服务台,不考虑系统对订单的处理及任务分配过程。那么,整个系统可以抽象为一个多服务台排队系统(M/M/C)。

二、排队系统运行指标

2.1 服务时间是负指数分布的排队系统

顾客有效到达率 系统空闲的概率\(P_0\) 系统\(n\)个顾客概率\(P_n\) 负荷强度 队长\(L_s\) 队列长\(L_q\) 逗留时间 \(W_s\) 等待时间\(W_q\)
M/M/1/∞/∞(标准模型) \(\lambda\) \(P_0=1-\rho\) \(P_{n=} \rho^n P_0=(1-\rho) \rho^n\) \(\rho\) \(L_S=\frac{\rho}{1-\rho}=\frac{\lambda}{\mu-\lambda}\) \(L_q=L_{s^{-}} \rho=\frac{\rho^2}{1-\rho}\) \(W_s=\frac{L_s}{\lambda}\) \(W_q=W_s-\frac{1}{\mu}\)
M/M/1/N/∞ (系统容量有限) \(\lambda_e=\lambda\left(1-P_N\right)\) \(P_0=\frac{1-\rho}{1-\rho^{N+1}}\) \(P_{n=} \rho^n P_0\) \(\frac{\lambda_e}{\mu}\) \(L_S=\frac{\rho}{1-\rho}-\frac{(N+1) \rho^{N+1}}{1-\rho^{N+1}}\) \(L_q=L_S-(1-P_0)\) $ W_s =\frac{L_s}{\lambda_e} $ $W_q =\frac{L_q}{\lambda_e} $
M/M/1/∞/m(顾客源有限) \(\lambda_e=\lambda\left(m-L_s\right)\) \(P_0=\frac{1}{\sum_{i=0}^{m} \frac{m!}{(m-i)!} \quad \rho^i}\) \(P_n=\frac{m!}{(m-n) !} \rho^n P_0\) \(\frac{\lambda_e}{\mu}\) \(L_S=m-\frac{\mu}{\lambda}(1-P_0)\) \(L_q=L_s-(1-P_0)\) \(W_s=\frac{L_s}{\lambda_e}\) $W_q=\frac{L_q}{\lambda_e} $
M/M/C/∞/∞(多服务台) \(\lambda\) \(P_0=\frac{1}{\sum_{k=0}^{c-1} \frac{1}{k!}(\frac{\lambda}{\mu})^k+\frac{1}{C!} \frac{1}{1-\rho} (\frac{\lambda}{\mu})^c}\) \(\frac{\lambda}{c\mu}\) (!该系统公式中\(\rho\)) \(L_S=L_q+\frac{\lambda}{\mu}\) $ L_q=\frac{(C \rho)^C \rho}{C!(1-\rho)^2} \quad P_0 $ $ W_s=\frac{L_s}{\lambda} $ $ W_q=\frac{L_q}{\lambda} $
M/M/C/N/∞ \(\lambda_e=\lambda\left(1-P_N\right)\) \(P_0=\left\{\begin{array}{l}{\left[\sum_{k=0}^{c} \frac{1}{k !}\left(c \rho^k\right)+\frac{c^c}{c !} \frac{\rho\left(\rho^c-\rho^N\right)}{1-\rho}\right]^{-1}, \rho \neq 1} \\ \sum_{k=0}^{c} \frac{1}{k !}\left(c^k\right)+\frac{c^c}{c !}(N-c+1), \rho=1\end{array}\right.\) \(\frac{\lambda_e}{c\mu}\) \(L_s=L_q+c\rho(1-P_N)\) $L_{q}=\frac{(c \rho)^{c} \rho}{c !(1-\rho) 2} P_{0}\left[1-\rho^{N-c}-(N-c)(1-\rho) \rho^{N-c}\right] $ \(Ws=\frac{L_s}{\lambda_e}\) $ W_q=\frac{L_q}{\lambda_e} $
顾客到达率 \(\lambda\) 顾客服务率 \(\mu\)

2.2 服务时间其他分布的排队系统

M/G/1/∞/∞ M/D/1/N/∞ M/\(E_k\)/1/∞/m)
系统 (每小时) 顾客平均数 \(L_s=\rho+\frac{\rho^2+\lambda^2D(v))}{2(1-\rho)}\) \(L_s=\rho+\frac{\rho^2}{2(1-\rho))}\) \(L_s=\rho+\frac{(k+1)\rho^2}{2k(1-\rho)}\)
(每小时) 等待服务的平均顾客数 \(L_q=\lambda W_q=L_s-\rho\) \(L_q=L_s-\rho=\frac{\rho^2}{2(1-\rho)}\) $ L_q = L_s \rho = \frac{(k+1) \rho ^2}{2k(1-\rho)}$
(每位) 顾客在店内的平均逗留时间 \(W_s=\frac{L_s}{\lambda}\) \(W_s=\frac{L_s}{\lambda}\) \(W_s=\frac{L_s}{\lambda}\)
(每位)顾客平均修理时间 \(W_q=W_s-E(v)\) \(W_q=\frac{L_q}{\lambda}\) \(W_(q)=\frac{L_q}{\lambda}\)
\(\lambda\):每小时到达店内人数 \(\lambda\):每小时到达店内人数
\(\mu\):每小时可以服务的人数 \(\mu\):每小时可以服务的人数
\(E(v)\): 服务时间 \(v\) 的期望 \(E(v)=\frac{1}{\mu}\)
\(D(v)\): 方差 \(D(v)=\frac{1}{k\mu^2}\)
\(\rho\):系统忙着的概率 \(\rho=\lambda E(v)<1\) \(\rho=\frac{\lambda}{\mu}\):系统忙着的概率

三、R语言计算

案例1:您在一家银行工作,您需要与呼叫中心联系并告诉他们您需要的服务器数量。您正在为客户的特定功能查询设置此呼叫中心,客户在一小时内有大约20个查询,每个查询大约需要15分钟才能解决。试找出所需的服务器数量,使得平均等待时间缩短至不到1分钟。

给定问题可参考多服务台M/M/C等待时间的计算。

3.1 R计算程序

options(digits=4)
rm(list = ls())
a =data.frame() #系统M/M/C运行指标计算结果 Lambda = 20
Mue = 4 #基于到达率和服务率可以预估服务器数量大约为6-20
Rho <- Lambda / Mue for (c in 6:20){
P0inv=0
for (i in 0:(c-1)) {P0inv = P0inv+(Rho^i)/factorial(i)}
P0inv <- P0inv+ (Rho^c / (factorial(c)*(1-Rho/c)))
P0 = 1 / P0inv
Lq= P0*(Rho^c)*(Rho/c)/(factorial(c)*(1-(Rho/c))^2)
Wq =60* Lq / Lambda
Ls <- Lq + Rho
Ws <- 60*Ls/Lambda
a <- rbind(a,cbind(P0,Ls,Lq,Ws,Wq))
}

3.2 R计算结果

           P0    Ls        Lq    Ws        Wq
[1,] 0.004512 7.938 2.938e+00 23.81 8.813e+00
[2,] 0.005975 5.810 8.104e-01 17.43 2.431e+00
[3,] 0.006474 5.279 2.788e-01 15.84 8.363e-01
[4,] 0.006648 5.101 1.006e-01 15.30 3.019e-01
[5,] 0.006708 5.036 3.611e-02 15.11 1.083e-01
[6,] 0.006728 5.013 1.257e-02 15.04 3.772e-02
[7,] 0.006735 5.004 4.203e-03 15.01 1.261e-02
[8,] 0.006737 5.001 1.341e-03 15.00 4.024e-03
[9,] 0.006738 5.000 4.077e-04 15.00 1.223e-03
[10,] 0.006738 5.000 1.179e-04 15.00 3.538e-04
[11,] 0.006738 5.000 3.249e-05 15.00 9.747e-05
[12,] 0.006738 5.000 8.531e-06 15.00 2.559e-05
[13,] 0.006738 5.000 2.138e-06 15.00 6.414e-06
[14,] 0.006738 5.000 5.121e-07 15.00 1.536e-06
[15,] 0.006738 5.000 1.174e-07 15.00 3.522e-07

从上面结果可知,设置呼叫中心服务台数量为8,其等待时间为Wq=2.431e+00分钟;设置服务台数量为9,其等待时间Wq=8.363e-01分钟,满足问题要求。

3.3 案例应用

案例2:您是银行分行的运营官,您的分支机构最多可容纳50名客户。如果客户以100客户/小时的速度进入并且出纳员在3分钟内解决查询,为确保客户等待时间少于30秒,需要多少柜员?

系统模型M/M/C/N/∞ ,其中\(\lambda=100\),\(\mu=20\),\(N=50\).

总结

排队现象作为一种随机现象,所采用的主要工具是研究随机现象规律的概率论。它把所需研究的问题 形象地描述成顾客(如电话用户、发生故障的机床等)来到服务台前(如电话线路维修工人 等)要求接待,如果“服务台”已被其他顾客占用,那么就得排队等待;另一方面服务台”也 时而清闲,时而忙碌。排队论就是人们通过数学方法求出顾客等待时间、排队长度等的概率分布,以便作出决策。目前排队论在社会生活的各方面已有广泛而深入的应用,如在水库用水量的调度、存储 问题、生产流水线的安排、电力网的设计、铁路分车场的调度等方面都可运用排队论的基本理论来进行计算,从而获得合理的解决方案。

参考文献

单服务台排队模型R实现

怎么利用Python进行数学建模与分析?

【数学建模算法】(19)排队论:多服务台模型(M/M/s/∞)

R语言中如何使用排队论预测等待时间?

排队论——系统运行指标的R语言实现的更多相关文章

  1. R语言中文社区历史文章整理(类型篇)

    R语言中文社区历史文章整理(类型篇)   R包: R语言交互式绘制杭州市地图:leafletCN包简介 clickpaste包介绍 igraph包快速上手 jiebaR,从入门到喜欢 Catterpl ...

  2. R语言解读多元线性回归模型

    转载:http://blog.fens.me/r-multi-linear-regression/ 前言 本文接上一篇R语言解读一元线性回归模型.在许多生活和工作的实际问题中,影响因变量的因素可能不止 ...

  3. 第五篇:R语言数据可视化之散点图

    散点图简介 散点图通常是用来表述两个连续变量之间的关系,图中的每个点表示目标数据集中的每个样本. 同时散点图中常常还会拟合一些直线,以用来表示某些模型. 绘制基本散点图 本例选用如下测试数据集: 绘制 ...

  4. R语言入门1:安装R和RStudio

    R语言入门1:安装R和RStudio 曹务强 中科院遗传学博士研究生 9 人赞同了该文章 1. Windows安装R 在Windows系统上,安装R语言比较简单,直接从R的官方网站下载,按照正常的软件 ...

  5. windows下R语言在终端的运行

    在windows下可以有多种方式来运行R,R导论的这些章节给出一些详细的指导. 通常在环境变量离包含R的安装目录类似于R\R-3.1.2\bin\x64的情况下,就可以在CMD下运行R程序了 注意我这 ...

  6. 在jupyter notebook中运行R语言

    要想在jupyter notebook中运行R语言其实非常简单,按顺序安装下面扩展包即可: install.package('repr','IRdisplay','evaluate','crayon' ...

  7. R语言图形base系统(三)

     本篇介绍R语言base系统绘制散点图.条形图.直方图.箱线图.饼图,还将简单介绍点图.核密度图.折线图. 散点图: attach(mtcars) plot(wt, mpg, main="B ...

  8. R语言图形base系统(一)

           一般R作图有三大绘图系统:base系统.ggplot2绘图系统.lattice绘图系统.        本篇主要介绍base系统绘图时的图形参数.一般用plot()函数来完成.在R中,若 ...

  9. Windows7-32位系统下R语言链接mySQL数据库步骤

    安装R和MySQL在此就不再多说了.网上有非常多教程能够找到.以下直接进入到odbc的安装流程. 1.下载安装mysql-connector-odbc-5.x.x-win32.msi 下载地址:htt ...

  10. jupyter notebook 中同时添加Python2和3,在conda下配置R语言运行的环境

    1.第一步,安装Python2的环境 首先,在安装anaconda的时候先选择一个Python安装,我先安装的是Python3 然后,在anaconda Prompt下创建Python2环境 现在,还 ...

随机推荐

  1. jdkman(jdk版本管理工具)安装和使用(mac)

    1.安装jdkman 1.1.下载命令 curl -s "https://get.sdkman.io" | bash 执行后,sdkman安装到目录$HOME/.sdkman/,比 ...

  2. SpringCloud框架开发

    1.是什么微服务 是一种架构模式,他提倡将单一应用程序划分一组小的服务,服务之间的相互配合.互相协调. 2.Spring Cloud简介 SpringClound等于分布式微服务架构的一站式解决方案, ...

  3. 通过VS Code轻松连接树莓派

    如果您正在使用树莓派作为开发平台,那么通过远程连接VS Code到树莓派是非常方便的一种方法.这样,您可以在Windows或macOS等计算机上开发和测试代码,而不必在树莓派上进行. 以下是通过VS ...

  4. js 获取html加载的参数?file=123&time=2021

    <script> function GetArgsFromHref(sHref, sArgName) { var args = sHref.split("?"); va ...

  5. 微信端手机跨域上传图片偶尔跑进error

    如题.我这两天被这个问题搞得焦头烂额.其他端都没问题,就微信端的有问题,就是因为通过ajax上传图片的时候,设置了 async: false,然后客户用了测试总是跑进error,客户问什么情况,我也找 ...

  6. centos7 升级gcc

    #安装gcc yum install -y gcc-c++ autoconf automake ​ #centos7 默认的 gcc 默认是4.8.5,版本小于 5.3 无法编译,需要先安装gcc新版 ...

  7. Linux用户管理2

    passwd给用户修改密码 用户自己给自己设置密码直接passwd root用户给普通用户设置密码passwd 用户名 --stdin从标准输入获取信息 echo "1" | pa ...

  8. 2020/03/23--Diary

    各位好! 我是R0ther,一位初学编程的学生.目前所学习到的有Java,C#,Winform,SQL-Server,H5,CSS3的一些基础知识,掌握一些Ae,Pr,Ps的基础应用. 虽然是大专文凭 ...

  9. 九九乘法表打印记一次al面试

    for (int i = 1; i <= 9; i++) { for (int j = 1; j <= i; j++) { System.out.print(i + "x&quo ...

  10. revit转tileset 3dmax转tileset cesium展示

    使用revit软件导出fbx模型: 使用glTFExport导出gltf模型,导出的gltf模型具有属性.但是此处导出gltf模型,不是为了在cesium中加载该gltf模型,主要目的是获取组件属性信 ...