matlab中排队论的程序
的有关信息介绍如下:你参考模仿一下吧。
clear
clc
%*****************************************
%初始化顾客源
%*******来自*********360问答*************************
%总仿真时间
Total_time=10;
%策情策争货里国鲜队列最大长度
N=100还耐足我00000000;
%到达率与服务率
lambda=10;
mu=6;
%平均到达时间与平频应船志职应思另均服务时间
arr_mean=1/lambda;
ser_mean=1/m自前亲评还迫映类尽室绍u;
arr_num=round(Total_time*lambda*2);
events=[];
掌飞%按负指数分布产生各顾客达到时方哥了发免称原玉每间间隔
events(1,:)=exprnd(arr_mean,1,arr_num);
%各顾客的到达时刻等于时间间隔的累积和
events(1,井坚话杀角钟掉研热封:)=cumsum(even液氧因样往通示青判罗听ts(1,:));
%按负指数分布产生朝印各顾客服务时间
events(2,:)=exprnd(ser_mean,1,arr_num);
%计算仿真顾客个数,即到达时刻在仿真时间内的顾客数
len_sim=sum(events(1,:)<=Total_time);
%*************赵倍喜济让山蛋是京优****************************
%计算第1往王周个顾客的信息
%***************************春派点采扩决派路交激**************
%第1个顾客进入系统后直接接受服务,无需等待
events(3,1)=0;
%稳宗重越市永脸其离开时刻等于其到达时刻者晶夫育啊导长换波改希与服务时间之和
events(4,1)=events(1,1)+events(2,1);
%其肯定被系统接纳,此时系统内共有
%1个顾客,故标志位置1
events(5,1)=1;
%其进入系统后,系统内已有成员序号为1
member=[1];
fori=2:arr_num
%如果第i个顾客的到达时间超条境理留果派报乐过了仿真时间,则跳出循环
ifevents(1,i)>Total_time
break;
else
number=sum(eve剧尽脱胶纪nts(4,member)>events(1,i));
%如果系统已满,则系统拒绝第i个顾客,其标志位置0
ifnumber>=N+1
event着蛋概速s(5,i)=0;
%如果在反系统为空,则第i个顾客直接接受服务
else
ifnumber==0
%其等待时间为0
2009.1516
%PROGRAMLANGUAGEPROGRAMLANGUAGE
events(3,i)=0;
%其离开时刻等于到达时刻与服务时间之和
events(4,i)=events(1,i)+events(2,i);
%其标志位置1
events(5,i)=1;
member=[member,i];
%如果系统有顾客正在接受服务,且系统等待队列未满,则第i个顾客进入系统
elselen_mem=length(member);
%其等待时间等于队列中前一个顾客的离开时刻减去其到达时刻
events(3,i)=events(4,member(len_mem))-events(1,i);
%其离开时刻等于队列中前一个顾客的离开时刻加上其服
%务时间
events(4,i)=events(4,member(len_mem))+events(2,i);
%标识位表示其进入系统后,系统内共有的顾客数
events(5,i)=number+1;
member=[member,i];
end
end
end
end
%仿真结束时,进入系统的总顾客数
len_mem=length(member);
%*****************************************
%输出结果
%*****************************************
%绘制在仿真时间内,进入系统的所有顾客的到达时刻和离
%开时刻曲线图(stairs:绘制二维阶梯图)
stairs([0events(1,member)],0:len_mem);
holdon;
stairs([0events(4,member)],0:len_mem,'.-r');
legend('到达时间','离开时间');
holdoff;
gridon;
%绘制在仿真时间内,进入系统的所有顾客的停留时间和等
%待时间曲线图(plot:绘制二维线性图)
figure;
plot(1:len_mem,events(3,member),'r-*',1:len_mem,events(2,member)+events(3,member),'k-');
legend('等待时间','停留时间');
gridon;