运筹说 第116期 | 算法介绍之排队论

在这个快节奏的时代,无论是线上购物、线下服务,还是工业生产,我们都不可避免地与“排队”打交道。今天小编将带你一起探索利用PythonMATLAB这两种编程工具,来求解排队论中的常见模型和排队优化问题。我们将从排队论的基础模型开始,深入了解等待制排队模型混合制模型以及有限源排队模型,接着对排队问题的优化问题进行探讨,最后用算法模拟现实生活中的车辆排队现象。由于篇幅有限,小编接下来只展示部分代码,小伙伴们可以关注“运筹说”公众号→后台回复“算法介绍之排队论”获取完整代码。话不多说,我们一起来看看吧!

本次算法介绍将聚焦于四种常见的排队模型:M/M/s等待制排队模型,它包括单服务台和多服务台两种情形;M/M/s混合制排队模型,进一步考虑了有限系统空间和顾客流失,包括单服务台的M/M/1/K和多服务台的M/M/S/K模型;以及有限源排队模型,它适用于顾客数量有限且可能重复服务的情况。

01 M/M/s等待制排队模型

⭐ 单服务台模型

(1)问题描述

单服务台等待模型M/M/1/是指:顾客的相继到达时间服从参数为λ的负指数分布。服务台的个数为1,服务时间V服从参数为μ的负指数分布,系统空间无限,允许无限排队,这是一类简单的排队系统。

(2)例题介绍

例1 某修理店只有一个修理工,要求提供服务的顾客到达过程为泊松流,平均4人/小时;修理时间服从负指数分布,平均需要6分钟。试求:修理店空闲的概率;店内恰有3个顾客的概率;店内至少有1个顾客的概率;在店内的平均顾客数;每位顾客在店内的平均逗留时间;等待服务的平均顾客数;每位顾客平均等待服务时间;顾客在店内等待时间超过10分钟的概率。
(3)平台实现

我们以上述例题为例,借助MATLAB和Python介绍实现求解例1的相关代码。

①MATLAB代码展示

我们以上述例题为例,借助MATLAB介绍实现求解的相关代码。代码思路与排队理论中的M/M/1模型数学计算公式相同。

代码运行及最终结果展示如下。经过代码运行得出修理店空闲的概率为0.6;恰有3个顾客的概率为0.0384;店内至少有1个顾客的概率为0.4;平均顾客数为0.667;平均逗留时间为10分钟;等待服务的平均顾客数为0.267;平均等待服务时间为4分钟;逗留时间超过10分钟的概率为0.368。

②Python代码展示

我们以上述例题为例,借助Python介绍实现求解的相关代码。

求解思路与求解结果同上。

⭐ 多服务台模型

(1)问题描述

设顾客单个到达,相继到达时间间隔服从参数为λ的负指数分布,系统中共有s个服务台,每个服务台的服务时间相互独立,且服从参数为μ的负指数分布。当顾客到达时,若有空闲的服务台则可以马上接受服务,否则便排成一个队列等待,等待空间为无限。这就是多服务台模型M/M/S/

(2)例题介绍

例2 某售票处有3个窗口,顾客的到达为泊松流,平均到达率为λ=0.9人/分钟;服务(售票)时间服从负指数分布,平均服务率μ=0.4人/分钟。现设顾客到达后排成一个队列,依次向空闲的窗口购票,试求整个售票处空闲的概率P0;平均队长Ls、平均排队长Lq、平均逗留时间Ws、平均等待时间Wq;顾客到达时必须排队等待的概率。

(3)平台实现

我们以上述例题为例,借助MATLAB和Python介绍实现求解例2的相关代码。

①MATLAB代码展示

我们以上述例题为例,借助MATLAB介绍实现求解的相关代码。

代码运行及最终结果展示如下,经过代码运行得出空闲的概率为0.075均排队长为1.703;平均队长为3.953;平均等待时间为1.893;平均逗留时间为4.393;排队等待的概率为0.568。

②Python代码展示

我们以上述例题为例,借助Python介绍实现求解的相关代码。

求解思路与求解结果同上。

02 M/M/s混合制排队模型

⭐ 单服务台M/M/1/K混合制模型

(1)问题描述

单服务台混合制模型M/M/1/K是指:顾客的相继到达时间服从参数为λ的负指数分布(即顾客的到达过程为Poisson流),服务台个数为1,服务时间V服从参数为μ的负指数分布,系统的空间为K

(2)例题介绍

例3 某修理站只有一个修理工,且站内最多只能停放4台待修的机器。设待修机器按Poisson流到达修理站,平均每分钟到达1台;修理时间服从负指数分布,平均每1.25分钟可修理1台,该题是一个典型的但服务台混合制模型,试求该系统的有关指标。

(3)平台实现

我们以上述例题为例,借助MATLAB和Python介绍实现求解例3的相关代码。

①MATLAB代码展示

我们以上述例题为例,借助MATLAB介绍实现求解的相关代码。

代码运行及最终结果展示如下,经过代码运行得出空闲的概率为0.122;顾客损失率为0.297;有效到达率为0.703;平均队长为2.437;平均排队长为1.558;平均逗留时间为3.4689;平均等待时间为2.219。

②Python代码展示

我们以上述例题为例,借助Python介绍实现求解的相关代码。

求解思路与求解结果同上。

⭐ 多服务台M/M/S/K混合制模型

(1)问题描述

多服务台混合制模型M/M/S/K是指:顾客的相继到达时间服从参数为λ的负指数分布,服务台个数为s(当s=1时为单服务台混合制模型),服务时间V服从参数为μ的负指数分布,系统的空间为K
(2)例题介绍

例4 某汽车加油站设有两个加油机,汽车按泊松流到达,平均每分钟到达2辆;汽车加油时间服从负指数分布,平均加油时间为2分钟。又知加油站最多只能停放3辆等待的汽车,汽车到达时,若已满员,则必须开到别的加油站取,该题是一个典型的多服务台混合制模型,试对该系统进行分析。

(3)平台实现

我们以上述例题为例,借助MATLAB和Python介绍实现求解例4的相关代码。

①MATLAB代码展示

我们以上述例题为例,借助MATLAB介绍实现求解的相关代码。

代码运行及最终结果展示如下,经过代码运行得出空闲的概率为0.008;顾客损失率为0.529;平均排队长为2.248;平均队长为4.132;平均逗留时间为4.386;平均等待时间为2.386;占用加油机的平均数为1.884。

②Python代码展示

我们以上述例题为例,借助Python介绍实现求解的相关代码。

求解思路与求解结果同上。

03 有限源排队模型

(1)问题描述

有限源排队模型的主要特征是顾客总数是有限的,如果有m个顾客。每个顾客来到系统中接受服务后易回到原来的总体,还有可能再来。关于顾客的平均到达率,在有限源的情形下,按每一顾客来考虑。设每个顾客的到达率都是相同的,均为λ (这里 的含义是指单位时间内该顾客来到系统请求服务的次数),且每一顾客在系统外的时间均服从参数为μ的负指数分布。

(2)例题介绍

例5 设有一工人看管5台机器,每台机器正常运转的时间服从负指数分布,平均为15分钟。当发生故障后,每次修理时间服从负指数分布,平均为12分钟,试求该系统的有关运行指标。

(3)平台实现

我们以上述例题为例,借助MATLAB和Python介绍实现求解例5的相关代码。

①MATLAB代码展示

我们以上述例题为例,借助MATLAB介绍实现求解的相关代码。

该题目需要计算一个具有5个相同机器和一个修理工的系统的可靠性参数。首先定义参数包括故障率、修理率、机器总数和修理工人数。通过计算系统的空闲概率、故障机器平均数、等待修理机器平均数、故障的平均停工时间、每台机器的平均待修时间以及系统绝对通过能力等关键指标,来评估系统的性能和效率。

代码运行及最终结果展示如下,经过代码运行得出空闲的概率为0.0073;5台机器都出故障的概率为0.2870;出故障机器平均数为3.7591;等待修理机器平均数为2.7664;一次故障的平均停工时间为45.4412;每台机器平均待修时间为33.4412;系统绝对通过能力为0.08273。

②Python代码展示

我们以上述例题为例,借助Python介绍实现求解的相关代码。

求解思路与求解结果同上。

二、排队系统模型的优化

排队系统的优化问题分为两类:系统的最优设计和最优控制,前者称为静态最优问题,目的在于使系统达到最大效益,或者说在一定指标下使系统最为经济;后者称为动态最优问题,是指对一给定的系统,如何运营可使给定的目标函数达到最优。由于对后一类问题的阐述需要较多的数学知识,所以小编带领大家着重了解静态最优问题中的确定最优服务率μ*确定最佳服务台数量s*的问题。

01 最优服务率μ

(1)例题介绍

例6 对某M/M/1/3系统的服务台进行实测,得到如下数据:

系统中得顾客数( ): 0 1 2 3

记录到的次数( ):161 97 53 34

平均服务时间为10 min,服务一个顾客的收益为2元,服务机构运行单位时间成本为1元,问服务率为多少时可使单位时间平均总收益最大?

(2)平台实现

我们以上述例题为例,借助MATLAB和Python介绍实现求解例6的相关代码。

①MATLAB代码展示

我们以上述例题为例,借助MATLAB介绍实现求解的相关代码。基于系统中得顾客数( )和记录到的次数( ),首先需要估计系统的利用率和平均到达率,然后建立优化模型来求解最大化单位时间平均总收益的最优服务率。通过求解该模型,得到最优服务率,并计算使用此服务率时系统的总收益。

代码运行及最终结果展示如下,系统利用率为0.60,平均到达率为3.6 (人/h),最优服务率3 (人/h),当服务率为6人/h时,单位时间平均总收益为0.459元,当服务率为3人/h时,单位时间平均总收益为1.87元,单位时间内平均收益可增加1.414元。

结果显示,与初始假设的服务率相比,使用最优服务率可以显著提高单位时间内的平均总收益。

②Python代码展示
我们以上述例题为例,借助Python介绍实现求解的相关代码。

求解思路与求解结果同上。

02 最优的服务台数s

(1)例题介绍

例7 某检验中心为各个工厂服务,要求作检验的工厂(顾客)的到来为泊松流,平均到达率为λ=48次/天,每次检验时,因停工损失6元,服务时间服从负指数分布,平均服务率为μ=25次/天。每设置一个检验员的服务成本4元/天,其他条件与M/M/s/排队系统相同。问:应设多少检验员,使得检验总费用的平均值最少?

(2)平台实现

我们以上述例题为例,借助MATLAB和Python介绍实现求解例7的相关代码。

①MATLAB代码展示

我们以上述例题为例,借助MATLAB介绍实现求解的相关代码。

为了最小化检验的总费用,我们需要确定检验员的最优数量,总费用包括检验员的服务成本和因停工导致的损失成本。通过定义一个函数来计算在给定检验员数量s时,系统的空闲概率、系统中平均顾客数和总成本,接着遍历可能的检验员数量找到使总成本最小的检验员数量,最终得到最优的检验员数量和对应的总成本。

代码运行及最终结果展示如下,经过代码运行得出当检验员数量为3时,检验总费用的平均值最少,为27.8673元。

②Python代码展示

我们以上述例题为例,借助Python介绍实现求解的相关代码

求解思路与求解结果同上。

三、排队论现实应用场景

排队论在现实生活中的应用非常广泛,它通过数学模型来分析和优化服务流程,提高效率。例如,在银行和金融机构中,排队系统帮助管理顾客等待时间,减少拥堵;在医疗系统中,它用于优化病人的就诊流程,确保紧急情况得到快速响应;交通系统中,排队论用于设计更合理的交通信号灯控制策略,减少车辆排队和拥堵;在电信领域,它帮助设计电话网络,确保通话质量并减少掉线率。

车辆通过路口的情况可以类比为M/M/1 排队模型。下面的示例模拟了车辆通过路口的情境,即基于负指数分布到达和负指数分布服务时间的排队系统。通过模拟,我们可以了解在不同车辆到达速率(由λ表示)和服务速率(由μ表示)下,系统的表现如何,包括队列中车辆的平均等待时间和队列长度的变化,代码如下。

λ <= μ时,则ρ <= 1,队伍的长度L会逐渐增长并收敛至L = λ / (μ - λ),平均等待时间会收敛至Wq = 1 / (μ -λ)。反之若λ > μρ > 1,此时系统过载,LWq会随着到达的顾客数的增加而增加,不会收敛。

接着画图展示出排队的过程,代码如下。

上图显示了车辆在队列中等待的平均时间(以秒为单位)如何随着到达路口的车辆总数变化。随着车辆数目的增加,车辆在队列中等待时间的变化趋势。

上图展示了队列中车辆数(以当量交通量PCU为单位)如何随着到达路口的车辆总数变化。反映了在不同时间点,队列中车辆的累积数量,进而反映了交通流量对排队长度的影响,以及系统处理交通流量的能力。

当到达率(λ)和服务率(μ)已知时,可以根据理论公式计算系统的稳态队列长度L = 105.5250,和平均等待时间Wq = 15.7500。模拟结果如下所示,与理论计算相符。

作者 | 王连聚 齐涵

责编 | 王一静

审核 | 徐小峰

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/22031.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

U盘杀毒是否会导致文件丢失?误删文件如何恢复?

在数字化时代&#xff0c;U盘作为便携的数据存储设备&#xff0c;广泛应用于我们的日常生活与工作中。然而&#xff0c;随着网络环境的复杂化&#xff0c;U盘也时常成为病毒传播的媒介。因此&#xff0c;对U盘进行杀毒成为保护数据安全的重要步骤。但许多用户担心&#xff0c;给…

centos安装vscode的教程

centos安装vscode的教程 步骤一&#xff1a;打开vscode官网找到历史版本 历史版本链接 步骤二&#xff1a;找到文件下载的位置 在命令行中输入&#xff08;稍等片刻即可打开&#xff09;&#xff1a; /usr/share/code/bin/code关闭vscode后&#xff0c;可在应用程序----编程…

10Linux 进程管理学习笔记

Linux 进程管理 目录 文章目录 Linux 进程管理一.进程1.显示当前进程状态(ps)进程树(pstree)1.1实时显示进程信息(top)顶部概览信息&#xff1a;CPU 状态&#xff1a;内存状态&#xff1a;进程信息表头&#xff1a;进程列表&#xff1a;1.2(htop) 2.终止进程(kill)2.1通过名称…

Jetson Orin Nano安装使用;cuda、pytorch安装;yolo使用

参考: https://blog.csdn.net/q839039228/article/details/126278528 1、jtop工具安装 安装jtop资源查看: sudo apt update sudo apt upgrade安装: sudo apt install curl nanosudo pip install jetson-stats查看: jtop 按2查看GPU 按3查看CPU 2、JetPack套件 参…

修改云主机配置 - 内存增容

文章目录 一、修改云主机配置缘由二、修改云主机配置步骤1、查看云主机概述2、查看master云主机3、更改master云主机配置4、查看master云主机 三、使用Spark Shell玩Saprk SQL1、启动HDFS服务2、启动Spark集群3、启动集群模式Spark Shell4、读取文件生成单例数据帧5、将单列数据…

C语言----字符串、字符数组

一、定义 C语言中的字符串是以字符数组的形态存在的 在C语言中&#xff0c;没有字符串类型&#xff0c;字符串实际上是使用空字符\0结尾的一维字符数组。因此&#xff0c;\0是用于标记字符串的结束。 二 、如何创建字符串&#xff1f; 1.通过字符数组来创建字符串&#xff0…

某黑产组织最新攻击样本利用BYVOD技术的详细分析

前言概述 最近一两年BYVOD技术被广泛应用到了各种黑产攻击、APT攻击以及勒索病毒攻击活动当中&#xff0c;笔者近期在对某黑产组织进行跟踪&#xff0c;捕获到该组织的最新攻击样本&#xff0c;通过某安全厂商的驱动漏洞&#xff0c;利用BYVOD技术对抗其他安全软件包括各种EDR…

单片机+M26429+PAM8403+MH-M18无线蓝牙音频功放设计 原理图PCB源程序

目录 功能描述&#xff1a; 原理图 PCB ​代码 资料下载地址&#xff1a;单片机M26429PAM8403MH-M18无线蓝牙音频功放设计 原理图PCB源程序 功能描述&#xff1a; 1&#xff0c;无线蓝牙连接&#xff0c;手机可控制歌曲音频选择。 2&#xff0c;音频声音的大小可控制一排…

三维模型轻量化工具:手工模型、BIM、倾斜摄影等皆可用!

老子云是全球领先的数字孪生引擎技术及服务提供商&#xff0c;它专注于让一切3D模型在全网多端轻量化处理与展示&#xff0c;为行业数字化转型升级与数字孪生应用提供成套的3D可视化技术、产品与服务。 老子云是全球领先的数字孪生引擎技术及服务提供商&#xff0c;它专注于让…

sectigo和certum ip ssl证书的区别

IP SSL证书是一种数字证书&#xff0c;为客户端和服务器之间的信息传输提供加密服务。但是和应用比较广泛的域名SSL证书相比&#xff0c;IP SSL证书是为只有公网IP地址的网站准备的数字证书。市场上常见的IP SSL证书品牌就是Sectigo和Certum&#xff0c;那么&#xff0c;这两种…

[AI Google] Ask Photos: 使用Gemini搜索照片的新方法

借助Gemini模型&#xff0c;将Google Photos提升到一个新的水平。 Google Photos是我们最早以AI为核心构建的产品之一&#xff0c;让你能够搜索照片和视频中的人、宠物、地点等。现在&#xff0c;我们通过我们最强大的AI模型Gemini对Google Photos进行重大升级。通过Ask Photos…

【C/C++】——小白初步了解——内存管理

目录 1. C/C内存分布 代码区&#xff08;Code Segment&#xff09;&#xff1a; 数据区&#xff08;Data Segment&#xff09;&#xff1a; 堆区&#xff08;Heap&#xff09;&#xff1a; 栈区&#xff08;Stack&#xff09;&#xff1a; 常量区&#xff08;Constant Seg…

数据中心横向虚拟化 M-LAG 技术

M-LAG 一、M-LAG概述 1、M-LAG定义&#xff1a;M-LAG&#xff08;Multichassis Link Aggregation Group&#xff09;是跨设备链路聚合组。可以将两台设备进行跨设备链路聚合&#xff0c;从而把链路的可靠性从单板机提高到了设备级。 2、优势&#xff1a; (1)、M-LAG系统的两台…

UE 打包报错 MarketplaceRules.dll‘ does not exist.

Precompiled rules assembly /Users/unity/Library/Application Support/Epic/UnrealEngine/Intermediate/Build/BuildRules/MarketplaceRules.dll does not exist. Window下找到该DLL 拷到Mac对应的目录下即可。如没有则需要手动创建相应的文件夹 /Users/unity/Library/Appl…

# 全面解剖 消息中间件 RocketMQ-(5)

全面解剖 消息中间件 RocketMQ-&#xff08;5&#xff09; 一、RocketMQ &#xff1a;过滤消息的两种方式 1、Tag 过滤 在大多数情况下&#xff0c;TAG 是一个简单而有用的设计&#xff0c;其可以来选择您想要的消息。 例如: DefaultMoPushconsumer consumer new DefaultM…

文件夹突变解析:类型变文件的数据恢复与预防

在数字化时代&#xff0c;文件夹作为我们存储和组织数据的基本单元&#xff0c;其重要性不言而喻。然而&#xff0c;有时我们可能会遇到一种令人困惑的情况——文件夹的类型突然变为文件&#xff0c;导致无法正常访问其中的内容。这种现象不仅会影响我们的工作效率&#xff0c;…

[MySQL最详细的知识点]

MySQL 关系型数据库以一行作为一个记录,列数据库以一列为一个记录一行是一个记录,一列是一个字段一行是一个实体,一列是一个属性 MySQL引擎: MySQL引擎&#xff1a;可以理解为&#xff0c;MySQL的“文件系统”&#xff0c;只不过功能更加强大。​MySQL引擎功能&#xff1a;除…

mysql 分区

目标 给一个表&#xff08;半年有800万&#xff09;增加分区以增加查询速度 约束 分区不能有外键否则会报错 https://blog.csdn.net/yabingshi_tech/article/details/52241034 主键 按照时间列进行分区 https://blog.csdn.net/winerpro/article/details/135736454 参看以…

安全测试 之 常见安全漏洞:CORS

1. 背景 安全测试定义&#xff1a;安全测试&#xff0c;是在软件产品开发基本完成时&#xff0c;验证产品是否符合安全需求定义和产品质量标准的过程。目的&#xff1a;通过对系统进行全面的脆弱性安全测试&#xff0c;发现系统未知的安全隐患并提出相关建议&#xff0c;确保系…

BUAA操作系统万字笔记-课堂笔记-期末考试-考研必备-北航961系列

文章目录 1 概论1.1 CPU漏洞攻击1.2 操作系统简史1.2.1 体系结构1.2.2 系统发展 1.3 操作系统基本实现机制1.3.1 异常&#xff1a;陷阱和中断 2 系统引导3 内存管理3.1 预备知识-链接与装载3.2 存储管理基础3.2.1 存储器管理目标3.2.2 存储器硬件发展3.2.3 存储管理的功能3.2.4…