多服务台指数分布排队系统
- 格式:pptx
- 大小:359.16 KB
- 文档页数:41
课程名称:数学建模与数学实验学院:专业:姓名:学号:指导老师:利用Monte Carlo方法模拟单服务台排队系统和多服务台排队系统摘要蒙特卡罗方法(Monte Carlo)又称统计模拟法随机抽样技术,是一种随机模拟方法,以概率和统计理论方法为基础的一种计算方法,是使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。
将所求解的问题同一定的概率模型相联系,用电子计算机实现统计模拟或抽样,以获得问题的近似解。
本文通过两个具体的服务机构为例,分别说明如何利用蒙特卡洛方法模拟单服务台排队系统和多服务台排队系统。
单服务台排队系统(排队模型之港口系统):通过排队论和蒙特卡洛方法解决了生产系统的效率问题,通过对工具到达时间和服务时间的计算机拟合,将基本模型确定在//1M M排队模型,通过对此基本模型的分析和改进,在概率论相关理论的基础之上使用计算机模拟仿真(蒙特卡洛法)对生产系统的整个运行过程进行模拟,得出最后的结论。
多服务台排队系统(开水供应模型):为了解决水房打水时的拥挤问题。
根据相关数据和假设推导,最终建立了多服务窗排队M/G/n模型,用极大似然估计和排队论等方法对其进行了求解,并用Matlab软件对数据进行了处理和绘图。
用灵敏度分析对结果进行了验证。
本模型比较完美地解决了水房排队拥挤问题,而且经过简单的修改,它可以用于很多类似的排队问题。
关键词:蒙特卡洛方法,排队论,拟合优度,泊松流,灵敏度分析。
一、问题重述港口排队系统:一个带有船只卸货设备的小港口,任何时间仅能为一艘船只卸货。
船只进港是为了卸货,响铃两艘船到达的时间间隔在15分钟到145分钟变化。
一艘船只卸货的时间有所卸货物的类型决定,在15分钟到90分钟之间变化。
开水供应系统:学院开水房的供水时间有限,水房面积有限,水管易受水垢堵塞。
根据调查数据可知:通畅时几乎无人排队,堵塞时水房十分拥挤。
由此可以看出水房设计存在问题,我们可以把开水房看成是一个随即服务系统,应用排队论的方法对系统运行状态做定量的描述。
多服务台排队系统的模拟一、与单服务台排队系统相比1.在多服务台系统中,先到达的顾客先获得服务,这个规则仍然存在;但后获得服务的顾客可能先离开,这是因为每个顾客要求的服务时间是不一样的。
如果各科i要求的是一个复杂业务,服务台j提供服务;而顾客i+1要求的是一个简单业务,服务台k提供服务,那么顾客i+1虽然比顾客i晚到达,却比顾客i先离开。
2.在单服务台系统中,到达次序和离开次序是一致的,所以只需要一个先进先出的队列;在多服务台系统中,离开事件不再与到达事件保持一致,先处理的到达事件对应的离开事件可能比后处理的到达事件对应的离开事件发生得晚,因此需要一个优先级队列,将事件发生得时间作为优先级,发生时间早的事件先处理,发生时间晚的事件后处理。
二、多服务台排队系统模拟过程1.模拟开始时,产生所有的到达事件,存入优先级队列,此时队列只有到达事件。
2.模拟器开始处理事件。
首先从队列中取出一个事件,这是第一个顾客的到达事件,根据各科的服务要求生成对应的服务时间,当前时间+服务时间=这个顾客的离开时间,生成一个这个时候离开的事件插入队列,这样在队列中就有了两类事件:到达事件和离开事件。
3.这样模拟器从队列中取出的事件也可能是离开事件,这时只要将这个离开事件从队列中删去,为它服务的服务台就可以为别的顾客服务。
综上:(1)产生所有的顾客到达事件,存入事件队列;(2)模拟器从事件队列中取事件,按照不同的事件类型处理事件。
①若是到达事件,先检查有没有空闲的服务台,如果有,则为此顾客生成服务时间,并产生一个离开事件,插入事件队列。
②如果处理到达事件时,没有空闲的服务台,则该顾客进入到等待队列排队。
等待队列是一个普通的先进先出的队列。
(3)如果处理的是离开事件,则释放该服务台。
如果此时等待队列有人排队,则服务台为他服务,并统计等待时间,如果等待队列没有人排队则置服务台为空闲。
三、伪代码产生CustomNum个顾客的到达事件,按时间的大小存入事件队列;置等待队列为空;置所有柜台为空闲;设置等待时间为0;While(事件队列非空){队头元素出列;设置当前时间为该事件发生的时间;switch(事件类型){case 到达:if(柜台有空){柜台数-1;生成所需的服务时间;修改事件类型为“离开”;设置事件发生时间为当前时间+服务时间;重新存入事件队列;}else 将该事件存入等待队列;case 离开:if(等待队列非空){队头元素出队;统计该顾客的等待时间;生成所需的服务时间;修改事件类型为“离开”;设置事件发生时间为当前时间+服务时间;存入事件队列;}else 空闲柜台+1;}}计算平均等待时间;返回;四、代码分析代码清单6-9 模拟类的定义class simulator{//以下定义了保存模拟参数的数据成员int noOfServer; //服务台的个数int arrivalLow; //到达间隔时间的下界int arrivalHigh; //到达间隔时间的上界int serviceTimeLow; //服务间隔时间的下界int serviceTimeHigh; //服务间隔时间上界int customNum; //模拟的顾客数struct eventT//定义了一个私有内嵌类eventT,用于保存一个事件信息,是事件队列和等待队列中的元素类型,eventT有两个数据成员,time表示事件发生的时间,type表示事件类型{int time; //事件的大小取决于事件发生的时间,发生时间早的事件优先级高,发生时间晚的事件优先级低int type; //事件类型,0为到达,1为离开bool operator<(const eventT &e)const{return time<e.time;}};public: //两个公有函数simulator();//模拟类的构造函数int avgWaitTime();//模拟类的平均等待时间函数};代码清单6-10 构造函数的实现simulator::simulator()//模拟参数的输入{ cout<<"请输入柜台数:"; cin>>noOfServer;cout<<"请输入到达时间间隔的上下界(最小间隔时间最大间隔时间):";cin>>arrivalLow>>arrivalHigh;cout<<"请输入服务时间的上下界(服务时间上界服务时间下界):";cin>>serviceTimeLow >>serviceTimeHigh;cout<<"请输入模拟的顾客数:";cin>>customNum;srand(time(NULL)); //完成随机数发生器的初始化}代码清单6-11 avgWaitTime函数的实现int simulator::avgWaitTime()//根据模拟参数进行模拟,并统计出平均等待时间{ int serverBusy=0; //正在工作的服务台数int currentTime; //表示现在模拟到了什么时间int totalWaitTime=0; //记录整个模拟过程中所有顾客的等待时间总和linkQueue<eventT>waitQueue; //定义了一个类型为eventT的链接队列waitQueue,这个队列是等待队列,用来保存正在排队的顾客信息priorityQueue<eventT>eventQueue; //定义了一个类型为eventT的优先级队列eventQueue,保存的是整个模拟过程中发生的所有事件eventT currentEvent;//根据模拟参数中指定的顾客数生成所有顾客的到达事件,并存入事件队列int i;currentEvent.time=0;currentEvent.type=0;for(i=0;i<customNum;++i){ currentEvent.time+=arrivalLow+(arrivalHigh-arrivalLow+1)*rand()/(RAND_MAX+1); //每个顾客的到达时间为前一顾客的到达时间加上随机生成的到达时间间隔eventQueue.enQueue(currentEvent);}while(!eventQueue.isEmpty())//只要队列非空,就要处理事件,直到队列为空{currentEvent=eventQueue.deQueue();//先从事件队列中取出一个事件currentTime=currentEvent.time; //把模拟时钟直接拨到事件发生的时间switch(currentEvent.type) //然后根据事件发生类型进行不同的处理{case 0: //如果是到达事件if(serverBusy!=noOfServer) //首先检查有没有空闲的服务台{++serverBusy; //如果有空闲的,则分配服务台currentEvent.time+=serviceTimeLow+(serviceTimeHigh-serviceTimeLow+1)*rand()/(RAND_MAX+1); //离开时间=服务时间+当前时间currentEvent.type=1; //服务完后,生成一个离开事件eventQueue.enQueue(currentEvent); //入队,事件队列}else waitQueue.enQueue(currentEvent);//否如果没有空闲的服务台,这位顾客要到等待队列排队,入队,等待队列break;case 1: //若是离开事件if(!waitQueue.isEmpty())//检查有没有顾客在排队,即等待队列是否为空{currentEvent=waitQueue.deQueue();//若有顾客在排队,则为等待队列队头的顾客服务,即让等待队列队头元素出队totalWaitTime+=currentTime-currentEvent.time; //把这位顾客的等待时间加入到总的等待时间,currentTime为当前时间,currentEvent.time为顾客进入到等待队列的时间,即事件发生的事件currentEvent.time=currentTime+serviceTimeLow+(serviceTimeHigh-serviceTimeLow+1)*rand()/(RAND_MAX+1);//currentEvent.time在这指离开时间=当前时间+随机数生成的服务时间currentEvent.type=1; //服务完后,生成一个离开事件eventQueue.enQueue(currentEvent); //入队,事件队列}else--serverBusy; //若没有人排队,则服务台可以休息,所以正在工作的服务台-1}}return totalWaitTime/customNum; //计算并返回平均等待时间}。
运筹优化(⼗六)--排队论基础及其最优化求解排队过程的⼀般表⽰下图1就是排队过程的⼀般模型。
各个顾客由顾客源(总体)出发,到达服务机构 (服务台、服务员)前排队等候接受服务, 服务完成后就离开。
排队结构指队列的数⽬和排列⽅式 , 排队规则和服务规则是说明顾客在排队系统中按怎样的规 则、次序接受服务的。
我们所说的排队系统就指图中虚线所包括的部分。
排队系统的组成和特征⼀般的排队系统都有三个基本组成部分 : 1输⼊过程 ; 2排队规则 ; 3服务机构。
1. 输⼊过程输⼊即指顾客到达排队系统 , 可能有下列各种不同情况 , 当然这些情况并不是彼此排斥的。
(1) 顾客的总体(称为顾客源)的组成可能是有限的,也可能是⽆限的。
上游河⽔流⼊⽔库可以认为总体是⽆限的 , ⼯⼚内停机待修的机器显然是有限的总体。
(2) 顾客到来的⽅式可能是⼀个⼀个的, 也可能是成批的。
例如到餐厅就餐就有单个到来的顾客和受邀请来参加宴会的成批顾客,我们将只研究单个到来的情形。
(3) 顾客相继到达的间隔时间可以是确定型的, 也可以是随机型的。
(4) 顾客的到达可以是相互独⽴的,就是说,以前的到达情况对以后顾客的到来没有影响 , 否则就是有关联的 。
(5) 输⼊过程可以是平稳的,或称对时间是齐次的,是指描述相继到达的间隔时间分布和所含参数(如期望值、⽅差等)都是与时间⽆关的, 否则称为⾮平稳的。
2. 排队规则(1) 顾客到达时, 如所有服务台都正被占⽤,在这种情形下顾客可以随即离去, 也可以排队等候。
随即离去的称为即时制或称损失制 , 因为这将失掉许多顾客 ; 排队等候的称为等待制。
普通市内电话的呼唤属于前者 , ⽽登记市外长途电话的呼唤属于后者。
对于等待制,为顾客进⾏服务的次序可以采⽤下列各种规则: 先到先服务, 后到先服 务 , 随机服务 , 有优先权的服务等。
先到先服务 , 即按到达次序接受服务 , 这是最通常的情形。
后到先服务,如乘⽤电梯的顾客常是后⼊先出的。
实验3---多服务台排队系统的仿真姓名:学号:一、目标任务已知一个系统有N个服务员,能力相等,服务时间服从指数分布。
顾客的到达时间间隔服从指数分布。
用Monte-Carlo仿真,分别求按下列方案的总体平均排队时间:① M|M|N。
② N个单通道系统并列,按1/N概率分裂到达流。
③ N个单通道并列,挑选最短的队。
要求:①给出程序设计的过程。
②如果采用固定的N,则要求N>2。
③至少取ρ=0.3和ρ=0.7两种强度运行程序。
④对结果进行分析。
二、编程语言Matlab三、关键代码方案一:N = 3; % 服务员人数r = 6; % 顾客到达流强度u = 20; % 服务员服务强度T = 1000000; % 仿真运行时间avg_wait_time = []; % 平均等待时间for i=1:100% 模拟排队函数server_time = [0.0, 0.0, 0.0]; % 用来保存服务员下一空闲时间time = 0; % 绝对时钟,初始为0client_num = 0; % 顾客总数,初始为0CRTime = 0; % 顾客到达时间间隔ServeTime = 0; % 顾客服务时间server_id = 0; % 当前进入排队窗口的服务员编号total_wait_time = 0;% 系统中到达顾客的总等待时间while 1CRTime = exprnd(1/r); % 按指数分布产生顾客到达时间间隔time = time + CRTime; % 更新系统的绝对时钟if time > Tbreak;endclient_num = client_num + 1; % 顾客数加1ServeTime = exprnd(1/u); % 按指数分布产生顾客服务间隔server_id = mod(client_num, N); % 按1..N的顺序循环排入服务员窗口if server_id ==0server_id = N;endif server_time(1, server_id) <= time % 如果当前server_id号服务员空闲,则直接接收服务server_time(1, server_id) = time + ServeTime; % 服务员下一空闲时间为当前绝对时钟加上当前服务时间else % 否则所有服务员都在忙碌,顾客要排队等候total_wait_time = total_wait_time + server_time(1, server_id) - time; % 顾客排队等候时间为当前服务员下一空闲时间减去绝对时钟server_time(1, server_id) = server_time(1, server_id) + ServeTime;endendavg_wait_time = [avg_wait_time, total_wait_time/client_num];end% 计算平均等待时间mean_avg_wait_time = mean(avg_wait_time);fprintf('ρ=%2.1f平均等待时间%6.5f\n', r/u, mean_avg_wait_time); % 打印平均等待时间% 绘制每次仿真的平均等待时间和总体平均等待时间线状图x = 1:100;%plot(x, avg_wait_time, x, mean_avg_wait_time);scatter(x, avg_wait_time, '.');方案二:N = 3; % 服务员人数r = 6; % 顾客到达流强度u = 20; % 服务员服务强度T = 1000; % 仿真运行时间avg_wait_time = []; % 平均等待时间for i=1:100% 模拟排队函数server_time = [0.0, 0.0, 0.0]; % 用来保存服务员下一空闲时间time = 0; % 绝对时钟,初始为0client_num = 0; % 顾客总数,初始为0CRTime = 0; % 顾客到达时间间隔ServeTime = 0; % 顾客服务时间server_id = 0; % 当前进入排队窗口的服务员编号total_wait_time = 0;% 系统中到达顾客的总等待时间while 1CRTime = exprnd(1/r); % 按指数分布产生顾客到达时间间隔time = time + CRTime; % 更新系统的绝对时钟if time > Tbreak;endclient_num = client_num + 1; % 顾客数加1ServeTime = exprnd(1/u); % 按指数分布产生顾客服务时间间隔server_id = randi([1 N]); % 按1/N的概率排入服务员窗口if server_time(1, server_id) <= time % 如果当前server_id号服务员空闲,则直接接收服务server_time(1, server_id) = time + ServeTime; % 服务员下一空闲时间为当前绝对时钟加上当前服务时间else % 否则所有服务员都在忙碌,顾客要排队等候total_wait_time = total_wait_time + server_time(1, server_id) - time; % 顾客排队等候时间为当前服务员下一空闲时间减去绝对时钟server_time(1, server_id) = server_time(1, server_id) + ServeTime;endendavg_wait_time = [avg_wait_time, total_wait_time/client_num];end% 计算平均等待时间mean_avg_wait_time = mean(avg_wait_time);fprintf('ρ=%2.1f平均等待时间%6.5f\n', r/u, mean_avg_wait_time); % 打印平均等待时间% 绘制每次仿真的平均等待时间散点图x = 1:100;scatter(x, avg_wait_time, '.');方案三:N = 3; % 服务员人数r = 6; % 顾客到达流强度u = 20; % 服务员服务强度T = 1000; % 仿真运行时间avg_wait_time = []; % 平均等待时间for i=1:100% 模拟排队函数server_time = [0.0, 0.0, 0.0]; % 用来保存服务员下一空闲时间time = 0; % 绝对时钟,初始为0client_num = 0; % 顾客总数,初始为0CRTime = 0; % 顾客到达时间间隔ServeTime = 0; % 顾客服务时间server_id = 0; % 当前进入排队窗口的服务员编号total_wait_time = 0;% 系统中到达顾客的总等待时间while 1CRTime = exprnd(1/r); % 按指数分布产生顾客到达时间间隔time = time + CRTime; % 更新系统的绝对时钟if time > Tbreak;endclient_num = client_num + 1; % 顾客数加1ServeTime = exprnd(1/u); % 按指数分布产生顾客服务时间间隔temp = min(server_time); % 寻找排队时间最短的服务员窗口[x, y] = find(temp == min(min(server_time)));server_id = y; % 按队伍最短排入服务员窗口if server_time(1, server_id) <= time % 如果当前server_id号服务员空闲,则直接接收服务server_time(1, server_id) = time + ServeTime; % 服务员下一空闲时间为当前绝对时钟加上当前服务时间else % 否则所有服务员都在忙碌,顾客要排队等候total_wait_time = total_wait_time + server_time(1, server_id) - time; % 顾客排队等候时间为当前服务员下一空闲时间减去绝对时钟server_time(1, server_id) = server_time(1, server_id) + ServeTime;endendavg_wait_time = [avg_wait_time, total_wait_time/client_num];end% 计算平均等待时间mean_avg_wait_time = mean(avg_wait_time);fprintf('ρ=%2.1f平均等待时间%6.5f\n', r/u, mean_avg_wait_time); % 打印平均等待时间% 绘制每次仿真的平均等待时间散点图x = 1:100;scatter(x, avg_wait_time, '.');四、实验结果与分析方案一:图1 方案一仿真的平均等待时间散点图图2 方案一平均等待时间M|M|N1. 输入参数:服务员人数N,顾客到达流强度r,服务员服务强度u,仿真运行时间T;2. 各变量初始值置0:绝对时钟time,服务员下一空闲时刻数组server_time[](其中按顺序保存每一个服务员的下一空闲时刻),顾客总数client_num,顾客到达时间间隔CRTime,顾客服务时间ServeTime,当前进入排队窗口的服务员编号server_id,系统中顾客总等待时间total_wait_time;3. 按照指数分布产生下一顾客到达的时间间隔CRTime,time+=CRTime。
§3 M/M/s 排队模型一、单服务台模型(即M/M/1/∞/∞ 或 M/M/1) 到达间隔: 负指数(参数为λ:到达率)分布; 服务时间: 负指数(参数为μ:服务率)分布; 服务台数: 1; 系统容量: 无限;排队长度(客源): 无限; 服务规则: FCFS. 1. 队长的分布设{}n p P N n == 0,1,2,...n =为系统平稳后队长N 的概率分布, 则由(1) 12011......n n n n n C λλλμμμ---=, 1,2,...n =(累积服务率)(2) 011(1)nn p C ∞==+∑ (无客的概率)(3) 0n n p C p =, 1,2,...n = (有n 客的概率)及n λλ=,0,1,2,...n =和n μμ=,1,2,...n =, 并记λρμ=(服务强度, 一般1ρ<) 可得nn n C λρμ⎛⎫== ⎪⎝⎭, 1,2,...n =故有 0nn p p ρ=, 1,2,...n =其中 011(1)nn p C ∞==+∑11(1)n n ρ∞==+∑110111n n ρρρ--∞=⎛⎫⎛⎫===- ⎪ ⎪-⎝⎭⎝⎭∑. 因此 (1)nn p ρρ=-,0,1,2,...n =.无客的概率: 01p ρ=-,至少有一客的概率ρ 服务台处于忙的概率=繁忙程度(即服务强度)=服务机构的利用率 如单位时间,2λ=,5μ=,则,即40%在忙.2. 几个主要指标(1) 系统中平均顾客数=平均队长(2) 系统中等待的平均顾客数=平均排队长.可以证明(见第二版P328的注释)在M/M/1中, 顾客在系统中逗留时间服从参数为的负指数分布, 即密度分布函数:()()(),0.tf t et μλμλ--=-≥分布函数: ()()()1,0.tF t P T t e t μλ--=≤=-≥于是得(3) 在系统中顾客平均逗留时间1[]W E T μλ==-; (4) 在队列中顾客平均等待时间因为 逗留时间=等待时间q T +服务时间V , 即q T T V =+故1()()q q W E T E V W μ=+=+, 从而得1q W W W ρρμμλ=-==-另外还可得到(时间与空间关系):L W λ=和q q L W λ=这两个常称为Little 公式. 各公式可记忆如下:由λ和μ→服务效率λρμ=, 从逗留时间1W μλ=-→等待时间q W W ρ= 队长L W λ=→排队队长q L L ρ=或q q L W λ=还可导出关系1q W W μ=+和1q L L λμ=+3. 服务机构的忙期B和闲期I分析(1) 因为忙期=至少一客的概率ρ, 闲期=无客的概率1ρ-→忙期时间长度/闲期时间长度=1ρρ-(2) 因为忙闲交替,次数平均→平均忙期时间长度/平均闲期时间长度=1ρρ-→1BIρρ=-.(3) 又由分布无记忆性和到达与服务相互独立性→任闲时刻起,下一客到达间隔仍为λ负指数分布→平均闲期=下一客到达间隔1λ→1Iλ=→平均忙期=111B Wρρλμλ=⋅==--即顾客平均逗留时间, 实际意义是明显的.例1一个铁路列车编组站, 设待编列车到达时间间隔负指数分布, 平均到达率2列/h; 编组时间服从负指数分布, 平均20min 可编一组. 已知编组站上共有2股道, 当均被占用时, 不能接车, 再来的列车只能停在站外或前方站. 求(1) 在平稳状态下系统中列车的平均数;(2) 每一列车的平均停留时间;(3) 等待编组的列车的平均数.如果列车因站中的2股道均被占用而停在站外或前方站时, 每列车的费用为a元/h, 求每天由于列车在站外等待而造成的损失.解 这里 2λ=,3μ=,213λρμ==< (1) 列车的平均数21L ρρ==-(小时)(2) 列车的平均逗留时间212LW λ===(小时) (3) 等待编组的列车平均数24233q L L ρ=-=-=(列) (4) 等待编组时间 23q W W ρ==(小时) (5) 记列车平均延误(2道满,不能进站)时间为0W ,则 0012{2}(1)W W P N W p p p =⋅>=⋅---3320.2963ρ⎛⎫=== ⎪⎝⎭(小时)故每天列车由于等待而支出的平均费用 0242420.29614.2E W a a a λ==⨯⨯⨯=(元).例2 某修理店只有一个修理工, 来修理的顾客到达过程为Poisson 流, 平均4人/h; 修理时间服从负指数分布, 平均需要6 min. 试求:(1) 修理店空闲的概率;(2) 店内恰有3个顾客的概率;(3) 店内至少有1个顾客的概率;(4) 在店内的平均顾客数;(5) 每位顾客在店内的平均逗留时间;(6) 等待服务的平均顾客数;(7) 每位顾客平均等待服务时间;(8) 顾客在店内等待时间超过10min 的概率. 解这里 4λ=,1/0.110μ==,215λρμ==< (1) 修理店空闲的概率0112/50.6p ρ=-=-=(2) 店内恰有3个顾客的概率33332(1)10.03855p ρρ⎛⎫⎛⎫=-=-= ⎪ ⎪⎝⎭⎝⎭(3) 店内至少有1个顾客的概率0{1}12/50.4P N p ρ≥=-===(4) 在店内的平均顾客数2/50.67112/5L ρρ===--(人) (5) 每位顾客在店内的平均逗留时间0.6710(min)4LW λ==≈ (6) 等待服务的平均顾客数0.40.670.268q L L ρ==⨯=(人)(7) 每位顾客平均等待服务时间0.2684(min)4qq L W λ==≈ (8) 顾客在店内等待时间超过10min 的概率. 11101615{10}0.3679P T e e ⎛⎫-- ⎪-⎝⎭>===.二、多服务台模型(即M/M/s/∞/∞ 或 M/M/s) 到达间隔: 负指数(参数为λ:到达率)分布;单台服务时间: 负指数(参数为μ:服务率)分布; 服务台数: s; 12s μμμμ====L 系统容量: 无限;排队长度(客源): 无限;服务规则: FCFS.数据分析 服务台队列⋅⋅⋅⋅⋅⋅u u u u u r u u u u u r μ1μ2sμs 个设{}n p P N n == 0,1,2,...n =为系统平稳后队长N 的概率分布, 则,0,1,2,...n n λλ==和系统的服务率,1,2,3,...,,,1,...n n n s s n s s μμμ=⎧=⎨=+⎩记s s s ρλρμ==, 则当1s ρ<时, 不至越排越长,称s ρ为系统的服务强度或服务机构的平均利用率. 由前面的(1),(2)和(3)公式得(/),1,2,3,...,!(/)(/),!!nn s n s n n s n s n C n s s s s s λμλμλλμμ--⎧=⎪⎪=⎨⎛⎫⎪=≥ ⎪⎪⎝⎭⎩ 故,1,2,3,...,!,!nn nn sp n s n p p n ss s ρρ-⎧=⎪⎪=⎨⎪≥⎪⎩ 其中1100!!(1)n s s n s p n s ρρρ--=⎡⎤=+⎢⎥-⎣⎦∑.当n s ≥时, 顾客要等待. 记这个等待的概率为0(,)!(1)sn n ss c s p p s ρρρ∞===-∑称为Erlang 等待公式. (1) 平均排队长011()()!sn sq n sn s n s p L n s p n s s ρρ∞∞-=+=+=-=-∑∑0021d !d !(1)s s n s s s n s s p p s s ρρρρρρρ∞=⎛⎫== ⎪-⎝⎭∑ 或(,)1s q sc s L ρρρ=-.(2) 正在接受服务的顾客的平均数10s n n n n ss np s p -∞===+∑∑1000!!(1)n ss n s n p s p n s ρρρ-==+-∑11101(1)!(1)!(1)n s s n s p n s ρρρρρ---=⎡⎤=+=⎢⎥---⎣⎦∑s 与s 无关. 奇!(3) 平均队长L =平均排队长+平均接受服务的顾客数q L ρ=+.对多台服务系统, 仍有Little 公式:LW λ=, 1qq L W W λμ==-例3 考虑一个医院医院急诊的管理问题. 根据统计资料, 急论据病人相继到达的时间间隔服从负指数分布, 平均每0.5h 来一个; 医生处理一个病人的时间也服从负指数分布, 平均需要20min. 该急诊室已有一个医生, 管理人员现考虑是否需要再增加一个医生.解 这是一个M/M/s/∞模型, 有2λ=,3μ=,23λρμ==, 1,2s = 由前面的公式, 结果列表如下指标 模型 s=1 s=2 空闲的概率p 0 0.333 05 有1个病人的概率p 1 有2个病人的概率p 2 0.222 0.148 0.333 0.111 平均病人数L 平均等待病人数L q 2 1.333 0.75 0.083 病人平均逗留时间W 病人平均等待时间W q 1 0.667 0.375 0.042病人需要等待的概率P{T q >0}0.667(=1-p 0)0.167(=1-p 0 -p 1)等待时间超过0.5小时的概率P{T q>0.5} 等待时间超过1小时的概率P{T q>1} 0.4040.2450.0220.003如果是一个医生值班, 则病人等待时间明显长.结论是两个医生较合适.例4某售票处有三个窗口,顾客的到达服从泊松过程,平均到达率每分钟0.9λ=人/min. 服务(售票)时间服从负指数分布, 平均服务率0.4μ=人/min. 现设顾客到达后排成一队,依次向空闲的窗口购票,这是M/M/s模型, 其中2.2533,2.25,134s s s λλρμμ=====< 由公式可得:(1) 整个售票处空闲概率1100!!(1)n ss n s P n s ρρρ--=⎡⎤=+⎢⎥-⎣⎦∑ 0012310.07482.25 2.25 2.25 2.2510!1!2!3!1 2.25/3p ==+++-(2) 平均排队长02!(1)s sq s p L s ρρρ=-320.0748 2.253/4 1.703!(1/4)q L ⨯⋅==(人) 平均队长:/ 1.7 2.25 3.95q L L λμ=+=+=(人)(3) 平均等待时间1.701.890.9qq L W λ===(min) 平均逗留时间1/ 1.891/0.4 4.39q W W μ=+=+=(分钟)(4) 顾客到达后必须等(即系统中顾客数已有3)的概率30 2.250.0748(3,2.25)0.57!(1)3!1/4s s p c s ρρ⋅⋅===-⋅.在上例中, 若顾客到达后在每个窗口前各排一队,且中途不换队, 则M/M/3/∞ 3个M/M/1/∞ 如下图所示(b).10.4μ=窗口0.3λ=0.4μ=窗口20.4μ=窗口310.4μ=窗口0.9λ=0.4μ=窗口20.4μ=窗口30.9λ=0.3λ=0.3λ=每个队的平均到达率为1230.9/30.3λλλ====(人/分钟)结果比较如下指标模型M/M/3 M/M/1服务台空闲的概率P00.0748 0.25(每个子系统) 顾客必须等待的概率P(n≥3)=0.57 0.75平均排队长Lq 1.70 2.25(每个子系统) 平均队长L 3.95 9.00(整个系统) 平均逗留时间W 4.39(分钟) 10(分钟)平均等待时间Wq 1.89(分钟) 7.5(分钟)单队比三队优越.百度知道编组站是铁路网上集中办理大量货物列车到达、解体、编组出发、直通和其它列车作业,并为此设有比较完善的调车作业的车站。