mm1排队系统北邮通信网.doc_第1页
mm1排队系统北邮通信网.doc_第2页
mm1排队系统北邮通信网.doc_第3页
mm1排队系统北邮通信网.doc_第4页
mm1排队系统北邮通信网.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

14通信网理论基础实验报告一北京邮电大学信息与通信工程学院通信网理论基础实验报告一班级: 姓名: 学号: 序号: M/M/1排队系统一、实验目的本次实验要求实现M/M/1单窗口无限排队系统的系统仿真,利用事件调度法实现离散事件系统仿真,并统计平均队列长度以及平均等待时间等值,通过仿真图分析平均队列长度与平均等待时间与到达率、服务率相应的关系,以及与理论分析结果进行对比,掌握排队论原理与仿真设计方法。2、 实验原理 本实验中的排队系统为当顾客到达分布服从负指数分布,系统服务时间也服从负指数分布,单服务台系统,单队排队,按FIFO方式服务为M/M/1排队系统。实验方法:Matlab仿真,使用Matlab语言通过构建单行矩阵队列存储顾客流信息,产生泊松流,确定起始状态,然后计算下一个状态的服务信息,通过事件来触发仿真时钟的不断推进,循环多次转移陆续得出后续状态,理论上是无穷大的序列,但实际仿真必须取有限值。具体过程如下:(1)利用负指数分布与泊松过程的关系,利用exprnd函数,由课本定理2.2的原理,通过产生到达时间间隔为参数为的负指数分布,即产生符合参数为的泊松过程的顾客流,总数为AllNum。(2)分别构建一个顾客到达队列和一个顾客等待队列。顾客到达后,首先进入到达队列的队尾排队,并检测是否有顾客等待以及是否有服务台空闲,如果无人等待并且有服务员空闲则进入服务状态,否则顾客将进入等待队列的队尾等待。(3)产生符合参数为的负指数分布的随机变量作为每个顾客的服务时间。(4)当服务员结束一次服务后,就取出等待队列中位于队头的顾客进入服务状态,如果等待队列为空则服务台空闲等待下一位顾客的到来。(5)由事件来触发仿真时钟的不断推进。每发生一次事件,记录下两次事件间隔的时间以及在该时间段内排队的人数。(6)在系统达到稳态时,计算系统的平均等待时间以及平均等待队长。(7)改变和的值,通过间隔一定精度的向量实现和的趋近与连续状态的变化,在程序中通过双重循环得出各个和值下的系统平均队长和平均等待时间,由此数据画出仿真图。三、 实验内容采用的语言:Matlab;数据结构:基本矩阵、数组和字串等相关计算;主要的函数和数组变量: 实验涉及到若干个系统顾客流长度或其两倍长度的数组,分别存储包括到达时间间隔,服务时间长度,每个顾客到达时间,离开时间,所有时间记录表,每个顾客等待时间,队列长度,等待队列长度等数据,通过到达、离开等事件的触发得到下一个状态的值存入相应数组中,本实验使用了Matlab的GUI界面工具,做了些许优化,整个project共由mm1.m和mm1.fig两个文件组成,mm1.m中包含了5个编辑框初始化函数,和3个按键触发函数,如下图: 输出结果框用于输出到达率和服务率固定时的系统平均队长信息、等待时间、系统平均顾客数、排队时间,以及他们的理论结算结果,以便进行理论值与仿真结果的对比,特别指出实验要求指导里面的稳态时的平均等待队长为是错误的,实际理论公式应该为,因为平均等待队长是不包括在服务顾客的。 实验算法流程图:第i个顾客的等待时间、服务时间、离开时间开始设置仿真总数、到达率和服务率产生顾客泊松流第一个顾客到达时间确定,由负指数分布计算下一个顾客前一个顾客(i-1)是否离开排队顾客流结束?输出结果结束是是否否4、 代码解析仿真系统仅由一个m文件和一个fig文件组成,但其中包含了3个重要函数:1).给定和条件下系统的平均队列长度、等待时间和排队时间的分布计算函数function pushbutton1_Callback(hObject, eventdata, handles);2).平均等待队长和平均等待时间随和的变化曲线计算和仿真函数function pushbutton2_Callback(hObject, eventdata, handles);3).平均等待队长和平均等待时间随和的变化曲线理论值计算和绘图函数function pushbutton3_Callback(hObject, eventdata, handles);部分核心代码分析:1)到达时间间隔(顾客流)和服务时间的负指数分布产生:Arrive_interval=exprnd(1/Lambda,1,AllNum); %到达时间间隔(负指数分布函数)Serve_interval=exprnd(1/Mu,1,AllNum); %服务时间2) 各顾客到达时间:Arrive_time(1)=Arrive_interval(1); %第一个顾客到达时间Arrive_num(1)=1;for i=2:AllNum %其他顾客到达时间 Arrive_time(i)=Arrive_time(i-1)+Arrive_interval(i); Arrive_num(i)=i;end3)各顾客离开时间: Leave_time(1)=Arrive_time(1)+Serve_interval(1); Leave_num(1)=1; %第一个顾客离开时间for i=2:AllNum%其他顾客离开时间 if Leave_time(i-1)Arrive_time(i) Leave_time(i)=Arrive_time(i)+Serve_interval(i); else Leave_time(i)=Leave_time(i-1)+Serve_interval(i); end Leave_num(i)=i;end4) 排队时间和等待时间:Wait_time=Leave_time-Arrive_time; %各个顾客在系统中的等待时间Queue_time=Wait_time-Serve_interval; %各个顾客的排队时间:5) 系统人数确定:Timepoint=Arrive_time,Leave_time;Timepoint=sort(Timepoint);ArriveFlag=zeros(size(Timepoint);%到达时间标志,待扩展函数;NumInSys=zeros(size(Timepoint); %系统中的状态总量,每一个事件都可能会影响系统内服务于队列数量temp=2;NumInSys(1)=1;for i=2:length(Timepoint) if (temp=2 NumInQue(i)=NumInSys(i)-1; else NumInQue(i)=0; endendNumInQue_avg=sum(0NumInQue.*Time_interval0 )/Timepoint(end);7)到达率和服务率的数组(画3D图的xy轴):Lambda=0.01:Accuracy:1; %顾客到达率;Mu=1.01:Accuracy:2; %服务率;8)到达率与服务率与队长、等待时间关系的理论计算:for la=1:length(Lambda) for m=1:length(Mu) Twaitavg(m,la)=Lambda(la)/(Mu(m)*(Mu(m)-Lambda(la); Tqlehgth(m,la)=Lambda(la)*Lambda(la)/(Mu(m)*(Mu(m)-Lambda(la); endend五、仿真结果与分析1、 M/M/1系统仿真与给定和条件下系统的平均队列长度、等待时间和排队时间的分布(等待时间包括排队时间和服务时间):(1) =0.3,=0.8,顾客流总数为100(2)=0.3,=0.8,顾客数为1000(3)=0.3,=0.8,顾客数为10000由上三组数据对比可以看到,仿真的顾客数越长,最终结果越接近理论值,因此顾客流总数趋于10000以上时,基本达到稳态,而当到达率与离去率近似相同时,系统仿真的误差较大,也就是说此时系统很难进入稳态。2、 平均等待队长和平均等待时间随和的变化曲线:条件:到达率(0-1)小于服务率(1-2),精度(方块间隔)=0.1。理论计算结果图:(1) 顾客流总数=1000,精度(方块间隔)=0.1仿真图:(2) 顾客流总数=10000,精度(方块间隔)=0.1仿真图:(3) 顾客流总数=100000,精度(方块间隔)=0.1仿真图:分析:当到达率远小于服务率时,平均等待队长和时间都很小,但当到达率逐渐接近服务率时,平均等待队长和时间以指数形式增长,最终将趋近于正无穷。当服务率和到达率近似相同时,平均等待队长和时间都非常大,但当服务率逐渐远离到达率时,平均等待队长和时间将急剧减小,最终趋近于0。并且当顾客流总量越来越大时仿真结果图越来越趋近于理论图,当顾客流为100000时,仿真图与理论图几乎完全一致,充分说明了此时已经达到了稳态。六、实验结论通过这种模型和方法仿真的结果和理论值十分接近,增加仿真顾客数时,可以得到更理想的结果。仿真的顾客数越长,最终结果越接近理论值,因此顾客流总数趋于10000以上时,基本达到稳态,而当到达率与离去率近似相同时,系统仿真的误差较大,也就是说此时系统很难进入稳态。当到达率远小于服务率时,平均等待队长和时间都很小,但当到达率逐渐接近服务率时,平均等待队长和时间以指数形式增长,最终将趋近于正无穷。当服务率和到达率近似相同时,平均等待队长和时间都非常大,但当服务率逐渐远离到达率时,平均等待队长和时间将急剧减小,最终趋近于0。由仿真图得出,平均队长和平均等待时间均随的增大而增大,随的增大而减小。七、实验问题与难点1、 仿真结果出现重大错误 平均等待时间在绘图时出现了负数轴,但是却没有折现出现,原因实际上是出现极少数点出现时间的错误处理,因为仿真总数过大而看不清。并且到达率始终要小于离去率的,不满足这一点的系统无法进入稳态,当然也就无法正确仿真。还要注意仿真间隔和精度的选取,合适的取值会使仿真图曲线看着更加直观。2、 队长方差的计算书中关于对长方差的公式为:VarN= /(1- )2;然而,经验证这个方差计算的队长指是在整个系统中的瞬时人数,而不是在排队的人数,即包括了在排队的人数和在服务的人数。故进行队长方差的仿真结果与理论计算值进行比较时要使用仿真中的系统顾客数亮的矩阵数组计算方差。3、关于平均队长,实验指导书上给出的公式是:,但实际上我们经过多次仿真,发现等待序列长度与理论值差距较大,经网上查找资料得知,平均队长的计算公式应该为为,而且经过实际系统仿真,此时理论值与仿真结果十分接近。4、使用surfc(x,y,z)函数作图时,要求x和y向量长度相同,否则会出现错误。此外还应该注意:(1) 详细了解仿真系统的实际状态转移,出生率(即加入队列的速率)在各状态中均相同,死亡率(即完成服务离开队列的速率)亦在各状态中相同。(2) 应该注意系统的仿真时钟的推移,尤其要注意起始仿真点,否则会漏掉系统状态。(3) 注意计算平均队长以及平均等待时间时对应的时间段长度,以及时间段的起点和终点的选取,顾客平均等待队长及平均排队等待时间的定义为其中,为在时间区间上排队人数乘以该区间长度。(4) 对于随机系统的仿真应该注意要进行多次仿真,并将多次仿真的结果求平均值作为最终的仿真结果,才能使仿真结果更具有一般性,仿真结果才更接近理论值。(5) 稳态的确定确定稳态可以由两点出发:图形和平均队长、等待时间、队长方差等数据的比较。图形:当顾客流到达一定数量后,很容易从和变化的那个仿真图中看出来,仿真曲线随数据量增大而趋近于理论曲线,可以看出在数据流大于10000时已经到达稳态。数据比较:下图数据(数据总量为10000)对比可以看出仿真出来的数据与理论数据相当接近,可以看做到达稳态。收获:通过本次实验我们对M/M/1单窗口无限排队系统有了更深的认识了解,同时对MatLab编程语言从未知到熟悉,在极短时间里不仅学会其基本语句,还学会了Matlab图形界面GUI的设计制作,并了解到仿真在通信网中的重要作用。Matlab是一个基于矩阵运算的软件,这恐怕是众所周知的事情了,但是,真正在运用的时候(就是在编程的时候),许多人(特别是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论