当前位置:文档之家› 北邮 通信网实验报告

北邮 通信网实验报告

北京邮电大学实验报告通信网理论基础实验报告学院:信息与通信工程学院班级:2013211124学号:姓名:实验一 ErlangB公式计算器一实验内容编写Erlang B公式的图形界面计算器,实现给定任意两个变量求解第三个变量的功能:1)给定到达的呼叫量a和中继线的数目s,求解系统的时间阻塞率B;2)给定系统的时间阻塞率的要求B和到达的呼叫量a,求解中继线的数目s,以实现网络规划;3)给定系统的时间阻塞率要求B以及中继线的数目s,判断该系统能支持的最大的呼叫量a。

二实验描述1 实验思路使用MATLAB GUITOOL设计图形界面,通过单选按钮确定计算的变量,同时通过可编辑文本框输入其他两个已知变量的值,对于不同的变量,通过调用相应的函数进行求解并显示最终的结果。

2 程序界面3 流程图4 主要的函数符号规定如下:b(Blocking):阻塞率;a(BHT):到达呼叫量;s(Lines):中继线数量。

1)已知到达呼叫量a及中继线数量s求阻塞率b 使用迭代算法提高程序效率B(s,a)=a∙B(s−1,a) s+a∙B(s−1,a)代码如下:function b = ErlangB_b(a,s)b =1;for i =1:sb = a * b /(i + a * b);endend2)已知到达呼叫量a及阻塞率b求中继线数量s考虑到s为正整数,因此采用数值逼近的方法。

采用循环的方式,在每次循环中增加s的值,同时调用 B(s,a)函数计算阻塞率并与已知阻塞率比较,当本次误差小于上次误差时,结束循环,得到s值。

代码如下:function s = ErlangB_s(a,b)s =1;Bs = ErlangB_b(a,s);err = abs(b-Bs);err_s = err;while(err_s <= err)err = err_s;s = s +1;Bs = ErlangB_b(a,s);err_s = abs(b - Bs);ends = s -1;end3)已知阻塞率b及中继线数量s求到达呼叫量a考虑到a为有理数,因此采用变步长逼近的方法。

采用循环的方式,在每次循环中增加a的值(步长为 s/2),同时调用 B(s,a)函数计算阻塞率并与已知阻塞率比较,当本次误差小于预设阈值时,结束循环,得到a值。

代码如下:function a = ErlangB_a(b,s)a =0;step = s /2;b_temp = ErlangB_b(a,s);b_temps = ErlangB_b(a + step,s);while(abs(b - b_temp)>0.000001)if((b - b_temp)*(b - b_temps)<0) step = step /2;elsea = a + step;endb_temp = ErlangB_b(a,s);b_temps = ErlangB_b(a + step,s);endend三结果分析1) 已知到达呼叫量a及中继线数量s求阻塞率b2) 已知到达呼叫量a及阻塞率b求中继线数量s3) 已知阻塞率b及中继线数量s求到达呼叫量a4)分析将程序结果与在线ErlangB公式计算器结果进行比较,结果基本一致,说明程序的正确性。

实验二 M/M/1排队系统一实验内容实现M/M/1单窗口无限排队系统的系统仿真,利用事件调度法实现离散事件系统仿真,并统计平均队列长度以及平均等待时间等值,以与理论分析结果进行对比。

二实验原理1 顾客到达模式设到达过程是一个参数为 λ 的Poisson过程,则长度为 t 的时间内到达 k 个呼叫的概率P k(t)服从Poisson分布,即P k(t)=(λt)kk!∙eλt2 服务模式设每个呼叫的持续时间为 t,则服从参数为 μt 的负指数分布,即P(X>t)=1−e−μt,t≥03 服务规则服务规则为:FIFO4 理论分析设系统到达率为 λ,服务率为 μ,则理论分析如下:理论平均等待时间:E[w]=1μ−λ理论平均排队时间:E[q]=λμ∙(μ−λ)理论系统中平均顾客数:E[N]=λμ−λ理论系统中平均等待队长:E[N q]=λ∙λμ∙(μ−λ)三实验描述1 实验思路仿真时序图示例时序关系图如下:各参数含义如下:b i:第i个事件(到达或离开)发生的时间t i:第i个到达事件发生的时间c i:第i个离开事件发生的时间A i:第(i-1)个顾客与第i个顾客到达时间间隔D i:第i个顾客排队等待时间间隔S i:第i个顾客服务时间长度仿真设计算法1)利用负指数分布与泊松过程的关系,产生符合泊松过程的顾客流;2)分别构建一个顾客到达队列和一个顾客等待队列。

顾客到达后,首先进入到达的队尾排队,并检测是否有顾客等待以及是否有服务台空闲,如果无人等待并且有服务员空闲则进入服务状态,否则顾客将进入等待队列的队尾等待;3)产生符合负指数分布的随机变量作为每个顾客的服务时间;4)当服务员结束一次服务后,就取出等待队列中位于对头的顾客进入服务状态,如果迭代队列为空则服务台空闲等待下一位顾客到来;5)在系统到达稳态时,计算系统的平均等待时间以及平均等待队长等数据。

2 流程图3 主要的函数1) 产生符合泊松过程的顾客流Interval_Arrive=-log(rand(1,SimTotal))/Lambda; %Arrival Time Interval 2) 产生符合负指数分布的服务时间Interval_Serve=-log(rand(1,SimTotal))/Mu;%Service Time3) 计算顾客到达时间%******Arrive Time for each Customer*****t_Arrive(1)=Interval_Arrive(1);ArriveNum(1)=1;for i=2:SimTotalt_Arrive(i)=t_Arrive(i-1)+Interval_Arrive(i);ArriveNum(i)=i;end4) 计算顾客离开时间%%Leave Time for each Customert_Leave(1)=t_Arrive(1)+Interval_Serve(1);LeaveNum(1)=1;for i=2:SimTotalif t_Leave(i-1)<t_Arrive(i)%New customer arrives after the former has been served.t_Leave(i)=t_Arrive(i)+Interval_Serve(i);else%New customer arrives while the former is being served.t_Leave(i)=t_Leave(i-1)+Interval_Serve(i);endLeaveNum(i)=i;end5) 计算平均等待时间t_Wait=t_Leave-t_Arrive;%Waiting Time for each Customert_Wait_avg=mean(t_Wait);%Average Waiting Time6) 计算平均排队时间t_Queue=t_Wait-Interval_Serve;%Queueing Time for each Customert_Queue_avg=mean(t_Queue);%Average Queueing Time7) 计算平均顾客数%%TimelineTimepoint=[t_Arrive,t_Leave];%Record Arrival Time & Leaving Time for each Customer.Timepoint=sort(Timepoint);%Sort all Timepoints.ArriveFlag=zeros(size(Timepoint));%Flag of ArrivalCusNum=zeros(size(Timepoint));temp=2; CusNum(1)=1;for i=2:length(Timepoint)if(temp<=length(t_Arrive))&&(Timepoint(i)==t_Arrive(temp))%if the timepoint is about ArrivalCusNum(i)=CusNum(i-1)+1;%add Number of Customerstemp=temp+1;ArriveFlag(i)=1;else%if the timepoint is about LeavingCusNum(i)=CusNum(i-1)-1;%reduce Number of Customers endend%%Average Number of CustomersTime_interval=zeros(size(Timepoint));Time_interval(1)=t_Arrive(1);for i=2:length(Timepoint)Time_interval(i)=Timepoint(i)-Timepoint(i-1);%Timepoint Interval endCusNum_fromStart=[0 CusNum];%Average Number of CustomersCusNum_avg=sum(CusNum_fromStart.*[Time_interval 0])/Timepoint(end);8) 计算平均队长%%Length of Queue(Excluding Customer being Serviced)QueLength=zeros(size(CusNum));for i=1:length(CusNum)if CusNum(i)>=2QueLength(i)=CusNum(i)-1;%Excluding Customer being Serviced elseQueLength(i)=0;endend%Average Waiting Length of QueueQueLength_avg=sum([0 QueLength].*[Time_interval 0])/Timepoint(end);9) 仿真图:各顾客到达时间与离去时间subplot(2,2,1);stairs([0 ArriveNum],[0 t_Arrive],'b');hold on;stairs([0 LeaveNum],[0 t_Leave],'r');legend('Arrive Time','Leave Time');title('Arrive Time and Leave Time for each customer'); xlabel('Customer ID');ylabel('Arrive/Leave Time(Accumulated)');10) 仿真图:系统等待队长分布subplot(2,2,2);stairs(Timepoint,CusNum,'b')axis([0 Timepoint(end)0 max(CusNum)])title('Distribution of System Customer Number');xlabel('Time(Accumulated)');ylabel('Customer Number');11) 仿真图:各顾客在系统中的排队时间和等待时间subplot(2,2,3);stairs([0 ArriveNum],[0 t_Queue],'b');hold on;stairs([0 LeaveNum],[0 t_Wait],'r');hold off;axis([0 max(max(ArriveNum),max(LeaveNum))0max(max(t_Queue),max(t_Wait))]);title('Queueing Time and Waiting Time for each customer'); xlabel('Customer ID');ylabel('Queueing/Waiting Time');legend('Queueing Time','Waiting Time');四结果分析为了检验算法的正确性,我们进行了多次实验。

相关主题