本科毕业设计案例-排队系统 - 图文(6)

2019-07-27 10:15

1

2 5.00% 我们分两组方法观测旅客个数。第一组观测,有40个样本,是观测服务窗口到第一行柱子间的队列人数。第二组观测,也有40个样本,是观测等候队列到第二行柱子间的队列人数。之后除以两组数据分别窗口到不同柱子的距离,得到每个队列中行人间隔的平均数结果保留1位有效数字,精确到分米,用这80个行人间隔平均数组成一个行人间隔经验分布,如表2所示;

对于行人间隔,我们无法说明它是否与队列中人数状态量有关,因此我们队观测到的两组数据做双样本T检验。进而证明10多人的队列与20多人的队列其行人间隔分布基本无差异。这样我们就能将由这80组样本所得行人间隔经验概率分布输入模型,来产生行人间隔的随机变量。

原假设

H:???01112

2备择假设

H:???

利用matlab软件,得到结果如下 : 平均值 N 平均值 标准差 标准误 第一组 40 0.8325 0.0997 0.016 第二组 40 0.828 0.104 0.016 差值 = mu (C1) - mu (C2) 差值估计: 0.0050

差值的 95% 置信区间: (-0.0403, 0.0503) 检验: P 值 = 0.827

P值约等于1 原假设成立,说明行人间隔与队列长度无关。 3.3.2. 仿真策略

北京西站离散事件系统中事件,实体活动较复杂,因此我们选用进程交互法作为仿真策略,面向时间间隔推进时钟。

当第一位顾客依据行人到达随机变量进入系统时,把FEL中发生时间不 大于仿真时钟的所有事件全部调入到CEL中。之后依次判断出每个事件在其隶属的进程中的位置。在判断其实体是否满足该事件发生条件,若满足则发生该事件,只要在时钟推进范围内且满足条件,就尽可能的多执行进程依次事件,直到进程结束为止。如果发生条件不满足或超过仿真时钟间隔,则停止,推出该进程。等到仿真时钟推进后,再执行进程后面的部分。当CEL中所有事件都处理过以后。结

26

束CEL扫描,以固定时间间隔推进时钟,本文模型所取的推进间隔为0.0010s。之后再将FEL中发生时间不大于仿真时钟的所有事件调入CEL中。循环往复,直到仿真结束。 3.4. 仿真模型

确定仿真策略后,我们就要依托AnyLogic平台建立西站售票离散系统仿真模型了。建立起来的仿真程序结构如图10所示

图10 Main类

它可以分为五个部分:

第一部分:参数输入及初始化子程序部分

图 11 初始化子程序

27

在这部分中我们要完成对于原始数据的输入其结构如图11所示; 在这里我们把两个大厅的8个小时的数据整理出的经验概率分布输入到16个表函数中(customPDF)。主程序启动,仿真时钟推进前会调用DataInPut函数,将每个表函数作为一个元素输入到custom_collection集合中。之后仿真时钟推进,用initial组的表函数作为初始化数据来自源,event事件触发,作用是得到customDistribution变量中的值,该变量被调用值后会重新从对应的表函数中得到一个新值,而event事件每30秒触发一次,故而得到的变量值符合不同表函数中30秒行人到达数经验概率分布。之后相继触发N个Inject的动态事件,触发次数N就是刚刚所取到的变量值。每一个动态事件触发后,都有一个延迟期,这个延迟期由event事件控制;以保证所有动态事件是在30秒内均匀触发。每一个动态事件都会产生一个旅客实体。我们的仿真时间是从早上8点50到下午5点整。8点50到9点之间我们调用的是initial初始化数据。当仿真时钟推进到9点时,dataEvent事件触发,它将customDistribution的数据源改为custom_collection中第一个元素(即对应9点的数据的表函数)。之后每个小时触发一次,触发时依次提取custom_collection集合中元素。变量hour的作用就是记录已经提取到那个位置的元素了。这样我们就得到了与实际情况相似的旅客到达。Event关键代码如下:

date_Left = custom_collectionLeft.get(hour-8); date_Right = custom_collectionRight.get(hour-8); hour += 1; 第二部分,选队功能部分

在这部分中需要实现选队功能。这部分仿真模型结构如图12所示;

28

图12 选队部分模型结构

旅客进入大厅后,满足selectOutput6事件发生条件,CEL中该事件触发,该事件随机将90%的人分为单侧大厅选队,将10%的人分为双侧大厅选队。两种不同类型的旅客会调用whole和half两个不同的选队函数,其中half依据旅客实体当前所在位置的属性值,分别调用selectLeft和selectRight函数。所有选队函数都是为了确定选队范围(即行人会从那几条队列实体中选择),他们会将这个范围作为输入参数,调用queueSelect核心选队函数。核心选队函数会依据选队范围内队列当前的状态值(人数状态值、长度状态值)来挑选一定规则下的最佳队列,并根据该队列属性值、状态值来触发旅客活动、修改旅客参数。至此旅客进入队列实体的集合内。

第三部分,旅客离开,换队,调度行为部分

这个部分主要用于实现旅客购票后离开,旅客执行换队行为,旅客执行调度行为的功能。它包含了旅客有队列实体(queueClass)中退出来的一切行为。其结构如图13

图13 离开、换队、调度行为

所示;

29

其中由port1端口出来的是接受完服务准备离开的旅客,旅客由端口出来后满足触发selectOutput事件的条件,CEL表执行该事件。旅客实体会依据自身所在位置的属性值来判断从哪个出口离开大厅。在大厅出口处,触发数据输出事件,将旅客自身的在队列中的等待时间,在系统中的等待时间到处到外接Execel表中。至此该旅客实体完成整个仿真过程。

由port2端口出来的是处于换队或被调度状态的旅客。他们处于换队或被调度活动中。旅客出来后触发selectOutput5事件,依据旅客当前的状态值,判断出它是在换队还是在被调度。换队的旅客依据新的所在队列属性值开始旅客行走活动,进入相应队列中去。这个过程中会改变自身状态(由换队变为行走),改变自身属性(速度,所在位置等);改变所选队列状态(人数状态、长度状态等)。调度的旅客,首先会从队列出来到达另一侧大厅 ,之后二次选队的事件触发,进行二次选队。事件所调用函数依旧是选队时所调用函数,只不过输入的选队范围不同。这部分的流程如图14所示

等于1 判断行人状态值 等于2 行人在被调度 行人在换队 前往另一侧大厅 触发换队行为事件 触发被调度事件 速度属性值改为0.75m/s, 加入新队列实体,改变相应属性值、状态值 从左向右调度怎么调度 从右向左调度速度属性值改为1.5m/s 在右边窗口中选择队列 图14 离开、换队、被调度功能模块结构流程图

第四部分,排队及接受服务部分

30

在左边窗口中选择队列 触发选队活动


本科毕业设计案例-排队系统 - 图文(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2018非法集资试题--B卷(营销人员)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: