北邮通信网实验报告一.docx_第1页
北邮通信网实验报告一.docx_第2页
北邮通信网实验报告一.docx_第3页
北邮通信网实验报告一.docx_第4页
北邮通信网实验报告一.docx_第5页
免费预览已结束,剩余15页可下载查看

下载本文档

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

文档简介

通信网理论基础实验报告 实验一:M/M/1排队系统 一、实验目的M/M/1是最简单的排队系统,其假设到达过程是一个参数为的Poisson过程,服务时间是参数为的负指数分布,只有一个服务窗口,等待的位置有无穷多个,排队的方式是FIFO。M/M/1排队系统的稳态分布、平均队列长度,等待时间的分布以及平均等待时间,可通过泊松过程、负指数分布、生灭过程以及Little公式等进行理论上的分析与求解。本次实验要求实现M/M/1单窗口无限排队系统的系统仿真,利用事件调度法实现离散事件系统仿真,并统计平均队列长度以及平均等待时间等值,以与理论分析结果进行对比。二、实验原理根据排队论的知识我们知道,排队系统的分类是根据该系统中的顾客到达模式、服务模式、服务员数量以及服务规则等因素决定的。1、 顾客到达模式设到达过程是一个参数为的Poisson过程,则长度为的时间内到达个呼叫的概率服从Poisson分布,即, ,其中0为一常数,表示了平均到达率或Poisson呼叫流的强度。2、 服务模式设每个呼叫的持续时间为,服从参数为的负指数分布,即其分布函数为3、 服务规则先进先服务的规则(FIFO)4、 理论分析结果在该M/M/1系统中,设,则稳态时的平均等待队长为,顾客的平均等待时间为。三、 实验内容1、 实验算法分析采用的语言:matlab(1)利用负指数分布与泊松过程的关系,产生符合泊松过程的顾客流。产生符合负指数分布的随机变量作为每个顾客的服务时间。计算每个顾客的到达和离开时间。clear;clc;%M/M/1排队系统仿真SimTotal=input(请输入仿真顾客总数SimTotal=); %仿真顾客总数;Lambda=0.2; %到达率Lambda;Mu=0.5; %服务率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;endt_Leave(1)=t_Arrive(1)+Interval_Serve(1);%顾客离开时间LeaveNum(1)=1;for i=2:SimTotal if t_Leave(i-1)t_Arrive(i) 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(2)Timepoint是发生任意时间的时间点,Time_interval时间区间。计算平均等待时间和平均队长。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=2 QueLength(i)=CusNum(i)-1; else QueLength(i)=0; endendQueLength_avg=sum(0 QueLength.*Time_interval 0 )/Timepoint(end);%系统平均等待队长(4)计算平均队长随时间的变化及其与理论值之间误差的计算。Que=zeros(size(Timepoint)+1);Que=0 QueLength.*Time_interval 0;Que(1)=1;for i=2:length(Timepoint) Que(i)=Que(i-1)+QueLength(i)*Time_interval(i);endQueavr=zeros(size(Timepoint)+1);Queavr=Que./Timepoint 0;Q=zeros(size(Timepoint)+1);for i=2:length(Timepoint) Q(i)=abs(Queavr(i)-QueLength_avg);end (5) 计算平均等待时间随时间的变化及其与理论值之间误差的计算。wait=zeros(size(Timepoint);time=0;wait(1)=0;for i=2:length(Timepoint) for y=2:SimTotal if (t_Arrive(y)=Timepoint(i) time=time+Timepoint(i)-t_Arrive(y); end y=y+1; end wait(i)=time; i=i+1; time=0;endwaitavr=zeros(size(Timepoint);waitavr(1)=0;for i=2:length(Timepoint) waitavr(i)=waitavr(i-1)+wait(i)*Time_interval(i);endwavr=zeros(size(Timepoint);wavr=waitavr./Timepoint;w=zeros(size(Timepoint);for i=2:length(Timepoint) w(i)=abs(wavr(i)-t_Wait_avg);end (6)仿真图的绘制%仿真图figure(1);set(1,position,0,0,1000,700);subplot(2,2,1);plot(0 ArriveNum,0 t_Arrive,b);title(各顾客到达时间和离去时间)hold on;plot(0 LeaveNum,0 t_Leave,y);legend(到达时间,离去时间);hold off; subplot(2,2,2);plot(Timepoint,CusNum,b)title(系统中顾客数的变化);xlabel(时间);ylabel(顾客数); subplot(2,2,3);plot(0 ArriveNum,0 t_Queue,b);title(各顾客在系统中的排队时间和等待时间);hold on;plot(0 LeaveNum,0 t_Wait,y);hold off;legend(排队时间,等待时间); figure(2);subplot(2,2,1);plot(Timepoint 0,Queavr,b)title(平均队长随时间的变化);xlabel(时间);ylabel(队长); subplot(2,2,2);plot(Timepoint 0,Q,b)title(平均队长与理论值的差值随时间的变化);xlabel(时间);ylabel(误差);figure(3)subplot(2,2,1);plot(Timepoint,wavr,b)title(平均等待时间随时间的变化);xlabel(时间);ylabel(等待时间); subplot(2,2,2);plot(Timepoint,w,b)title(平均等待时间与理论值误差随时间的变化);xlabel(时间);ylabel(误差); (6)仿真值与理论值的比较%仿真值与理论值比较disp(理论平均等待时间t_Wait_avg=,num2str(1/(Mu-Lambda), 仿真平均等待时间t_Wait_avg=,num2str(t_Wait_avg);disp(理论平均排队时间t_Queue_avg=,num2str(Lambda/(Mu*(Mu-Lambda), 仿真平均排队时间t_Queue_avg=,num2str(t_Queue_avg)disp(理论系统中平均顾客数=,num2str(Lambda/(Mu-Lambda) ,仿真系统中平均顾客数=,num2str(CusNum_avg);disp(理论系统中平均等待队长=,num2str(Lambda*Lambda/(Mu*(Mu-Lambda) ,仿真系统中平均等待队长=,num2str(QueLength_avg);(7)平均等待队长和平均等待时间随的变化:clear;clc;Lambda=0.001; %到达率Lambda;g=1;SimTotal=input(请输入仿真顾客总数SimTotal=); %仿真顾客总数;Lam=zeros(size(1000);a=zeros(size(1000);b=zeros(size(1000);for g=1:1000Mu=1; %服务率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;endt_Leave(1)=t_Arrive(1)+Interval_Serve(1);%顾客离开时间LeaveNum(1)=1;for i=2:SimTotal if t_Leave(i-1)t_Arrive(i) t_Leave(i)=t_Arrive(i)+Interval_Serve(i); else t_Leave(i)=t_Leave(i-1)+Interval_Serve(i); end LeaveNum(i)=i;endt_Wait=t_Leave-t_Arrive; %各顾客在系统中的等待时间t_Wait_avg=mean(t_Wait);t_Wait_vr=var(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=2 QueLength(i)=CusNum(i)-1; else QueLength(i)=0; endendQueLength_avg=sum(0 QueLength.*Time_interval 0 )/Timepoint(end);%系统平均等待队长Lam(g)=Lambda;a(g)=t_Queue_avg;b(g)=QueLength_avg;g=g+1;Lambda=Lambda+0.001;endfigure(1);subplot(2,2,1);plot(Lam,b,b);title(平均队长随LAMDA的变化);xlabel(LAMDA);ylabel(平均队长);subplot(2,2,2);plot(Lam,a,b);title(等待时间随LAMDA的变化);xlabel(LAMDA);ylabel(等待时间);(8)平均等待队长和平均等待时间随的变化:clear;clc;Mu=0.01;g=1;SimTotal=input(请输入仿真顾客总数SimTotal=);%仿真顾客总数;M=zeros(size(1000);a=zeros(size(1000);b=zeros(size(1000);forg=1:1000Lambda=0.01;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;fori=2:SimTotalt_Arrive(i)=t_Arrive(i-1)+Interval_Arrive(i);ArriveNum(i)=i;endt_Leave(1)=t_Arrive(1)+Interval_Serve(1);%顾客离开时间LeaveNum(1)=1;fori=2:SimTotalift_Leave(i-1)t_Arrive(i)t_Leave(i)=t_Arrive(i)+Interval_Serve(i);elset_Leave(i)=t_Leave(i-1)+Interval_Serve(i);endLeaveNum(i)=i;endt_Wait=t_Leave-t_Arrive;%各顾客在系统中的等待时间t_Wait_avg=mean(t_Wait);t_Wait_vr=var(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;fori=2:length(Timepoint)if(temp=2QueLength(i)=CusNum(i)-1;elseQueLength(i)=0;endendQueLength_avg=sum(0QueLength.*Time_interval0)/Timepoint(end);%系统平均等待队长M(g)=Mu;a(g)=t_Queue_avg;b(g)=QueLength_avg;g=g+1;Mu=Mu+0.001;endfigure(1);subplot(2,2,1);plot(M,b,b);title(平均队长随Mu的变化);xlabel(Mu);ylabel(平均队长);subplot(2,2,2);plot(M,a,b);title(等待时间随Mu的变化);xlabel(Mu);ylabel(等待时间);流程图:2、 仿真结果分析分析仿真数据,统计顾客的平均等待时间与顾客的平均等待队长,计算其方差,分析与理论计算结果的吻合程度,验证仿真程序的正确性。1、给定和条件下系统的平均队列长度和平均等待时间的分布曲线:即便采用相同的值,每次仿真出来的结果也是有区别的,以下只选取几组有代表性的结果。(1) =0.2,=0.5,顾客数为500(2) =0.2,=0.5,顾客数为5000分析表格:由图可知仿真的顾客数越长,实际与理论的误差值越小。(3).当=0.49,=0.5,顾客数=1000,仿真图如下:. 由上图可见,当到达率与离去率近似相同时,系统仿真的误差较大,也就是说此时系统很难进入稳态。2、平均等待队长和平均等待时间随和的变化曲线:(1)平均等待队长和平均等待时间随的变化曲线此处输入的离去率是横坐标的终点,取0.99,精度0.001,顾客数5000理论值:实际值由上面两图可得,当到达率远小于离去率时,平均等待队长和时间都很小,但当到达率逐渐接近离去率时,平均等待队长和时间以指数形式增长,最终将趋近于正无穷。(2)平均等待队长和平均等待时间随的变化曲线此处输入的到达率取0.01,精度0.001,顾客数5000理论值:变化到0.11变化到1实际值:变化到0.11 变化到1.当离去率和到达率近似相同时,平均等待队长和时间都非常大,但当离去率逐渐远离到达率时,平均等待队长和时间将急剧减小,最终趋近于0。四、遇到的主要问题在产生泊松分布时,由于对随机数的掌握不是很好,一开始直接用了rand(m,n)函数,产生的是一个

温馨提示

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

评论

0/150

提交评论