随机服务系统模拟—R实现(一)
排队论——随机服务系统
日常生活中存在大量有形和无形的排队或拥挤现象,如旅客购票排队,市内电话占线等现象。排队论的基本思想是 1909 年丹麦数学家、科学家,工程师 A. K. 埃尔朗在解决自动电话设计问题时开始形成的,当时称为话务理论。他在热力学统计平衡理论的启发下,成功地建立了电话统计平衡模型,并由此得到一组递推状态方程,从而导出著名的埃尔朗电话损失率公式。20 世纪 30 年代中期,当费勒(W. Feller)引进了生灭过程时,排队论才被数学界承认为一门重要的学科。在第二次世界大战期间和第二次世界大战以后,排队论在运筹学这个新领域中变成了一个重要的内容。
一、随机服务系统概述
排队论 (queuing theory),或称随机服务系统理论, 是通过对服务对象到来及服务时间的统计研究,得出这些数量指标(等待时间、排队长度、忙期长短等)的统计规律,然后根据这些规律来改进服务系统的结构或重新组织被服务对象,使得服务系统既能满足服务对象的需要,又能使机构的费用最经济或某些指标最优。它是数学运筹学的分支学科,也是研究服务系统中排队现象随机规律的学科。广泛应用于计算机网络、生产、运输、库存等各项资源共享的随机服务系统。 排队论研究的内容有 3 个方面:统计推断,根据资料建立模型;系统的性态,即和排队有关的数量指标的概率规律性;系统的优化问题。其目的是正确设计和有效运行各个服务系统,使之发挥最佳效益。


1. 随机服务系统的建模表示
20 世纪 50 年代初,肯德尔(D. G. Kendall)对排队论作了系统的研究,他用嵌入马尔可夫链方法研究排队论,使排队论得到了进一步的发展。是他首先(1951 年)用 3 个字母组成的符号 X/Y/Z 表示一个排队系统。其中 X 表示顾客到达时间分布,Y 表示服务时间的分布,Z 表示服务机构中的服务台的个数。一般是以相继顾客到达系统的间隔时间分布、服务时间的分布和服务台数目为分类标志。现代常用的分类方法是英国数学家D.G.肯德尔提出而后不断完善形成的。
X/Y/Z/A/B/C
X — 顾客相继到达的间隔时间的分布;
Y — 服务时间的分布(M — 指数分布、D — 确定时间、Ek — k 阶埃尔朗分布、G — 一般分布等);
Z — 服务台个数;
A — 系统容量限制(默认为 ∞);
B — 顾客源数目(默认为 ∞);
C — 服务规则 (默认为先到先服务 FCFS)。
其中M/M/1是最基础的单服务台单队列的随机服务系统模型;其中M/M/C是最基础的多服务台单队列的随机服务系统模型。
2. 随机服务系统的要素
服务系统由服务机构和服务对象(顾客)构成。服务对象到来的时刻和对他服务的时间(即占用服务系统的时间)都是随机的。排队系统包括三个组成部分:输入过程、排队规则和服务机构。
输入过程
输入过程考察的是顾客到达服务系统的规律。它可以用一定时间内顾客到达数或前后两个顾客相继到达的间隔时间来描述,一般分为确定型和随机型两种。例如,在生产线上加工的零件按规定的间隔时间依次到达加工地点,定期运行的班车、班机等都属于确定型输入。随机型的输入是指在时间 t 内顾客到达数 n(t) 服从一定的随机分布。如服从泊松分布,则在时间 t 内到达 n 个顾客的概率为或相继到达的顾客的间隔时间 T 服从负指数分布,即 P(T ≤ t) = 1 – \(e^{-λt}\),式中 λ 为单位时间顾客到达数的期望,称为平均到达率;1/λ 为平均间隔时间。在排队论中,讨论的输入过程主要是随机型的。
排队规则
排队规则分为等待制、损失制和混合制三种。当顾客到达时,所有服务机构都被占用,则顾客排队等候,即为等待制。在等待制中,为顾客进行服务的次序可以是先到先服务,或后到先服务,或是随机服务和有优先权服务(如医院接待急救病人)。如果顾客来到后看到服务机构没有空闲立即离去,则为损失制。有些系统因留给顾客排队等待的空间有限,因此超过所能容纳人数的顾客必须离开系统,这种排队规则就是混合制。
服务机构
可以是一个或多个服务台。多个服务台可以是平行排列的,也可以是串连排列的。服务时间一般也分成确定型和随机型两种。例如,自动冲洗汽车的装置对每辆汽车冲洗(服务)时间是相同的,因而是确定型的。而随机型服务时间 v 则服从一定的随机分布。如果服从负指数分布,则其分布函数是 P(v ≤ t) = 1 – \(e^{-μt}\),式中 μ 为平均服务率,1/μ 为平均服务时间。
3. 随机服务系统的绩效指标
研究排队系统问题的主要目的是研究其运行效率,考核服务质量,以便据此提出改进措施。通常评价排队系统优劣有6项数量指标。
①系统负荷水平ρ :它是衡量服务台在承担服务和满足需要方面能力的尺度;
②系统空闲概率\(P_0\):系统处于没有顾客来到要求服务的概率;
③队长:系统中排队等待服务和正在服务的顾客总数,其平均值记为\(L_s\);
④队列长:系统中排队等待服务的顾客数,其平均值记为\(L_q\);
⑤逗留时间:一个顾客在系统中停留时间,包括等待时间和服务时间,其平均值记为\(W_s\);
⑥等待时间:一个顾客在系统中排队等待时间,其平均值记为\(W_q\)。
M/M/1排队系统是一种最简单的排队系统。系统的各项指标可由状态转移速度图推算出来。其他类型的排队系统的各种指标计算公式则复杂得多,可专门列出计算公式图表备查。现已开始应用计算机仿真来求解排队系统问题。

4. 随机服务系统的应用
排队论已广泛应用于交通系统、港口泊位设计、机器维修、库存控制和其他服务系统。

二、R模拟包Simmer简介
simmer(Ucar and Smeets 2019a)是R的DES软件包,它与其他现代模拟器一样,可以进行面向高级过程的建模。但是除此之外,它还利用了轨迹(trajectory)的新颖概念:模拟模型中相同类型实体的共同路径。换句话说,轨迹由定义等效过程生命周期的一系列标准化动作组成。这种设计模式灵活易用,并利用了magrittr软件包引入的链接/管道工作流程(Bache和Wickham 2014)。让我们用一个来自Pidd(1988)给出的简单例子来介绍如何使用simmer。
考虑一个简单的工程车间:
(1)该车间由几台相同的机器(machines)组成,同时也有几位相同的操作员(operatives)
(2)车间会收到作业(job)和额外任务(task),分别由机器(machines)独立执行(RUNNING)和操作员(operatives)独立外出完成(AWAY)
(3)空余(READY)机器每次完成一个作业后需要空闲(WAITING)操作员重置(RESET)
(4)如果机器执行作业后损坏了(worn),还需要空闲操作员进行额外的更换(RETOOL)环节
(5)所有机器均从可用状态(READY)开始,所有操作员均从等待状态开始(WAITING)

示意图中,圆圈(READY,STOPPED,OK,WAITING)表示机器或操作员的状态。而矩形(RUNNING,RETOOL,RESET,AWAY)表示需要一些(随机)时间才能完成的活动。虚线左右侧分别表示机器和操作员特有状态、活动,虚线上的RETOOL和RESET表示需要共同完成活动。
三、总结
随机服务系统的应用很广,案例众多。例如只有一位员工的邮局,只有一队列。客人进来,排队、接受服务、离开。如果客人进来的数目符合泊松过程,且服务时间是指数分布,则可用M/M/1模拟,并算出平均队列长度、不同等候时间的机率等。M/M/1也可一般化成为M/M/C模型,使可用时接受服务的人数为大于一。历史上,M/M/C模型首先被用来模拟电话系统,因为荷兰工程师Erlang发现客人打电话的速率符合泊松过程,且通话时间是指数分布,所以占用通讯线路的数目和等待接线的人数符合M/M/C模型。
参考文献
1.(Simmer 2019带你飞 )[https://www.sohu.com/a/344940911_100040805]
2.(随机服务系统模拟)[https://www.math.pku.edu.cn/teachers/lidf/docs/statcomp/html/_statcompbook/sim-des.html]
随机服务系统模拟—R实现(一)的更多相关文章
- Stochastic Gradient Descent 随机梯度下降法-R实现
随机梯度下降法 [转载时请注明来源]:http://www.cnblogs.com/runner-ljt/ Ljt 作为一个初学者,水平有限,欢迎交流指正. 批量梯度下降法在权值更新前对所有样本汇总 ...
- R语言︱决策树族——随机森林算法
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:有一篇<有监督学习选择深度学习 ...
- 翻译1-在SQL Server 2016中介绍微软R服务
在SQL Server 2016中介绍微软R服务 源自:http://www.sqlservercentral.com/articles/Microsoft/145393/ 作者:tomakatrun ...
- 随机森林入门攻略(内含R、Python代码)
随机森林入门攻略(内含R.Python代码) 简介 近年来,随机森林模型在界内的关注度与受欢迎程度有着显著的提升,这多半归功于它可以快速地被应用到几乎任何的数据科学问题中去,从而使人们能够高效快捷地获 ...
- 【翻译】Awesome R资源大全中文版来了,全球最火的R工具包一网打尽,超过300+工具,还在等什么?
0.前言 虽然很早就知道R被微软收购,也很早知道R在统计分析处理方面很强大,开始一直没有行动过...直到 直到12月初在微软技术大会,看到我软的工程师演示R的使用,我就震惊了,然后最近在网上到处了解和 ...
- R统计分析处理
[翻译]Awesome R资源大全中文版来了,全球最火的R工具包一网打尽,超过300+工具,还在等什么? 阅读目录 0.前言 1.集成开发环境 2.语法 3.数据操作 4.图形显示 5.HTML部件 ...
- .NET CORE微服务中CONSUL的相关使用
.NET CORE微服务中CONSUL的相关使用 1.consul在微服务中的作用 consul主要做三件事:1.提供服务到ip的注册 2.提供ip到服务地址的列表查询 3.对提供服务方做健康检查(定 ...
- R工具包一网打尽
这里有很多非常不错的R包和工具. 该想法来自于awesome-machine-learning. 这里是包的导航清单,看起来更方便 >>>导航清单 通过这些翻译了解这些工具包,以后干 ...
- R工具包
直到12月初在微软技术大会,看到我软的工程师演示R的使用,我就震惊了,然后最近在网上到处了解和爬一些R的资料,看着看着就入迷了,这就是个大宝库了,以前怎么没发现,看来还是太狭隘了.直到前几天我看到这个 ...
- 网络文件共享服务—NFS服务
NFS服务 NFS:Network File System 网络文件系统,基于内核的文件系统: Sun公司开发,通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件,基于RPC(Rem ...
随机推荐
- 机制设计原理与应用(三)Screening
目录 3 Screening 3.1 为单个不可分割的项目定价 3.1.1 对\(\theta\)的假设 3.1.2 问题描述 3.1.3 特性 3.2 为无限可分的项目定价 3.2.1 对\(\th ...
- 个人IDEA常用快捷键
1. Ctrl 快捷键 说明 Ctrl + P 在方法参数括号内显示参数类型提示 Ctrl + Q 显示类或方法的文档注释相关信息 Ctrl + D 复制当前行 Ctrl + Y 删除当前行 Ctrl ...
- cat、more、less、tail、head文件查看指令辨析
1.cat 简介 cat [OPTION]... [FILE]... cat 可以将多个文本连接起来并输出,当省略输入文件或输入文件用字符-替代时,读取标准输入 常用参数 -n \(~~~~\)输出行 ...
- airtest的手势滑动方法封装
这个网上应该很多类似的方法封装,各种实现方式也很多,但是感觉最简单实用的还是swipe了:代码很简单,直接上方法了. 很多方法都不会告诉你会导入什么包,其实很多小白入门可能就是这么简单的一步就被卡 ...
- PHP操作MySQL批量Update的写法,各框架通用防注入版
使用别人的扩展遇到了问题,发现没有做SQL注入的处理.我又写了个轮子,根据自己需求扩展了下,有需要的小伙伴可以直接取用. 这里就直接粘贴源码了,会用PHPD ,基本都会如何把它运用到各个框架里的. 本 ...
- STL练习-ACboy needs your help again!
ACboy was kidnapped!! he miss his mother very much and is very scare now.You can't image how dark ...
- 2019之VLC3.071版本Ubuntu 18-win32-64为编译经验记录
编译环境:1.win7+vmware15+Ubuntu 18 64bit虚拟系统(16也可以)2.gcc 7.4 (大于6即可)3.mingw-w64 5.3.0,及其相关联的x86-64的tool, ...
- 前端复习之DOM、BOM
BOM VS DOM: 1 BOM:浏览器对象模型(API),专门操作浏览器窗口的API 2 没标准! 3 DOM:文档对象模型(API),专门操作网页内容的API 4 可以对网页中任意对象,做任意修 ...
- vs调试导入功能时莫名自动结束调试
新装了vs2022,默认下图所示的地方打勾,导致调试文件导入功能时触发了自动结束调试,真是坑爹~~
- 使用react-vite-antd,修改antd主题,报错 [vite] Internal server error: Inline JavaScript is not enabled. Is it set in your options? It is hacky way to make this function will be compiled preferentially by less
一般报错 在官方文档中,没有关于vite中如何使用自定义主题的相关配置,经过查阅 1.安装less yarn add less (已经安装了就不必再安装) 2.首先将App.css改成App.les ...