用Matlab实现排队过程的仿真

上传人:M****1 文档编号:498910352 上传时间:2022-10-04 格式:DOC 页数:3 大小:1.06MB
返回 下载 相关 举报
用Matlab实现排队过程的仿真_第1页
第1页 / 共3页
用Matlab实现排队过程的仿真_第2页
第2页 / 共3页
用Matlab实现排队过程的仿真_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《用Matlab实现排队过程的仿真》由会员分享,可在线阅读,更多相关《用Matlab实现排队过程的仿真(3页珍藏版)》请在金锄头文库上搜索。

1、用 Matlab 实现排队过程的仿真李鹏王珊珊摘 要: 排队问题仿真的目的是要寻找服务对象与服务设置之间的最佳配置, 保证系统具有最佳的服务效率与最合理的配置。通过 Matlab 平台对单服务台有限队长的排队系统进行过程仿真, 可以协助设计人员分析顾客的需求, 从而合理规划出符合实际条件的服务设施。关键词: 排队;Matlab; 仿真实现1引言排队是日常生活中经常遇到的现象 , 例如: 出行坐火车, 等待检票进站的排队; 到食堂打饭所形成的排队; 学校打预防 针、 体检所形成的排队; 看电影、 旅游时, 前往售票处购票形 成的排队等; 另一种排队是物的排队, 例如: 使用 FTP 或 P2P

2、下载传递文件; 流水线上生产的产品等待接受检验; 维修室的 故障仪器等待维修等。 排队现象的要素包括两个方面的内容 : 一是需要接受服务的顾客; 二是提供服务的服务台。 最近几十 年来, 排队理论在计算机网络、 通信、 交通以及其它公共事业 领域的应用越来越广泛, 已成为分析和设计这些系统的一个不 可或缺的工具。Matlab 是 美 国 Math Works 公司研制开发的一套用于 数 值 计算的交互式软件系统, 具有强大的数值分析、 矩阵运算、 信 息处理、 图形显示等功能, 其强大的数据处理能力和丰富的工采用面向对象 的 仿 真 方 法 , 选取事件发生时刻为仿真时 钟。 由于 Matla

3、b 中的计算均为矩阵 计 算 , 故利用矩阵形式建 立 事 件 参 数 表 events, 矩 阵 events 的行表示顾客的 不 同 参 数 , 列表示不同的顾客。 针对 M/M/1/N/ 模型的特点, 建立顾客信 息如表 1 所示。表 1 顾客信息表其中, 标志位具箱使得它 的编程极为方便 。 正是基于此原因 ,Matlab 软件来对 M/M/1/N/ 排队模型进行仿真。2排队模型单服务台排队系统的结构模型如图 1 所示。才 选 择 了仿真算法原理建立顾客信息后 , 面 向 对象的仿真模型算法分为以下两 3.2步。321 顾客信息初始化(1) 根据到达率 和 服 务 率 来确定每个顾客的

4、到达时 间间隔和服务时间间隔。 服务间隔时间可以用负指数分布函数 exprnd () 来生成。 由于泊松过程的时间间隔也服从负指数分 布, 故亦可由此函数生成顾客到达时间间隔。 需要注意的是, exprnd () 的输入参数不是到达率 和 服 务 率 , 而 是 平 均 到 达时间间隔 1/ 和平均服务时间 1/。(2) 根据到达时间间隔, 确定每个顾客的到达时刻。 学习 过 C 语言的人习惯于使用 for 循 环 来 实 现 数 值 的 累 加 , 但 for 循环会引起运算复杂度的增加 , 而 在 Matlab 仿 真 环 境 中 , 提图 1 单服务台排队系统的结构模型M/M/1/N/

5、排队模型表示顾客源为无限, 顾客的到达相互独立, 到达规律服从泊松分布 ,平均到达 率为 ;单 服 务 台 ,队长限制为 N (即系统中最多允许有 N 个顾客在排队, 再来的顾客将被拒绝进入系统), 先到先服务, 各顾客的服务时间相 互独立, 且服从负指数分布, 平均服务率为 。3问题仿真建立顾客信息31供了一个方便的函数 cumsum () 来实现累加功能, 读者可以直接引用。(3) 对当前顾客进行初始化。 第 1 个到达系统的顾客不需 要等待就可以直接接受服务, 其离开时刻等于到达时刻与服务 时间之和。322 进队出队仿真在当前顾客到达时刻, 根据系统内已有的顾客数来确定是 否接纳该顾客。

6、 若接纳, 则根据前一顾客的离开时刻来确定当 前顾客的等待时间、 离开时间和标志位; 若拒绝, 则标志位置 为 0。仿真的具体流程如图 2 所示。%初始化顾客源%*%总仿真时间Total_time = 10;%队列最大长度N = 20;%到达率与服务率lambda = 10;mu = 6;%平均到达时间与平均服务时间arr_mean = 1/lambda;ser_mean = 1/mu;%可能到达的最大顾客数(round:四舍五入求整数)arr_num = round(Total_time*lambda*2);%顾客事件表初始化events = ;%按负指数分布产生各顾客达到时间间隔event

7、s(1,:) = exprnd(arr_mean,1,arr_num);%各顾客的到达时刻等于时间间隔的累积和events(1,:) = cumsum(events(1,:);%按负指数分布产生各顾客服务时间events(2,:) = exprnd(ser_mean,1,arr_num);%计算仿真顾客个数,即到达时刻在仿真时间内的顾客数len_sim = sum(events(1,:)Total_time break;%如果第 i 个顾客的到达时间未超过仿真时间,则计算在%到达时刻系统中已有的顾客个数else number = sum(events(4,member) events(1,i)

8、;%如果系统已满,则系统拒绝第 i 个顾客,其标志位置 0 if number = N+1events(5,i) = 0;%如果系统为空,则第 i 个顾客直接接受服务else if number = 0%其等待时间为 0图 2仿真流程图4程序实现以单服务台的售票处为例, 假设各顾客的到达时间间隔和 服务时间均服从负指数分布, 到达率 = 10 人/分钟, 服务率 = 6 人/分钟, 等待队长 N = 20 人, 仿真时间 Total_time = 10 分钟。仿真程序代码编写如下:2009. 1516clearclc%*图 3顾客到达时间与离开时间曲线图图 4顾客停留时间与等待时间曲线图并给出

9、了仿真结果。 本方法适用于生活中的许多排队案例的分析, 进行必要改进即可实现多服务模型的分析, 可以为工程设 计人员进行排队规划提供参考。参考文献1 唐应辉, 唐小我. 排队论-基础与分析技术. 科技出版社,2006.2 韩中庚, 郭晓丽, 杜建平, 等. 实用运筹学-模型、 方法 与计算. 清华大学出版社, 2007.3 Recktenwald, 伍卫国, 万群, 等译. 数值方法和 MATLAB实现与应用. 机械工业出版社, 2004.4 高静涛, 史百战. 基于 MATLAB 的排队问题仿真. 武汉工 业学院学报, 2006.(收 稿 日 期 : 2009-5-16)5仿真结果使用本程序

10、仿真出的各顾客到达时刻与离开时刻曲线, 等 待时间与停留时间曲线, 如图 3、 图 4 所示。6结语通 过 Matlab 平台实现了排 队 论 中 M/M/1/N/ 模 型 的 过 程 仿真, 以单服务台的售票处为例, 详细阐述程序 的工作原理 ,events(3,i) = 0;%其离开时刻等于到达时刻与服务时间之和events(4,i) = events(1,i)+events(2,i);%其标志位置 1 events(5,i) = 1;member = member,i;%如果系统有顾客正在接受服务,且系统等待队列未满,则%第 i 个顾客进入系统else len_mem = length(

11、member);%其等待时间等于队列中前一个顾客的离开时刻减去其到%达时刻events(3,i)=events(4,member(len_mem)-events(1,i);%其离开时刻等于队列中前一个顾客的离开时刻加上其服%务时间events(4,i)=events(4,member(len_mem)+events(2,i);%标识位表示其进入系统后,系统内共有的顾客数events(5,i) = number+1; member = member,i; endend endend%仿真结束时,进入系统的总顾客数len_mem = length(member);%*% 输出结果%*%绘制在仿真时

12、间内,进入系统的所有顾客的到达时刻和离%开时刻曲线图(stairs:绘制二维阶梯图) stairs(0 events(1,member),0:len_mem); hold on;stairs(0 events(4,member),0:len_mem,.-r);legend( 到达时间 , 离开时间 );hold off;grid on;%绘制在仿真时间内,进入系统的所有顾客的停留时间和等%待时间曲线图(plot:绘制二维线性图) figure; plot(1:len_mem,events(3,member),r-*,1:len_mem,events(2,member)+events(3,member),k-);legend( 等待时间 , 停留时间 );grid on;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号