北邮通信网性能分析实验二MM1排队系统实验分析报告

更新时间:2023-08-06 01:15:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

精心整理

《通信网理论基础》

实验二:二次排队问题——M/M/1排队系统的级联

一、 实验目的

M/M/1是最简单的排队系统,其假设到达过程是一个参数为λ的Poisson 过程,服务时间是参数为μ。 1、 M /M/1服

务员数量以及服务规则等因素决定的。

设到达过程是一个参数为λ的Poisson 过程,则长度为t 的时间内到达k 个呼叫的概率)(t P k 服

从Poisson 分布,即()()!k

t k t P t k e λλ-=,?????????=,2,1,0k ,其中λ>0为一常数,表示了平均到

精心整理

达率或Poisson 呼叫流的强度。设每个呼叫的持续时间为i τ,服从参数为μ的负指数分布,即其

分布函数为

{}1,0t P X t e t μ-<=-≥.服务规则采用先进先服务的规则(FIFO )。 在该M/M/1系统中,设λρμ=,则稳态时的平均队长为[]1E N ρρ=-,顾客的平均等待时间为1

T μλ=-。

2、 二次排队网络

A 平均包长为b

1、 单

服务台系统,单队排队,按FIFO 方式服务为M/M/1排队系统。

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

类事件发生的时间,其时序关系如下图所示。

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

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

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

精心整理

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

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

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

顾客平均等待队长()Q n 及平均排队等待时间()d n 的定义为

其中,i R 为在时间区间

1[,]i i b b -上排队人数i q 乘以该区间长度1()i i b b --。 i D 为第i 个顾客排队等待时间。

2、 (2(4(6

3、 仿真结果分析

(1)分析仿真数据,统计顾客的平均系统时间与平均队长,计算其方差,分析与理论计算结

果的吻合程度,验证仿真程序的正确性。

(2)验证Kleinrock 假设的合理性。——假设包长不变,即二次排队不独立,统计平均值与

理论值的相近程度。

精心整理

4、仿真结果分析

分析仿真数据,统计顾客的平均等待时间与顾客的平均等待队长,计算其方差,分析与理论计

算结果的吻合程度,验证仿真程序的正确性。

四、实验要求

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

2.μ

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顾客的到达时间间隔

SimNum

WaitTime

QueLengthAvgQueLength_avg平均等待队长

2.算法的流程图

3.仿真结果分析

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

精心整理

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);

ArriveInterval=-log(rand(1,SimNum))/Lambda;%到达时间间隔ServeInterval=-log(rand(1,SimNum))/Mu;%服务时间

ArriveTime(1)=ArriveInterval(1);%顾客到达时间

ArriveNum(1)=1;

for i=2:SimNum

end

for

if

else

end

end

temp=2;

for

if(temp<=length(ArriveTime))&&(TimePoint(i)==ArriveTime(temp)) SysCusNum(i)=SysCusNum(i-1)+1;

temp=temp+1;

ArriveFlag(i)=1;

else

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

end

end

%系统中平均顾客数计算

IntervalTime=zeros(size(TimePoint));

IntervalTime(1)=ArriveTime(1);

for i=2:length(TimePoint)

精心整理

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

end

CusNumStart=[0SysCusNum];

CusNumAvg=sum(CusNumStart.*[IntervalTime0])/TimePoint(end);%系统中平均顾客数QueLength=zeros(size(SysCusNum));

for i=1:length(SysCusNum)

if SysCusNum(i)>=2

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

else

QueLength(i)=0;

end

end

%仿真图

figure(1);

set(1,

%title('

hold on;

legend('

hold off;

title('

xlabel('顾客数

ylabel('时间');

title('

xlabel('时间');

ylabel('队长');

hold on;

hold off;

title('各顾客在系统中的等待时间和系统时间');

legend('等待时间','系统时间');

xlabel('顾客数');

ylabel('时间');

%仿真值与理论值比较

disp(['理论平均系统时间SystemTimeAvg=',num2str(1/(Mu-Lambda))]);

disp(['理论平均等待时间WaitTimeAvg=',num2str(Lambda/(Mu*(Mu-Lambda)))]);

disp(['理论系统中平均顾客数CusNumAvg=',num2str(Lambda/(Mu-Lambda))]);

disp(['理论系统中平均等待队长QueLengthAvg=',num2str(Lambda*Lambda/(Mu*(Mu-Lambda)))]); disp(['仿真平均系统时间SystemTimeAvg=',num2str(SystemTimeAvg)])

disp(['仿真平均等待时间WaitTimeAvg=',num2str(WaitTimeAvg)])

精心整理

disp(['仿真系统中平均顾客数CusNumAvg=',num2str(CusNumAvg)]);

disp(['仿真系统中平均等待队长QueLengthAvg=',num2str(QueLengthAvg)]);

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

1.实现原理

默认仿真人数为100000人,μ为0.5,故只需要λ变化就可以使得λ/μ都变化。主函数调用功能函数的平均队长和平均系统时间的结果进行绘图。此实验中,λ去0.1~0.8,故λ/μ取值范围是0.2~1.6。

Mu=0.5;

x=2.*Lambda;

for i=1:700

end

%仿真图

figure(1);

set(1,

title('

xlabel('λ/μ');

ylabel('

title('

xlabel('λ/μ');

ylabel('

功能函数:

function[QueLengthAvg,SystemTimeAvg]=LengthTime(Lambda)

%Mu默认为0.5

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

%lambda/Mu就是2*lambda

SimNum=100000;

Mu=0.5;

ArriveTime=zeros(1,SimNum);

LeaveTime=zeros(1,SimNum);

ArriveNum=zeros(1,SimNum);

精心整理LeaveNum=zeros(1,SimNum);

ArriveInterval=-log(rand(1,SimNum))/Lambda;%到达时间间隔ServeInterval=-log(rand(1,SimNum))/Mu;%服务时间ArriveTime(1)=ArriveInterval(1);%顾客到达时间

ArriveNum(1)=1;

for i=2:SimNum

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

ArriveNum(i)=i;

end

LeaveTime(1)=ArriveTime(1)+ServeInterval(1);%顾客离开时间LeaveNum(1)=1;

for

if

else

end

end

temp=2;

for

if

else

end

end

IntervalTime=zeros(size(TimePoint));

IntervalTime(1)=ArriveTime(1);

for i=2:length(TimePoint)

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

end

QueLength=zeros(size(SysCusNum));

for i=1:length(SysCusNum)

if SysCusNum(i)>=2

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

else

QueLength(i)=0;

精心整理

end

end

QueLengthAvg=sum([0QueLength].*[IntervalTime0])/TimePoint(end);%系统平均等待队长

3.实验结果

4.实验结论

从上图可以看出,排队的平均队长和平均系统时间跟λ/μ的取值有直接的关系。当λ/μ<1时,排队人数很少,几乎为0。当λ/μ>1时,出现了转折,排队人数直线上升。建议实际排队系统中尽量使

1

2.

3.

matlab

基础。

本文来源:https://www.bwwdw.com/article/04um.html

Top