单服务排队系统MATLAB仿真程序.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单服务台系统 MATLAB仿真 一、 引言 排队是日常生活中经常遇到的现象。 通常 , 当人、物体或是信息的到达速率大于完成服务的 速率时 , 即出现排队现象。 排队越长 , 意味着浪费的时间越多 , 系统的效率也越低。 在日常 生活中 , 经常遇到排队现象 , 如开车上班、 在超市等待结账、 工厂中等待加工的工件以及待 修的机器等。总之 , 排队现象是随处可见的。排队理论是运作管理中最重要的领域之一 , 它是计划、工作设计、存货控制及其他一些问题的基础。 Matlab 是 MathWorks 公司开发的 科学计算软件 , 它以其强大的计算和绘图功能、 大量稳定可靠的算法库、 简洁高效的编程语 言以及庞大的用户群成为数学计算工具方面的标准 , 几乎所有的工程计算领域 ,Matlab 都 有相应的软件工具箱。选用 Matlab 软件正是基于 Matlab 的诸多优点。 二、 排队模型 三.仿真算法原理 (1)顾客信息初始化 根据到达率λ 和服务率 μ来确定每个顾客的到达时间间隔和服务时间间隔。 服务间隔 时间可以用负指数分布函数 exprnd() 来生成 。由于泊松过程的时间间隔也服从负指数分布 , 故亦可由此函数生成顾客到达时间间隔 。需要注意的是 exprnd() 的输入参数不是到达率 λ 和服务率μ 而是平均到达时间间隔 1/ λ和平均服务时间 1/ μ。 根据到达时间间隔 , 确定每个顾客的到达时刻 . 学习过 C 语言的人习惯于使用 FOR 循 环来实现数值的累加 , 但 FOR循环会引起运算复杂度的增加 而在 MATLAB仿真环境中 , 提 供了一个方便的函数 cumsum() 来实现累加功能 读者可以直接引用 对当前顾客进行初始化。 第 1 个到达系统的顾客不需要等待就可以直接接受服务 其离 开时刻等于到达时刻与服务时间之和。 (2 )进队出队仿真 在当前顾客到达时刻, 根据系统内已有的顾客数来确定是否接纳该顾客。 若接纳 则 根据前一顾客的离开时刻来确定当前顾客的等待时间 、离开时间和标志位 ;若拒绝, 则 标志位置为 0. 流程图如下: 四、 程序实现 单服务台服务,服务参数 M/M/1,λ= μ=,排队规则为 FIFO,以分为单位,仿真时间 240 分钟。 仿真程序代码如下 %总仿真时间 Total_time = 240; %到达率与服务率 lambda = ; mu =; %平均到达时间与平均服务时间 arr_mean = 1/lambda; ser_mean = 1/mu; %可能到达的最大顾客数( round :四舍五入求整数) arr_num = round(Total_time*lambda*2); %顾客事件表初始化 events = []; %按负指数分布产生各顾客达到时间间隔 events(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); %************

文档评论(0)

wcs5162 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档