




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、系统仿真与matlab综合试题0M/M/N 排队系统的模拟仿真1摘 要11. 问题分析22. 模型假设23. 符号说明34. 模型准备34.1 排队系统的组成和特征344.1.2排队规则44.1.3服务过程44.1.4排队系统的主要指标54.2输入过程与服务时间的分布54.2.1负指数分布54.2.2泊松分布54.3生灭过程65. 标准M/M/N模型85.1多服务台模型准备85.2多服务台模型建立95.2.1服务利用率95.2.2平均排队长95.2.3平均队长105.2.4平均等待时间106. 程序设计116.1动画流程图116.2M/M/N流程图127. 程序运行实例介绍137.1动画实例讲
2、解13M/M/N排队系统实例讲解148. 程序实现难点和模型评价178.1程序实现难点178.2模型评价179. 参考文献1710. 附录1710.1动画实现的核心程序1710.2 M/M/N模型计算主要程序22M/M/N 排队系统的模拟仿真摘 要 排队是在日常生活中经常遇到的事,由于顾客到达和服务时间的随机性,使得排队不可防止。因此,本文建立标准的M/M/N模型,并运用Matlab软件,对M/M/N排队系统就行了仿真,从而更好地深入研究排队问题。 问题一,基于顾客到达时间服从泊松分布和服务时间服从负指数分布,建立了标准的M/M/N模型。运用Matlab软件编程,通过输入服务台数量、泊松分布参
3、数以及负指数分布参数,求解出平均队长、服务利用率、平均等待时间以及平均排队长等重要指标。然后,分析了输入参数与输出结果之间的关系。得出当服务台数增加时,几个参数都会变小的结论。 问题二,为了更加清晰地反映出实际排队过程。本文通过运用Matlab软件编程,制作了M/M/1排队过程的动画仿真,通过输入泊松分布参数以及负指数分布参数来模拟不同情况下的排队过程。通过仿真动画,可以看到明显的等待和排队过程。 问题三,为了清晰地展示程序执行的效果以及程序功能的使用方法。本文特意制作了程序运行指南,并做了程序运行实例分析。通过详细地介绍,使读者能更好地理解M/M/N模型以及如何使用该仿真程序。 最后,对建立
4、的M/M/N模型做了评价,并提出了一些改良的思路。同时,指出了程序实现的难点等问题。关键词: M/M/N排队系统 泊松分布 负指数分布 动画模拟仿真1. 问题分析 排队论 Queuing Theory也称随机服务系统理论,就是为解决有关排队问题而发展的一门学科。它研究的内容有以下三部分: 1 性态问题,即研究各种排队系统的概率规律性,主要是研究队长分布、等待时间分布和忙期分布等,包括了瞬态和稳态两种情形。 2 最优化问题,又分静态最优和动态最优,前者指最优设计。后者指现有排队系统的最优运营。3 排队系统的统计推断,即判断一个给定的排队系统符合于哪种模型,以便根据排队理论进行分析研究。 其过程如
5、以下图: 本文需要解决的问题:1 建立顾客到达时间服从泊松分布、服务时间服从负指数分布的M/M/N排队模型,并利用Matlab软件实现输入参数的键入以及输出参数的显示。2 运用Matlab软件编程制作M/M/1排队系统的动态仿真模拟动画,并拥有输入参数的键入功能。3 制作程序运行指南,并结合程序运行实例对程序功能作深入分析。4 对本文建立的标准M/M/N排队模型作评价。2. 模型假设针对本问题,建立如下合理的假设:1 顾客源是无穷的;2 排队长度没有限制;3 到达系统的顾客按先到先服务原则依次进入服务;4 服务员在仿真过程中没有休假;5 顾客到达时排成一队,当有服务台空闲时进入服务状态;6 单
6、位时间内到达的顾客数量服从泊松分布;7 顾客所需的服务时间服从负指数分布;8 各服务台工作是相互独立且平均服务时间相同。3. 符号说明符号说明单位顾客到达时间参数人数/分顾客服务时间参数人数/分出现某种状态的概率服务利用率平均排队长人平均队长人平均逗留时间分钟平均等待时间分钟4. 模型准备 排队系统的组成和特征 一般的排队过程都由输入过程、排队规则、服务过程三部分组成,现分述如下: 输入过程是指顾客到来时间的规律性,可能有以下不同情况: 1. 顾客的组成可能是有限的,也可能是无限的。2. 顾客到达的方式可能是一个个的,也可能是成批的。3. 顾客到达可以是相互独立的,即以前的到达情况对以后的到达
7、没有影响,否则是相关的。4. 输入过程可以是平稳的,即相继到达的间隔时间分布及其数学期望、方差等数字特征都与时间无关,否则是非平稳的。 排队规则指到达排队系统的顾客按怎样的规则排队等待,可分为损失制,等待制和 混合制三种。 1. 损失制消失制。当顾客到达时,所有的服务台均被占用,顾客随即离去。 2. 等待制。当顾客到达时,所有的服务台均被占用,顾客就排队等待,直接受完服务才离去。例如出故障的机器排队等待维修就是这种情况。 3. 混合制。介于损失制和等待制之间的是混合制,即既有等待又有损失。有队列长度有限和排队等待时间有限两种情况,在限度以内就排队等待,超过一定限度就离去。 排队方式还分为单列、
8、多列和循环队列。 1. 服务机构。主要有以下几种类型:单服务台;多服务台并联每个服务台同时为不同顾客服务;多服务台串联多服务台依次为同一顾客服务;混合型。 2. 服务规则。按为顾客服务的次序采用以下几种规则: 1) 先到先服务,这是通常的情形。2) 后到先服务,如情报系统中,最后到的情报信息往往最有价值,因而常被优先处理。3) 随机服务,服务台从等待的顾客中随机地取其一进行服务,而不管到达的先后。4) 优先服务,如医疗系统对病情严重的病人给予优先治疗。 1. 平均队长:指系统内顾客数包括正被服务的顾客与排队等待服务的顾客的数学期望。2. 平均排队长:指系统内等待服务的顾客数的数学期望。3. 平
9、均逗留时间:顾客在系统内逗留时间包括排队等待的时间和接受服务的时间的数学期望。4. 平均等待时间:指一个顾客在排队系统中排队等待时间的数学期望。5. 平均忙期:指服务机构连续繁忙时间顾客到达空闲服务机构起,到服务机构再次空闲止的时间长度的数学期望。排队系统中的事件流包括顾客到达流和服务时间流。由于顾客到达的间隔时间和服务时间不可能是负值,因此,它的分布是非负随机变量的分布。最常用的分布有泊松分布、确定型分布,指数分布和爱尔朗分布。由于本文只用到了泊松分布和负指数分布,因此只对这两种分布加以说明。指数分布是单参数的非对称分布,记作,概率密度函数为:它的数学期望为,方差为。指数分布是唯一具有无记忆
10、性的连续型随机变量,即有,在排队论、可靠性分析中有广泛应用。本文将用负指数分布来产生顾客的服务时间。泊松分布与指数分布有密切的关系。当顾客平均到达率为常数的到达间隔服从指数分布时,单位时间内到达的顾客数K 服从泊松分布,即单位时间内到达k 位顾客的概率为 记作Poisson() 。泊松分布在排队服务、产品检验、生物与医学统计、天文、物理等领域都有广泛应用。 本文将用泊松分布来产生单位时间内到达的顾客数目。 在排队论中,如果表示时刻系统中的顾客数,则就构成了一个随机过程。如果用“生”表示顾客的到达,“灭”表示顾客的离去,则对许多排队过程来说,就是一类特殊的随机过程生灭过程。定义 1 设为一个随机
11、过程。假设的概率分布具有以下性质: 1. 假设,则从时刻起到下一个顾客到达时刻止的时间服从参数为的负指数分布,。 2. 假设,则从时刻起到下一个顾客离去时刻止的时间服从参数为的负指数分别,。3. 同一时刻只有一个顾客到达或离去。则称为一个生灭过程。 当系统运行相当时间而到达平衡状态后,对任一状态,即其中表示系统中一共有名顾客,单位时间内进入该状态的平均次数和单位时间内离开该状态的平均次数应该相等,这就是系统在统计平衡下的“流入流出”原理。根据这一原理,可得到任一状态下的平衡方程如下:有上述平衡方程,可求得因此,记则平稳状态的分布为由概率分布的要求可以得到即系统空闲状态的概率。注意只有当级数收敛
12、时才有意义。5. 标准M/M/N模型设顾客单个到达,相继到达时间间隔服从参数为的负指数分布,系统中共有个服务台,每个服务台的服务时间相互独立,且服从参数为的负指数分布。当顾客到达时,假设有空闲的服务台则马上接受服务,否则便排成一个队列等待,等待时间为无限。记为系统到达平稳状态后的队长N的概率分布,注意到对个数为s的多服务台系统,有 和记服务强度,则当时,由式3、4、5、6,可以得到故其中为系统空闲的概率。因此,系统中有任意多个顾客的概率都可以由式11和式12得到。从而,就可以计算出反映该系统性能的各种重要指标。在本文中,简单的把服务利用率定义为系统处于非空闲状态的概率。因此,由公式12,可以得
13、到服务利用率为对于多服务台排队系统,由公式11和公式12可以得到系统到达平稳状态的平均排队长。对于到达平稳状态的多服务台排队系统,平均队长等于平均排队长与正在接受服务的顾客的平均数之和,即记系统中正在接受服务的顾客的平均数为,则 因此,平均队长对于顾客在系统中平均等待时间的建模,可以先计算顾客在系统中的逗留时间,然后再减去顾客在系统中的服务时间,这样就可以得到顾客的平均等待时间。 顾客在系统中的逗留时间可以看作一个服从的负指数分布,即因此,平均逗留时间又因为顾客在系统中的逗留时间等于等待时间与接受服务的时间之和,即故平均等待时间6. 程序设计开始输入顾客到达的泊松分布参数、服务时间的负指数分布
14、参数NO判断时间是否等于第i个人的到达时间? YESNO是否空闲?YES进入系统接受服务NO服务完毕?YES离开NO结束?YESEND6.2M/M/N流程图开始输入参数NO判断输入是否正确?YES代入公式计算,并显示结果NO结束?YESEND7. 程序运行实例介绍当运行程序时就会出现下面的窗口:如果要观看M/M/1排队系统的仿真动画,可以现在左下角输入每分钟到达人数和每分钟服务人数。然后,点击“观看动画”按钮,就可以观看仿真动画。例如,设每分钟到达人数为0.35、每分钟服务人数为0.4.程序运行一段时间后,我们可以看到如下的画面: 由上图,可以得到等待人数、总接待人数以及离开人数。如果要重新设
15、置参数,可以按左下角的“重置”键。当“重置”键按下后,我们可以看到如下画面:然后,重新设置每分钟到达人数以及每分钟服务人数,并点击“观看动画”。M/M/N排队系统实例讲解 在窗口的“请设置参数”下方,可以设置服务台数、每分钟到达人数以及每分钟服务人数。然后,点击“开始”按钮,在“模型仿真结果”下方就可以得到平均队长、服务利用率、平均等待时间以及平均排队长度。如果要重新设置参数,可以点击开始键旁边“重置”,点击后可得到如下画面:可以看见“M/M/N排队系统计算”下面所有的框都被置为0。如果输入参数出错时,程序会弹出窗口自动提示,如以下图: 并且在切换到提示时,并不会影响前面动画的执行。因此,不必
16、担忧输入参数出错而影响其他程序的运行。点击“返回”即可回到前一画面,并且可以看见“M/M/N排队系统计算”所有的框都被置为0。点击后的画面如以下图:注:本程序在执行时是以一秒钟代替一分钟8. 程序实现难点和模型评价1. 本段程序的主要难点在制作动画中,在制作动画时不是很容易把泊松分布和负指数分布产生的数据和实际的时间联系起来。最后,利用了clock函数解决了问题。2. 在GUI设计时,切换画面时总是会有一定的闪动,此问题暂时还没有解决。本文建立的是标准的M/M/N排队系统模型,而在实际生活中并不是这样的。在实际的生活中往往是一种有损失制的排队系统,当人们在排队的时候看见排队的人数很多就会部分人
17、就会离开,而从模型并没有考虑此情况。因此,模型还有待改良。9. 参考文献1运筹学教材编写组,运筹学第三版,北京:清华大学出版社M,20052齐欢 王小平系,统建模与仿真 北京:清华大学出版社M,2004。3姜启源 谢金星,数学模型(第三版),北京:高等教育出版社M,2003。4赵广元,MATLAB与控制系统仿真实践,北京:北京航空航天大学出版社M,20095施晓红 周佳,精通GUI图形界面编程,北京:北京大学出版社M,200310. 附录function Mypush_Callback(hObject, eventdata, handles)% hObject handle to Mypush
18、 (see GCBO)% eventdata 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.MYG
19、ETA,String);serveb=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(servet
20、ime0(1,:); leavetime(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
21、=8 12 12 8;%指定x坐标的值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=
22、x3 x3(1);%首尾相连Y3=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,Y
23、5);fill(X5,Y5,g);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,离开人数);h
24、old on axis(0 20 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.MYG
25、ETA,String); serveb=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入
26、口处 x=10; y=0; 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 en
27、d end %顾客去服务 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 %顾客离开
28、if(t0)% if(state0) 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 drawnowendM/M/N模型计算主要程序function MYstart_Callback(hObject, eventdata, handles)% hObject handle to MYstart (see
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 果品、蔬菜销售过程中的食品安全管理考核试卷
- 红河州泸西县永宁乡卫生院招聘笔试真题2024
- 市政道路绿化与景观设计考核试卷
- 中乐器制作与生产自动化考核试卷
- 煤炭加工中的煤矸石堆场建设与环境影响评价考核试卷
- 小型发电机组应用考核试卷
- 皮革保养的个性化服务与用户体验优化与市场细分策略考核试卷
- 口腔清洁用品包装材料可回收性研究考核试卷
- 石棉制品在核工业的安全防护考核试卷
- 火灾心得体会(16篇)
- 工业和信息化部产业发展促进中心招聘笔试真题2024
- 2025年江西上饶铅山城投控股集团有限公司招聘笔试参考题库附带答案详解
- 模拟雨的形成课件
- 多维数据循环嵌套分析-全面剖析
- 数学全等三角形教学设计 2024-2025学年北师大版数学七年级下册
- 桥梁水下结构内部缺陷超声波检测基于技术
- 事故隐患内部报告奖励制度1
- 2024年河北普通高等学校对口招生考试数学试题
- 认知与实践:AI技术在高校图书馆应用现状调研分析
- 护理行政查房内容
- 精神科患者自缢应急演练
评论
0/150
提交评论