收藏 分享(赏)

MM1排队系统仿真matlab实验报告.doc

上传人:weiwoduzun 文档编号:2773097 上传时间:2018-09-27 格式:DOC 页数:10 大小:944.68KB
下载 相关 举报
MM1排队系统仿真matlab实验报告.doc_第1页
第1页 / 共10页
MM1排队系统仿真matlab实验报告.doc_第2页
第2页 / 共10页
MM1排队系统仿真matlab实验报告.doc_第3页
第3页 / 共10页
MM1排队系统仿真matlab实验报告.doc_第4页
第4页 / 共10页
MM1排队系统仿真matlab实验报告.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

1、M/M/1 排队系统实验报告一、实验目的本次实验要求实现 M/M/1 单窗口无限排队系统的系统仿真,利用事件调度法实现离散事件系统仿真,并统计平均队列长度以及平均等待时间等值,以与理论分析结果进行对比。二、实验原理根据排队论的知识我们知道,排队系统的分类是根据该系统中的顾客到达模式、服务模式、服务员数量以及服务规则等因素决定的。1、 顾客到达模式设到达过程是一个参数为 的 Poisson 过程,则长度为 的时间内到达 个tk呼叫的概率 服从 Poisson 分布,即 , ,其中 0etkktp!)(,210为一常数,表示了平均到达率或 Poisson 呼叫流的强度。2、 服务模式设每个呼叫的持

2、续时间为 ,服从参数为 的负指数分布,即其分布函数i为 1,0tPXte3、 服务规则先进先服务的规则(FIFO)4、 理论分析结果在该 M/M/1 系统中,设 ,则稳态时的平均等待队长为 ,顾客1Q的平均等待时间为 。T三、实验内容M/M/1 排队系统:实现了当顾客到达分布服从负指数分布,系统服务时间也服从负指数分布,单服务台系统,单队排队,按 FIFO(先入先出队列)方式服务。四、采用的语言MatLab 语言源代码:clear;clc;%M/M/1排队系统仿真SimTotal=input(请输入仿真顾客总数SimTotal=); %仿真顾客总数;Lambda=0.4; %到达率Lambda

3、;Mu=0.9; %服务率Mu;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;for i=2:SimTotalt_Arrive(

4、i)=t_Arrive(i-1)+Interval_Arrive(i);ArriveNum(i)=i;endt_Leave(1)=t_Arrive(1)+Interval_Serve(1);%顾客离开时间LeaveNum(1)=1;for i=2:SimTotalif t_Leave(i-1)=2QueLength(i)=CusNum(i)-1;elseQueLength(i)=0;endendQueLength_avg=sum(0 QueLength.*Time_interval 0 )/Timepoint(end);%系统平均等待队长%仿真图figure(1);set(1,position

5、,0,0,1000,700);subplot(2,2,1);title(各顾客到达时间和离去时间);stairs(0 ArriveNum,0 t_Arrive,b);hold on;stairs(0 LeaveNum,0 t_Leave,y);legend(到达时间,离去时间);hold off;subplot(2,2,2);stairs(Timepoint,CusNum,b)title(系统等待队长分布);xlabel(时间);ylabel(队长);subplot(2,2,3);title(各顾客在系统中的排队时间和等待时间);stairs(0 ArriveNum,0 t_Queue,b);

6、hold on;stairs(0 LeaveNum,0 t_Wait,y);hold off;legend(排队时间,等待时间);%仿真值与理论值比较disp(理论平均等待时间t_Wait_avg=,num2str(1/(Mu-Lambda);disp(理论平均排队时间t_Wait_avg=,num2str(Lambda/(Mu*(Mu-Lambda);disp(理论系统中平均顾客数=,num2str(Lambda/(Mu-Lambda);disp(理论系统中平均等待队长=,num2str(Lambda*Lambda/(Mu*(Mu-Lambda);disp(仿真平均等待时间t_Wait_av

7、g=,num2str(t_Wait_avg)disp(仿真平均排队时间t_Queue_avg=,num2str(t_Queue_avg)disp(仿真系统中平均顾客数=,num2str(CusNum_avg);disp(仿真系统中平均等待队长=,num2str(QueLength_avg);五、数据结构1.仿真设计算法(主要函数)利用负指数分布与泊松过程的关系,产生符合泊松过程的顾客流,产生符合负指数分布的随机变量作为每个顾客的服务时间:Interval_Arrive=-log(rand(1,SimTotal)/Lambda;%到达时间间隔,结果与调用exprnd(1/Lambda,m)函数产

8、生的结果相同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_

9、avg=sum(CusNum_fromStart.*Time_interval 0 )/Timepoint(end); %系统中平均顾客数计算QueLength_avg=sum(0 QueLength.*Time_interval 0 )/Timepoint(end); %系统平均等待队长2.算法的流程图开始计算第 1 个顾客的离开时间: i-2输入仿真人数计算第 i 个顾客的等待时间、离开时间、标示位: i+1标志位置 0:i=i+1系统是否接纳第i 个顾客?仿真时间是否越界?结束输出结果六、仿真结果分析顾客的平均等待时间与顾客的平均等待队长,计算其方差如下:仿 真 顾 客 总 数=1000

10、00 1 2 3 4 5 平 均 值 方 差平 均 等 待 时 间 2.023 1.9971 1.9945 1.9961 2.0043 2.003 0.000556360平 均 排 队 时 间 0.91147 0.8865 0.88293 0.88404 0.89495 0.89198 0.000563657平 均 顾 客 数 0.8101 0.79846 0.79334 0.79958 0.80433 0.80116 0.000160911平 均 等 待 队 长 0.365 0.35444 0.3512 0.35412 0.35915 0.35678 0.0001168736 7 8 9 1

11、0 理 论 值平 均 等 待 时 间 1.9738 2.0054 1.9911 1.9909 1.9927 2平 均 排 队 时 间 0.86612 0.89068 0.8832 0.87527 0.88503 0.88889中 平 均 顾 客 数 0.78545 0.8037 0.79797 0.79166 0.80024 0.8平 均 等 待 队 长 0.34465 0.35695 0.35395 0.34804 0.35542 0.35556仿 真 顾 客 总 数=1000000 1 2 3 4 5 平 均 值 方 差平 均 等 待 时 间 2.0029 1.9975 1.9943 2.

12、0019 2.0115 2.00162 0.000169888平 均 排 队 时 间 0.89209 0.88624 0.88494 0.891 0.89873 0.8906 0.000119522平 均 顾 客 数 0.80157 0.79955 0.79763 0.80013 0.80531 0.80084 0.000032986平 均 等 待 队 长 0.35702 0.35474 0.35394 0.35612 0.35982 0.35633 0.0000209406 7 8 9 10 理 论 值平 均 等 待 时 间 1.9991 1.9908 1.9965 2.0016 1.996

13、 2平 均 排 队 时 间 0.88623 0.88111 0.8849 0.88987 0.88652 0.88889平 均 顾 客 数 0.79824 0.79621 0.79865 0.79943 0.79755 0.8平 均 等 待 队 长 0.35387 0.35239 0.35399 0.35541 0.35424 0.35556从上表可以看出,通过这种模型和方法仿真的结果和理论值十分接近,增加仿真顾客数时,可以得到更理想的结果。但由于变量定义的限制,在仿真时顾客总数超过 1,500,000 时会溢出。证明使此静态仿真的思想对排队系统进行仿真是切实可行的。实验结果截图如下(SimT

14、otal 分别为 100、1000、10000、100000):(仿真顾客总数为 100000 和 1000000 时,其图像与 10000 的区别很小)七、遇到的问题及解决方法1.在算法设计阶段对计算平均队长时对应的时间段不够清楚,重新画出状态转移图后,引入变量 Timepoint 用来返回按时间排序的到达和离开的时间点,从而得到正确的时间间隔内的 CusNum,并由此计算出平均队长。2.在刚开始进行仿真时仿真顾客数设置较小,得到的仿真结果与理论值相差巨大,进行改进后,得到的结果与理论值相差不大。3.刚开始使用 exprnd(Mu,m)产生负指数分布,但运行时报错,上网查找资料后找到替代方法:改成 Interval_Serve=-log(rand(1,SimTotal)/Mu;方法生成负指数分布,运行正常。八、实验心得通过本次实验我对 M/M/1 单窗口无限排队系统有了更深的认识,同时对MatLab 编程语言更加熟悉,并了解到仿真在通信网中的重要作用。此次实验我受益匪浅。

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

当前位置:首页 > 研究报告 > 教育

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报