1、北邮信息工程通信网理论基础实验2报告M 排队系统信息与通信工程学院通信网理论基础实验报告班 级:姓 名:学 号:序 号:日 期: 通信网理论基础实验报告 实验二 M/M/1 排队系统一、实验目的 M/M/1 是最简单的排队系统,其假设到达过程是一个参数为 的 Poisson 过程,服务时间是参数为 的负指数分布,只有一个服务窗口,等待的位置有无穷多个,排队的方式是 FIFO。 M/M/1 排队系统的稳态分布、平均队列长度,等待时间的分布以及平均等待时间,可通过泊松过程、负指数分布、生灭过程以及 Little 公式等进行理论上的分析与求解。 本次实验要求实现 M/M/1 单窗口无限排队系统的系统
2、仿真,利用事件调度法实现离散事件系统仿真,并统计平均队列长度以及平均等待时间等值,以与理论分析结果进行对比。二、 实验内容 根据排队论的知识我们知道,排队系统的分类是根据该系统中的顾客到达模式、服务模式、服务员数量以及服务规则等因素决定的。 1、顾客到达模式 设到达过程是一个参数为 的 Poisson 过程,则长度为 的时间内到达 k 个呼叫的概率 服从 Poisson 分布,即 ,其中 0为一常数,表示了平均到达率或 Poisson 呼叫流的强度。 2、服务模式 设每个呼叫的持续时间为 ,服从参数 的负指数分布,即其分布函数为 。 3、服务规则 先进先服务的规则(FIFO) 4、理论分析结果
3、 在 该 M/M/1 系 统 中 , 设 ,则稳态时的平均等待队长为(不是 ,顾客的平均等待时间为。 第1页 通信网理论基础实验报告三、 实验内容 1、仿真时序图示例 本实验中的排队系统为当顾客到达分布服从负指数分布,系统服务时间也服从负指数分布,单服务台系统,单队排队,按 FIFO 方式服务为 M/M/1 排队系统。 理论上,我们定义服务员结束一次服务或者有顾客到达系统均为一次事件。 为第 i 个任何一类事件发生的时间,其时序关系如下图所示。 S1 S2 S3 S4 D2 D3 D4 D5 b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 t1 t2 c1 t3 c2 t4 c3
4、t5 150 t t0 A3 A4 A5 A1 A2 bi第 i 个任何一类事件发生的时间 ti第 i 个顾客到达类事件发生的时间 ci第 i 个顾客离开类事件发生的时间 Ai为第 i-1 个与第 i 个顾客到达时间间隔 Di第 i 个顾客排队等待的时间长度 Si第 i 个顾客服务的时间长度 顾客平均等待队长 及平均排队等待时间 的定义为 1 T 1 n Qt dt Ri T 0 Q n Q n T i 1 其中, 为在时间区间 上排队人数 乘以该区间长度。 1 n d n D n Di n i 1 Di 为第 i 个顾客排队等待时间。 第2页 通信网理论基础实验报告 2、仿真设计算法 (1)
5、利用负指数分布与泊松过程的关系,产生符合泊松过程的顾客流。 (2)分别构建一个顾客到达队列和一个顾客等待队列。顾客到达后,首先进入到达队列的队尾排队,并检测是否有顾客等待以及是否有服务台空闲,如果无人等待并且有服务员空闲则进入服务状态,否则顾客将进入等待队列的队尾等待。 (3)产生符合负指数分布的随机变量作为每个顾客的服务时间。 (4)当服务员结束一次服务后,就取出等待队列中位于队头的顾客进入服务状态,如果等待队列为空则服务台空闲等待下一位顾客的到来。 (5)由事件来触发仿真时钟的不断推进。每发生一次事件,记录下两次事件间隔的时间以及在该时间段内排队的人数。 (6)在系统达到稳态时,计算系统的
6、平均等待时间以及平均等待队长。 3、仿真结果分析 分析仿真数据,统计顾客的平均等待时间与顾客的平均等待队长,计算其方差,分析与理论计算结果的吻合程度,验证仿真程序的正确性。四、程序基本信息 1、设计语言及开发工具: MATLAB。 2、数据结构: 本次实验由于算法简单,每次计算的数据之间也不存在任何关系(独立)的,因此程序设计时只采用了诸如串、数组等简单形式用于存储数据,复杂的数据结构思想诸如链表、树等基本没有采用。 3、主要函数(算法): 本程序采用 MATLAB 语言编写,包含 4 个主要的 M 文件。其中calctheoqueuelength.m 和 calctheowaittime.m
7、 函数的算法比较简单,将在simulateMM1 中介绍。还有一个 MM1.fig 文件存储程序界面信息,不作介绍。 (1) MM1.m 文件 这个文件里涉及本次程序的窗口部分(GUI),以下仅对于实际操作有关的函数进行介绍。这些函数的都比较简单,因此它们的工作流程用文字说明。下页图是本程序的主界面。 function simulate_CallbackhObject eventdata handles 1 单击“开始仿真”按钮后触发的函数,实现给定到达率、离去率和顾客数的 M/M/1 系统仿真。它首先获取用户的输入并检验是否合法,然后调用simulateMM1 函数进行仿真并给出相应结果(平
8、均等待队长和等待时间)。 第3页 通信网理论基础实验报告 function draw1_CallbackhObject eventdata handles 2 单击左边的“理论曲线”按钮后触发的函数,按照给定的到达率精度和离去率画出平均等待队长和平均等待时间与到达率的理论关系曲线。它首先检验输入的合法性,并根据到达率精度和离去率(到达率需小于离去率)产生不同的到达率,分别调用 calctheowaittime 和 calctheoqueuelength 计算对应到达率和离去率下的理论平均等待队长和平均等待时间,产生理论曲线。这个函数不进行仿真,因此顾客数的变量没有使用。 function dr
9、aw3_CallbackhObject eventdata handles 3 单击左边“仿真曲线”按钮后触发的函数,按照给定的到达率精度、离去率和顾客数进行仿真并画出平均等待队长和平均等待时间与到达率的关系曲线。它首先检验输入的合法性,根据到达率精度和离去率产生不同的到达率,并调用 simulateMM1 进行仿真并画出曲线(画图的代码在 simulateMM1 里),另外它与 simulate_Callback 调用 simulateMM1 的方式是不同的,在介绍simulateMM1 函数时会详细说明。 function draw2_CallbackhObject eventdata h
10、andles 4 单击右边的“理论曲线”按钮后触发的函数,按照给定的离去率精度和到达率画出平均等待队长和平均等待时间与到达率的理论关系曲线。其流程与draw1_Callback 函数类似。 function draw4_CallbackhObject eventdata handles 5 第4页 通信网理论基础实验报告 单击右边“仿真曲线”按钮后触发的函数,按照给定的离去率精度、到达率和顾客数进行仿真并画出平均等待队长和平均等待时间与到达率的关系曲线。流程与 draw3_Callback 函数类似。 (2)simulateMM1.m 文件 本程序最重要的函数,实现的主要功能是:已知到达率、离
11、去率和总顾客数,进行 M/M/1 系统仿真,得出平均等待时间和平均等待队长随时间的分布,画出图形并与理论值进行比较; 它拥有 5 个输入参数: a. totalconsumers:顾客数(整数); b. arrivingrate:到达率(取值 01 的实数); c. leavingrate:离去率(取值 01 的实数,比到达率大); d. mode:运行模式,取值 0、1、2,对应三种模式,其中有两种是为 MM1 函数中的 draw3_Callback 和 draw4_Callback 设计的,具体见以下说明; e. firstrunning:取值为 0 或 1,在其中两种模式中判定是否为首次
12、运行(仿 真),具体见以下说明。 由于 M/M/1 是一个非常简单的排队系统,状态数少,且当到达率小于离去率时系统就可进入稳态,因此对它进行仿真,只需要通过事件的触发不断推动时钟前进即可,系统状态本身不需要用很多变量记录。这也是本程序的仿真设计思想。这个函数流程可分为四部分,前三部分都进行了推动时钟前进的操作。 本函数的流程较为复杂,以下用流程图说明整个函数的工作过程。某些比较特殊的地方会加一标注。 流程图第一部分: 第5页 通信网理论基础实验报告 本段流程主要产生整个系统仿真时产生的服从泊松过程的到达间隔和满足负指数分布的服务(离去)时间间隔,以便进行后续的仿真过程。 注释: (1) 产生满
13、足泊松过程(负指数分布)的时间间隔的方法: 由泊松过程的定义可得,长度为 的时间内到达 k 个呼叫的概率 服从 ,k1 时该式写成 ,两边取自然对数得 ,其中 在 MATLAB 中可用 rand 函数随机生成,因此实现该功能的语句为-logrand/x,其中 x 表示参数。 (2)产生时间间隔时,容易出现对应的到达时刻晚于离去时刻的情况。若果完全采用这些时间间隔仿真,就会发生系统空闲。系统空闲状态虽然也是M/M/1 的稳态,但由于本程序主要统计平均等待时间和等待队长,这些都是建立在系统中至少有一人的情况下的,因此如果不对这些导致系统空闲的时间间隔进行处理的话,累积下来,最终的仿真结果和理论值相
14、比会出现非常大的偏差。本程序的处理办法是让对应的离开时间间隔变长,使得当对应有一个顾客离开时,恰好有一个顾客到达。虽然这样系统不是在完全的泊松流下进行仿真,但结果要理想得多。 第6页 通信网理论基础实验报告 流程图第二部分: 本段流程根据前面生成的时间间隔完成所有的仿真工作。具体思想前面已有所描述。 流程图第三部分: 第7页 通信网理论基础实验报告 2 根据事件触发 时刻把整个时 间轴划分为若 干个区间 按照触发时刻推 动时钟前进,每 经过一个区间, 计算所有人的等 待时间和此刻系 统经过的时间1 到达时刻小于系统经 过的时间对应时刻2? 总顾客数加一, 到达时刻加上到 达时间间隔,获 得下一
15、个顾客的 到达时刻 计算和记录平均 队长和平均等待 时间,记录当前 事件触发时刻3 3 本段流程进行第三次推动时钟的操作,每经过一个事件触发的时刻计算和统计从开始仿真到当前时刻所有人的等待时间、系统经过的时间、平均等待队长和平均等待时间(前两项为后两项所用),为后面画图做好准备。 注释: (1)当前区间的所有人的等待时间的计算方法是队长乘以区间长度,通过当前事件的触发时刻和上次事件的触发时刻(注释(3)位置记录的)就可算得区间长度。 (2)这段流程用于统计到目前为止总共到达系统的顾客数。若是到达时刻小于系统经过的时间对应的时刻,表明这个区间里有顾客到来。 第8页 通信网理论基础实验报告 (3)
16、平均队长的计算方法:所有人的等待时间除以系统总共经过的时间, 1 n即 Q n Ri ,Ri 为所有人的等待时间;平均等待时间的计算方法:所有人 T i 1 1 n的等待时间除以总共到达系统的顾客数,即 d n Di n i 1 , Di 为第 i 个顾客排队等待时间。 流程图第四部分: 最后一段流程,根据工作模式要求作图。 三种工作模式(变量名 mode): 0:作平均等待队长、平均等待时间和它们的差值与时间的关系图。执行simulate_Callback 函数时按此模式调用 simulateMM1 函数。 1:作平均等待队长和平均等待时间与到达率的关系图。执行draw3_Callback
17、函数时按此模式调用 simulateMM1 函数。 第9页 通信网理论基础实验报告 2:作平均等待队长和平均等待时间与离去率的关系图。执行draw4_Callback 函数时按此模式调用 simulateMM1 函数。 注释: (1)按模式 1、2 工作时需要一个小判断,第一次运行时需要打开一个新的画图窗口,以后就不用了,否则最终图像会分散到许许多多窗口里。 (2)理论值计算方法:设 ,则稳态时的平均等待队长为,顾客的平均等待时间为。它们也是 calctheoqueuelength.m 和 calctheowaittime.m 函数的算法。因为这段算法在 MM1.m 函数中也要调用,因此单独写
18、了两个函数。五、程序运行结果与分析 1、M/M/1 系统仿真与给定 和 条件下系统的平均队列长度和平均等待时间的分布曲线: 即便采用相同的值,每次仿真出来的结果也是有区别的,以下只选取几组有代表性的结果。 (1) 0.2,0.5,顾客数为 500 (2) 0.2,0.5,顾客数为 5000 由上两组图对比可以看到,仿真的顾客数越长,最终结果越理想,因此建议顾客数不小于 1000。 (3) 0.39,0.4,顾客数 5000 第 10 页 通信网理论基础实验报告 由上图可见,当到达率与离去率近似相同时,系统仿真的误差较大,也就是说此时系统很难进入稳态。 2、平均等待队长和平均等待时间随 和 的变
19、化曲线: 这里需要输入一个精度,精度越小,图形越精密,当然随之而来的是程序运行的时间增加。另外本程序的作图不考虑到达率大于或等于离去率的情况,因为那时系统已经无法进入稳态,作图没有意义。 (1)平均等待队长和平均等待时间随 的变化曲线 此处输入的离去率 是横坐标的终点,取 0.99,精度 0.001,顾客数 5000 理论曲线 仿真曲线,有误差,但大致走向相同 第 11 页 通信网理论基础实验报告 由上面两图可得,当到达率远小于离去率时,平均等待队长和时间都很小,但当到达率逐渐接近离去率时,平均等待队长和时间以指数形式增长,最终将趋近于正无穷。 (2) 平均等待队长和时间随离去率 的变化曲线
20、此处输入的到达率是横坐标的起点,取 0.01,精度 0.001,顾客数 5000 理论曲线 仿真曲线 该曲线基本就是(1)中曲线颠倒过来的产物。当离去率和到达率近似相同时,平均等待队长和时间都非常大,但当离去率逐渐远离到达率时,平均等待队长和时间将急剧减小,最终趋近于 0。六、遇到的主要问题 1、仿真结果出现重大错误(如平均队长出现负值) 第 12 页 通信网理论基础实验报告 到达率始终要小于离去率的,不满足这一点的系统无法进入稳态,当然也就无法正确仿真。 2、仿真结果和理论值有较大的偏差。 这是本次实验我遇到的最为棘手的问题,可能源于以下几种情况。 (1) 仿真时出现系统空闲。针对它的解决方法在前面有所提及。 (2) 平均等待时间和平均等待队长的计算方法有误。这个需要慢慢修 改,保证改正后的结果与正确算法完全相同。 (3) 到达率和离去率比较接近,此时系统需要更多顾客数,否则结果误 差会比较大。 (4) 要指出的一点是,老师给出的指导书有一处地方是错的,平均等待 队长的理论公式是或而不是。这点也曾经困扰我很久。 3、使用 plotxy函数作图时,要求 x 和 y 向量长度相同,否则会出现错误。 修改 x 和 y 向量使其长度相同即可,必要时可增减数值。七、实验总结 第 13 页
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1