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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

matlab仿真设计多服务台排队系统建模与动画仿真精品.docx

1、matlab仿真设计多服务台排队系统建模与动画仿真精品matlab仿真设计-多服务台排队系统建模与动画仿真-精品2020-12-12【关键字】情况、方法、条件、领域、模式、行动、运行、认识、问题、难点、系统、密切、整体、平稳、合理、执行、建立、了解、研究、关键、稳定、理想、思想、基础、需要、体系、需求、方式、结构、反映、速度、关系、设置、检验、分析、简化、丰富、满足、优先、服务、解决、调整、完善、实现、关心、系统性题 目:M/M/N 排队系统(多服务员排队系统)的仿真编 号: 17 难度系数: * 姓 名 * 班 级 自动化* 学 号 * 联系方式 * 成 绩 摘 要 排队是在日常生活中经常遇

2、到的现象,如顾客到商店购买物品,病人到医院看病常常要排队。由于服务机构容量的限制,到达的顾客往往不能立即得到服务,而出现了排队现象。排队论(又称随机服务系统理论)就是通过对排队系统进行研究从而建立数学模型的一种理论。 本系统主要基于排队论中多服务系统模型,利用matlab7.0实现模型的建立于仿真,并且通过动画的形式使使用者对整个仿真模型拥有一个直观的认识。关键词: 多服务员排队系统 排队论 MATLAB仿真 GUI1.要求分析 仿真系统以运筹学中排队论为数学基础,根据其中的多服务台负指数分布排队系统建立仿真模型。 对于排队服务系统,顾客往往注重排队顾客是否太多、等待时间是否太长,而服务员则关

3、心她的空闲时间。因此队长、等待时间以及服务利用率等指标可以衡量系统性能。多服务排队系统(M/M/N模型)中,按照顾客到达的时间概率分布为泊松分布,顾客服务时间的长短服从负指数分布的情况,对排队系统进行仿真。其过程如下图:2.问题分析根据系统要求,设计过程中主要需要解决一下问题1利用MATLAB所提供的GUI工具,设计系统界面。2根据输入参数,建立服务模型,使顾客到达率符合泊松分布,顾客服务时间符合负指数分布,并由数学关系得到平均等待时间、平均队长、服务利用率。3通过输入参数,利用MATLAB图形功能实现系统动画仿真。4对整体系统进行调整,检验系统稳定性与正确性,完善系统功能。5对整个设计过程进

4、行评估。3.模型假设根据系统设计要求与实际情况,服务系统基于以下假设:1顾客源是无穷的;2排队长度没有限制;3到达系统的顾客按先到先服务原则依次进入服务;4服务员在仿真过程中没有休假;5顾客到达时排成一队,当有服务台空闲时进入服务状态;6单位时间内到达的顾客数量服从泊松分布;7顾客所需的服务时间服从负指数分布;8各服务台服务无相互影响且平均服务时间相同。4.模型分析4.1 排队系统构成 系统设计过程中,将排队过程分为到达过程,排队过程,服务过程三部分。 到达过程主要针对顾客到达情况,对于不同的模型背景,顾客到达情况有不同的限制,此次系统设计过程中顾客到达基于以下假设: 1.顾客源是无限的。2.

5、顾客单个到来,且相互独立。3.顾客到达的时间服从泊松分布,且到达过程是平稳的。 排队过程规定顾客在排队过程中的排队规则,即规定顾客在排队系统中按怎样的规则、次序接收服务的,本次系统设计采用以下排队规则: 1.顾客到达时若所有服务台均被占用,则顾客均选择排队等候。2.顾客的服务次序采取先到先服务。3.队列数目为单列,顾客不会在排队过程中中途退出。 服务过程规定顾客在接收服务过程中的服务规则,本次系统设计采用一下服务规则:1.服务机构为多服务台并联型(包括单服务台的特殊情况),各服务台独立为不同顾客提供服务。 2.服务采用先到先服务的原则,未设置服务优先级。 根据设计要求,系统性能参数主要包括以下

6、部分1.平均队长:服务过程中顾客数的数学期望。2.服务利用率:服务台使用频率的数学期望。3.平均等待时间:指一个顾客在排队系统中排队等待时间的数学期望。4.2参数分布与建模依据系统中参数分布主要利用泊松分布和非负指数分布,其涉及的主要变量符号如下表所示:符号说明单位顾客到达时间参数人数/分顾客服务时间参数人数/分出现某种状态的概率服务利用率平均排队长人平均队长人平均逗留时间分钟平均等待时间分钟指数分布是单参数的非对称分布,记作,概率密度函数为:它的数学期望为,方差为。指数分布是唯一具有无记忆性的连续型随机变量,即有,在排队论、可靠性分析中有广泛应用。本文将用负指数分布来产生顾客的服务时间。泊松

7、分布与指数分布有密切的关系。当顾客平均到达率为常数的到达间隔服从指数分布时,单位时间内到达的顾客数K 服从泊松分布,即单位时间内到达k 位顾客的概率为记作Poisson() 。泊松分布在排队服务、产品检验、生物与医学统计、天文、物理等领域都有广泛应用。 本文将用泊松分布来产生单位时间内到达的顾客数目。 5.M/M/N多服务台模型5.1多服务台模型根据模型分析中对系统的假设,系统具有N个独立服务台,且服务时间均服从参数为的负指数分布。顾客到达时间服从参数为的负指数分布并且到达过程是平稳的。记为系统达到平稳状态后的队长N的概率分布,根据排队论有关方法可以得到:和记服务强度,则当时,可以得到故其中为

8、系统空闲的概率。5.2服务利用率由公式(8),可以得到服务利用率:5.3平均队长由公式(7)(8),可以得到平均队长:其中为平均等待人数且:5.4平均等待时间系统的平均等待时间可以有Little公式求得:6.程序设计6.1运算流程图6.2动画流程图7.系统仿真结果7.1程序界面介绍程序运行时界面如下:通过选择仿真类型可以在单服务台系统和多服务台系统之间切换,在输入框中输入有关参数,并按下“计算”按键,系统将计算有关参数,并显示出来。下面以平均到达率0.9,平均服务率0.4,服务台数3为例,仿真结果如下:计算结束后,单击“动画”按钮,可以观看仿真动画:从动画界面可以看到,实时服务台数,空闲服务台

9、数,实时队列长度,顾客总数统计均可通过右侧显示框实时显示,服务动画通过圆点显示顾客运动状态。在动画状态下,可以通过按下“STOP”停止动画显示。若输入参数不符合系统运行条件,按下“计算”后系统将会显示“错误警告”,如图所示:8.系统评估与难点分析8.1系统评估1.经实际运行测试,系统可以准确实现对多服务台问题(包括单服务台问题)的分析处理,参数计算均符合理论结果。2.系统仿真动画可以定性的对多服务问题进行动画模拟,为使用者提供直观印象。3.系统仿真动画侧重于考虑对模型性能的反映,在界面上为进行进一步处理,美观程度略显不足。4.整个系统基于理想化的M/M/N模型,与实际情况存在一定的差异,仿真结

10、果无法很好的满足实际需求。8.2难点评估系统设计过程中难点主要在于两方面:一是对于问题的建模与数学计算,由于MATLAB提供了丰富的数学函数,在很大程度上简化了建模的难度。二是动画的实现,其主要难度在于动画的运行需基于一个特定的时间轴,满足一个指定的时间分布。为了解决排队队列和服务台队列中时间点的更新,在设计中才用了了数据结构队列的思想,使动画能够按照要求进行。9.参考文献1 王小平 齐欢.系统建模与仿真.清华大学出版社M,2004.72 运筹学教材编写组.运筹学(第三版).清华大学出版社M,2005.63 陈垚光.精通MATLAB GUI设计.电子工业出版社M.20114 罗华飞.MATLA

11、B GUI设计学习笔记.北京航空航天大学出版社M.201110.附录10.1模型数据计算程序%-%参数计算函数%-% - Executes on button press in js.function js_Callback(hObject, eventdata, handles)% hObject handle to js (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)

12、global mode %仿真类型选择global daoda1 %顾客到达率global fuwu1 %单个服务台服务率global tai1 %服务台数%axes(handles.myaxes);%读取到达率,转换为数字daoda = str2num(get(handles.ddl,string);%读取服务率,转换为数字fuwu = str2num(get(handles.fwl,string);%tai = str2num(get(handles.fwts,string);%switch mode% cased% tai = 1;% cases% tai = str2num(get(h

13、andles.fwts,string);%end%判断仿真类型switch mode cased %单服务台模式 liyong = daoda/fuwu;%获得服务强度 %-以下为仿真模型参数计算 if (liyong 0)&(liyong 0) & (fuwu0) 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; els

14、e errordlg(输入错误,请重新输入,错误); end cases%多服务模式 tai = str2num(get(handles.fwts,string); liyong = daoda/(fuwu*tai) if (liyong 0)&(liyong 0) & (fuwu0) & (tai0) 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

15、; daoda1 = daoda; fuwu1 = fuwu; tai1 = tai; else errordlg(输入错误,请重新输入,错误); end otherwise errordlg(请选择仿真类型,错误);end%显示平均等待时间,平均队长,服务利用率set(handles.spjdd,string,num2str(Wq);set(handles.spjdc,string,num2str(Ls);set(handles.sfwlyl,string,num2str(Ps);10.2M/M/N模型计算主要程序%动画制作% - Executes on button press in dh

16、.function dh_Callback(hObject, eventdata, handles)% hObject handle to dh (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global daoda1global fuwu1global tai1global stpstp = 0;axes(handles.myaxes);N = 10000;%获得到达率

17、与服务率、服务台数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(t

18、ime_arrive(1,:);%time_ser_sum = cumsum(time_ser(1,:);%time_leave(1) = time_arrive(1) + time_ser(1);%for k=2:N %time_leave(k) = time_leave(k-1) + time_ser(k);%end%-绘制入口X0 = 40 40 60 60 40;Y0 = 0 20 20 0 0;plot(X0,Y0);fill(X0,Y0,b);text(45,11,fontsize20入口);hold on%-绘制服务台X1 = 35 35 65 65 35;Y1 = 80 100

19、 100 80 80;plot(X1,Y1);fill(X1,Y1,Y);text(43,92,fontsize20服务台);hold on%-绘制出口X2 = 80 80 100 100 80;Y2 = 80 100 100 80 80;plot(X2,Y2);fill(X2,Y2,b);text(85,92,fontsize20出口);hold on%-绘制服务信息显示区X3 = 0 0 20 20 0;Y3 = 0 100 100 0 0;plot(X3,Y3);fill(X3,Y3,r);text(5,95,fontsize10服务台数);text(2,75,fontsize10空闲服

20、务台数);text(5,55,fontsize10队列长度);text(5,35,fontsize10顾客总数);text(5,15,fontsize10欢迎光临);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);hold on%-绘制排队等候区X4 = 35 35 65 65 35;Y4 = 50 70 70 50 50;plot(X4,

21、Y4);fill(X4,Y4,g);text(43,62,fontsize20排队区);hold on%-绘制各区域顾客(通过原点表示)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(

22、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;%

23、用于存取顾客离开时间%Xa与Ya为服务信息显示区坐标,用于擦出前一次数据Xa=0 0 20 20 0;%-执行动画while 1 if(stp = 1) h_axes=findobj(gcf,type,axes); h_children_axes=allchild(h_axes); delete(h_children_axes); break; end time = 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*6

24、0; %获取下一位顾客到达时间 time_temp = time_clk + time_arrive(s+1); if (time1time_temp) %-有顾客到达 time_clk = time1; s = s+1; %更新顾客总数 str1 = num2str(s); Ya=20 30 30 20 20; fill(Xa,Ya,r); text(8,25,str1,fontsize,20); %-服务台空闲且等待区无人 if (f tai2)&(w 1) f = f+1;%更新新服务人数 str3 = num2str(tai2-f); Ya=60 70 70 60 60; fill(X

25、a,Ya,r); text(8,65,str3,fontsize,20); %获取顾客离开时间 time_leave(f) = time1 + time_ser(s); b0 = 10; %顾客直接进入服务台 while b090 drawnow b0 = speed + b0; set(r0,XData,a0,YData,b0); end %-否则顾客进入等待区 else w = w+1;%更新等待人数 str4 = num2str(w); Ya=40 50 50 40 40; fill(Xa,Ya,r); text(8,45,str4,fontsize,20); time_wait(w)

26、= time_ser(s); b0 = 10; %进入等待区 while b060 drawnow b0 = speed + b0; set(r0,XData,a0,YData,b0); end end end %-服务台空闲且有顾客等待 if (f 0) f = f+1;%更新服务人数 str3 = num2str(tai2-f); Ya=60 70 70 60 60; fill(Xa,Ya,r); % fill(2,65,r); text(8,65,str3,fontsize,20); %获得顾客离开时间 time_leave(f) = time1 + time_wait(1); b1 =

27、 60; while b1 min(time_leave(1:f) %exam = min(time_leave(1:f) %更新服务队列 time_leave(f+1)=0; for g = 1:f time_leave(g) = time_leave(g+1); end %time_leave(f) = 0; f = f-1; str3 = num2str(tai2-f); % fill(2,65,r); Ya=60 70 70 60 60; fill(Xa,Ya,r); text(8,65,str3,fontsize,20); a2 = 50; %顾客离开 while a290 drawnow a2 = speed + a2; set(r2,XData,a2,YData,b2); end end end

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

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