北邮通信网性能分析实验二MM排队系统实验报告Word文件下载.docx

上传人:b****3 文档编号:16759009 上传时间:2022-11-25 格式:DOCX 页数:13 大小:45.31KB
下载 相关 举报
北邮通信网性能分析实验二MM排队系统实验报告Word文件下载.docx_第1页
第1页 / 共13页
北邮通信网性能分析实验二MM排队系统实验报告Word文件下载.docx_第2页
第2页 / 共13页
北邮通信网性能分析实验二MM排队系统实验报告Word文件下载.docx_第3页
第3页 / 共13页
北邮通信网性能分析实验二MM排队系统实验报告Word文件下载.docx_第4页
第4页 / 共13页
北邮通信网性能分析实验二MM排队系统实验报告Word文件下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

北邮通信网性能分析实验二MM排队系统实验报告Word文件下载.docx

《北邮通信网性能分析实验二MM排队系统实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《北邮通信网性能分析实验二MM排队系统实验报告Word文件下载.docx(13页珍藏版)》请在冰豆网上搜索。

北邮通信网性能分析实验二MM排队系统实验报告Word文件下载.docx

,顾客的平均等待时间为

2、二次排队网络

由两个M/M/1排队系统所组成的级联网络,顾客以参数为

的泊松过程到达第一个排队系统A,服务时间为参数为

的负指数分布;

从A出来后直接进入第二个排队系统B,B的服务时间为参数为

的负指数分布,且与A的服务时间相互独立。

在该级联网络中,如稳态存在,即

,则两个排队系统相互独立,顾客穿过网络的总时延为各个排队系统的时延之和,即

如将该模型应用于数据包穿越网络的平均时延的计算,假设数据包的包长服从负指数分布,平均包长为

排队系统A的信道速率为

,B的信道速率为

为保证两次排队的独立性,Kleinrock假设数据包在从一个交换机出来后,进入下一个交换机时,随机按负指数分布取一个新的长度。

三、实验内容

1、仿真时序图示例

本实验中的排队系统为当顾客到达分布服从负指数分布,系统服务时间也服从负指数分布,单服务台系统,单队排队,按FIFO方式服务为M/M/1排队系统。

理论上,我们定义服务员结束一次服务或者有顾客到达系统均为一次事件。

为第i个任何一类事件发生的时间,其时序关系如下图所示。

bi第i个任何一类事件发生的时间

ti第i个顾客到达类事件发生的时间

ci第i个顾客离开类事件发生的时间

Ai为第i-1个与第i个顾客到达时间间隔

Di第i个顾客排队等待的时间长度

Si第i个顾客服务的时间长度

顾客平均等待队长

及平均排队等待时间

的定义为

其中,

为在时间区间

上排队人数

乘以该区间长度

为第i个顾客排队等待时间。

2、仿真设计算法

(1)利用负指数分布与泊松过程的关系,产生符合泊松过程的顾客流。

(2)对每个排队系统,分别构建一个顾客到达队列和一个顾客等待队列。

顾客到达后,首先进入到达队列的队尾排队,并检测是否有顾客等待以及是否有服务台空闲,如果无人等待并且有服务员空闲则进入服务状态,否则顾客将进入等待队列的队尾等待。

(3)产生符合负指数分布的随机变量作为每个顾客的服务时间。

(4)当服务员结束一次服务后,就取出等待队列中位于队头的顾客进入服务状态,如果等待队列为空则服务台空闲等待下一位顾客的到来。

(5)顾客结束A系统的服务后,立即进入B系统排队等待服务。

(6)由事件来触发仿真时钟的不断推进。

每发生一次事件,记录下两次事件间隔的时间以及在该时间段内排队的人数。

(7)在排队网络达到稳态时,计算顾客平均系统时间以及平均队长。

3、仿真结果分析

(1)分析仿真数据,统计顾客的平均系统时间与平均队长,计算其方差,分析与理论计算结果的吻合程度,验证仿真程序的正确性。

(2)验证Kleinrock假设的合理性。

——假设包长不变,即二次排队不独立,统计平均值与理论值的相近程度。

4、仿真结果分析

分析仿真数据,统计顾客的平均等待时间与顾客的平均等待队长,计算其方差,分析与理论计算结果的吻合程度,验证仿真程序的正确性。

四、实验要求

1.两人一组,利用MATLAB实现排队网络的仿真模拟。

2.统计给定

条件下系统的平均队长和平均系统时间,与理论结果进行比对。

3.统计单个系统的平均队长和平均系统时间随

的变化曲线。

五、仿真模拟和理论仿真结果的对比

1.仿真设计算法(主要函数)

利用负指数分布与泊松过程的关系,产生符合泊松过程的顾客流,产生符合负指数分布的随机变量作为每个顾客的服务时间:

ArriveInterval=-log(rand(1,SimNum))/Lambda;

%到达时间间隔

ServeInterval=-log(rand(1,SimNum))/Mu;

%服务时间

ArriveTime

(1)=ArriveInterval

(1);

%顾客到达时间

时间计算

SystemTime=LeaveTime-ArriveTime;

%各顾客的系统时间

WaitTime=SystemTime-ServeInterval;

%各顾客的等待时间

由事件来触发仿真时钟的不断推进。

每发生一次事件,记录下两次事件间隔的时间以及在该时间段内排队的人数:

TimePoint=[ArriveTime,LeaveTime];

%系统中顾客数随时间的变化

ArriveFlag=zeros(size(TimePoint));

%到达时间标志

CusNumAvg=sum(CusNumStart.*[IntervalTime0])/TimePoint(end);

%系统中平均顾客数

SysCusNum=zeros(size(TimePoint));

QueLengthAvg=sum([0QueLength].*[IntervalTime0])/TimePoint(end);

%系统平均等待队长

ArriveTime每个顾客的到达时间

LeaveTime每个顾客的离开时间

ArriveInterval顾客的到达时间间隔

ServeInterval每个顾客的服务时间

ArriveNum到达总人数

SimNum仿真人数

SystemTime每个人的系统时间

SystemTimeAvg平均系统时间

WaitTime排队等待时间

WaitTimeAvg平均排队等待时间

SysCusNum系统中的顾客人数

IntervalTime事件间隔时间

CusNumStart系统中的顾客数?

CusNumAvgCusNum_avg系统中的平均顾客数

QueLengthAvgQueLength_avg平均等待队长

2.算法的流程图

3.仿真结果分析

设置Lambda=0.5,Mu=0.9,顾客的平均等待时间与顾客的平均等待队长,计算其方差如下:

从上表可以看出,通过这种模型和方法仿真的结果和理论值十分接近,增加仿真顾客数时,可以得到更理想的结果。

当仿真人数超过100000人时,仿真结果与理论结果已经十分接近。

在误差允许的范围内,认为相符。

实验结果截图如下(SimNum分别为100、1000、10000、100000)

100人仿真结果与理论结果对比

1000人仿真结果与理论对比

10000人仿真结果与理论结果对比

100000人仿真结果与理论对比

1000000人仿真结果与理论结果对比

4.实验源代码

语言:

matlab

代码:

clear;

clc;

%M/M/1排队系统仿真

SimNum=input('

请输入仿真顾客总数SimNum='

);

%仿真顾客总数;

Lambda=input('

请输入到达率Lambda='

%到达率Lambda

Mu=input('

请输入服务率Mu='

%到达率Mu

ArriveTime=zeros(1,SimNum);

LeaveTime=zeros(1,SimNum);

ArriveNum=zeros(1,SimNum);

LeaveNum=zeros(1,SimNum);

ArriveNum

(1)=1;

fori=2:

SimNum

ArriveTime(i)=ArriveTime(i-1)+ArriveInterval(i);

ArriveNum(i)=i;

end

LeaveTime

(1)=ArriveTime

(1)+ServeInterval

(1);

%顾客离开时间

LeaveNum

(1)=1;

ifLeaveTime(i-1)<

ArriveTime(i)

LeaveTime(i)=ArriveTime(i)+ServeInterval(i);

else

LeaveTime(i)=LeaveTime(i-1)+ServeInterval(i);

end

LeaveNum(i)=i;

SystemTimeAvg=mean(SystemTime);

WaitTimeAvg=mean(WaitTime);

TimePoint=sort(TimePoint);

temp=2;

SysCusNum

(1)=1;

length(TimePoint)

if(temp<

=length(ArriveTime))&

&

(TimePoint(i)==ArriveTime(temp))

SysCusNum(i)=SysCusNum(i-1)+1;

temp=temp+1;

ArriveFlag(i)=1;

SysCusNum(i)=SysCusNum(i-1)-1;

%系统中平均顾客数计算

IntervalTime=zeros(size(TimePoint));

IntervalTime

(1)=ArriveTime

(1);

IntervalTime(i)=TimePoint(i)-TimePoint(i-1);

CusNumStart=[0SysCusNum];

%系统中平均顾客数

QueLength=zeros(size(SysCusNum));

fori=1:

length(SysCusNum)

ifSysCusNum(i)>

=2

QueLength(i)=SysCusNum(i)-1;

QueLength(i)=0;

%仿真图

figure

(1);

set(1,'

position'

[0,0,1000,700],'

Color'

[111]);

subplot(2,2,1);

%title('

各顾客到达时间和离去时间'

stairs([0ArriveNum],[0ArriveTime],'

r'

holdon;

stairs([0LeaveNum],[0LeaveTime],'

g'

legend('

到达时间'

'

离去时间'

holdoff;

title('

xlabel('

顾客数'

ylabel('

时间'

subplot(2,2,2);

stairs(TimePoint,SysCusNum,'

系统等待队长分布'

队长'

subplot(2,2,3);

stairs([0ArriveNum],[0WaitTime],'

stairs([0LeaveNum],[0SystemTime],'

各顾客在系统中的等待时间和系统时间'

等待时间'

系统时间'

%仿真值与理论值比较

disp(['

理论平均系统时间SystemTimeAvg='

num2str(1/(Mu-Lambda))]);

理论平均等待时间WaitTimeAvg='

num2str(Lambda/(Mu*(Mu-Lambda)))]);

理论系统中平均顾客数CusNumAvg='

num2str(Lambda/(Mu-Lambda))]);

理论系统中平均等待队长QueLengthAvg='

num2str(Lambda*Lambda/(Mu*(Mu-Lambda)))]);

仿真平均系统时间SystemTimeAvg='

num2str(SystemTimeAvg)])

仿真平均等待时间WaitTimeAvg='

num2str(WaitTimeAvg)])

仿真系统中平均顾客数CusNumAvg='

num2str(CusNumAvg)]);

仿真系统中平均等待队长QueLengthAvg='

num2str(QueLengthAvg)]);

六、单个系统的平均队长和平均系统时间随λ/μ的变化曲线

1.实现原理

默认仿真人数为100000人,μ为0.5,故只需要λ变化就可以使得λ/μ都变化。

主函数调用功能函数的平均队长和平均系统时间的结果进行绘图。

此实验中,λ去0.1~0.8,故λ/μ取值范围是0.2~1.6。

2.仿真算法

主函数:

Mu=0.5;

Lambda=0.1:

0.001:

0.8;

x=2.*Lambda;

QueLengthAvg=zeros(size(Lambda));

SystemTimeAvg=zeros(size(Lambda));

700

[QueLengthAvg(i),SystemTimeAvg(i)]=LengthTime(Lambda(i));

subplot(1,2,1);

stairs(x,QueLengthAvg,'

b'

平均队长分队和λ/μ的图像'

λ/μ'

平均队长'

subplot(1,2,2);

stairs(x,SystemTimeAvg,'

y'

平均系统时间随λ/μ的分布'

平均系统时间'

功能函数:

function[QueLengthAvg,SystemTimeAvg]=LengthTime(Lambda)

%Mu默认为0.5

%输入Lambda返回平均队长和平均系统时间

%lambda/Mu就是2*lambda

SimNum=100000;

LeaveTime(i)=ArriveTime(i)+ServeInterval(i);

SysCusNum(i)=SysCusNum(i-1)-1;

3.实验结果

4.实验结论

从上图可以看出,排队的平均队长和平均系统时间跟λ/μ的取值有直接的关系。

当λ/μ<

1时,排队人数很少,几乎为0。

当λ/μ>

1时,出现了转折,排队人数直线上升。

建议实际排队系统中尽量使得λ/μ小于1。

七、遇到的问题及解决方法

1.实验最初设定的人数太少,与理论结果有较大的误差,经过把参数修改为较大的数值之后,就解决了。

2.仿真人数设置过多后,比如10000000人后,matlab就会崩溃了。

所以数值不能设置的太大。

3.排队过程不是很清楚,实验参数设定不好确定。

最后通过把到达,离去的时间都设置为一个TimePoint,最后完成了排队时间和人数的计算。

八、实验心得

这是一个非常有趣的实验,平时的排队过程,我们通过实验完成仿真,并与理论结果进行对比。

在这个实验中,我重新认识了排队过程,到达,离去都作为一个事件去推动。

通过本次实验,对matlab有了更深的认识,更加认识到了通信网性能分析课程的重要性,为将来的学习打下坚实的基础。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 可爱清新

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

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