资源描述:
《MMN的排队源程序matlab》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、旅客登机前需要进行安检。首先接受安检人员的检查,有两名安检人员,旅客根据安检人员前的等待人数排队;然后通过一道安检门完成检查。如下图所示(时间单位分钟)。请编制仿真程序,估计顾客通过安检所需时间。添加函数newMM2andMM1,参数的解释也在源程序里说明了。则按题意输入meant=newMM2andMM1(1,1.5,2,0.2,1,300),得到结果为时间为meant=2.2418;各个人得到的结果是不太一样的,是正确的,因为程序模拟的随机分布的数,是符合实际的。源程序如下:function[meant]=newMM2a
2、ndMM1(mean_arr,mean_serv,mean_serv1,mean_serv21,mean_serv22,peo_num)%mean_arr,到达的时间参数%mean_serv,服务台a的服务时间参数%mean_serv1,服务台b的服务时间参数%mean_serv21,mean_serv22,二级服务台的均匀分布的参数%peo_num,总服务人数nt=exprnd(mean_arr,1,peo_num);%各顾客到达时间间隔服从指数分布state_a=zeros(3,peo_num); %用一个三行矩阵表示
3、a台每个顾客的状态 %三行依次为:到达时间间隔,服务时间,等待时间 state_b=zeros(3,peo_num); %用一个三行矩阵表示b台每个顾客的状态 %三行依次为:到达时间间隔,服务时间,等待时间 state_a(2,:)=exprnd(mean_serv,1,peo_num);%生成a台各顾客服务时间的矩阵state_b(2,:)=exprnd(mean_serv1,1,peo_num);%生成b台各顾客服务时间的矩阵state_a(3,1)=0; st
4、ate_b(3,1)=0;a=1;%a台服务的人数b=1;%b台服务的人数arr_time=cumsum(nt); %到达时间由时间间隔变成连续时间state_b(1,1)=arr_time(1);state_a(1,1)=arr_time(2); %state(1,:)=arr_time; lea_time_a(1)=sum(state_a(:,1)); %先计算前1名顾客的离开时间 lea_time_b(1)=sum(state_b(:,1)); %先计算第2名顾客的离
5、开时间 fori=3:peo_numif lea_time_a(a)6、-state_a(1,a-1); else state_a(3,a)=0; end lea_time_a(a)=sum(state_a(:,a)); else b=b+1; state_b(1,b)=arr_time(i); ifstate_b(1,b)<=state_b(3,b-1)+state_b(2,b-1) state_b(3,b)=state_b(3,b-1)+state_b(2,b-1)-state_b(1,
7、b-1); else state_b(3,b)=0; end lea_time_b(b)=sum(state_b(:,b)); endend%连接两个状态矩阵state=[state_a(:,1:a),state_b(:,1:b)];state(3,:)=[lea_time_a(1:a),lea_time_b(1:b)];%连接两个离开时间%[g,m]=min(lea_time_a);%[h,n]=min(lea_time_b);lea_time=[lea_time_
8、a,lea_time_b];%按离开时间的先后顺序排队guodu1=lea_time;guodu2=zeros(1,peo_num);fori=1:peo_num [guodu2(i),j]=min(guodu1); guodu1(j)=max(guodu1);end