单服务台排队系统离散事件系统仿真实验_精品文档Word文档下载推荐.doc

上传人:b****2 文档编号:14436347 上传时间:2022-10-22 格式:DOC 页数:10 大小:275KB
下载 相关 举报
单服务台排队系统离散事件系统仿真实验_精品文档Word文档下载推荐.doc_第1页
第1页 / 共10页
单服务台排队系统离散事件系统仿真实验_精品文档Word文档下载推荐.doc_第2页
第2页 / 共10页
单服务台排队系统离散事件系统仿真实验_精品文档Word文档下载推荐.doc_第3页
第3页 / 共10页
单服务台排队系统离散事件系统仿真实验_精品文档Word文档下载推荐.doc_第4页
第4页 / 共10页
单服务台排队系统离散事件系统仿真实验_精品文档Word文档下载推荐.doc_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

单服务台排队系统离散事件系统仿真实验_精品文档Word文档下载推荐.doc

《单服务台排队系统离散事件系统仿真实验_精品文档Word文档下载推荐.doc》由会员分享,可在线阅读,更多相关《单服务台排队系统离散事件系统仿真实验_精品文档Word文档下载推荐.doc(10页珍藏版)》请在冰豆网上搜索。

单服务台排队系统离散事件系统仿真实验_精品文档Word文档下载推荐.doc

通过定义事件或每个事件发生系统状态的变化,按时间顺序确定并执行每个事件发生时有关逻辑关系。

(2)活动扫描法:

系统有成分组成,而成分又包含活动。

活动的发生必须满足某些条件,且每一个主动成分均有一个相应的活动例程。

仿真过程中,活动的发生时间也作为条件之一,而且较之其他条件具有更高的优先权。

(3)进程交互法:

将模型中的主动成分历经系统所发生的事件及活动,按时间发生的顺序进行组合,从而形成进程表。

系统仿真钟的推进采用两张进程表,一是当前事件表,二是将来事件表。

3.本实验采用的单服务台模型

顾客源是无限的,顾客单个到达,相互独立,一定时间的到达数服从指数分布。

(2)排队规则:

单队,且对队列长度没有限制,先到先服务的FIFO规则。

(3)服务机构:

单服务台,各顾客的服务时间相互独立,服从相同的指数分布。

(4)到达时间间隔和服务时间是相互独立的。

4.事件调度法的仿真策略

事件调度法的基本思想是:

用事件的观点来分析真实系统,通过定义事件及每个事件发生对于系统状态的变化,按时间顺序确定并执行每个事件发生时有关的逻辑关系。

按这种策略建立模型时,所有事件均放在事件表中。

模型中设有一个时间控制成分,该成分从事件表中选择具有最早发生时间的事件,并将仿真钟修改到该事件发生的时间,再调用与该事件相应的事件处理模块,该事件处理完后返回时间控制成分。

这样,事件的选择与处理不断地进行,直到仿真终止的条件或程序事件产生为止。

5.离散事件结果分析

仿真运行方式可分为两大类:

(1)终止型仿真:

仿真的运行长度是事先确定的

由于仿真运行时间长度有限,系统的性能与运行长度有关,系统的初始状态对系统性能的影响是不能忽略的。

为了消除由于初始状态对系统性能估计造成的影响,需要多次独立运行仿真模型。

(2)稳态型仿真:

这类仿真研究仅运行一次,但运行长度却是足够长,仿真的目的是估计系统的稳态性能。

三、理论分析

根据排队论的知识我们知道,排队系统的分类是根据该系统中的顾客到达模式、服务模式、服务员数量以及服务规则等因素决定的。

1、顾客到达模式

实体(临时实体)到达模式:

顾客。

实体到达模式是顾客到达模式,设到达时间间隔A1服从均值=5min的指数分布

(A≥0)

2、服务模式

设服务员为每个顾客服务的时间为Si,它也服从指数分布,均值为=4min

(S≥0)

3、服务规则

由于是单服务台系统,考虑系统顾客按单队排列,并按FIFO方式服务

4、理论分析结果

在该系统中,设,则稳态时的平均等待队长为,顾客的平均等待时间为。

5、系统模型

开始

对顾客数目做记录

将顾客记录排入队列

队列长度加1

安排服务完成事件

结束

置服务员为忙碌状态

确定服务时间

服务员忙

三、设计算法

1、算法模型

标志位置0:

i=i+1

计算第i个顾客的等待时间、离开时间、标示位:

i+1

系统是否接纳第i个顾客?

仿真时间是否越界?

输出结果

计算第1个顾客的离开时间:

i-2

输入仿真人数

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);

%到达时间间隔

%服务时间

%顾客到达时间

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;

ift_Leave(i-1)<

t_Arrive(i)

t_Leave(i)=t_Arrive(i)+Interval_Serve(i);

else

t_Leave(i)=t_Leave(i-1)+Interval_Serve(i);

end

LeaveNum(i)=i;

t_Wait_avg=mean(t_Wait);

%各顾客在系统中的排队时间

t_Queue_avg=mean(t_Queue);

%系统中顾客数随时间的变化

Timepoint=sort(Timepoint);

ArriveFlag=zeros(size(Timepoint));

%到达时间标志

temp=2;

CusNum

(1)=1;

length(Timepoint)

if(temp<

=length(t_Arrive))&

&

(Timepoint(i)==t_Arrive(temp))

CusNum(i)=CusNum(i-1)+1;

temp=temp+1;

ArriveFlag(i)=1;

CusNum(i)=CusNum(i-1)-1;

%系统中平均顾客数计算

Time_interval=zeros(size(Timepoint));

Time_interval

(1)=t_Arrive

(1);

Time_interval(i)=Timepoint(i)-Timepoint(i-1);

CusNum_fromStart=[0CusNum];

QueLength=zeros(size(CusNum));

fori=1:

length(CusNum)

ifCusNum(i)>

=2

QueLength(i)=CusNum(i)-1;

QueLength(i)=0;

%系统平均等待队长

%仿真图

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,'

系统等待队长分布'

xlabel('

时间'

ylabel('

队长'

subplot(2,2,3);

各顾客在系统中的排队时间和等待时间'

stairs([0ArriveNum],[0t_Queue],'

stairs([0LeaveNum],[0t_Wait],'

排队时间'

等待时间'

%仿真值与理论值比较

disp(['

理论平均等待时间t_Wait_avg='

num2str(1/(Mu-Lambda))]);

理论平均排队时间t_Wait_avg='

num2str(Lambda/(Mu*(Mu-Lambda)))]);

理论系统中平均顾客数='

num2str(Lambda/(Mu-Lambda))]);

理论系统中平均等待队长='

num2str(Lambda*Lambda/(Mu*(

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 纺织轻工业

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1