%多个服务台的排队模型的蒙特卡罗模拟(以4个为例)
clear
TjMm=[]; %顾客到达的时间间隔序列
sTj=0; %顾客到达时间序列
while (sTj<=480)
Tjp=exprnd(10);%参数为0.1的指数分布
% Tfp1=unifrnd(4,15);
%Tfp2=unifrnd(4,15);
TjMm=[TjMm;Tjp];
sTj=sTj+Tjp;
end
n=length(TjMm);
n=n-1;%一天中顾客的个数
for i=1:n
TjM(i)=TjMm(i);
end
TfM=unifrnd(50,80,[4,n]); %4个服务台的服务时间序列,50到80的均匀分布
dengtime=zeros(1,n); %顾客等待的时间序列
likaitime= zeros(1,n); %顾客离开的时间序列
fuwutime= zeros(1,n); %顾客服务的时间序列
daodatime(1)=TjM(1);%第1个顾客到达的时间
fuwutime(1)=TfM(1,1); %第1个顾客服务的时间
likaitime(1)=daodatime(1)+fuwutime(1); %第1个顾客离开的时间
deskkongxiantime(1,1)=likaitime(1); %第1个服务台空闲的时间
deskkongxiantime(2,1)=daodatime(1); %第2个服务台空闲的时间
deskkongxiantime(3,1)=daodatime(1); %第3个服务台空闲的时间
deskkongxiantime(4,1)=daodatime(1); %第4个服务台空闲的时间
for i=2:n
daodatime(i)=sum(TjM (1:i)); %第i个人到达的时间
kongxianmin=min(deskkongxiantime(:,i-1));%服务台最小的空间时间
for i1=1:4
if deskkongxiantime(i1,i-1)==kongxianmin
s=i1;break %空闲时间最长服务台
end
end
deskkongxiantime(:,i)=deskkongxiantime(:,i-1);%第i个人时服务台空闲的时间(s例外)
fuwutime(i)=TfM(s,i); %第i个顾客服务的时间
if deskkongxiantime(s,i-1)<=daodatime(i)
dengtime(i)=0;
else
dengtime(i)=deskkongxiantime(s,i-1)-daodatime(i);%第i个顾客等待的时间
end
likaitime(i)=daodatime(i)+fuwutime(i)+dengtime(i); %第i个顾客离开的时间
deskkongxiantime(s,i)=likaitime(i);%第i个人时第s个服务台空闲的时间
end
pingjundengtime=sum(dengtime)/n; %平均等待时间
https://blog.sciencenet.cn/blog-306734-266803.html
下一篇:
看世界杯的阶段性总结