




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学习文档仅供参考《系统仿真与matlab》综合试题题目:M/M/N排队系统〔多服务员排队系统〕的仿真编号:17难度系数:姓名***班级自动化****学号******联系方式*******成绩学习文档仅供参考TOC\o"1-3"\h\u《系统仿真与matlab》综合试题 0摘要 11. 要求分析 22. 问题分析 23. 模型假设 34. 模型分析 34.1排队系统构成 3到达过程 3排队过程 3服务过程 4系统性能 4参数分布与建模依据 4非负指数分布 5泊松分布 55. M/M/N多服务台模型 5多服务台模型 5服务利用率 7平均队长 7平均等待时间 76. 程序设计 8运算流程图 8动画流程图 97. 系统仿真结果 10程序界面介绍 108. 系统评估与难点分析 12系统评估 12难点评估 129. 参考文献 1210. 附录 13模型数据计算程序 13模型计算主要程序 14
摘要排队是在日常生活中经常遇到的现象,如顾客到商店购买物品,病人到医院看病常常要排队。由于服务机构容量的限制,到达的顾客往往不能立即得到服务,而出现了排队现象。排队论〔又称随机服务系统理论〕就是通过对排队系统进行研究从而建立数学模型的一种理论。 本系统主要基于排队论中多服务系统模型,利用matlab7.0实现模型的建立于仿真,并且通过动画的形式使使用者对整个仿真模型拥有一个直观的认识。关键词:多服务员排队系统排队论MATLAB仿真 GUI
要求分析仿真系统以运筹学中排队论为数学基础,根据其中的多服务台负指数分布排队系统建立仿真模型。 对于排队服务系统,顾客往往注重排队顾客是否太多、等待时间是否太长,而服务员则关心她的空闲时间。因此队长、等待时间以及服务利用率等指标可以衡量系统性能。多服务排队系统〔M/M/N模型〕中,按照顾客到达的时间概率分布为泊松分布,顾客服务时间的长短服从负指数分布的情况,对排队系统进行仿真。其过程如下列图:问题分析根据系统要求,设计过程中主要需要解决一下问题利用MATLAB所提供的GUI工具,设计系统界面。根据输入参数,建立服务模型,使顾客到达率符合泊松分布,顾客服务时间符合负指数分布,并由数学关系得到平均等待时间、平均队长、服务利用率。通过输入参数,利用MATLAB图形功能实现系统动画仿真。对整体系统进行调整,检验系统稳定性与正确性,完善系统功能。对整个设计过程进行评估。模型假设根据系统设计要求与实际情况,服务系统基于以下假设:顾客源是无穷的;排队长度没有限制;到达系统的顾客按先到先服务原则依次进入服务;服务员在仿真过程中没有休假;顾客到达时排成一队,当有服务台空闲时进入服务状态;单位时间内到达的顾客数量服从泊松分布;顾客所需的服务时间服从负指数分布;各服务台服务无相互影响且平均服务时间相同。模型分析排队系统构成系统设计过程中,将排队过程分为到达过程,排队过程,服务过程三部分。到达过程 到达过程主要针对顾客到达情况,对于不同的模型背景,顾客到达情况有不同的限制,此次系统设计过程中顾客到达基于以下假设:顾客源是无限的。顾客单个到来,且相互独立。顾客到达的时间服从泊松分布,且到达过程是平稳的。过程排队过程规定顾客在排队过程中的排队规则,即规定顾客在排队系统中按怎样的规则、次序接收服务的,本次系统设计采用以下排队规则:顾客到达时假设所有服务台均被占用,则顾客均选择排队等候。顾客的服务次序采取先到先服务。队列数目为单列,顾客不会在排队过程中中途退出。 服务过程规定顾客在接收服务过程中的服务规则,本次系统设计采用一下服务规则:服务机构为多服务台并联型〔包括单服务台的特殊情况〕,各服务台独立为不同顾客提供服务。服务采用先到先服务的原则,未设置服务优先级。系统性能 根据设计要求,系统性能参数主要包括以下部分平均队长:服务过程中顾客数的数学期望。服务利用率:服务台使用频率的数学期望。平均等待时间:指一个顾客在排队系统中排队等待时间的数学期望。参数分布与建模依据系统中参数分布主要利用泊松分布和非负指数分布,其涉及的主要变量符号如下表所示:符号说明单位顾客到达时间参数人数/分顾客服务时间参数人数/分出现某种状态的概率\服务利用率\平均排队长人平均队长人平均逗留时间分钟平均等待时间分钟非负指数分布指数分布是单参数的非对称分布,记作,概率密度函数为:它的数学期望为,方差为。指数分布是唯一具有无记忆性的连续型随机变量,即有,在排队论、可靠性分析中有广泛应用。本文将用负指数分布来产生顾客的服务时间。泊松分布与指数分布有密切的关系。当顾客平均到达率为常数的到达间隔服从指数分布时,单位时间内到达的顾客数K服从泊松分布,即单位时间内到达k位顾客的概率为记作Poisson(λ)。泊松分布在排队服务、产品检验、生物与医学统计、天文、物理等领域都有广泛应用。本文将用泊松分布来产生单位时间内到达的顾客数目。M/M/N多服务台模型根据模型分析中对系统的假设,系统具有N个独立服务台,且服务时间均服从参数为的负指数分布。顾客到达时间服从参数为的负指数分布并且到达过程是平稳的。记为系统到达平稳状态后的队长N的概率分布,根据排队论有关方法可以得到:和记服务强度,,则当时,可以得到故其中为系统空闲的概率。由公式〔8〕,可以得到服务利用率:5.3平均队长由公式〔7〕〔8〕,可以得到平均队长:其中为平均等待人数且:5.4平均等待时间系统的平均等待时间可以有Little公式求得:
程序设计运算流程图开始开始输入参数输入参数NN参数是否正确?参数是否正确?YY计算,显示结果计算,显示结果ENDEND6.2动画流程图系统仿真结果程序界面介绍程序运行时界面如下:通过选择仿真类型可以在单服务台系统和多服务台系统之间切换,在输入框中输入有关参数,并按下“计算”按键,系统将计算有关参数,并显示出来。下面以平均到达率0.9,平均服务率0.4,服务台数3为例,仿真结果如下:计算结束后,单击“动画”按钮,可以观看仿真动画:从动画界面可以看到,实时服务台数,空闲服务台数,实时队列长度,顾客总数统计均可通过右侧显示框实时显示,服务动画通过圆点显示顾客运动状态。在动画状态下,可以通过按下“STOP”停止动画显示。假设输入参数不符合系统运行条件,按下“计算”后系统将会显示“错误警告”,如下图:系统评估与难点分析系统评估经实际运行测试,系统可以准确实现对多服务台问题〔包括单服务台问题〕的分析处理,参数计算均符合理论结果。系统仿真动画可以定性的对多服务问题进行动画模拟,为使用者提供直观印象。系统仿真动画侧重于考虑对模型性能的反映,在界面上为进行进一步处理,美观程度略显不足。整个系统基于理想化的M/M/N模型,与实际情况存在一定的差异,仿真结果无法很好的满足实际需求。难点评估系统设计过程中难点主要在于两方面:一是对于问题的建模与数学计算,由于MATLAB提供了丰富的数学函数,在很大程度上简化了建模的难度。二是动画的实现,其主要难度在于动画的运行需基于一个特定的时间轴,满足一个指定的时间分布。为了解决排队队列和服务台队列中时间点的更新,在设计中才用了了数据结构队列的思想,使动画能够按照要求进行。参考文献[1]王小平齐欢.系统建模与仿真.清华大学出版社[M],2004.7[2]运筹学教材编写组.运筹学〔第三版〕.清华大学出版社[M],2005.6[3]陈垚光.精通MATLABGUI设计.电子工业出版社[M].2011[4]罗华飞.MATLABGUI设计学习笔记.北京航空航天大学出版社[M].2011
附录模型数据计算程序%%参数计算函数%%Executesonbuttonpressinjs.functionjs_Callback(hObject,eventdata,handles)%hObjecthandletojs(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)globalmode%仿真类型选择globaldaoda1%顾客到达率globalfuwu1%单个服务台服务率globaltai1%服务台数%axes(handles.myaxes);%读取到达率,转换为数字daoda=str2num(get(handles.ddl,'string'));%读取服务率,转换为数字fuwu=str2num(get(handles.fwl,'string'));%tai=str2num(get(handles.fwts,'string'));%switchmode%case'd'%tai=1;%case's'%tai=str2num(get(handles.fwts,'string'));%end%判断仿真类型switchmodecase'd'%单服务台模式liyong=daoda/fuwu;%获得服务强度%以下为仿真模型参数计算if(liyong>0)&&(liyong<1)&&(daoda>0)&&(fuwu>0)AP=zhuangtai(fuwu,daoda,1,liyong);Lq=(liyong)*liyong*AP/((1-liyong)^2);Ls=Lq+daoda/fuwu;Wq=Lq/daoda;Ps=1-AP;daoda1=daoda;fuwu1=fuwu;tai1=1;elseerrordlg('输入错误,请重新输入','错误');endcase's'%多服务模式tai=str2num(get(handles.fwts,'string'));liyong=daoda/(fuwu*tai)if(liyong>0)&&(liyong<1)&&(daoda>0)&&(fuwu>0)&&(tai>0)AP=zhuangtai(fuwu,daoda,tai,liyong);Lq=((tai*liyong)^tai)*liyong*AP/(factorial(tai)*(1-liyong)^2);Ls=Lq+daoda/fuwu;Wq=Lq/daoda;Ps=1-AP;daoda1=daoda;fuwu1=fuwu;tai1=tai;elseerrordlg('输入错误,请重新输入','错误');endotherwiseerrordlg('请选择仿真类型','错误');end%显示平均等待时间,平均队长,服务利用率set(handles.spjdd,'string',num2str(Wq));set(handles.spjdc,'string',num2str(Ls));set(handles.sfwlyl,'string',num2str(Ps));M/M/N模型计算主要程序%动画制作%Executesonbuttonpressindh.functiondh_Callback(hObject,eventdata,handles)%hObjecthandletodh(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)globaldaoda1globalfuwu1globaltai1globalstpstp=0;axes(handles.myaxes);N=10000;%获得到达率与服务率、服务台数daoda2=1/daoda1;fuwu2=1/fuwu1;tai2=tai1;%num_ser=0;%num_wait=0;%num_leave=0;%利用泊松分布获得到达时间间隔与服务时间time_arrive=(ceil(poissrnd(daoda2,1,N)));time_ser=(ceil(exprnd(fuwu2,1,N)));%延长各时间,防止出现连续间隔为0导致结果错误time_arrive=time_arrive+0.1;time_ser=time_ser+0.1;%time_arrive_sum=cumsum(time_arrive(1,:));%time_ser_sum=cumsum(time_ser(1,:));%time_leave(1)=time_arrive(1)+time_ser(1);%fork=2:N%time_leave(k)=time_leave(k-1)+time_ser(k);%end%绘制入口X0=[4040606040];Y0=[0202000];plot(X0,Y0);fill(X0,Y0,'b');text(45,11,'\fontsize{20}入口');holdon%绘制服务台X1=[3535656535];Y1=[801001008080];plot(X1,Y1);fill(X1,Y1,'Y');text(43,92,'\fontsize{20}服务台');holdon%绘制出口X2=[808010010080];Y2=[801001008080];plot(X2,Y2);fill(X2,Y2,'b');text(85,92,'\fontsize{20}出口');holdon%绘制服务信息显示区X3=[0020200];Y3=[010010000];plot(X3,Y3);fill(X3,Y3,'r');text(5,95,'\fontsize{10}服务台数');text(2,75,'\fontsize{10}空闲服务台数');text(5,55,'\fontsize{10}队列长度');text(5,35,'\fontsize{10}顾客总数');text(5,15,'\fontsize{10}欢送光临');plot([0,20],[10,10]);plot([0,20],[20,20]);plot([0,20],[30,30]);plot([0,20],[40,40]);plot([0,20],[50,50]);plot([0,20],[60,60]);plot([0,20],[70,70]);plot([0,20],[80,80]);plot([0,20],[90,90]);holdon%绘制排队等候区X4=[3535656535];Y4=[5070705050];plot(X4,Y4);fill(X4,Y4,'g');text(43,62,'\fontsize{20}排队区');holdon%绘制各区域顾客〔通过原点表示〕a0=50;b0=10;r0=plot(a0,b0,'.');a1=50;b1=60;r1=plot(a1,b1,'.');a2=50;b2=90;r2=plot(a2,b2,'.');a3=90;b3=90;r3=plot(a3,b3,'.');%w=0;%等待人数f=0;%服务人数s=0;%顾客总数speed=0.1;%动画速度set(r0,'EraseMode','xor','MarkerSize',18);set(r1,'EraseMode','xor','MarkerSize',18);set(r2,'EraseMode','xor','MarkerSize',18);%获取系统时间clk=clock;%time_clk=clk(6)+clk(5)*60+clk(4)*60*60+clk(3)*24*60*60;%出于实际考虑,计数时间以一天为一次循环time_clk=clk(6)+clk(5)*60+clk(4)*60*60;time_now=time_clk;%显示总服务台数str2=num2str(tai2);text(8,85,str2,'fontsize',20);time_leave=0;%用于存取顾客离开时间%Xa与Ya为服务信息显示区坐标,用于擦出前一次数据Xa=[0020200];%执行动画while1 if(stp==1)h_axes=findobj(gcf,'type','axes');h_children_axes=allchild(h_axes);delete(h_children_axes);break;endtime=clock;%循环获取当前时间%time1=time(6)+time(5)*60+time(4)*60*60+time(3)*24*60*60;time1=time(6)+time(5)*60+time(4)*60*60;%获取下一位顾客到达时间time_temp=time_clk+time_arrive(s+1);if(time1>time_temp)%有顾客到达time_clk=time1;s=s+1;%更新顾客总数str1=num2str(s);Ya=[2030302020];fill(Xa,Ya,'r');text(8,25,str1,'fontsize',20);%服务台空闲且等待区无人if(f<tai2)&&(w<1)f=f+1;%更新新服务人数str3=num2str(tai2-f);Ya=[6070706060];fill(Xa,Ya,'r');text(8,65,str3,'fontsize',20);%获取顾客离开时间time_leave(f)=time1+time_ser(s);b0=10;%顾客直接进入服务台whileb0<90drawnowb0=speed+b0;set(r0,'XData',a0,'YData',b0);end%否则顾客进入等待区elsew=w+1;%更新等待人数str4=num2str(w);Ya=[4050504040];fill(Xa,Ya,'r');text(8,45,str4,'fontsize',20);time_wait(w)=time_ser(s);b0=10;%进入等待区whileb0<60drawnowb0=speed+b0;set(r0,'XData',a0,'YData',b0);endendend%服务台空闲且有顾客等待if(f<tai2)&&(w
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 科技纸品在办公环境中的应用推广
- 2025年中小企业培训外包的实践探讨
- 社区生态农业的商业价值与市场前景
- 委托施工设计合同范本
- 金矿爆破服务合同范本
- 市电路灯合同范本
- 知识经济时代下办公环境中的版权保护策略与实践
- 棕色插画卡通孩子如何合理使用DeepSeek
- 二零二五年度房地产抵押贷款担保免责服务合同
- 二零二五年度印刷品售后服务协议
- 企业内部系统使用权限规范
- 《装修流程图课件》课件
- T-CBIA 010-2024 营养素饮料标准
- 工厂奠基仪式策划书
- 人员能力矩阵图
- 用户需求(URS)编写及管理规程
- 分班后第一次班会——起航剖析
- 牛羊定点屠宰厂项目可行性研究报告-甲乙丙资信
- 03SG520-1实腹式钢吊车梁(中轻级工作制A1~A5_Q235钢_跨度6.0m、7.5m、9.0m)
- (完整word版)消化系统知识点整理
- 全国防返贫监测信息系统业务管理子系统操作手册
评论
0/150
提交评论