1、问题:
设有一单服务台排队系统,到达实体总数为8, 即需要服务的实体对象数N=8, 其到达时间间隔和服务时间分别为:
到达时间间隔为: 0, 10, 15, 35, 30, 10,5,5
服务时间为: 22, 15, 10,5, 15,15, 10, 10
试通过计算机仿真求出平均队长及服务台平均空闲时间。(写出详细的仿真建模过程、仿真程序以及仿真结果)
2、Matlab仿真结果:
画出过程的甘特图:
3、Matlab仿真代码:
N=8;
%到达间隔
arr=[0,10,15,35,30,10,5,5];
%服务时间
servetime=[22,15,10,5,15,15,10,10];
%等待时间
wait=zeros(1,N);
free=0;
%到达时间
arrive=zeros(1,N);
% 完成时间
completiontime=zeros(1,N);
% 到达时刻
for n=2:N
arrive(n)=arrive(n-1)+arr(n)
end
%求各个实体等待时间
for i=2:N
completiontime(i-1)=arrive(i-1)+servetime(i-1)+wait(i-1)
if (arrive(i-1)+servetime(i-1)+wait(i-1)>arrive(i))
wait(i)=arrive(i-1)+servetime(i-1)+wait(i-1)-arrive(i);
else
wait(i)=0;
end
end
completiontime(N)=completiontime(i-1)+servetime(N)
%求空闲时间
for i=2:N
if arrive(i)>completiontime(i-1)
free=arrive(i)-completiontime(i-1)+free;
end
end
free
%求平均空闲时间
averagefree=free/completiontime(N)
%求平均队长
averagelength=(sum(servetime)+sum(wait))/completiontime(N)
%平均等待时间
%meantime=mean(wait)
arry=[arrive;wait;servetime];
%画堆叠直方图
barh(arry.','stack');
xlabel('time') % 设置x轴标题
ylabel('实体') % 设置x轴标题
legend('未到达','等待','服务') % 设置图例,与y轴的一组数据从左到右一一对应