排队论及排队系统优化

###纲要

  • 排队现象与排队系统;

  • 排队模型与系统参数;

  • 排队系统时间参数分布规律;

  • 排队系统的生灭过程与状态转移方程;

  • 排队系统分析;

    • 单服务台负指数分布模型
    • 多服务台负指数分布模型
  • 排队系统优化分析;

    排队论发源于上世纪初。
    当时美国贝尔电话公司发明了自动电话,以适应日益繁忙的工商业电话通讯需要。这个新发明带来了一个新问题,即通话线路与电话用户呼叫的数量关系应如何妥善解决,这个问题久久未能解决。
    1909年,丹麦的哥本哈根电话公司A.K.埃尔浪(Erlang)在热力学统计平衡概念的启发下予以解决了。

##1.1排队现象与排队系统
###一、排队现象
这里写图片描述

(1) 由于顾客到达和服务时间的随机性,
 现实中的排队现象几乎不可避免;
(2) 排队过程,通常是一个随机过程,
 排队论又称“随机服务系统理论”;

###二、排队系统
(一)排队服务过程

这里写图片描述
(二)排队系统的要素及其特征

  1. 排队系统的要素:
    (1) 顾客输入过程;
    (2) 排队结构与排队规则;
    (3) 服务机构与服务规则;

  2. 排队系统不同要素的主要特征:
    (1)顾客输入过程
    这里写图片描述
    (2)排队结构与排队规则
    这里写图片描述
    (3)服务机构与服务规则
    这里写图片描述

    服务台(员)为顾客服务的顺序:

    • a) 先到先服务(FCFS);
    • b) 后到先服务(LCFS);
    • c) 随机服务;
  • d) 优先服务;

##1.2排队模型与系统参数
###一、排队模型
(一)排队模型表示方法
这里写图片描述
这里写图片描述

——略去后三项,即指 “**X/Y/Z///FCFS**”;
——这里仅研究FCFS的情形;

(二)到达间隔和服务时间典型分布

(1)泊松分布           **M** ; 
(2) 负指数分布         **M** ; 
(3) k阶爱尔朗分布      **Ek**; 
(4) 确定型分布         **D**; 
(5) 一般服务时间分布   **G**;

(三)排队模型示例

——M/M/1,M/D/1,M/ Ek /1; 
——M/M/c, M/M/c//m,  
——M/M/c/N/ ,。。。

##2.1、系统参数
###(一)系统运行状态参数
####1、系统状态 N(t)
——指排队系统在时刻t时的全部顾客数 N(t),
包括“排队顾客数”和“正被服务顾客数”;
——系统状态的可能值如下:
(1)系统容量无限制, N(t) =0,1,2,…;
(2) 系统容量为N时, N(t) =0,1,2,…,N;
(3) 服务台个数为c/损失制, N(t) =0,1,2,…,c;
一般,系统状态N(t)是随机的。
####2、系统状态概率:
这里写图片描述

    ——一般,排队系统运行了一定长的时间后,系统状态的概率分布不再随时间t变化,即初始时刻(t=0)系统状态的概率分布(Pn(0) ,n>>0)的影响将消失。

###(二)系统运行指标参数
——评价排队系统的优劣。
####1、队长与排队长
这里写图片描述

####2、逗留时间与等待时间
(1)逗留时间:
——指一个顾客在系统中的全部停留时间; 期望值,记为 Ws
(2)等待时间:
——指一个顾客在系统中的排队等待时间;期望值,记为 Wq

      **Ws = Wq + E[服务时间]**

####3、其他相关指标
(1)忙 期: 指从顾客到达空闲服务机构起到服务
机构再次空闲的时间长度;
(2)忙期服务量:指一个忙期内系统平均完成
服务的顾客数;
(3)损失率: 指顾客到达排队系统,未接受服务
而离去的概率;
(4)服务强度: = /c ;
##3 排队系统时间参数分布规律

###一、顾客到达时间间隔分布
####(一)泊松流与泊松分布
如果顾客到达满足如下条件,则称为泊松流:
(1) 在不相互重叠的时间区间内,到达顾客数相互独立(无后效性).
(2) 对于充分小的时间间隔内,到达1个顾客的概率与t无关,仅与时间间隔成正比 (平稳性):
(3) 对于充分小的时间间隔,2个及以上顾客到达的概率可忽略不计 (普通性)。

这里写图片描述
####(二)泊松流到达间隔服从负指数分布
这里写图片描述
###二、顾客服务时间分布
####(一)负指数分布
这里写图片描述
####(二)爱尔朗(Erlang)分布

这里写图片描述
##3.1 排队系统的生灭过程

###一、排队系统的生灭过程
####(一)生灭过程的背景与定义

这里写图片描述
####(二)生灭过程状态变化的性质
这里写图片描述
####(三) 排队系统的生灭过程
(1)生灭过程示意
这里写图片描述

(2)生灭过程定义

这里写图片描述
##4 典型排队系统分析
排队系统性能参数的一般关系 ——Little 公式
这里写图片描述

##4 .1 单服务台负指数分布M/M/1排队系统
. 模型的条件是:

    1、输入过程――顾客源是无限的,顾客到达完全是随机的,单个到来,到达过程服从普阿松分布,且是平稳的;
    2、排队规则――单队,且队长没有限制,先到先服务;
    3、服务机构――单服务台,服务时间的长短是随机的,服从相同的指数分布 。

对于M/M/1模型有如下公式:

这里写图片描述
####例1
某医院急诊室同时只能诊治一个病人,诊治时间服从指数分布,每个病人平均需要15分钟。病人按泊松分布到达,平均每小时到达3人。试对此排队系统进行分析。

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

##4 .2 多服务台负指数分布M/M/S排队系统
这里写图片描述

####1、状态概率
这里写图片描述
####2、主要运行指标
这里写图片描述
####3、系统状态N ≥S的概率
这里写图片描述

####例2
承接例1,假设医院增强急诊室的服务能力,使其同时能诊治两个病人,且平均服务率相同,试分析该系统工作情况。
这里写图片描述
这里写图片描述
####例3
某医院挂号室有三个窗口,就诊者的到达服从泊松分布,平均到达率为每分钟0.9人,挂号员服务时间服从指数分布,平均服务率每分钟0.4人,现假设就诊者到达后排成一队,依次向空闲的窗口挂号,显然系统的容量和顾客源是不限的,属于M/M/S型的排队服务模型。求:该系统的运行指标 ?
这里写图片描述
这里写图片描述
这里写图片描述

  • 23
    点赞
  • 113
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是一个排队论多服务台损失制排队模型的C++代码示例: ```cpp #include <iostream> #include <queue> #include <vector> using namespace std; const int MAX_CUSTOMERS = 100; const int MAX_SERVERS = 10; struct Customer { int arrivalTime; int serviceTime; int serverId; Customer(int _arrivalTime, int _serviceTime) : arrivalTime(_arrivalTime), serviceTime(_serviceTime), serverId(-1) {} }; struct Server { int id; int serviceTime; int remainingTime; Server(int _id, int _serviceTime) : id(_id), serviceTime(_serviceTime), remainingTime(0) {} }; int main() { // 输入参数 int numServers, maxQueueSize, numCustomers; int arrivalTimes[MAX_CUSTOMERS], serviceTimes[MAX_CUSTOMERS]; cout << "输入服务台数量、队列最大长度、顾客数量:" << endl; cin >> numServers >> maxQueueSize >> numCustomers; cout << "输入每个顾客的到达时间和服务时间:" << endl; for (int i = 0; i < numCustomers; i++) { cin >> arrivalTimes[i] >> serviceTimes[i]; } // 初始化服务台和队列 vector<Server> servers; queue<Customer> queue; for (int i = 0; i < numServers; i++) { servers.emplace_back(i, 0); } // 模拟 int currentTime = 0; int totalWaitTime = 0; int numLostCustomers = 0; int numServedCustomers = 0; int nextCustomerIndex = 0; while (numServedCustomers + numLostCustomers < numCustomers) { // 将到达时间 <= 当前时间的顾客加入队列 while (nextCustomerIndex < numCustomers && arrivalTimes[nextCustomerIndex] <= currentTime) { if (queue.size() < maxQueueSize) { queue.emplace(arrivalTimes[nextCustomerIndex], serviceTimes[nextCustomerIndex]); } else { numLostCustomers++; } nextCustomerIndex++; } // 将服务时间到达的服务台加入队列 for (Server& server : servers) { if (server.remainingTime == 0) { if (!queue.empty()) { Customer customer = queue.front(); queue.pop(); server.serviceTime = customer.serviceTime; server.remainingTime = customer.serviceTime; server.id = customer.serverId; totalWaitTime += currentTime - customer.arrivalTime; numServedCustomers++; } } else { server.remainingTime--; } } // 更新时间 currentTime++; } // 输出结果 cout << "服务台数量:" << numServers << endl; cout << "队列最大长度:" << maxQueueSize << endl; cout << "顾客数量:" << numCustomers << endl; cout << "丢失的顾客数量:" << numLostCustomers << endl; cout << "服务的顾客数量:" << numServedCustomers << endl; cout << "平均等待时间:" << (double)totalWaitTime / numServedCustomers << endl; return 0; } ``` 该代码实现了一个排队论多服务台损失制排队模型。输入参数包括服务台数量、队列最大长度和顾客数量,以及每个顾客的到达时间和服务时间。程序通过模拟来计算丢失的顾客数量、服务的顾客数量和平均等待时间,并将结果输出到控制台。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿周周

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值