matlab排队系统仿真,MM1排队系统仿真matlab实验报告

2023-05-16

41528d3028836879cd698677c3999917.gifMM1排队系统仿真matlab实验报告

M/M/1 排队系统实验报告一、实验目的本次实验要求实现 M/M/1 单窗口无限排队系统的系统仿真,利用事件调度法实现离散事件系统仿真,并统计平均队列长度以及平均等待时间等值,以与理论分析结果进行对比。二、实验原理根据排队论的知识我们知道,排队系统的分类是根据该系统中的顾客到达模式、服务模式、服务员数量以及服务规则等因素决定的。1、 顾客到达模式设到达过程是一个参数为 的 Poisson 过程,则长度为 的时间内到达 个tk呼叫的概率 服从 Poisson 分布,即 , ,其中 >0etkktp!)(,210为一常数,表示了平均到达率或 Poisson 呼叫流的强度。2、 服务模式设每个呼叫的持续时间为 ,服从参数为 的负指数分布,即其分布函数i为 {}1,0tPXte3、 服务规则先进先服务的规则(FIFO)4、 理论分析结果在该 M/M/1 系统中,设 ,则稳态时的平均等待队长为 ,顾客1Q的平均等待时间为 。T三、实验内容M/M/1 排队系统:实现了当顾客到达分布服从负指数分布,系统服务时间也服从负指数分布,单服务台系统,单队排队,按 FIFO(先入先出队列)方式服务。四、采用的语言MatLab 语言源代码:clear;clc;%M/M/1排队系统仿真SimTotal=( 请输入仿真顾客总数SimTotal= ); %仿真顾客总数;Lambda=0.4; %到达率Lambda;Mu=0.9; %服务率Mu;t_Arrive=zeros(1,SimTotal); t_Leave=zeros(1,SimTotal);ArriveNum=zeros(1,SimTotal);LeaveNum=zeros(1,SimTotal);Interval_Arrive=-log(rand(1,SimTotal))/Lambda;%到达时间间隔Interval_Serve=-log(rand(1,SimTotal))/Mu;%服务时间t_Arrive(1)=Interval_Arrive(1);%顾客到达时间ArriveNum(1)=1;for i=2:SimTotalt_Arrive(i)=t_Arrive(i-1)+Interval_Arrive(i);ArriveNum(i)=i;endt_Leave(1)=t_Arrive(1)+Interval_Serve(1);%顾客离开时间LeaveNum(1)=1;for i=2:SimTotalif t_Leave(i-1)=2QueLength(i)=CusNum(i)-1;elseQueLength(i)=0;endendQueLength_avg=sum([0 QueLength].*[Time_interval 0] )/Timepoint(end);%系统平均等待队长%仿真图figure(1);set(1, position ,[0,0,1000,700]);subplot(2,2,1);title( 各顾客到达时间和离去时间 );stairs([0 ArriveNum],[0 t_Arrive], b );hold on;stairs([0 LeaveNum],[0 t_Leave], y );legend( 到达时间 , 离去时间 );hold off;subplot(2,2,2);stairs(Timepoint,CusNum, b )title( 系统等待队长分布 );xlabel( 时间 );ylabel( 队长 );subplot(2,2,3);title( 各顾客在系统中的排队时间和等待时间 );stairs([0 ArriveNum],[0 t_Queue], b );hold on;stairs([0 LeaveNum],[0 t_Wait], y );hold off;legend( 排队时间 , 等待时间 );%仿真值与理论值比较disp([ 理论平均等待时间t_Wait_avg= ,num2str(1/(Mu-Lambda))]);disp([ 理论平均排队时间t_Wait_avg= ,num2str(Lambda/(Mu*(Mu-Lambda)))]);disp([ 理论系统中平均顾客数= ,num2str(Lambda/(Mu-Lambda))]);disp([ 理论系统中平均等待队长= ,num2str(Lambda*Lambda/(Mu*(Mu-Lambda)))]);disp([ 仿真平均等待时间t_Wait_avg= ,num2str(t_Wait_avg)])disp([ 仿真平均排队时间t_Queue_avg= ,num2str(t_Queue_avg)])disp([ 仿真系统中平均顾客数= ,num2str(CusNum_avg)]);disp([ 仿真系统中平均等待队长= ,num2str(QueLength_avg)]);五、数据结构1.仿真设计算法(主要函数)利用负指数分布与泊松过程的关系,产生符合泊松过程的顾客流,产生符合负指数分布的随机变量作为每个顾客的服务时间:Interval_Arrive=-log(rand(1,SimTotal))/Lambda;%到达时间间隔,结果与调用exprnd(1/Lambda,m)函数产生的结果相同Interval_Serve=-log(rand(1,SimTotal))/Mu;%服务时间间隔t_Arrive(1)=Interval_Arrive(1);%顾客到达时间时间计算t_Wait=t_Leave-t_Arrive; %各顾客在系统中的等待时间t_Queue=t_Wait-Interval_Serve; %各顾客在系统中的排队时间由事件来触发仿真时钟的不断推进。每发生一次事件,记录下两次事件间隔的时间以及在该时间段内排队的人数:Timepoint=[t_Arrive,t_Leave]; %系统中顾客数变化CusNum=zeros(size(Timepoint));CusNum_avg=sum(CusNum_fromStart.*[Time_interval 0] )/Timepoint(end); %系统中平均顾客数计算QueLength_avg=sum([0 QueLength].*[Time_interval 0] )/Timepoint(end); %系统平均等待队长2.算法的流程图开始计算第 1 个顾客的离开时间: i-2输入仿真人数计算第 i 个顾客的等待时间、离开时间、标示位: i+1标志位置 0:i=i+1系统是否接纳第i 个顾客?仿真时间是否越界?结束输出结果六、仿真结果分析顾客的平均等待时间与顾客的平均等待队长,计算其方差如下:仿 真 顾 客 总 数=100000 1 2 3 4 5 平 均 值 方 差平 均 等 待 时 间 2.023 1.9971 1.9945 1.9961 2.0043 2.003 0.000556360平 均 排 队 时 间 0.91147 0.8865 0.88293 0.88404 0.89495 0.89198 0.000

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

matlab排队系统仿真,MM1排队系统仿真matlab实验报告 的相关文章

随机推荐