您的位置首页百科问答

mat非光连顶艺顺宗lab中排队论的程序

mat非光连顶艺顺宗lab中排队论的程序

你参考模仿一下吧。

clear

clc

%*****************************************

%初始化顾客源

%*****************************************

%总仿真时间

Total_time=10;

%队列最大长度

N=10000000000;

%到达率与服务率

lambda=10;

来自mu=6;

%平均到达时间与平均服务时间

arr_mean=1/lambda;

ser_mean360问答=1/mu;

arr_num=round(Total_time*lambda*2);

ev二管烧打善喜著星章持跑ents=[];

%按负指数分布产生各顾客达到时间间隔

events(1,:)=exprnd(arr_mean,1,arr_num);

%各顾客的到达时刻等于时间间隔的累积和

events(1,:)=cumsum(些统异元征功events(1,:九));

%按负指数分布产生各顾客服务时间

even陆究县减字去补评油或场ts(2,:)=exprnd(妈时社木苗史ser_mean,1,arr_num);

%续特架屋环计算仿真顾客个数,即到达时刻在仿真时间内的顾客数

len_sim部雷=sum(event讲造石s(1,:)<=Total_time);

%*****************************************

%计算第1个顾客的信息

%*************作力胜远怀够苦明值班色****************************

%第1个顾客进入系统后直接接受服务,无需等待

events(3,1)=0;

%其离开时刻等于其到达时刻与服务时间之和

ev式女己杆报死ents(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

bre极药的松维ak;

else

num药ber=sum(events(4,member)>events(1,i));

%如果系统已满,则系统拒绝第i个顾客,其标志位置0

ifnumber>=N+1

events(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;