matlab单服务台排队系统实验报告
更新时间:2023-11-13 00:37:01 阅读量: 教育文库 文档下载
- 单服务台排队系统仿真推荐度:
- 相关推荐
matlab单服务台排队系统实验报告
一、实验目的
本次实验要求实现M/M/1单窗口无限排队系统的系统仿真,利用事件调度法实现离散事件系统仿真,并统计平均队列长度以及平均等待时间等值,以与理论分析结果进行对比。
二、实验原理
根据排队论的知识我们知道,排队系统的分类是根据该系统中的顾客到达模式、服务模式、服务员数量以及服务规则等因素决定的。
1、 顾客到达模式
设到达过程是一个参数为?的Poisson过程,则长度为t的时间内到达k个呼
(?t)kpk(t)?k!叫的概率 服从Poisson分布,即
e??t,k?0,1,2,?????????,其中?>0为一
常数,表示了平均到达率或Poisson呼叫流的强度。
2、 服务模式
?设每个呼叫的持续时间为i,服从参数为?的负指数分布,即其分布函数为
P{X?t}?1?e??t,t?0
3、 服务规则
先进先服务的规则(FIFO) 4、 理论分析结果
??在该M/M/1系统中,设的平均等待时间为
T????Q??,则稳态时的平均等待队长为1??,顾客
????。
三、实验内容
M/M/1排队系统:实现了当顾客到达分布服从负指数分布,系统服务时间也服
从负指数分布,单服务台系统,单队排队,按FIFO方式服务。
四、采用的语言
MatLab语言 源代码:
clear; clc;
%M/M/1排队系统仿真
SimTotal=input('请输入仿真顾客总数SimTotal='); %仿真顾客总数; Lambda=0.4; %到达率Lambda; Mu=0.9; %服务率Mu; t_Arrive=zeros(1,SimTotal); t_Leave=zeros(1,SimTotal); ArriveNum=zeros(1,SimTotal); LeaveNum=zeros(1,SimTotal);
Interval_Arrive=-log(rand(1,SimTotal))/Lambda;%到达时间间隔 Interval_Serve=-log(rand(1,SimTotal))/Mu;%服务时间 t_Arrive(1)=Interval_Arrive(1);%顾客到达时间 ArriveNum(1)=1; for i=2:SimTotal
t_Arrive(i)=t_Arrive(i-1)+Interval_Arrive(i); ArriveNum(i)=i; end
t_Leave(1)=t_Arrive(1)+Interval_Serve(1);%顾客离开时间 LeaveNum(1)=1; for i=2:SimTotal
if t_Leave(i-1) t_Leave(i)=t_Arrive(i)+Interval_Serve(i); else t_Leave(i)=t_Leave(i-1)+Interval_Serve(i); end LeaveNum(i)=i; end t_Wait=t_Leave-t_Arrive; %各顾客在系统中的等待时间 t_Wait_avg=mean(t_Wait); t_Queue=t_Wait-Interval_Serve;%各顾客在系统中的排队时间 t_Queue_avg=mean(t_Queue); Timepoint=[t_Arrive,t_Leave];%系统中顾客数随时间的变化 Timepoint=sort(Timepoint); ArriveFlag=zeros(size(Timepoint));%到达时间标志 CusNum=zeros(size(Timepoint)); temp=2; CusNum(1)=1; for i=2:length(Timepoint) if (temp<=length(t_Arrive))&&(Timepoint(i)==t_Arrive(temp)) CusNum(i)=CusNum(i-1)+1; temp=temp+1; ArriveFlag(i)=1; else CusNum(i)=CusNum(i-1)-1; end end %系统中平均顾客数计算 Time_interval=zeros(size(Timepoint)); Time_interval(1)=t_Arrive(1); for i=2:length(Timepoint) Time_interval(i)=Timepoint(i)-Timepoint(i-1); end CusNum_fromStart=[0 CusNum]; CusNum_avg=sum(CusNum_fromStart.*[Time_interval 0] )/Timepoint(end); QueLength=zeros(size(CusNum)); for i=1:length(CusNum) if CusNum(i)>=2 QueLength(i)=CusNum(i)-1; else QueLength(i)=0; end end QueLength_avg=sum([0 QueLength].*[Time_interval 0] )/Timepoint(end);%系统平均等待队长 %仿真图 figure(1); set(1,'position',[0,0,1000,700]); subplot(2,2,1); title('各顾客到达时间和离去时间'); stairs([0 ArriveNum],[0 t_Arrive],'b'); hold on; stairs([0 LeaveNum],[0 t_Leave],'y'); legend('到达时间','离去时间'); hold off; subplot(2,2,2); stairs(Timepoint,CusNum,'b') title('系统等待队长分布'); xlabel('时间'); ylabel('队长'); subplot(2,2,3); title('各顾客在系统中的排队时间和等待时间'); stairs([0 ArriveNum],[0 t_Queue],'b'); hold on; stairs([0 LeaveNum],[0 t_Wait],'y'); hold off; legend('排队时间','等待时间'); %仿真值与理论值比较 disp(['理论平均等待时间t_Wait_avg=',num2str(1/(Mu-Lambda))]); disp(['理论平均排队时间t_Wait_avg=',num2str(Lambda/(Mu*(Mu-Lambda)))]); disp(['理论系统中平均顾客数=',num2str(Lambda/(Mu-Lambda))]); disp(['理论系统中平均等待队长=',num2str(Lambda*Lambda/(Mu*(Mu-Lambda)))]); disp(['仿真平均等待时间t_Wait_avg=',num2str(t_Wait_avg)]) disp(['仿真平均排队时间t_Queue_avg=',num2str(t_Queue_avg)]) disp(['仿真系统中平均顾客数=',num2str(CusNum_avg)]); disp(['仿真系统中平均等待队长=',num2str(QueLength_avg)]); 五、数据结构 1.仿真设计算法(主要函数) 利用负指数分布与泊松过程的关系,产生符合泊松过程的顾客流,产生符合负指数分布的随机变量作为每个顾客的服务时间: Interval_Arrive=-log(rand(1,SimTotal))/Lambda;%到达时间间隔,结果与调用exprnd(1/Lambda,m)函数产生的结果相同 Interval_Serve=-log(rand(1,SimTotal))/Mu;%服务时间间隔 t_Arrive(1)=Interval_Arrive(1);%顾客到达时间 时间计算 t_Wait=t_Leave-t_Arrive; %各顾客在系统中的等待时间 t_Queue=t_Wait-Interval_Serve; %各顾客在系统中的排队时间 由事件来触发仿真时钟的不断推进。每发生一次事件,记录下两次事件间隔的时间以及在该时间段内排队的人数: Timepoint=[t_Arrive,t_Leave]; %系统中顾客数变化 CusNum=zeros(size(Timepoint)); CusNum_avg=sum(CusNum_fromStart.*[Time_interval 0] )/Timepoint(end); %系统中平均顾客数计算 QueLength_avg=sum([0 QueLength].*[Time_interval 0] )/Timepoint(end); %系统平均等待队长 2.算法的流程图 开始 输入仿真人数 计算第1个顾客的离开时间:i-2 系统是否接纳第i个顾客? 标志位置0:i=i+1 计算第i个顾客的等待时间、离开时间、标示位: i+1 仿真时间是否越界? 输出结果 结束 六、仿真结果分析 顾客的平均等待时间与顾客的平均等待队长,计算其方差如下: 仿真顾客总数=100000平均等待时间平均排队时间平均顾客数平均等待队长平均等待时间平均排队时间中平均顾客数平均等待队长仿真顾客总数=1000000平均等待时间平均排队时间平均顾客数平均等待队长平均等待时间平均排队时间平均顾客数平均等待队长 12.0230.911470.81010.36561.97380.866120.785450.3446521.99710.88650.798460.3544472.00540.890680.80370.3569531.99450.882930.793340.351281.99110.88320.797970.3539541.99610.884040.799580.3541291.99090.875270.791660.3480452.00430.894950.804330.35915101.99270.885030.800240.35542平均值2.0030.891980.801160.35678理论值20.888890.80.35556方差0.0005563600.0005636570.0001609110.00011687312.00290.892090.801570.3570261.99910.886230.798240.3538721.99750.886240.799550.3547471.99080.881110.796210.3523931.99430.884940.797630.3539481.99650.88490.798650.3539942.00190.8910.800130.3561292.00160.889870.799430.3554152.01150.898730.805310.35982101.9960.886520.797550.35424平均值2.001620.89060.800840.35633理论值20.888890.80.35556方差0.0001698880.0001195220.0000329860.000020940从上表可以看出,通过这种模型和方法仿真的结果和理论值十分接近,增加仿真顾客数时,可以得到更理想的结果。但由于变量定义的限制,在仿真时顾客总数超过1,500,000时会溢出。证明使此静态仿真的思想对排队系统进行仿真是切实可行的。 实验结果截图如下(SimTotal分别为100、1000、10000、100000): (仿真顾客总数为100000和1000000时,其图像与10000的区别很小) 七、遇到的问题及解决方法 1.在算法设计阶段对计算平均队长时对应的时间段不够清楚,重新画出状态转移图后,引入变量Timepoint用来返回按时间排序的到达和离开的时间点,从而得到正确的时间间隔内的CusNum,并由此计算出平均队长。 2.在刚开始进行仿真时仿真顾客数设置较小,得到的仿真结果与理论值相差巨大,进行改进后,得到的结果与理论值相差不大。 3.刚开始使用exprnd(Mu,m)产生负指数分布,但运行时报错,上网查找资料后找到替代方法:改成Interval_Serve=-log(rand(1,SimTotal))/Mu;方法生成负指数分布,运行正常。 八、实验心得 通过本次实验我对M/M/1单窗口无限排队系统有了更深的认识,同时对MatLab编程语言更加熟悉,并了解到仿真在通信网中的重要作用。此次实验我受益匪浅。
正在阅读:
matlab单服务台排队系统实验报告11-13
汽车租赁系统的分析与设计09-25
二元一次方程组计算题06-07
那一次我很快乐作文02-04
2015黑龙江事业单位考试时事政治热点汇总2015.5.1310-18
值得赞颂的事作文450字06-21
双闭环直流电机调速系统设计05-03
2018年华南理工大学考研参考书目完整版12-15
情人之间分手的话语02-11
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 服务台
- 排队
- 实验
- 报告
- matlab
- 系统
- 设计公司钉钉考勤管理办法
- 小学三年级语文 讲义43 第8讲.尖子班 教师版
- 名教与自然 - 汉晋士风流变述略
- 三命学苑100命例
- 中国婚鞋行业市场前景分析预测报告(目录) - 图文
- 宁夏大学大学生科技创新与人文社会科学研究项目申请表
- 浅论“红色”在中国的文化背景
- 小学语文阅读教学中的情境创设策略研究
- 医院创卫环境保护 - 图文
- 2012届高三生物二轮必修模块典题精练78
- 创新设计复习题1(2) - 图文
- 重庆市2018年中考英语总复习课件+检测:八年级(下) Units9-10
- 部门主管如何与下属有效沟通
- 桥面及伸缩缝维修监理实施细则
- 小学四年级下册数学乘法竖式计算题
- 世茂集团招标分判工作程序 pdf
- MathType公式和正文不在同一行
- 《治超工作考核办法》及《治超工作责任追究办法》
- Windows 2008 R2 辅助域控制器强制降级
- “十三五”重点项目-甲壳质及其衍生物项目商业计划书