ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:468.78KB ,
资源ID:4808630      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4808630.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(MMN排队系统建模与仿真.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

MMN排队系统建模与仿真.docx

1、MMN排队系统建模与仿真M/M/N 排队系统的模拟仿真摘 要 排队是在日常生活中经常遇到的事,由于顾客到达和服务时间的随机性,使得排队不可避免。因此,本文建立标准的M/M/N模型,并运用Matlab软件,对M/M/N排队系统就行了仿真,从而更好地深入研究排队问题。 问题一,基于顾客到达时间服从泊松分布和服务时间服从负指数分布,建立了标准的M/M/N模型。运用Matlab软件编程,通过输入服务台数量、泊松分布参数以及负指数分布参数,求解出平均队长、服务利用率、平均等待时间以及平均排队长等重要指标。然后,分析了输入参数与输出结果之间的关系。得出当服务台数增加时,几个参数都会变小的结论。 问题二,为

2、了更加清晰地反映出实际排队过程。本文通过运用Matlab软件编程,制作了M/M/1排队过程的动画仿真,通过输入泊松分布参数以及负指数分布参数来模拟不同情况下的排队过程。通过仿真动画,可以看到明显的等待和排队过程。 问题三,为了清晰地展示程序执行的效果以及程序功能的使用方法。本文特意制作了程序运行指南,并做了程序运行实例分析。通过详细地介绍,使读者能更好地理解M/M/N模型以及如何使用该仿真程序。 最后,对建立的M/M/N模型做了评价,并提出了一些改进的思路。同时,指出了程序实现的难点等问题。关键词: M/M/N排队系统 泊松分布 负指数分布 动画模拟仿真1. 问题分析 排队论 (Queuing

3、 Theory)也称随机服务系统理论,就是为解决有关排队问题而发展的一门学科。它研究的容有下列三部分: 1性态问题,即研究各种排队系统的概率规律性,主要是研究队长分布、等待时间分布和忙期分布等,包括了瞬态和稳态两种情形。 2最优化问题,又分静态最优和动态最优,前者指最优设计。后者指现有排队系统的最优运营。3排队系统的统计推断,即判断一个给定的排队系统符合于哪种模型,以便根据排队理论进行分析研究。 其过程如下图: 本文需要解决的问题:1建立顾客到达时间服从泊松分布、服务时间服从负指数分布的M/M/N排队模型,并利用Matlab软件实现输入参数的键入以及输出参数的显示。2运用Matlab软件编程制

4、作M/M/1排队系统的动态仿真模拟动画,并拥有输入参数的键入功能。3制作程序运行指南,并结合程序运行实例对程序功能作深入分析。4对本文建立的标准M/M/N排队模型作评价。2. 模型假设针对本问题,建立如下合理的假设:1顾客源是无穷的;2排队长度没有限制;3到达系统的顾客按先到先服务原则依次进入服务;4服务员在仿真过程中没有休假;5顾客到达时排成一队,当有服务台空闲时进入服务状态;6单位时间到达的顾客数量服从泊松分布;7顾客所需的服务时间服从负指数分布;8各服务台工作是相互独立且平均服务时间相同。3. 符号说明符号说明单位顾客到达时间参数人数/分顾客服务时间参数人数/分出现某种状态的概率服务利用

5、率平均排队长人平均队长人平均逗留时间分钟平均等待时间分钟4. 模型准备4.1 排队系统的组成和特征 一般的排队过程都由输入过程、排队规则、服务过程三部分组成,现分述如下: 4.1.1输入过程 输入过程是指顾客到来时间的规律性,可能有下列不同情况: 1. 顾客的组成可能是有限的,也可能是无限的。2. 顾客到达的方式可能是一个个的,也可能是成批的。3. 顾客到达可以是相互独立的,即以前的到达情况对以后的到达没有影响,否则是相关的。4. 输入过程可以是平稳的,即相继到达的间隔时间分布及其数学期望、方差等数字特征都与时间无关,否则是非平稳的。 4.1.2排队规则 排队规则指到达排队系统的顾客按怎样的规

6、则排队等待,可分为损失制,等待制和 混合制三种。 1. 损失制(消失制)。当顾客到达时,所有的服务台均被占用,顾客随即离去。 2. 等待制。当顾客到达时,所有的服务台均被占用,顾客就排队等待,直接受完服务才离去。例如出故障的机器排队等待维修就是这种情况。 3. 混合制。介于损失制和等待制之间的是混合制,即既有等待又有损失。有队列长度有限和排队等待时间有限两种情况,在限度以就排队等待,超过一定限度就离去。 排队方式还分为单列、多列和循环队列。 4.1.3服务过程 1. 服务机构。主要有以下几种类型:单服务台;多服务台并联(每个服务台同时为不同顾客服务);多服务台串联(多服务台依次为同一顾客服务)

7、;混合型。 2. 服务规则。按为顾客服务的次序采用以下几种规则: 1) 先到先服务,这是通常的情形。2) 后到先服务,如情报系统中,最后到的情报信息往往最有价值,因而常被优先处理。3) 随机服务,服务台从等待的顾客中随机地取其一进行服务,而不管到达的先后。4) 优先服务,如医疗系统对病情严重的病人给予优先治疗。 4.1.4排队系统的主要指标1. 平均队长:指系统顾客数(包括正被服务的顾客与排队等待服务的顾客)的数学期望。2. 平均排队长:指系统等待服务的顾客数的数学期望。3. 平均逗留时间:顾客在系统逗留时间(包括排队等待的时间和接受服务的时间)的数学期望。4. 平均等待时间:指一个顾客在排队

8、系统中排队等待时间的数学期望。5. 平均忙期:指服务机构连续繁忙时间(顾客到达空闲服务机构起,到服务机构再次空闲止的时间)长度的数学期望。4.2输入过程与服务时间的分布排队系统中的事件流包括顾客到达流和服务时间流。由于顾客到达的间隔时间和服务时间不可能是负值,因此,它的分布是非负随机变量的分布。最常用的分布有泊松分布、确定型分布,指数分布和爱尔朗分布。由于本文只用到了泊松分布和负指数分布,因此只对这两种分布加以说明。4.2.1负指数分布指数分布是单参数的非对称分布,记作,概率密度函数为:它的数学期望为,方差为。指数分布是唯一具有无记忆性的连续型随机变量,即有,在排队论、可靠性分析中有广泛应用。

9、本文将用负指数分布来产生顾客的服务时间。4.2.2泊松分布泊松分布与指数分布有密切的关系。当顾客平均到达率为常数的到达间隔服从指数分布时,单位时间到达的顾客数K 服从泊松分布,即单位时间到达k 位顾客的概率为 记作Poisson() 。泊松分布在排队服务、产品检验、生物与医学统计、天文、物理等领域都有广泛应用。 本文将用泊松分布来产生单位时间到达的顾客数目。 4.3生灭过程在排队论中,如果表示时刻系统中的顾客数,则就构成了一个随机过程。如果用“生”表示顾客的到达,“灭”表示顾客的离去,则对许多排队过程来说,就是一类特殊的随机过程生灭过程。定义 1 设为一个随机过程。若的概率分布具有以下性质:

10、1. 假设,则从时刻起到下一个顾客到达时刻止的时间服从参数为的负指数分布,。 2. 假设,则从时刻起到下一个顾客离去时刻止的时间服从参数为的负指数分别,。3. 同一时刻只有一个顾客到达或离去。则称为一个生灭过程。 当系统运行相当时间而到达平衡状态后,对任一状态,即其中表示系统中一共有名顾客,单位时间进入该状态的平均次数和单位时间离开该状态的平均次数应该相等,这就是系统在统计平衡下的“流入流出”原理。根据这一原理,可得到任一状态下的平衡方程如下:有上述平衡方程,可求得因此,记则平稳状态的分布为由概率分布的要求可以得到即系统空闲状态的概率。注意只有当级数收敛时才有意义。5. 标准M/M/N模型5.

11、1多服务台模型准备设顾客单个到达,相继到达时间间隔服从参数为的负指数分布,系统中共有个服务台,每个服务台的服务时间相互独立,且服从参数为的负指数分布。当顾客到达时,若有空闲的服务台则马上接受服务,否则便排成一个队列等待,等待时间为无限。记为系统达到平稳状态后的队长N的概率分布,注意到对个数为s的多服务台系统,有 和记服务强度,则当时,由式(3)、(4)、(5)、(6),可以得到故其中为系统空闲的概率。因此,系统中有任意多个顾客的概率都可以由式(11)和式(12)得到。从而,就可以计算出反映该系统性能的各种重要指标。5.2多服务台模型建立5.2.1服务利用率在本文中,简单的把服务利用率定义为系统

12、处于非空闲状态的概率。因此,由公式(12),可以得到服务利用率为5.2.2平均排队长对于多服务台排队系统,由公式(11)和公式(12)可以得到系统到达平稳状态的平均排队长。5.2.3平均队长对于到达平稳状态的多服务台排队系统,平均队长等于平均排队长与正在接受服务的顾客的平均数之和,即记系统中正在接受服务的顾客的平均数为,则 因此,平均队长5.2.4平均等待时间对于顾客在系统中平均等待时间的建模,可以先计算顾客在系统中的逗留时间,然后再减去顾客在系统中的服务时间,这样就可以得到顾客的平均等待时间。 顾客在系统中的逗留时间可以看作一个服从的负指数分布,即因此,平均逗留时间又因为顾客在系统中的逗留时

13、间等于等待时间与接受服务的时间之和,即故平均等待时间6. 程序设计6.1动画流程图YES6.2 M/M/N流程图开始输入参数判断输入是否正确?NO代入公式计算,并显示结果YES结束?ENDYESNO7. 程序运行实例介绍7.1动画实例讲解当运行程序时就会出现下面的窗口:如果要观看M/M/1排队系统的仿真动画,可以现在左下角输入每分钟到达人数和每分钟服务人数。然后,点击“观看动画”按钮,就可以观看仿真动画。例如,设每分钟到达人数为0.35、每分钟服务人数为0.4.程序运行一段时间后,我们可以看到如下的画面: 由上图,可以得到等待人数、总接待人数以及离开人数。如果要重新设置参数,可以按左下角的“重

14、置”键。当“重置”键按下后,我们可以看到如下画面:然后,重新设置每分钟到达人数以及每分钟服务人数,并点击“观看动画”。7.2M/M/N排队系统实例讲解 在窗口的“请设置参数”下方,可以设置服务台数、每分钟到达人数以及每分钟服务人数。然后,点击“开始”按钮,在“模型仿真结果”下方就可以得到平均队长、服务利用率、平均等待时间以及平均排队长度。如果要重新设置参数,可以点击开始键旁边“重置”,点击后可得到如下画面:可以看见“M/M/N排队系统计算”下面所有的框都被置为0。如果输入参数出错时,程序会弹出窗口自动提示,如下图: 并且在切换到提示时,并不会影响前面动画的执行。因此,不必担心输入参数出错而影响

15、其他程序的运行。点击“返回”即可回到前一画面,并且可以看见“M/M/N排队系统计算”所有的框都被置为0。点击后的画面如下图:注:本程序在执行时是以一秒钟代替一分钟8. 程序实现难点和模型评价8.1程序实现难点1. 本段程序的主要难点在制作动画中,在制作动画时不是很容易把泊松分布和负指数分布产生的数据和实际的时间联系起来。最后,利用了clock函数解决了问题。2. 在GUI设计时,切换画面时总是会有一定的闪动,此问题暂时还没有解决。8.2模型评价本文建立的是标准的M/M/N排队系统模型,而在实际生活中并不是这样的。在实际的生活中往往是一种有损失制的排队系统,当人们在排队的时候看见排队的人数很多就

16、会部分人就会离开,而从模型并没有考虑此情况。因此,模型还有待改进。9. 参考文献1运筹学教材编写组,运筹学(第三版),:清华大学M,20052齐欢 王小平系,统建模与仿真 :清华大学M,2004。3启源 金星,数学模型(第三版),:高等教育M,2003。4,MATLAB与控制系统仿真实践,:航空航天大学M,20095施晓红 周佳,精通GUI图形界面编程,:大学M,200310. 附录10.1动画实现的核心程序function Mypush_Callback(hObject, eventdata, handles)% hObject handle to Mypush (see GCBO)% ev

17、entdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)axes(handles.Myaxe);N=10000;% geta=str2double(get(findobj(tag,MYGETA),String);% serveb=str2double(get(findobj(tag,MYSERVEB),String);geta=str2double(get(handles.MYGETA,String);ser

18、veb=str2double(get(handles.MYSERVEB,String);geta=1/geta;serveb=1/serveb;reset=0;%动画标志nownum=0;%初始人数servenum=0;%接受服务的总人数outnum=0;% state=0;%0服务台无人,1有人 gettime0=ceil(poissrnd(geta,1,N);%产生到达时间gettime=cumsum(gettime0(1,:); servetime0=ceil(exprnd(serveb,1,N);%产生服务时间servetime=cumsum(servetime0(1,:); leav

19、etime(1)=gettime(1)+servetime0(1);for j=2:Nleavetime(j)=leavetime(j-1)+servetime0(j);%等于前一个离开时间加其服务时间end waittime(1)=0;for j=2:Nwaittime(j)=-gettime(j)+leavetime(j-1);%等待时间end x=10;y=0;h=plot(x,y,.);hold on x0=10;y0=8;h1=plot(x0,y0,.);hold on xl=10;yl=16;h2=plot(xl,yl,.);hold on%服务台x1=8 12 12 8;%指定x

20、坐标的值y1=15 15 17 17;%指定y坐标的值X1=x1 x1(1);%首尾相连Y1=y1 y1(1);%首尾相连plot(X1,Y1);fill(X1,Y1,y);text(8,18,服务台);hold on%等待处x2=8 12 12 8;%指定x坐标的值y2=7 7 9 9;%指定y坐标的值X2=x2 x2(1);%首尾相连Y2=y2 y2(1);%首尾相连plot(X2,Y2);fill(X2,Y2,r);text(8,10,等待处);hold on%等待人数x3=14 16 16 14;%指定x坐标的值y3=7 7 9 9;%指定y坐标的值X3=x3 x3(1);%首尾相连Y

21、3=y3 y3(1);%首尾相连plot(X3,Y3);fill(X3,Y3,g);text(13,10,等待人数);hold on %总接待人数x4=3 5 5 3;%指定x坐标的值y4=15 15 17 17;%指定y坐标的值X4=x4 x4(1);%首尾相连Y4=y4 y4(1);%首尾相连plot(X4,Y4);fill(X4,Y4,b);text(1,18,总接待人数);hold on%入口x5=9 11 11 9;%指定x坐标的值y5=0 0 2 2;%指定y坐标的值X5=x5 x5(1);%首尾相连Y5=y5 y5(1);%首尾相连plot(X5,Y5);fill(X5,Y5,g

22、);text(11.5,1,入口);hold on%出口x6=17 19 17 19;%指定x坐标的值y6=15 15 17 17;%指定y坐标的值X6=x6 x6(1);%首尾相连Y6=y6 y6(1);%首尾相连plot(X6,Y6);fill(X6,Y6,g);text(18,18,出口);hold on%离开人数x7=14 16 16 14;%指定x坐标的值y7=15 15 17 17;%指定y坐标的值X7=x7 x7(1);%首尾相连Y7=y7 y7(1);%首尾相连plot(X7,Y7);fill(X7,Y7,g);text(12,18,离开人数);hold on axis(0 2

23、0 0 20)axis squaregrid off set(h,EraseMode,xor,MarkerSize,18)%异或实现动画set(h1,EraseMode,xor,MarkerSize,18)set(h2,EraseMode,xor,MarkerSize,18)i=1;j=1;t=1;temp=clock;nowtime=temp(6)+temp(5)*60+temp(4)*60*60+temp(3)*24*60*60;nowtime0=nowtime;%记录开始仿真的时间while 1 geta=str2double(get(handles.MYGETA,String); se

24、rveb=str2double(get(handles.MYSERVEB,String); if(geta=0|serveb=0)%按下重置键 h_axes=findobj(gcf,type,axes); %获得当前图中所有坐标的句柄 h_children_axes=allchild(h_axes); %获得坐标的子对象的句柄 delete(h_children_axes); %删除所有坐标子对象句柄,达到清空目的 break; end% if(geta=-1|serveb=-1)%按下退出键% break;% end if(reset=1)%把坐标置到(10,0)入口处 x=10; y=0;

25、 reset=0; end time=clock; curtime=time(6)+time(5)*60+time(4)*60*60+time(3)*24*60*60; %顾客到来 if(i=gettime(i) y=y+0.005; set(h,XData,x,YData,y) if(y=8) reset=1; fill(X3,Y3,g) nownum=nownum+1; text(15,8,num2str(nownum); i=i+1;% tempnum=1;% nowtime=curtime;%更新时间% plot(x,y,o);% hold on end end end %顾客去服务

26、if(j0) if(curtime-nowtime0=gettime(j)+waittime(j) x0=10.000; y0=y0+0.005; set(h1,XData,x0,YData,y0) if(y0=16) nownum=nownum-1; servenum=servenum+1;% state=1; fill(X3,Y3,g) text(15,8,num2str(nownum); fill(X4,Y4,b); text(3.7,16,num2str(servenum); x0=10; y0=8; j=j+1; end end end end %顾客离开 if(t0)% if(st

27、ate0) if(curtime-nowtime0=leavetime(t) xl=xl+0.005; yl=16; set(h2,XData,xl,YData,yl)% if(xl=20)% t=t+1;% xl=10;% end if(xl=18) t=t+1; xl=10; outnum=outnum+1; fill(X7,Y7,g); text(14.5,16,num2str(outnum);% state=0;% end end end end end if(isize(gettime) if(jsize(waittime) if(tsize(leavetime) break; end end end drawnowend10.2M/M/N模型计算主要程序function MYstart_Callback(hObject, eventdata, handles)% hObject handle to MYstart (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (se

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1