当前位置:文档之家› 单服务台排队系统的仿真

单服务台排队系统的仿真

实验2---单服务台排队系统的仿真
姓名:学号:
一、目标任务
①模拟路由器缓存区M|M|1|m实验。

②设定:λ=8/s,μ=10/s,ρ=0.8,m=10。

③模拟系统106s,求系统报文的丢失率及报文在路由器中停留时间的均值。

④模拟100次,图展示每次的模拟结果,并与理论值0.0184比较。

二、编程语言
Matlab
三、关键代码
lamda = 8; %报文到达强度
u = 10; %路由器处理强度
m = 10; %路由器缓冲区长度
T = 1000000; %模拟时间
a = []; %模拟运行时丢失率的运行结果
mean_a = 0; %模拟运行时丢失率的平均运行结果
ref_value = 0.0184; %丢失率理论值大小
b = []; %模拟运行时报文在路由器中的停留时间
mean_b = 0; %模拟运行时报文在路由器中停留时间的均值
%模拟运行一百次
for i=1:100
time = 0; %绝对时钟
t = 0; %路由器的下一空闲时刻
N = 0; %到达报文数
NI = 0; %丢失报文数
q = 0; %队长
stay_time = 0; %报文在路由器中的停留时间
%按指数分布产生随机到达时间和服务时间
while 1
CRTime = exprnd(1/lamda); %按指数分布产生下一报文的到达随机时间间隔
time = CRTime + time; %下一个报文到达的时间
if time > T
break;
end
N = N + 1;
q = q + 1;
while q > 0 & t < time
q = q - 1;
ServeTime = exprnd(1/u);%按指数分布产生报文的随机服务时间
if q == 0
t = time + ServeTime;
else
t = t + ServeTime;
end
stay_time = stay_time + ServeTime * (q + 1);
end
if q == m + 1 %如果超过缓冲区长,则丢失报文数加1,队长减1 NI = NI + 1;
q = q - 1;
end
end
a = [a, NI/N];
b = [b, stay_time/(N-NI)];
end
%计算结果
mean_a = mean(a);
mean_b = mean(b);
%绘图
x = 1:100;
plot(x, a, x, mean_a); %绘制模拟运行时丢包率变化图以及均值线
scatter(x, a, '.'); %绘制模拟运行时丢包率变化散点图
scatter(x, b, '.'); %绘制模拟运行时平均停留时间变化散点图
fprintf('平均丢包率%6.5f\n', mean_a); % 打印平均丢包率
fprintf('平均停留时间%6.5f\n', mean_b); % 打印平均停留时间
四、实验结果与分析
图1 丢包率和平均停留时间
图2模拟运行时丢包率变化图以及均值线
M/M/1/∞/∞ 模型
模型条件
(1) 输入过程――顾客源是无限的, 单个到来, 到达过程服从泊松分布, 即顾客到达间隔时间服从负指数分布;
(2) 排队规则――单队, 且队长没有限制, 先到先服务;
(3) 服务机构――单服务台, 服务时间的长短是随机的,服从相同的负指数分布 。

基本思路:
1. 输入参数:m ,,μλ和模拟时间T
2. 各变量初始值为0,包括绝对时钟time ,路由器的下一空闲时间t ,到达报文数N ,丢失报文数为NI,队长为q
3. 产生下一报文的到达时间间隔CRTime ,time+=CRTime 若time>T ,输出NI/N
4. N++,q++
5. 若q>0且t<time
q--
产生报文的处理时间ServeTime 若q==0,t=time+ServeTime
否则t+=ServerTime
转5
6. 若q==m+1,则NI++,q--,转3。

相关主题