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


一、随机服务系统实例
现实生活中存在大量有形和无形的排队或拥挤现象,如旅客购票排队,市内电话占线等现象,上述问题都可以抽象为排队系统进行分析。排队系统是由服务机构和服务对象(顾客)构成。顾客到来的时刻和服务时间(即占用服务系统的时间)都是随机的。上图为一最简单的排队系统模型。排队系统包括三个组成部分:输入过程、排队规则和服务机构。
| 到达顾客 | 服务内容 | 服务机构 |
|---|---|---|
| 病人 | 诊断/手术 | 医生/手术台 |
| 进港的货船 | 装货/卸货 | 码头泊位 |
| 到港的飞机 | 降落 | 机场跑道 |
| 电话拨号 | 通话 | 交换台 |
| 故障机器 | 修理 | 修理技工 |
| 修理技工 | 领取修配零件 | 仓库管理员 |
| 上游河水 | 入库 | 水闸管理员 |
智能仓库中配置多个搬运机器人,中心控制系统接收到订单后,经过分析拆解为相应的拣选任务,然后根据任务优先级,通过一定的分配算法,将任务分配给当前处于空闲状态的搬运机器人。这里,我们将订单看作顾客,搬运机器人看作服务台,不考虑系统对订单的处理及任务分配过程。那么,整个系统可以抽象为一个多服务台排队系统(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语言实现的更多相关文章
- R语言中文社区历史文章整理(类型篇)
R语言中文社区历史文章整理(类型篇) R包: R语言交互式绘制杭州市地图:leafletCN包简介 clickpaste包介绍 igraph包快速上手 jiebaR,从入门到喜欢 Catterpl ...
- R语言解读多元线性回归模型
转载:http://blog.fens.me/r-multi-linear-regression/ 前言 本文接上一篇R语言解读一元线性回归模型.在许多生活和工作的实际问题中,影响因变量的因素可能不止 ...
- 第五篇:R语言数据可视化之散点图
散点图简介 散点图通常是用来表述两个连续变量之间的关系,图中的每个点表示目标数据集中的每个样本. 同时散点图中常常还会拟合一些直线,以用来表示某些模型. 绘制基本散点图 本例选用如下测试数据集: 绘制 ...
- R语言入门1:安装R和RStudio
R语言入门1:安装R和RStudio 曹务强 中科院遗传学博士研究生 9 人赞同了该文章 1. Windows安装R 在Windows系统上,安装R语言比较简单,直接从R的官方网站下载,按照正常的软件 ...
- windows下R语言在终端的运行
在windows下可以有多种方式来运行R,R导论的这些章节给出一些详细的指导. 通常在环境变量离包含R的安装目录类似于R\R-3.1.2\bin\x64的情况下,就可以在CMD下运行R程序了 注意我这 ...
- 在jupyter notebook中运行R语言
要想在jupyter notebook中运行R语言其实非常简单,按顺序安装下面扩展包即可: install.package('repr','IRdisplay','evaluate','crayon' ...
- R语言图形base系统(三)
本篇介绍R语言base系统绘制散点图.条形图.直方图.箱线图.饼图,还将简单介绍点图.核密度图.折线图. 散点图: attach(mtcars) plot(wt, mpg, main="B ...
- R语言图形base系统(一)
一般R作图有三大绘图系统:base系统.ggplot2绘图系统.lattice绘图系统. 本篇主要介绍base系统绘图时的图形参数.一般用plot()函数来完成.在R中,若 ...
- Windows7-32位系统下R语言链接mySQL数据库步骤
安装R和MySQL在此就不再多说了.网上有非常多教程能够找到.以下直接进入到odbc的安装流程. 1.下载安装mysql-connector-odbc-5.x.x-win32.msi 下载地址:htt ...
- jupyter notebook 中同时添加Python2和3,在conda下配置R语言运行的环境
1.第一步,安装Python2的环境 首先,在安装anaconda的时候先选择一个Python安装,我先安装的是Python3 然后,在anaconda Prompt下创建Python2环境 现在,还 ...
随机推荐
- bat脚本批量删除指定源码编译后的文件
@echo off @REM 使循环内的set命令有效 setlocal enabledelayedexpansion set DIR_ROOT=%~dp0..\ for /f "delim ...
- mybatis-plus 3.4.3.1 进行批量 saveOrUpdate
service类通过 SqlHelper.saveOrUpdateBatch 实现通过自定义的 唯一索引 进行 批量保存更新 import com.baomidou.mybatisplus.core. ...
- C#基于数据库链接增删改查
一.创建一个winfrom窗体 1.创建项目 2.创建一个链接数据的类 3.封装数据库的实体类(查询和增加) 在对数据操作时必须引用连个数据库using using System.Data; usin ...
- C语言初级阶段4——数组3——字符数组
C语言初级阶段4--数组3--字符数组 字符数组的定义:储存字符类型数据的集合 1.注意:如果用字符串给字符数组初始化,那么不需要{},但是要有"". 2.%s :用来输出字符串的 ...
- Ubuntu实战
Ubuntu是什么 Ubuntu早期是一个由Debian Linux发展起来的以桌面应用为主的操作系统.作为Linux发行版中的后起 之秀,Ubuntu Linux在短短几年时间里便迅速成长为从Lin ...
- 龙中华著《Spring Boot实战派》读书笔记之基础篇
第四章 Spring Boot 基础 4.1 了解Spring Boot 项目结构 src/main/java //入口类,等 src/main/resources //静态文件和配置文件 src/t ...
- Python笔记(3)——列表二:操作列表(Python编程:从入门到实践)
一.遍历列表 1. 遍历整个列表:使用for循环 1 colors=['red','yellow','blue','green'] #定义列表 2 for color in colors: #使用循环 ...
- 翻下旧资料,发现96年考过foxbase二级
翻下旧资料,找到 96年通过二级考试的证书,那时考的是Foxbase,一路走来,从最早用netware+dos无盘站+foxbase做订单系统,库存管理系统,再到使用记事本码asp网站,PB+orac ...
- 新的世界,我们推荐不劳而获 -> 持续更新中
随着技术带来的生产力爆发越来越猛烈,有人提出是不是有必要保留一些落后的生产工艺及相关岗位,以避免社会动荡. 我的答案:不用.但是要改变社会对于不劳而获的态度:我们对于生活资料的不劳而获持接受的态度,但 ...
- ABP vNext微服务架构详细教程——简介
概述 该系列文章主要展示ABP vNext框架在微服务架构下的用法,提供一套可落地的技术实现思路,并演示各服务在Kubernetes下的部署方案. 基础概念 ABP vNext:基于ASP.NET C ...