优先级队列的应用.docx
《优先级队列的应用.docx》由会员分享,可在线阅读,更多相关《优先级队列的应用.docx(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、多服务台排队系统的模拟一、与单服务台排队系统相比在多服务台系统中,先到达的顾客先获得服务,这个规章仍旧存在;但后获得服务的顾客可能先离开,这是由于每个顾客要求的服务时间是不一样的。假如各科i要 求的是一个简单业务,服务台j供应服务;而顾客i+1要求的是一个简洁业务,服务台k供应服 务,那么顾客i+1虽然比顾客i晚到达,却比顾客i先离开。1. 在单服务台系统中,到达次序和离开次序是全都的,所以只需要一个先进先出的队列;在多服务台系统中,离开大事不再与到达大事保持全都,先处理的到达大事对应的离开大事可能 比后处理的到达大事对应的离开大事发生得晚,因此需要一个优先级队列,将大事发生得时间作 为优先级
2、,发生时间早的大事先处理,发生时间晚的大事后处理。二、多服务台排队系统模拟过程.模拟开头时,产生全部的到达大事,存入优先级队列,此时队列只有到达大事。1 .模拟器开头处理大事。首先从队列中取出一个大事,这是第一个顾客的到达大事,依据各科的 服务要求生成对应的服务时间,当前时间+服务时间=这个顾客的离开时间,生成一个这个时候离 开的大事插入队列,这样在队列中就有了两类大事:到达大事和离开大事。2 .这样模拟器从队列中取出的大事也可能是离开大事,这时只要将这个离开大事从队列中删去, 为它服务的服务台就可以为别的顾客服务。综上:(1)产生全部的顾客到达大事,存入大事队列;(2)模拟器从大事队列中取大
3、事,依据不同的大事类型处理大事。若是到达大事,先检查有没有空闲的服务台,假如有,则为此顾客生成服务时间,并产生 一个离开大事,插入大事队列。假如处理到达大事时,没有空闲的服务台,则该顾客进入到等待队列排队。等待队列是一 个一般的先进先出的队列。(3)假如处理的是离开大事,则释放该服务台。假如此时等待队列有人排队,则服务台为他服 务,并统计等待时间,假如等待队列没有人排队则置服务台为空闲。三、伪代码产生CustomNum个顾客的到达大事,按时间的大小存入大事队列;置等待队列为空;置全部柜台为空闲;设置等待时间为0;While(大事队列非空)队头元素出列;设置当前时间为该大事发生的时间;switc
4、h (大事类型)case到达:if (柜台有空)柜台数T;生成所需的服务时间;修改大事类型为“离开”;设置大事发生时间为当前时间+服务时间;重新存入大事队列;else将该大事存入等待队列;case离开:if (等待队列非空)队头元素出队;统计该顾客的等待时间;生成所需的服务时间;修改大事类型为“离开”;设置大事发生时间为当前时间+服务时间;存入大事队列;else空闲柜台+1;计算平均等待时间;返回;四、代码分析代码清单6-9模拟类的定义class simulator以下定义了保存模拟参数的数据成员int noOfServer; /服务台的个数int arrival Low; 到达间隔时间的下界
5、int arrivalHigh; /到达间隔时间的上界int serviceTimeLow; 服务间隔时间的下界int serviceTimeHigh; 服务间隔时间上界int customNum; 模拟的顾客数struct eventT定义了一个私有内嵌类eventT,用于保存一个大事信息,是大事队列和等待队 列中的元素类型,eventT有两个数据成员,time表示大事发生的时间,type表示大事类型 int time; 大事的大小取决于大事发生的时间,发生时间早的大事优先级高,发生时间晚的 大事优先级低int type; 大事类型,0为到达,1为离开bool operator(const
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 优先级 队列 应用
限制150内