数学建模论文(蒙特卡罗的多服务台和单服务台排队系统)

合集下载

数学建模:排队论2

数学建模:排队论2

无顾客
无顾客
n
无顾客 1 个顾客
n
1 个顾客 无顾客
n
1 个顾客 1 个顾客
n
9
上述四种情况发生概率分别为:
情况
时刻 t 顾客数
区间[ t,t + △t ) 到达顾客 离开顾客
概率
A
n
无顾客 无顾客 pn (t )(1 t )(1 t )
B
n+1
无顾客 1 个顾客 pn1(t )(1 t )t
时刻 t 顾客数
0 1 0
区间[ t,t + △t )
时刻 t + △t
到达顾客 离开顾客 顾客数
无顾客
无顾客
0
无顾客 1 个顾客
0
1 个顾客 1 个顾客
0
16
上述三种情况发生概率分别为:
情况
时刻 t 顾客数
区间[ t,t + △t ) 到达顾客 离开顾客
A
0
无顾客
无顾客
B
1
无顾客 1 个顾客
D
0
12
dpn (t ) dt
pn1(t )
pn1(t )
(
)
pn (t )
解上述方程的解是很困难的。这里只研究系统达到平
稳状态的情况,即系统运行了无限长时间之后,状态
概率分布不再随时间变化,显然此时 dpn (t ) 0
dt
13
由此可得,当 n≥1 时:
pn1 pn1 ( ) pn 0,n 1
第四节 单服务台负指数分 布排队系统
讨论单服务台的排队系统,并设定: 顾客到达过程服从泊松分布。 顾客服务时间服从负指数分布。
2

实验2单服务台单队列排队系统仿真

实验2单服务台单队列排队系统仿真

实验2排队系统仿真一、学习目的1.了解仿真的特点2.学习如何建构模型3.熟悉eM-Plant基本的对象和操作4.掌握排队系统的特点与仿真的实现方法二、问题描述该银行服务窗口为每个到达的顾客服务的时间是随机的,表2.4是顾客服务时间纪录的统计结果表2.4 每个顾客服务时间的概率分布对于上述这样一个单服务待排队系统,仿真分析30天,分析该系统中顾客的到达、等待和被服务情况,以及银行工作人员的服务和空闲情况。

三、系统建模3.1 仿真目标通过对银行排队系统的仿真,研究银行系统的服务水平和改善银行服务水平的方法,为银行提高顾客满意度,优化顾客服务流程服务。

3.2.系统建模3.2.1 系统调研1. 系统结构: 银行服务大厅的布局, 涉及的服务设备2. 系统的工艺参数: 到达-取号-等待-服务-离开3. 系统的动态参数: 顾客的到达时间间隔, 工作人员的服务时间4. 逻辑参数: 排队规则, 先到先服务5. 系统的状态参数: 排队队列是否为空, 如果不为空队长是多少, 服务台是否为空6. 系统的输入输出变量:输入变量确定其分布和特征值,顾客的到达时间间隔的概率分布表和每个顾客被服务时间的概率分布. 输出变量根据仿真目标设定. 包括队列的平均队长、最大队长、仿真结束时队长、总服务人员、每个顾客的平均服务时间、顾客平均排队等待服务时间、业务员利用率等。

3.2.2系统假设1.取号机前无排队,取号时间为02.顾客排队符合先进先出的排队规则3.一个服务台一次只能对一个顾客服务4.所有顾客只有一种单一服务5.仿真时间为1个工作日(8小时)6.等候区的长度为无限长3.2.3系统建模系统模型:3.2.4 仿真模型1.实体:银行系统中的实体是人(主动体)2.属性:到达时间间隔、接受服务的时间、接受服务类型3.事件:顾客到达、开始取号、取号结束、进入队列、出队列、接受服务、服务完成、离开银行。

4.活动:到达、取号、排队、服务、离开5.资源:取号机、排队的座椅、服务柜台4 系统仿真4.1 eM-plant 界面与主要控件介绍1. 实体:eM-Plant 中包括3类实体:entity ,container ,transporter 。

实验单服务台单队列排队系统仿真

实验单服务台单队列排队系统仿真

实验单服务台单队列排队系统仿真简介实验单服务台是指在实验室或研究机构等地,为科学实验、研究项目提供相关服务的地方。

对于一个实验室来说,合理的排队系统可以提高实验员的工作效率,并且能够更好地管理实验项目。

本文将介绍一种基于单队列的排队系统仿真方法,通过模拟实验单的排队过程,评估实验室排队系统的性能,为实验室提供有效的管理建议。

目标本次排队系统仿真的目标是评估实验室中的排队系统性能,包括等待时间、队列长度等指标,以及不同服务台数量下的性能表现。

通过仿真实验,可以找出最优的服务台数量,从而提高实验室的工作效率,减少实验员的等待时间,提供更好的服务。

方法实验单生成在排队系统仿真中,需要生成一批实验单用于模拟实验员的需求。

实验单的生成可以根据实验室的实际情况和需求来设计,可以包括实验名称、实验员姓名、实验日期等信息。

生成一批实验单后,即可进行排队模拟实验。

单队列排队模型本文使用单队列排队模型来模拟实验室的排队系统。

模型中有一个服务台,实验员依次排队等待被服务。

当服务台空闲时,队列中的第一个实验员将被服务,其余实验员依次推进队列。

在模拟过程中,需要记录实验员进入队列的时间和离开队列的时间,以计算等待时间、队列长度等性能指标。

仿真实验仿真实验的过程可以分为以下几个步骤:1.生成实验单:根据实验室的实际情况,生成一批实验单。

2.初始化队列和服务台:将生成的实验单放入队列中,并初始化服务台的状态。

3.开始仿真:根据队列中实验员的情况,模拟实验员进入队列、离开队列以及服务台的状态变化。

记录实验员的等待时间,计算队列长度等性能指标。

4.评估实验结果:根据实验的性能指标,评估排队系统的表现,并分析不同服务台数量下的性能差异。

5.提出改进建议:根据实验结果,提出优化排队系统的建议,如增加服务台数量、调整队列管理策略等。

结果与分析通过对排队系统的仿真实验,可以得到一些重要的结果和分析:1.等待时间分布:通过模拟实验员的等待时间,可以得到等待时间的分布情况,从而评估实验室排队系统的性能。

优先级队列的应用——多服务台排队系统的模拟

优先级队列的应用——多服务台排队系统的模拟

多服务台排队系统的模拟一、与单服务台排队系统相比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; //计算并返回平均等待时间}。

多服务台排队系统的仿真

多服务台排队系统的仿真

实验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。

数学建模之排队问题

数学建模之排队问题

排队问题教程一:复习期望公式()i i p a X P ==,∑=ii i p a EX ,()()∑=ii i p a g X Eg二:排队问题单个服务台排队系统问题(比如理发店只有一个理发师情况):假定顾客到达时间间隔()λ/1~e X 分钟,每个顾客接受服务的时间长度为()μ/1~e Y 分钟,假定1)、在时间段[]t t t ∆+,内有一个顾客到达的概率为()2t o t ∆+∆λ 2)、在时间段[]t t t ∆+,内有两个或以上顾客到达的概率为()2t o ∆ 3)、在时间段[]t t t ∆+,内有一个顾客接受完服务离开概率为()2t o t ∆+∆μ 4)、在时间段[]t t t ∆+,内有两个或以上顾客离开的概率为()2t o ∆用()t p n 表示在t 时刻,没有离开的顾客数(由于指数分布无记忆性,正在接受服务的顾客还需要接受的服务时间和任何一个顾客的接受服务时间同分布)。

记t 时刻在服务系统总人数n 的概率为()t p n ,则在t t ∆+时刻在服务系统总人数n 的概率()t t p n ∆+由以下几个不相容部分构成a):t 时刻有n 个顾客,时间段[]t t t ∆+,内没有顾客到达,也没有顾客离开,概率 ()t p t o t t o t n ))(1))((1(∆-∆-∆-∆-μλb):t 时刻有n 个顾客,时间段[]t t t ∆+,内有1顾客到达,有1顾客离开,概率 ()t p t t n ⋅∆⋅∆μλc):t 时刻有n-1个顾客,时间段[]t t t ∆+,内有1顾客到达,没有顾客离开 概率()t p t o t t n 1))(1(-∆-∆-∆μλd):t 时刻有n+1个顾客,时间段[]t t t ∆+,内没有顾客到达,有1个顾客离开 概率()t p t o t t n 1))(1(+∆-∆-∆λμ e):其他情况,概率()t o ∆由上面分析,()()()()()()()t o t p t t t p t t p t t t t p ∆+∆-⋅∆+⋅⋅∆-+⋅∆⋅∆=∆+1000111λμλμλ()()[]()()()t o t p t o t t t p t o t t t t t o t t o t t p t t p n n n n ∆+∆-∆-∆+∆-∆-∆+∆⋅∆+∆-∆-∆-∆-=∆++-11))(1())(1())(1))((1(λμμλμλμλ,1≥n简写()()()()()()00111p t t t p t t t p t o t λμλ+∆=-∆⋅+∆⋅-∆+∆()()[]()()()t o t p t t p t t t t p t t p n n n n ∆+⋅∆+⋅∆+∆-∆-=∆++-11)1)(1(μλμλ即()()()()()t o t p t t p t t p t t p ∆+⋅∆+⋅∆⋅-=-∆+1000μλ()()()()()()()t o t p t t p t t t p t p t t p n n n n n ∆+⋅∆+⋅∆+∆+-=-∆++-11μλμλ因此得到()()()()t p t p t p 100⋅+⋅-='μλ()()()()()()t p t p t p t p n n n n 11+-⋅+⋅++-='μλμλ假定()k t k p t p −−→−∞→,()()0−−→−∞'→t k t p 得到 010=⋅+⋅-p p μλ()011=⋅+⋅++-+-n n n p p p μλμλ把0p 当作已知,求解通项n p >将p(1)用)0(/p μλ代入得()()()n n n n p p p p μλμλλμμλμ001=→-+-=再,由1=∑kkp,我们得到()10=∑∞=n np μλ,>因此μλμ-=0p , nnn p p ⎪⎪⎭⎫ ⎝⎛-=⎪⎪⎭⎫ ⎝⎛=μλμλμμλ0 问题1:系统平均有几个人没有离开?解答:系统有n 个人没有离开的概率n p ,因此,系统中滞留人数平均∑∞=0n n np>问题2:系统中排队等待服务平均有几个人?()∑∞=-11n npn>问题3:系统中平均每个人排队等待时间?解答:当一个顾客进入系统中,发现前面已经有n 个顾客在系统中,则他排队等待的平均时间就是这n 个顾客的平均服务时间总和(由于指数分布无记忆特性,不管正在接受服务的顾客已经服务了多少时间,其还要接受的服务时间依然服从相同的指数的分布)因此系统中平均每个人排队等待时间为nn pn∑∞=0μ>问题4:系统中每个顾客逗留时间平均?解答:每个顾客平均排队用时+每个顾客平均服务用时为所求 >。

单服务台排队系统仿真

单服务台排队系统仿真

单服务台排队系统仿真单服务台排队系统是指在一个服务台只有一个服务员的情况下,客户需要按顺序等待服务的系统。

本文将介绍一个针对单服务台排队系统的仿真模型。

在设计仿真模型之前,我们需要确定一些重要的参数。

首先是服务时间,即每个客户接受服务所需要的时间。

服务时间可以通过实际观察数据或者估算得出。

其次是到达间隔时间,即每个客户到达的时间间隔。

到达间隔时间可以通过实际观察数据或者使用随机数生成器进行模拟。

首先,我们需要创建一个事件队列来模拟客户的到达和离开。

事件队列是一个按照发生时间顺序排序的队列,每个事件都包含两个属性:时间和类型。

接下来,我们创建一个时钟来记录仿真进行的时间。

初始时,时钟指向第一个到达事件的时间。

然后,我们从事件队列中取出第一个事件,并更新时钟指向该事件的时间。

如果当前事件类型是到达事件,我们需要进行如下操作:首先,模拟下一个客户到达的时间,并将该事件添加到事件队列中。

然后,判断当前是否有客户正在接受服务。

如果没有,我们将当前事件类型设置为离开事件,并模拟该客户的服务时间和离开时间,并将该离开事件添加到事件队列中。

如果有客户正在接受服务,我们将当前事件类型设置为到达事件。

如果当前事件类型是离开事件,我们需要进行如下操作:首先,更新服务台的空闲状态。

然后,判断是否还有等待服务的客户。

如果有,我们将当前事件类型设置为离开事件,并模拟下一个客户的服务时间和离开时间,并将该离开事件添加到事件队列中。

如果没有等待服务的客户,我们将当前事件类型设置为到达事件。

重复上述步骤,直到事件队列中没有事件为止。

最后,我们可以根据仿真的结果,比如客户的等待时间、服务时间和系统繁忙率等指标,来评估和优化该排队系统的性能。

通过以上的模型,我们可以对单服务台排队系统进行仿真,并评估其性能。

我们可以通过改变服务时间、到达间隔时间等参数,来探究不同情况下系统的表现和优化方案。

同时,我们还可以根据仿真结果,对系统进行调整和改进,以提高客户的满意度和服务效率。

带优先级的多服务台排队系统MonteCarlo模拟_以医院病床安排为例

带优先级的多服务台排队系统MonteCarlo模拟_以医院病床安排为例

,带

调整优先级,转入Step1循环执行。
四、医院病床安排的实例分析
下面是某眼科诊所2008-7-13到2008-9-11的病人信息分别 是各类病人每天的平均就诊人数、一周中每天入院的不同类型病人 平均住院时间、当前医院病床利用情况等相关数据。其中,白内障
相当于 , 外伤对应于 。
星期一
表1 星期二 星期三
随机变量来组合产生泊松分布的随机数列。

为参数 负指数分布的随机数序列,因为有
因此, 将 值按序累加,使得满足关系式:
则求得的 就是参数 的泊松分布的随机数。 ②确定
在假设条件下,可认为 近似等于各类顾客平均接受服务时 间,进而根据 号顾客的服务类型和 的值确定 。
3.2 优先级模型的建立 首先,在到来时为每个顾客依次编号并分配初始优先级,紧急 服务顾客的优先级最大,可近似于无穷大,即该优先级高于其它任 何服务顾客在任何情况下的优先级,从而保证紧急服务顾客尽快接
不同顾客的优先级相同时,按照FCFS的规则安排接受服务。
在算法设计中,初始时赋予需要接受服务时间较短的顾客更
高的优先级,从而使 减小;同时随着 的增长,顾客优先级提 高,避免了顾客长时间等待的情况。这样既保证了需要接受服务时
间较短的顾客优先接受以获取较高的服务台利用率,又避免了某些
顾客需要长时间等待。
的。分析此情况时,需利用上文建立的基于患者优先级的病床分
配模型,计算优先级的表达式为:
,可将其简化为基
于优先级的病床安排的简化模型,具体做法为:将比例系数 设
定为1,将一周中每天入院的同类病人住院时间近似为相等的,
即利用 代替 。经分析比较,在该患者就诊后的

内就诊的青光眼患者具有更高的优先级,同理,在该患者就诊后
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程名称:数学建模与数学实验学院:专业:姓名:学号:指导老师:利用Monte Carlo方法模拟单服务台排队系统和多服务台排队系统摘要蒙特卡罗方法(Monte Carlo)又称统计模拟法随机抽样技术,是一种随机模拟方法,以概率和统计理论方法为基础的一种计算方法,是使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。

将所求解的问题同一定的概率模型相联系,用电子计算机实现统计模拟或抽样,以获得问题的近似解。

本文通过两个具体的服务机构为例,分别说明如何利用蒙特卡洛方法模拟单服务台排队系统和多服务台排队系统。

单服务台排队系统(排队模型之港口系统):通过排队论和蒙特卡洛方法解决了生产系统的效率问题,通过对工具到达时间和服务时间的计算机拟合,将基本模型确定在//1M M排队模型,通过对此基本模型的分析和改进,在概率论相关理论的基础之上使用计算机模拟仿真(蒙特卡洛法)对生产系统的整个运行过程进行模拟,得出最后的结论。

多服务台排队系统(开水供应模型):为了解决水房打水时的拥挤问题。

根据相关数据和假设推导,最终建立了多服务窗排队M/G/n模型,用极大似然估计和排队论等方法对其进行了求解,并用Matlab软件对数据进行了处理和绘图。

用灵敏度分析对结果进行了验证。

本模型比较完美地解决了水房排队拥挤问题,而且经过简单的修改,它可以用于很多类似的排队问题。

关键词:蒙特卡洛方法,排队论,拟合优度,泊松流,灵敏度分析。

一、问题重述港口排队系统:一个带有船只卸货设备的小港口,任何时间仅能为一艘船只卸货。

船只进港是为了卸货,响铃两艘船到达的时间间隔在15分钟到145分钟变化。

一艘船只卸货的时间有所卸货物的类型决定,在15分钟到90分钟之间变化。

开水供应系统:学院开水房的供水时间有限,水房面积有限,水管易受水垢堵塞。

根据调查数据可知:通畅时几乎无人排队,堵塞时水房十分拥挤。

由此可以看出水房设计存在问题,我们可以把开水房看成是一个随即服务系统,应用排队论的方法对系统运行状态做定量的描述。

二、基本假设港口排队系统:通过对问题的重述,那么,每艘船只在港口的平均时间和最长时间是多少?若一艘船只的等待时间是从到达到开始卸货的时间,每艘船只的平均等待时间和最长等待时间是多少?卸货设备空闲时间的百分比是多少?船只排队最长的长度是多少?开水供应系统:假设Ⅰ、顾客流满足参数为λ的Poisson分布,其中λ为单位时间到达的顾客平均数。

每个顾客所需的服务时间相互独立,顾客流是无限的,在观测期间平稳。

假设Ⅱ、排队方式为单一队列的等候制,先到先服务。

虽然水房内有多个服务台,每个服务台都有自己的队列,但同时顾客总是自由转移到最短的队列上,不可能出现有顾客排队而服务器空闲的情况。

本文最后对两种排队方式的比较也表明这一假设是合理的。

假设Ⅲ、水房共有20个并联的服务台(水龙头),设每个服务台的服务时间服从某个相同的分布,t和σ分别是服务时间的均值和均方差,γ=σ/ t为偏离系数。

由于锅炉及输水管容量的限制,使t依赖于正在进行服务的水龙头个数m,设此时平均服务时间t(m)。

且存在一临界值当m<= m0 时,t(m)为常数t0;m>m0时,管道中的水便分给 m 个龙头流出,从而 t(m)> t0,且 t(m)是 m 的单增函数。

假设Ⅳ、污垢的积累与时间成线性变化,设为f(x)=kT(k>0,表示污垢积累速率;T为距上次清理污垢时间间隔。

假设Ⅴ、单位时间为 10 秒。

显然,假设Ⅱ、Ⅲ、Ⅳ都是合理的,对假设Ⅰ进行拟合优度检验,得出假设Ⅰ也是合理的。

三、符号约定开水供应系统用到的符号和参数:L ——系统内顾客数的期望值;Lq——系统内排队顾客数的数学期望;W ——顾客在系统内的平均逗留时间;Wq——顾客排队等待时间的期望;P0——系统内有服务台空闲的概率;ρ=t /n ——系统的服务强度(即用水龙头的程度);n ——水龙头的个数。

α——Wq的上限值β——Po的上限值四、问题分析港口排队系统:排队论:排队论(Queuing Theory) ,是研究系统随机聚散现象和随机服务系统工作过程的数学理论和方法,又称随机服务系统理论,为运筹学的一个分支。

本题研究的是生产系统的效率问题,可以将磨损的工具认为顾客,将打磨机当做服务系统。

//1M M:较为经典的一种排队论模式,按照前面的Kendall记号定义,前面的M代表顾客(工具)到达时间服从泊松分布,后面的M则表示服务时间服从负指数分布,1为仅有一个打磨机。

排队论研究的基本问题1.排队系统的统计推断:即判断一个给定的排队系统符合于哪种模型,以便根据排队理论进行研究。

2.系统性态问题:即研究各种排队系统的概率规律性,主要研究队长分布、等待时间分布和忙期分布等统计指标,包括了瞬态和稳态两种情形。

3.最优化问题:即包括最优设计(静态优化),最优运营(动态优化)。

为了得到一些合理的答案,利用计算器或可编程计算器来模拟港口的活动。

假定相邻两艘船到达的时间间隔和每艘船只卸货的时间区间分布,加入两艘船到达的时间间隔可以是15到145之间的任何数,且这个区间内的任何整数等可能的出现。

再给出模拟这个系统的一般算法之间,考虑有5艘传至的假象情况。

对每艘船只有以下数据:相邻两艘船到达的时间间隔20 30 15 120 25卸货时间55 45 60 75 80 因为船1在时钟于t=0分钟计时开始后20分钟到达,所以港口卸货设备在开始时空空闲了20分钟。

船1立即开始卸货,卸货用时55分,其间,船2在时钟开始计时后t=20+30=50分中到达。

在船1与t=20+55=75分钟卸货完毕之前,船2不能开始卸货,这意味着船2在卸货前必须等待75-50=25分钟。

在船2开始卸货之前,船2于t=50+15=65分钟到达,因为船2在t=75分钟开始卸货,并且卸货需45分钟,所以在船2与t=75+45=120分钟卸货完毕之前,船3不能开始卸货。

这样,船3必须等待120分钟。

船4在t=65+120=185分钟之前没有到达,因此船3已经在t=120+60=180分钟卸货完毕,港口卸货设备空闲185-180=5分钟,并且,船4到达后立即卸货。

最后,在船4于t=185+75=260分钟卸货完毕之前,船5在t=185+25=210到达,于是船5在开始卸货前等待260-210=50分钟。

五、模型的建立和求解港口排队系统:对于问题中存在的服务系统,建立排队论模型,在仅能为一艘船通过是一个标准的//1M G 模型:所谓//1M G 模型,就是输入过程为泊松流时,服务时间为任意的条件之下的,服务机器只有一个得时候。

对于//1M G 模型,服务时间T 的分布式一般的,(但是要求期望值()E T 和()Var T 方差都存在),其他条件和标准的//1M M 型相同。

为了达到稳态1ρ<还是必要的,其中有()E T ρλ=。

单服务员的排队模型设:(1) 船只到来间隔时间服从参数为0.1的指数分布.(2) 对船只的服务时间服从[4,15]上的均匀分布.(3) 排队按先到先服务规则,队长无限制.系统的假设:(1) 船只源是无穷的;(2) 排队的长度没有限制;(3) 到达系统的船只按先后顺序依次进入服务, 即“先到先服务”。

符号说明w :总等待时间;c i :第i 个顾客的到达时刻;b i :第i 个顾客开始服务时刻;e i :第i 个顾客服务结束时刻;x i :第i-1个顾客与第i 个顾客之间到达的间隔时间;y i :对第i 个顾客的服务时间c i =c i-1+ x ie i =b i +y ib i =max(c i ,e i-1)单服务台单队系统… …船只到达 进入队列服务台 接受服务 船只离去开水供应模型:由假设Ⅱ、Ⅲ可知,若 n时,则 n 个服务台是相互独立,服从相同分布,即是一个 M/G/n 型排队模型。

如果则相当于服务台之间可以相互帮助的服务系统,平均服务时间 t 为正在服务的服务台数 m 的函数。

考虑一简单情形:当 m 时,t(m)=;当< m ≤n 时,t(m)=,此模框时 m个服务员以的速率进行服务,但总的服务速率总是即n>时的系统实际相当于M/G/的排队模型。

首先得求出临界服务台数 ,设水龙头及输出管直径分别为;水的流速为v,从而由的含义知:(1-2)即。

由实际估测,=6.5cm,=1.3cm.于是>20=n,因此现有的水房系统服从M/G/20的排队模型。

; (1-3); (1-4); (1-5)(1-6)L=;(1-7)Wq=L/. (1-8)另外公式中要求ρ<1,否则系统永远不能到稳定状态,排队的人越来越多,即队长将趋于无穷大。

对水房系统,λ=2.17,n=20, 当管道通畅时,=7.58,=3.45,ρ=0.8224<1代入解出:=0.292, L =14.97,=0.134,W=0.134,=0.945根据假设Ⅳ,水垢的积累与时间成线性递增变化,f(x)=kT。

随着水垢的积累,服务时间相应增加。

那么处于水房通畅和爆满这两个极端状态之间的水房运营情况又如何呢?下面的模型当=12.10时, >1,水房爆满,进一步分析以了解拥挤情况,拥挤原因以及缓解的办法。

六、模型的检验与评价港口排队系统:表1 100艘船港口和系统的模拟结果上图为一艘船呆在港口的平均时间上图为一艘船呆在港口的最长时间一艘船的平均等待时间上图为一艘船的最长等待时间上图为一艘船的最长等待时间以上就是对港口问题的具体分析,其实港口问题还可以从船只的排队角度出发,我们还可以对多个港口通行做相应的模拟试验,让船主尽量减少等待时间且港口卸货设备的利用率达到最高,从而是港口的主人获得更大的利润。

从排队角度来解决问题,可以使问题的广度增加,选秘书问题就是一个很典型的例子,可以从排队角度解决,如果用我在文章中应用的方法来解决也是可以的,这仅仅是一个港口的小问题,甚至可以说是一个非常简单的问题,但是已经让我感觉到了数学的美,在老师的引导下慢慢接近一种抽象的美,在写论文的这几天中,数据的整理和分析是最值得享受的时刻,在Excel里输入自己的数据,是一种忐忑的感觉,因为在那么多的数据面前,我真的不知道将会发生什么,拟合的过程就更是有意思了,一次一次的尝试,一次一次的比较,在这个过程中,如果有一点点的进步都会让我兴奋,数学建模在生活中处处存在,如果真的能够掌握这个本领,生活一定会变得简单而精彩!开水供应系统:一、灵敏度分析:由公式(1-3)、(1-4)、(1-5)和(1-8)知,直接影响系统各运行指标λ,,t,其中λ为不可控的参数,在分析中可以看成不变。

的参数是n,γ首先,我们讨论Lq、Po和服务时间t之间的关系。

相关文档
最新文档