单服务台排队系统离散事件系统仿真实验

阅读: 评论:0

服务排队系统离散事件系统仿真实验
    离散事件系统仿真实验
    通过单服务台排队系统的方针,理解和掌握对离散事件的仿真建模方法,以便对其他系统进行建模,并对其系统分析,应用到实际系统,对实际系统进行理论指导。
    1.排队系统的通常理论
    一般的排队系统都有三个基本组成部分:
    (1)抵达模式:指动态实体(顾客)按怎样的规律抵达,描绘实体抵达的统计数据特性。通常假设顾客总体就是无穷的。
    (2)服务机构:指同一时刻有多少服务设备可以接纳动态实体,它们的服务需要多少时间。它也具有一定的分布特性。通常,假定系统的容量(包括正在服务的人数加上在等待线等待的人数)是无限的。
    (3)排队规则:所指对下一个实体服务的挑选原则。通用型的排队规则包含先进先出(fif
o),后进先出(lifo),随机服务(siro)等。
    2.对于离散系统有三种常用的仿真策略:事件调度法、活动扫描法、进程交互法。
    (1)事件调度法(eventscheduling):
    基本思想:离散事件系统中最基本的概念是事件,事件发生引起系统状态的变化,用事
    件的观点去分析真实系统。通过定义事件或每个事件出现系统状态的变化,按时间顺序确认并继续执行每个事件出现时有关逻辑关系。
    (2)活动扫描法:
    基本思想:系统存有成分共同组成,而成分又涵盖活动。活动的出现必须满足用户某些条件,且每
    一个主动成分均有一个相应的活动例程。仿真过程中,活动的发生时间也作为条件之一,而且较之其他条件具有更高的优先权。
    (3)进程可视化法:
    基本思想:将模型中的主动成分历经系统所发生的事件及活动,按时间发生的顺序进行
    女团,从而构成进程表中。系统仿真钟的大力推进使用两张进程表中,一就是当前事件表中,二就是将来事件表中。
    3.本实验采用的单服务台模型
    (1)抵达模式:顾客源就是无穷的,顾客单个抵达,相互单一制,一定时间的抵达数顺从指数
    (2)排队规则:单队,且对队列长度没有限制,先到先服务的fifo规则。(3)服务机构:单服务台,各顾客的服务时间相互独立,服从相同的指数分布。(4)到达时间间隔和服务时间是相互独立的。
    4.事件调度法的仿真策略
    事件调度法的基本思想是:用事件的观点来分析真实系统,通过定义事件及每个事件发
    生对于系统状态的变化,按时间顺序确认并继续执行每个事件出现时有关的逻辑关系。
    按这种策略建立模型时,所有事件均放在事件表中。模型中设有一个时间控制成分,该
    成分从事件表挑选具备最早出现时间的事件,并将仿真钟修正至该事件出现的时间,再调用与该事件适当的事件处理模块,该事件处理回去后回到时间掌控成分。这样,事件的挑选与处置不断地展开,直至仿真中止的条件或程序事件产生年才。
    5.离散事件结果分析
    仿真运转方式可以分成两大类:
    (1)终止型仿真:仿真的运行长度是事先确定的
    由于仿真运行时间长度非常有限,系统的性能与运转长度有关,系统的初始状态对系统性能
    的影响是不能忽略的。为了消除由于初始状态对系统性能估计造成的影响,需要多次独立运行仿真模型。
    (2)稳态型仿真:这类仿真研究仅运转一次,但运转长度却是足够多短,仿真的目的就是
    计系统的稳态性能。
    三、理论分析根据排队学说的科学知识我们晓得,排队系统的分类就是根据该系统中的顾客抵达模式、服务模
    式、服务员数量以及服务规则等因素决定的。
    1、顾客抵达模式
    实体(临时实体)到达模式:顾客。实体到达模式是顾客到达模式,设到达时间间隔a1服从均值βa=5min的指数分布
    f(a)=
    e-a/βa(a≥0)
    设立服务员为每个顾客服务的时间为si,它也顺从指数分布,均值为βs=4min
    f(s)=
    e-s/βs(s≥0)
    由于是单服务台系统,考虑系统顾客按单队排列,并按fifo方式服务4、理论分析结果
    在该系统中,设立
    μ,则稳态时的平均等待队长为1-ρ,顾客的平均等待时间为
    2、仿真设计算法(主要函数)
    利用指数分布间的关系,产生符合过程的顾客流,产生符合指数分布的随机变量作为每
    个顾客的服务时间:
    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_interval0])/timepoint(end);%系统中平均顾客数计算
    quelength_avg=sum([0quelength].*[time_interval0])/timepoint(end);%系统平均值等候队长
    3、仿真程序(matlab语言)
    clear;clc;
    %m/m/1排队系统仿真
    simtotal=input('恳请输出仿真顾客总数simtotal=');%仿真顾客总数;lambda=0.2;mu=0.25;
    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;fori=2:simtotal
    t_arrive(i)=t_arrive(i-1)+interval_arrive(i);arrivenum(i)=i;end
    t_leave(1)=t_arrive(1)+interval_serve(1);%顾客返回时间leavenum(1)=1;fori=2:simtotal
    ift_leave(i-1)
    t_leave(i)=t_arrive(i)+interval_serve(i);else
    t_leave(i)=t_leave(i-1)+interval_serve(i);end
    leavenum(i)=i;end
    t_wait=t_leave-t_arrive;%各顾客在系统中的等待时间t_wait_avg=mean(t_wait);
    t_queue=t_wait-interval_serve;%各顾客在系统中的排队时间t_queue_avg=mean(t_queue);
    timepoint=[t_arrive,t_leave];%系统中顾客数随时间的变化timepoint=sort(timepoint);
    arriveflag=zeros(size(timepoint));%抵达时间标志cusnum=zeros(size(timepoint));
    temp=2;
    cusnum(1)=1;
    fori=2:length(timepoint)
    if(temp
    cusnum(i)=cusnum(i-1)-1;endend
    %系统中平均值顾客数排序
    time_interval=zeros(size(timepoint));time_interval(1)=t_arrive(1);fori=2:length(timepoint)
    time_interval(i)=timepoint(i)-timepoint(i-1);end
    cusnum_fromstart=[0cusnum];
    cusnum_avg=sum(cusnum_fromstart.*[time_interval0])/timepoint(end);quelength=zeros(size(cusnum));fori=1:length(cusnum)ifcusnum(i)>=2
    quelength(i)=cusnum(i)-1;else
    quelength(i)=0;endend
    quelength_avg=sum([0quelength].*[time_interval0])/timepoint(end);%系统平均等待队长%仿真图figure(1);
    set(1,'position',[0,0,1000,700]);subplot(2,2,1);
    title('各顾客到达时间和离去时间');
    stairs([0arrivenum],[0t_arrive],'b');holdon;
    stairs([0leavenum],[0t_leave],'y');legend('到达时间','离去时间');holdoff;
    subplot(2,2,2);
    stairs(timepoint,cusnum,'b')title('系统等待队长分布');xlabel('时间');ylabel('队长');

本文发布于:2023-05-08 16:54:11,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/4/92272.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:系统   事件   时间   服务   排队   抵达   活动   实体
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图