matlab单服务台排队系统实验报告

合集下载

基于MatLab的排队系统仿真研究

基于MatLab的排队系统仿真研究

/(-  ̄ 1p) 一
客户到达
— — — — — — —
— — — 型 H 器 童 f l I — — — 丽辑 —圭 —塑— 1 — —4 — — ~
f ) / c 统 的 数 学 特 性 3 M M, 系 M M/ 的 排 队 系 统 有 c台服 务 器 . 台服 务 器 独 立 / e 每 工 作 . 具 有 相 同分 布 的 服 务 时 间 , 们 假 设 所 有 服 务 且 我
0 引 言
排 队论 是 研 究 系 统 由于 随 机 因 素 的干 扰 而 出 现 排 队现 象 的一 门学 科 排 队是 日常 生 活 中经 常 遇 到 的 现 象 。例 如 : 出行 坐 火 车等 待 检票 进 站 的 排 队 ; 食 堂 打 到 饭所 形成的排 队 ; 校 打预防针 , 检所 形成 的排 队 ; 学 体 看 电影 、 游 时前 往售 票 处 购 票 形 成 的排 队等 。 近 几 旅 最
服 务 效 率 与 最合 理 的 配 置 。应 用 Ma a t b对 M/ c M / / / 等排 队 系 统进 行 仿 真 , 仿 L M/ , M c N 对
真 结 果进 行 评 估 , 果 表 明 , 方 法是 切 实 可行 的。 结 该
关 键 词 :仿 真 ;MaL b¥言 ;排 队 系统 ;马可 夫过 程 ta i
图 1 单 服 务 台 排 队 系 统 的 结构 模 型
台是空 的概率 P, n所有服务 台都在忙 的概率 P , 由下面
12 排 队 系统 的数 学特 性 .
( ) 人记 号 和重 要 度 量 参 数 1引
收 稿 日期 :0 0 7 2 2 1 —0 ~ 0 修 稿 日期 :0 0 0 —1 21— 8 1

排队系统仿真matlab实验报告

排队系统仿真matlab实验报告

M/M/1排队系统实验报告一、实验目的本次实验要求实现M/M/1单窗口无限排队系统的系统仿真,利用事件调度法实现离散事件系统仿真,并统计平均队列长度以及平均等待时间等值,以与理论分析结果进行对比。

二、实验原理根据排队论的知识我们知道,排队系统的分类是根据该系统中的顾客到达模式、服务模式、服务员数量以及服务规则等因素决定的。

1、 顾客到达模式设到达过程是一个参数为λ的Poisson 过程,则长度为t 的时间内到达k 个呼叫的概率 服从Poisson 分布,即e t kk k t t p λλ-=!)()(,⋅⋅⋅⋅⋅⋅⋅⋅⋅=,2,1,0k ,其中λ>0为一常数,表示了平均到达率或Poisson 呼叫流的强度。

2、 服务模式设每个呼叫的持续时间为i τ,服从参数为μ的负指数分布,即其分布函数为{}1,0t P X t e t μ-<=-≥3、 服务规则先进先服务的规则(FIFO )4、 理论分析结果在该M/M/1系统中,设λρμ=,则稳态时的平均等待队长为1Q ρλρ=-,顾客的平均等待时间为T ρμλ=-。

三、实验内容M/M/1排队系统:实现了当顾客到达分布服从负指数分布,系统服务时间也服从负指数分布,单服务台系统,单队排队,按FIFO (先入先出队列)方式服务。

四、采用的语言MatLab 语言源代码:clear;clc;%M/M/1排队系统仿真SimTotal=input('请输入仿真顾客总数SimTotal='); %仿真顾客总数;Lambda=0.4; %到达率Lambda;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(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)<t_Arrive(i)t_Leave(i)=t_Arrive(i)+Interval_Serve(i);elset_Leave(i)=t_Leave(i-1)+Interval_Serve(i);endLeaveNum(i)=i;endt_Wait=t_Leave-t_Arrive; %各顾客在系统中的等待时间t_Wait_avg=mean(t_Wait);t_Queue=t_Wait-Interval_Serve;%各顾客在系统中的排队时间t_Queue_avg=mean(t_Queue);Timepoint=[t_Arrive,t_Leave];%系统中顾客数随时间的变化Timepoint=sort(Timepoint);ArriveFlag=zeros(size(Timepoint));%到达时间标志CusNum=zeros(size(Timepoint));temp=2;CusNum(1)=1;for i=2:length(Timepoint)if (temp<=length(t_Arrive))&&(Timepoint(i)==t_Arrive(temp)) CusNum(i)=CusNum(i-1)+1;temp=temp+1;ArriveFlag(i)=1;elseCusNum(i)=CusNum(i-1)-1;endend%系统中平均顾客数计算Time_interval=zeros(size(Timepoint));Time_interval(1)=t_Arrive(1);for i=2:length(Timepoint)Time_interval(i)=Timepoint(i)-Timepoint(i-1);endCusNum_fromStart=[0 CusNum];CusNum_avg=sum(CusNum_fromStart.*[Time_interval 0] )/Timepoint(end);QueLength=zeros(size(CusNum));for i=1:length(CusNum)if CusNum(i)>=2QueLength(i)=CusNum(i)-1;elseQueLength(i)=0;endendQueLength_avg=sum([0 QueLength].*[Time_interval 0] )/Timepoint(end);%系统平均等待队长%仿真图figure(1);set(1,'position',[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');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_avg=',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)函数产生的结果相同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; %各顾客在系统中的排队时间由事件来触发仿真时钟的不断推进。

matlab单服务台排队系统实验报告

matlab单服务台排队系统实验报告

matlab单服务台排队系统实验报告matlab 单服务台排队系统实验报告⼀、实验⽬的本次实验要求实现M/M/1单窗⼝⽆限排队系统的系统仿真,利⽤事件调度法实现离散事件系统仿真,并统计平均队列长度以及平均等待时间等值,以与理论分析结果进⾏对⽐。

⼆、实验原理根据排队论的知识我们知道,排队系统的分类是根据该系统中的顾客到达模式、服务模式、服务员数量以及服务规则等因素决定的。

1、顾客到达模式设到达过程是⼀个参数为λ的Poisson 过程,则长度为t 的时间内到达k 个呼叫的概率服从Poisson 分布,即etkk k t t p λλ-=!)()(,=,2,1,0k ,其中λ>0为⼀常数,表⽰了平均到达率或Poisson 呼叫流的强度。

2、服务模式设每个呼叫的持续时间为i τ,服从参数为µ的负指数分布,即其分布函数为{}1,0t P X t e t µ-<=-≥3、服务规则先进先服务的规则(FIFO ) 4、理论分析结果在该M/M/1系统中,设λρµ=,则稳态时的平均等待队长为1Q ρλρ=-,顾客的平均等待时间为T ρµλ=-。

三、实验内容M/M/1排队系统:实现了当顾客到达分布服从负指数分布,系统服务时间也服从负指数分布,单服务台系统,单队排队,按FIFO ⽅式服务。

四、采⽤的语⾔MatLab 语⾔源代码:clear; clc;%M/M/1排队系统仿真SimTotal=input('请输⼊仿真顾客总数SimTotal='); %仿真顾客总数;Lambda=0.4; %到达率Lambda;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(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)t_Leave(i)=t_Arrive(i)+Interval_Serve(i);elset_Leave(i)=t_Leave(i-1)+Interval_Serve(i);endLeaveNum(i)=i;endt_Wait=t_Leave-t_Arrive; %各顾客在系统中的等待时间t_Wait_avg=mean(t_Wait);t_Queue=t_Wait-Interval_Serve;%各顾客在系统中的排队时间t_Queue_avg=mean(t_Queue);Timepoint=[t_Arrive,t_Leave];%系统中顾客数随时间的变化Timepoint=sort(Timepoint);ArriveFlag=zeros(size(Timepoint));%到达时间标志CusNum=zeros(size(Timepoint));temp=2;CusNum(1)=1;for i=2:length(Timepoint)if (temp<=length(t_Arrive))&&(Timepoint(i)==t_Arrive(temp)) CusNum(i)=CusNum(i-1)+1;temp=temp+1;ArriveFlag(i)=1;CusNum(i)=CusNum(i-1)-1;endend%系统中平均顾客数计算Time_interval=zeros(size(Timepoint));Time_interval(1)=t_Arrive(1);for i=2:length(Timepoint)Time_interval(i)=Timepoint(i)-Timepoint(i-1);endCusNum_fromStart=[0 CusNum];CusNum_avg=sum(CusNum_fromStart.*[Time_interval 0] )/Timepoint(end);QueLength=zeros(size(CusNum));for i=1:length(CusNum)if CusNum(i)>=2QueLength(i)=CusNum(i)-1;elseQueLength(i)=0;endendQueLength_avg=sum([0 QueLength].*[Time_interval 0] )/Timepoint(end);%系统平均等待队长%仿真图figure(1);set(1,'position',[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');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_avg=',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)函数产⽣的结果相同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; %各顾客在系统中的排队时间由事件来触发仿真时钟的不断推进。

实验2单服务台单队列排队系统仿真

实验2单服务台单队列排队系统仿真

实验2单服务台单队列排队系统仿真一、学习目的1.熟悉仿确实特点2.学习如何建构模型3.熟悉eM-Plant基本的对象与操作4.掌握排队系统的特点与仿确实实现方法二、问题描述该银行服务窗口为每个到达的顾客服务的时间是随机的,表2.4是顾客服务时间纪录的统计结果表2.4 每个顾客服务时间的概率分布服务时间(min)概率密度累计概率1 0.1 0.12 0.2 0.33 0.3 0.64 0.25 0.855 0.1 0.956 0.05 1.0关于上述这样一个单服务待排队系统,仿真分析30天,分析该系统中顾客的到达、等待与被服务情况,与银行工作人员的服务与空闲情况。

三、系统建模3.1 仿真目标通过对银行排队系统的仿真,研究银行系统的服务水平与改善银行服务水平的方法,为银行提高顾客满意度,优化顾客服务流程服务。

3.2.系统建模3.2.1 系统调研1. 系统结构: 银行服务大厅的布局, 涉及的服务设备2. 系统的工艺参数: 到达-取号-等待-服务-离开3. 系统的动态参数: 顾客的到达时间间隔, 工作人员的服务时间4. 逻辑参数: 排队规则, 先到先服务5. 系统的状态参数: 排队队列是否为空, 假如不为空队长是多少, 服务台是否为空6. 系统的输入输出变量:输入变量确定其分布与特征值,顾客的到达时间间隔的概率分布表与每个顾客被服务时间的概率分布. 输出变量根据仿真目标设定. 包含队列的平均队长、最大队长、仿真结束时队长、总服务人员、每个顾客的平均服务时间、顾客平均排队等待服务时间、业务员利用率等。

3.2.2系统假设1.取号机前无排队,取号时间为02.顾客排队符合先进先出的排队规则3.一个服务台一次只能对一个顾客服务4.所有顾客只有一种单一服务5.仿真时间为1个工作日(8小时)6.等候区的长度为无限长3.2.3系统建模系统模型:3.2.4 仿真模型1.实体:银行系统中的实体是人(主动体)2.属性:到达时间间隔、同意服务的时间、同意服务类型3.事件:顾客到达、开始取号、取号结束、进入队列、出队列、同意服务、服务完成、离开银行。

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

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

单服务排队系统M A T L A B仿真程序(总28页)-CAL-FENGHAI.-(YICAI)-Company One1-CAL-本页仅作为文档封面,使用请直接删除单服务台系统MATLAB仿真学号:1040408115 姓名:缪晨一、引言排队是日常生活中经常遇到的现象。

通常 ,当人、物体或是信息的到达速率大于完成服务的速率时 ,即出现排队现象。

排队越长 ,意味着浪费的时间越多 ,系统的效率也越低。

在日常生活中 ,经常遇到排队现象 ,如开车上班、在超市等待结账、工厂中等待加工的工件以及待修的机器等。

总之 ,排队现象是随处可见的。

排队理论是运作管理中最重要的领域之一 ,它是计划、工作设计、存货控制及其他一些问题的基础。

Matlab是 MathWorks公司开发的科学计算软件 ,它以其强大的计算和绘图功能、大量稳定可靠的算法库、简洁高效的编程语言以及庞大的用户群成为数学计算工具方面的标准 ,几乎所有的工程计算领域 ,Matlab都有相应的软件工具箱。

选用 Matlab软件正是基于 Matlab的诸多优点。

二、排队模型三.仿真算法原理(1)顾客信息初始化根据到达率λ和服务率µ来确定每个顾客的到达时间间隔和服务时间间隔。

服务间隔时间可以用负指数分布函数exprnd()来生成。

由于泊松过程的时间间隔也服从负指数分布, 故亦可由此函数生成顾客到达时间间隔。

需要注意的是exprnd()的输入参数不是到达率λ和服务率µ 而是平均到达时间间隔1/λ和平均服务时间1/µ。

根据到达时间间隔 ,确定每个顾客的到达时刻. 学习过C 语言的人习惯于使用 FOR循环来实现数值的累加, 但FOR循环会引起运算复杂度的增加而在MATLAB 仿真环境中, 提供了一个方便的函数cumsum() 来实现累加功能读者可以直接引用对当前顾客进行初始化。

第1 个到达系统的顾客不需要等待就可以直接接受服务其离开时刻等于到达时刻与服务时间之和。

单服务台排队系统建模与仿真研究报告

单服务台排队系统建模与仿真研究报告

物流系统建模与仿真单服务台排队系统仿真研究报告——选重庆大学A区门口中国银行分行某一服务窗口为单服务台排队系统研究对象一、系统基本背景社会的进步越来越快,人们的生活节奏也随之越来越快。

在科技的发展,新技术的普及下, 我国的银行业以计算机和信息技术、互联网技术为前提, 通过大量资金和科技的投入, 不断地开发出新产品和新业务。

另外有网上银行、支付宝等新业务的出现, 大大提高了工作效率。

然而现代的金融服务并不是都可以靠刷卡来解决, 许多技术还不完善, 这些新技术也并不适合所有顾客群,去银行办理业务的顾客仍然经常性地出现排队现象。

顾客等待时间过长, 造成顾客满意度下降, 矛盾较为突出, 因此本报告试利用单服务台排队论的方法, 定性定量地对具有排队等候现象的银行服务系统进行统计调查与分析研究,希望能帮助改进银行工作效率, 优化系统的运营。

本报告研究对象为中国银行重庆大学处分行某一服务窗口,数据取自银行内唯一非现金业务柜台。

研究对象的选取虽然不是最典型的,但是综合考虑了研究地域范围和小组成员作业时间有限,另有其他方案由于各种原因无法进行,故选择离学校较近的有代表性的中国银行中的服务窗口作为最终方案。

中国银行简介:中国银行是中国历史最为悠久的银行之一,在大家对银行的概念中有着一定地位。

中国银行主营传统商业银行业务,包括公司金融业务、个人金融业务和金融市场业务。

公司业务以信贷产品为基础,致力于为客户提供个性化、创新的金融服务和融资、财务解决方案。

个人金融业务主要针对个人客户的金融需求,提供包括储蓄存款、消费信贷和银行卡在内的服务。

作为中国金融行业的百年品牌,中国银行在稳健经营的同时,积极进取,不断创新,创造了国内银行业的许多第一,在国际结算、外汇资金和贸易融资等领域得到业界和客户的广泛认可和赞誉。

二、系统描述该银行工作时间为上午8:30至下午16:30(周一至周日),另周末不办理对公业务,属于每天8小时工作制。

综合实验四 排队问题的离散系统模拟实验

综合实验四  排队问题的离散系统模拟实验

综合实验四 排队问题的离散系统模拟实验一.实验目的1.了解排队论;2. 通过对每个个别的随机服务现象的统计研究,找出反映这些随机现象平均特性的规律;3. 通过实例掌握简单的离散事件系统模拟的基本方法及其MATLAB 实现方法。

二.实验内容单服务员的排队模型:在某商店有一个售货员,顾客陆续来到,售货员逐个地接待顾客.当到来的顾客较多时,一部分顾客便须排队等待,被接待后的顾客便离开商店.设:a .顾客到来间隔时间服从参数为0.1的指数分布.b .对顾客的服务时间服从[4,15]上的均匀分布.c .排队按先到先服务规则,队长无限制.并假定一个工作日为8小时,时间以分钟为单位。

要求:(1) 模拟一个工作日内完成服务的个数及顾客平均等待时间t .(2) 模拟100个工作日,求出平均每日完成服务的个数及每日顾客的平均等待时间。

三.实验要求写出实验步骤、结果显示及分析四.实验分析本实验采用蒙特卡洛(Monte Carlo )模拟方法,蒙特卡洛是一种应用随机数来进行计算机模拟的方法.此方法对研究的系统进行随机观察抽样,通过对样本值的观察统计,求得所研究系统的某些参数.在MATLAB 中发生指数分布的随机数命令为exprnd(),产生均匀分布随机数命令为unifrnd()。

符号说明:STi :第i 个顾客到来的时刻i t :第i 个顾个接受服务后离开的时间i Tj :第i 个顾客和第i-1个顾客到来的间隔时间i Tf :第i 个顾客需要服务的时间 i s :第i 个顾客的等待时间考察第i 个顾客和第i-1个顾客排队并将接受服务的情形,有以下两种情况: (1),11i i i i t Tj -=>∑如图此时有:(2) ,如下图此时有: (2)作出程序流程图顾客到来的时间间隔和所需服务时间可分别由MATLAB 随机数发生器exprnd()和unifrnd()产生,根据第一步的分析,通过迭代即可模拟每个工作日的该服务员接待顾客和顾客排队的情形,时间以分钟为单位,程序流程图为:1i t -s t 1i t -t 1i i i ii t Tj s Tf ==++∑1ii i i ii t Tj s Tf ==++∑i s =11i i ii s t Tj -==-∑11111i i i i i i t Tj s Tf ----==++∑11i i i i t Tj -=≤∑11111i i i i i i t Tj s Tf ----==++∑单个工作日的排队系列流程图100个工作日的排队系列流程图五、实验步骤1.模拟一个工作日内完成服务的个数及顾客平均等待时间t.(1)编写MATLAB程序clear,clc;sMeanM=[];sIM=[];TjM=[];TfM=[];sTj=0;while (sTj<=480)Tjp=exprnd(10);Tfp=unifrnd(4,15);TjM=[TjM;Tjp];TfM=[TfM;Tfp];sTj=sTj+Tjp;endn=length(TjM);s=0;sM=[];T=[];for i=1:n-1t=sum(TjM(1:i,1))+s+TfM(i);s=(t-sum(TjM(1:(i+1),1)))*((t-sum(TjM(1:(i+1),1)))>0); if t>480sI=i;breakelseT=[T;t];sM=[sM;s];endendsMean=mean([0;sM]);sMeanM=[sMeanM;sMean]sIM=[sIM;sI](2)结果显示:sMeanM =33.0934sIM =452.模拟100个工作日,求出平均每日完成服务的个数及每日顾客的平均等待时间。

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

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

M/M/1排队系统实验报告一、实验目的本次实验要求实现M/M/1单窗口无限排队系统的系统仿真,利用事件调度法实现离散事件系统仿真,并统计平均队列长度以及平均等待时间等值,以与理论分析结果进行对比。

二、实验原理根据排队论的知识我们知道,排队系统的分类是根据该系统中的顾客到达模式、服务模式、服务员数量以及服务规则等因素决定的。

1、 顾客到达模式设到达过程是一个参数为λ的Poisson 过程,则长度为t 的时间内到达k 个呼叫的概率 服从Poisson 分布,即etkk k t t p λλ-=!)()(,⋅⋅⋅⋅⋅⋅⋅⋅⋅=,2,1,0k ,其中λ>0为一常数,表示了平均到达率或Poisson 呼叫流的强度。

2、 服务模式设每个呼叫的持续时间为i τ,服从参数为μ的负指数分布,即其分布函数为{}1,0t P X t e t μ-<=-≥3、 服务规则先进先服务的规则(FIFO ) 4、 理论分析结果在该M/M/1系统中,设λρμ=,则稳态时的平均等待队长为1Q ρλρ=-,顾客的平均等待时间为T ρμλ=-。

三、实验内容M/M/1排队系统:实现了当顾客到达分布服从负指数分布,系统服务时间也服从负指数分布,单服务台系统,单队排队,按FIFO (先入先出队列)方式服务。

四、采用的语言MatLab 语言源代码:clear; clc;%M/M/1排队系统仿真SimTotal=input('请输入仿真顾客总数SimTotal='); %仿真顾客总数;Lambda=0.4; %到达率Lambda;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(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)<t_Arrive(i)t_Leave(i)=t_Arrive(i)+Interval_Serve(i);elset_Leave(i)=t_Leave(i-1)+Interval_Serve(i);endLeaveNum(i)=i;endt_Wait=t_Leave-t_Arrive; %各顾客在系统中的等待时间t_Wait_avg=mean(t_Wait);t_Queue=t_Wait-Interval_Serve;%各顾客在系统中的排队时间t_Queue_avg=mean(t_Queue);Timepoint=[t_Arrive,t_Leave];%系统中顾客数随时间的变化Timepoint=sort(Timepoint);ArriveFlag=zeros(size(Timepoint));%到达时间标志CusNum=zeros(size(Timepoint));temp=2;CusNum(1)=1;for i=2:length(Timepoint)if (temp<=length(t_Arrive))&&(Timepoint(i)==t_Arrive(temp)) CusNum(i)=CusNum(i-1)+1;temp=temp+1;ArriveFlag(i)=1;CusNum(i)=CusNum(i-1)-1;endend%系统中平均顾客数计算Time_interval=zeros(size(Timepoint));Time_interval(1)=t_Arrive(1);for i=2:length(Timepoint)Time_interval(i)=Timepoint(i)-Timepoint(i-1);endCusNum_fromStart=[0 CusNum];CusNum_avg=sum(CusNum_fromStart.*[Time_interval 0] )/Timepoint(end);QueLength=zeros(size(CusNum));for i=1:length(CusNum)if CusNum(i)>=2QueLength(i)=CusNum(i)-1;elseQueLength(i)=0;endendQueLength_avg=sum([0 QueLength].*[Time_interval 0] )/Timepoint(end);%系统平均等待队长%仿真图figure(1);set(1,'position',[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');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_avg=',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)函数产生的结果相同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; %各顾客在系统中的排队时间由事件来触发仿真时钟的不断推进。

用Matlab实现排队过程的仿真

用Matlab实现排队过程的仿真

用Matlab实现排队过程的仿真一、引言排队是日常生活中经常遇到的现象。

通常,当人、物体或是信息的到达速率大于完成服务的速率时,即出现排队现象。

排队越长,意味着浪费的时间越多,系统的效率也越低。

在日常生活中,经常遇到排队现象,如开车上班、在超市等待结账、工厂中等待加工的工件以及待修的机器等。

总之,排队现象是随处可见的。

排队理论是运作管理中最重要的领域之一,它是计划、工作设计、存货控制及其他一些问题的基础。

Matlab 是MathWorks 公司开发的科学计算软件,它以其强大的计算和绘图功能、大量稳定可靠的算法库、简洁高效的编程语言以及庞大的用户群成为数学计算工具方面的标准,几乎所有的工程计算领域,Matlab 都有相应的软件工具箱。

选用 Matlab 软件正是基于 Matlab 的诸多优点。

二、排队模型三.仿真算法原理( 1 )顾客信息初始化根据到达率λ和服务率µ来确定每个顾客的到达时间间隔和服务时间间隔。

服务间隔时间可以用负指数分布函数 exprnd() 来生成。

由于泊松过程的时间间隔也服从负指数分布,故亦可由此函数生成顾客到达时间间隔。

需要注意的是 exprnd() 的输入参数不是到达率λ和服务率µ而是平均到达时间间隔 1/ λ和平均服务时间 1/ µ。

根据到达时间间隔,确定每个顾客的到达时刻 . 学习过 C 语言的人习惯于使用 FOR 循环来实现数值的累加,但 FOR 循环会引起运算复杂度的增加而在 MATLAB 仿真环境中,提供了一个方便的函数 cumsum() 来实现累加功能读者可以直接引用对当前顾客进行初始化。

第 1 个到达系统的顾客不需要等待就可以直接接受服务其离开时刻等于到达时刻与服务时间之和。

( 2 )进队出队仿真在当前顾客到达时刻,根据系统内已有的顾客数来确定是否接纳该顾客。

若接纳则根据前一顾客的离开时刻来确定当前顾客的等待时间、离开时间和标志位;若拒绝,则标志位置为 0。

单服务排队系统MAAB仿真程序

单服务排队系统MAAB仿真程序

单服务台系统MATLAB仿真学号:15 姓名:缪晨一、引言排队是日常生活中经常遇到的现象。

通常 ,当人、物体或是信息的到达速率大于完成服务的速率时 ,即出现排队现象。

排队越长 ,意味着浪费的时间越多 ,系统的效率也越低。

在日常生活中 ,经常遇到排队现象 ,如开车上班、在超市等待结账、工厂中等待加工的工件以及待修的机器等。

总之 ,排队现象是随处可见的。

排队理论是运作管理中最重要的领域之一 ,它是计划、工作设计、存货控制及其他一些问题的基础。

Matlab是 MathWorks公司开发的科学计算软件 ,它以其强大的计算和绘图功能、大量稳定可靠的算法库、简洁高效的编程语言以及庞大的用户群成为数学计算工具方面的标准 ,几乎所有的工程计算领域 ,Matlab都有相应的软件工具箱。

选用 Matlab软件正是基于 Matlab的诸多优点。

二、排队模型三.仿真算法原理(1)顾客信息初始化根据到达率λ和服务率μ来确定每个顾客的到达时间间隔和服务时间间隔。

服务间隔时间可以用负指数分布函数exprnd()来生成。

由于泊松过程的时间间隔也服从负指数分布, 故亦可由此函数生成顾客到达时间间隔。

需要注意的是exprnd()的输入参数不是到达率λ和服务率μ而是平均到达时间间隔 1/λ和平均服务时间1/μ。

根据到达时间间隔 ,确定每个顾客的到达时刻. 学习过C 语言的人习惯于使用FOR循环来实现数值的累加, 但FOR循环会引起运算复杂度的增加而在MATLAB 仿真环境中, 提供了一个方便的函数cumsum() 来实现累加功能读者可以直接引用对当前顾客进行初始化。

第1 个到达系统的顾客不需要等待就可以直接接受服务其离开时刻等于到达时刻与服务时间之和。

(2)进队出队仿真在当前顾客到达时刻,根据系统内已有的顾客数来确定是否接纳该顾客。

若接纳则根据前一顾客的离开时刻来确定当前顾客的等待时间、离开时间和标志位;若拒绝,则标志位置为0.流程图如下:四、程序实现单服务台服务,服务参数M/M/1,λ=μ=,排队规则为FIFO,以分为单位,仿真时间240分钟。

(强烈推荐)单服务台排队系统建模与仿真研究报告

(强烈推荐)单服务台排队系统建模与仿真研究报告

(强烈推荐)单服务台排队系统建模与仿真研究报告(此⽂档为word格式,下载后您可任意编辑修改!)物流系统建模与仿真单服务台排队系统仿真研究报告——选重庆⼤学A区门⼝中国银⾏分⾏某⼀服务窗⼝为单服务台排队系统研究对象⼀、系统基本背景社会的进步越来越快,⼈们的⽣活节奏也随之越来越快。

在科技的发展,新技术的普及下, 我国的银⾏业以计算机和信息技术、互联⽹技术为前提, 通过⼤量资⾦和科技的投⼊, 不断地开发出新产品和新业务。

另外有⽹上银⾏、⽀付宝等新业务的出现, ⼤⼤提⾼了⼯作效率。

然⽽现代的⾦融服务并不是都可以靠刷卡来解决, 许多技术还不完善, 这些新技术也并不适合所有顾客群,去银⾏办理业务的顾客仍然经常性地出现排队现象。

顾客等待时间过长, 造成顾客满意度下降, ⽭盾较为突出, 因此本报告试利⽤单服务台排队论的⽅法, 定性定量地对具有排队等候现象的银⾏服务系统进⾏统计调查与分析研究,希望能帮助改进银⾏⼯作效率, 优化系统的运营。

本报告研究对象为中国银⾏重庆⼤学处分⾏某⼀服务窗⼝,数据取⾃银⾏内唯⼀⾮现⾦业务柜台。

研究对象的选取虽然不是最典型的,但是综合考虑了研究地域范围和⼩组成员作业时间有限,另有其他⽅案由于各种原因⽆法进⾏,故选择离学校较近的有代表性的中国银⾏中的服务窗⼝作为最终⽅案。

中国银⾏简介:中国银⾏是中国历史最为悠久的银⾏之⼀,在⼤家对银⾏的概念中有着⼀定地位。

中国银⾏主营传统商业银⾏业务,包括公司⾦融业务、个⼈⾦融业务和⾦融市场业务。

公司业务以信贷产品为基础,致⼒于为客户提供个性化、创新的⾦融服务和融资、财务解决⽅案。

个⼈⾦融业务主要针对个⼈客户的⾦融需求,提供包括储蓄存款、消费信贷和银⾏卡在内的服务。

作为中国⾦融⾏业的百年品牌,中国银⾏在稳健经营的同时,积极进取,不断创新,创造了国内银⾏业的许多第⼀,在国际结算、外汇资⾦和贸易融资等领域得到业界和客户的⼴泛认可和赞誉。

⼆、系统描述该银⾏⼯作时间为上午8:30⾄下午16:30(周⼀⾄周⽇),另周末不办理对公业务,属于每天8⼩时⼯作制。

单服务台排队系统建模与仿真研究报告

单服务台排队系统建模与仿真研究报告

单服务台排队系统建模与仿真研究报告物流系统建模与仿真单服务台排队系统仿真研究报告——选重庆大学A区门口中国银行分行某一服务窗口为单服务台排队系统研究对象一、系统基本背景社会的进步越来越快,人们的生活节奏也随之越来越快。

在科技的发展,新技术的普及下, 我国的银行业以计算机和信息技术、互联网技术为前提, 通过大量资金和科技的投入, 不断地开发出新产品和新业务。

另外有网上银行、支付宝等新业务的出现, 大大提高了工作效率。

然而现代的金融服务并不是都可以靠刷卡来解决, 许多技术还不完善, 这些新技术也并不适合所有顾客群,去银行办理业务的顾客仍然经常性地出现排队现象。

顾客等待时间过长, 造成顾客满意度下降, 矛盾较为突出, 因此本报告试利用单服务台排队论的方法, 定性定量地对具有排队等候现象的银行服务系统进行统计调查与分析研究,希望能帮助改进银行工作效率, 优化系统的运营。

本报告研究对象为中国银行重庆大学处分行某一服务窗口,数据取自银行内唯一非现金业务柜台。

研究对象的选取虽然不是最典型的,但是综合考虑了研究地域范围和小组成员作业时间有限,另有其他方案由于各种原因无法进行,故选择离学校较近的有代表性的中国银行中的服务窗口作为最终方案。

中国银行简介:中国银行是中国历史最为悠久的银行之一,在大家对银行的概念中有着一定地位。

中国银行主营传统商业银行业务,包括公司金融业务、个人金融业务和金融市场业务。

公司业务以信贷产品为基础,致力于为客户提供个性化、创新的金融服务和融资、财务解决方案。

个人金融业务主要针对个人客户的金融需求,提供包括储蓄存款、消费信贷和银行卡在内的服务。

作为中国金融行业的百年品牌,中国银行在稳健经营的同时,积极进取,不断创新,创造了国内银行业的许多第一,在国际结算、外汇资金和贸易融资等领域得到业界和客户的广泛认可和赞誉。

二、系统描述该银行工作时间为上午8:30至下午16:30(周一至周日),另周末不办理对公业务,属于每天8小时工作制。

应用matlab解决排队论的问题

应用matlab解决排队论的问题

应用matlab解决排队论的问题应用MATLAB 解决排队论的问题背景介绍:排队论起源于1909年丹麦电话工程师A.K.爱尔朗的工作,他对电话通话拥挤问题进行了研究。

1917年爱尔朗发表了他的著名文章“自动交换机中的概率理论问题的解决”。

排队论已广泛应用于解决军事、运输、维修、生产、服务、库存、医疗、教育、水利灌溉之类的排队系统问题,显示了强大的生命力。

排队是日常生活中经常遇到的现象,如顾客到商店去购买物品、病人到医院去看病常常需要排队。

此时要求服务的数量超过服务机构的容量。

也就是说到达的顾客不能立即得到服务,应而出现了排队现象。

这种现象不仅在个人日常生活中出现,电话的占线问题,车站,码头等交通枢纽的堵塞和疏导,故障机器的停机待修。

由于顾客到达和服务时间的随机性,可以说排队现象是不可避免的。

模型介绍:1. 排队系统1.1. 输入过程顾客源:有限/无限顾客流的分布:泊松分布/一般分布1.2 排队规则排队方式:一直等待/一定时间后退出1.3 服务规则服务器数目:一个/多个服务时间的分布:指数分布/一般分布2. M/M/1模型2.1 例子:假设1) 顾客按照速率为λ的泊松过程到达一个单个服务线的服务站。

也就是说,相继达到者之间的时间是独立的具有均值1λ的指数分布。

2) 在每个顾客到达时,如果服务器闲着,就直接进入服务,否者顾客就加入队列。

当服务线完成一个顾客的服务,这个顾客就离开系统,而队列中的下一个顾客(如果有)进入服务。

3) 相继的服务时间假定是独立的具有均值1μ的指数分布。

参数:λ:顾客按泊松过程到达的速率μ:服务按指数分布的速率n P :系统中恰有n 个顾客的稳态概率L :系统中平均顾客数Q L :队列中平均等待的顾客数W :一个顾客在系统中所耗的平均时间Q W :一个顾客在队列中等待的平均时间()E S :一个顾客在服务系统中的时间解:如果系统中只有一个顾客,而且完成了服务,那么系统就变成空的了。

MAAB模拟银行单服务台排队模型

MAAB模拟银行单服务台排队模型

MATLAB莫拟银行单服务台排队模型摘要:运筹学就是专门研究对各种经营做出优化决策的科学,也称为最优化理论。

排队论是运筹学的重要组成部分。

排队论又称随机服务系统理论,它是通过对各种服务系统在排队等待现象中概率特性的研究,来解决服务系统最优设计与最优控制一门学科。

具有排队等候现象的服务系统通称为排队系统。

任何一个服务系统总是由两个相辅相成的要素:顾客和服务员(或服务台)所构成。

凡是要求接受服务的人与物统称为顾客;凡是给予顾客服务的人与物统称为服务员(或服务台)。

MATLA是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。

使用MATLAB可以较使用传统的编程语言(如C、C++ 和Fortran )更快地解决技术计算问题。

关键词:程序化模拟;单服务台;等待时间;排队论一、问题叙述众所周知,近年来我国大学大举扩招,学生人数大幅增加,而大学校园往往距离城市中心较远,银行数量较少,这就导致了银行业务繁忙时大量学生在银行窗口前排起长队等待的情况。

这种现象长期困扰着广大学生,浪费了同学们的大量时间。

为此,我们建立银行单服务台排队模型,并用MATLA进行模拟,以计算学生在银行窗口前的平均排队时间。

二、模型假设1。

在银行只有一个服务窗口,客户陆续来到,服务窗口逐个地接待客户.当到来的客户较多时,一部分客户便须排队等待,被接待后的客户便离开银行。

2。

客户到达的间隔时间服从指数分布(均值为10 分钟);每个客户的服务时间服从均匀分布U[10,15] 。

3。

客户到达时刻、客户服务完毕并离去时刻等均视为随机事件 (瞬间完成)。

4。

排队按先到先服务规则。

三、符号说明arrive ( i ):第i 个客户到达的时刻;wait(i):第i个客户的排队等待时间;servetime(i) :第i个客户接受服务的时间;meantime(i) :客户的平均等待时间n客户数目四、模型的建立与求解在任意时刻t,系统的状态可以用排队等候的客户数目和服务员是否在工作来描述。

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

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

单服务台系统MATLAB仿真一、引言排队是日常生活中经常遇到的现象。

通常 ,当人、物体或是信息的到达速率大于完成服务的速率时 ,即出现排队现象。

排队越长 ,意味着浪费的时间越多 ,系统的效率也越低。

在日常生活中 ,经常遇到排队现象 ,如开车上班、在超市等待结账、工厂中等待加工的工件以及待修的机器等。

总之 ,排队现象是随处可见的。

排队理论是运作管理中最重要的领域之一 ,它是计划、工作设计、存货控制及其他一些问题的基础。

Matlab是 MathWorks公司开发的科学计算软件 ,它以其强大的计算和绘图功能、大量稳定可靠的算法库、简洁高效的编程语言以及庞大的用户群成为数学计算工具方面的标准 ,几乎所有的工程计算领域 ,Matlab都有相应的软件工具箱。

选用 Matlab软件正是基于 Matlab的诸多优点。

二、排队模型三.仿真算法原理(1)顾客信息初始化根据到达率λ和服务率μ来确定每个顾客的到达时间间隔和服务时间间隔。

服务间隔时间可以用负指数分布函数exprnd()来生成。

由于泊松过程的时间间隔也服从负指数分布, 故亦可由此函数生成顾客到达时间间隔。

需要注意的是exprnd()的输入参数不是到达率λ和服务率μ而是平均到达时间间隔 1/λ和平均服务时间1/μ。

根据到达时间间隔 ,确定每个顾客的到达时刻. 学习过C 语言的人习惯于使用 FOR循环来实现数值的累加, 但FOR循环会引起运算复杂度的增加而在MATLAB 仿真环境中, 提供了一个方便的函数cumsum() 来实现累加功能读者可以直接引用对当前顾客进行初始化。

第1 个到达系统的顾客不需要等待就可以直接接受服务其离开时刻等于到达时刻与服务时间之和。

(2)进队出队仿真在当前顾客到达时刻,根据系统内已有的顾客数来确定是否接纳该顾客。

若接纳则根据前一顾客的离开时刻来确定当前顾客的等待时间、离开时间和标志位;若拒绝,则标志位置为0.流程图如下:四、程序实现单服务台服务,服务参数M/M/1,λ=μ=,排队规则为FIFO,以分为单位,仿真时间240分钟。

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

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

M/M/1排队系统实验报告一、实验目的本次实验要求实现M/M/1单窗口无限排队系统的系统仿真,利用事件调度法实现离散事件系统仿真,并统计平均队列长度以及平均等待时间等值,以与理论分析结果进行对比。

二、实验原理根据排队论的知识我们知道,排队系统的分类是根据该系统中的顾客到达模式、服务模式、服务员数量以及服务规则等因素决定的。

1、 顾客到达模式设到达过程是一个参数为λ的Poisson 过程,则长度为t 的时间内到达k 个呼叫的概率 服从Poisson 分布,即etkk k t t p λλ-=!)()(,⋅⋅⋅⋅⋅⋅⋅⋅⋅=,2,1,0k ,其中λ>0为一常数,表示了平均到达率或Poisson 呼叫流的强度。

2、 服务模式设每个呼叫的持续时间为i τ,服从参数为μ的负指数分布,即其分布函数为{}1,0t P X t e t μ-<=-≥3、 服务规则先进先服务的规则(FIFO ) 4、 理论分析结果在该M/M/1系统中,设λρμ=,则稳态时的平均等待队长为1Q ρλρ=-,顾客的平均等待时间为T ρμλ=-。

三、实验内容M/M/1排队系统:实现了当顾客到达分布服从负指数分布,系统服务时间也服从负指数分布,单服务台系统,单队排队,按FIFO (先入先出队列)方式服务。

四、采用的语言MatLab 语言 源代码:clear; clc;%M/M/1排队系统仿真SimTotal=input('请输入仿真顾客总数SimTotal='); %仿真顾客总数;Lambda=0.4; %到达率Lambda;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(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)<t_Arrive(i)t_Leave(i)=t_Arrive(i)+Interval_Serve(i);elset_Leave(i)=t_Leave(i-1)+Interval_Serve(i);endLeaveNum(i)=i;endt_Wait=t_Leave-t_Arrive; %各顾客在系统中的等待时间t_Wait_avg=mean(t_Wait);t_Queue=t_Wait-Interval_Serve;%各顾客在系统中的排队时间t_Queue_avg=mean(t_Queue);Timepoint=[t_Arrive,t_Leave];%系统中顾客数随时间的变化Timepoint=sort(Timepoint);ArriveFlag=zeros(size(Timepoint));%到达时间标志CusNum=zeros(size(Timepoint));temp=2;CusNum(1)=1;for i=2:length(Timepoint)if (temp<=length(t_Arrive))&&(Timepoint(i)==t_Arrive(temp)) CusNum(i)=CusNum(i-1)+1;temp=temp+1;ArriveFlag(i)=1;CusNum(i)=CusNum(i-1)-1;endend%系统中平均顾客数计算Time_interval=zeros(size(Timepoint));Time_interval(1)=t_Arrive(1);for i=2:length(Timepoint)Time_interval(i)=Timepoint(i)-Timepoint(i-1);endCusNum_fromStart=[0 CusNum];CusNum_avg=sum(CusNum_fromStart.*[Time_interval 0] )/Timepoint(end);QueLength=zeros(size(CusNum));for i=1:length(CusNum)if CusNum(i)>=2QueLength(i)=CusNum(i)-1;elseQueLength(i)=0;endendQueLength_avg=sum([0 QueLength].*[Time_interval 0] )/Timepoint(end);%系统平均等待队长%仿真图figure(1);set(1,'position',[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');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_avg=',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)函数产生的结果相同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; %各顾客在系统中的排队时间由事件来触发仿真时钟的不断推进。

用Matlab实现排队过程的仿真

用Matlab实现排队过程的仿真

%其等待时间为 0
16 2009. 15
PROGRAM LANGUAGE
events(3,i) = 0;
%其离开时刻等于到达时刻与服务时间之和
events(4,i) = events(1,i)+events(2,i);
%其标志位置 1
events(5,i) = 1;
member = [member,i];
(3) 对当前顾客进行初始化。 第 1 个到达系统的顾客不需 要等待就可以直接接受服务, 其离开时刻等于到达时刻与服务 时间之和。
3.2.2 进队出队仿真 在当前顾客到达时刻, 根据系统内已有的顾客数来确定是 否接纳该顾客。 若接纳, 则根据前一顾客的离开时刻来确定当 前顾客的等待时间、 离开时间和标志位; 若拒绝, 则标志位置 为 0。 仿真的具体流程如图 2 所示。
%各顾客的到达时刻等于时间间隔的累积和
events(1,:) = cumsum(events(1,:));
%按负指数分布产生各顾客服务时间
events(2,:) = exprnd(ser_mean,1,arr_num);
%计算仿真顾客个数,即到达时刻在仿真时间内的顾客数
len_sim = sum(events(1,:)<= Total_time);
%*****************************************
%
计算第 1 个顾客的信息
%*****************************************
%第 1 个顾客进入系统后直接接受服务,无需等待
events(3,1) = 0;
%其离开时刻等于其到达时刻与服务时间之和
%待 时 间 曲 线 图 (plot:绘 制 二 维 线 性 图 )

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

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

单服务台系统MATLAB仿真一、引言排队是日常生活中经常遇到的现象。

通常 ,当人、物体或是信息的到达速率大于完成服务的速率时 ,即出现排队现象。

排队越长 ,意味着浪费的时间越多 ,系统的效率也越低。

在日常生活中 ,经常遇到排队现象 ,如开车上班、在超市等待结账、工厂中等待加工的工件以及待修的机器等。

总之 ,排队现象是随处可见的。

排队理论是运作管理中最重要的领域之一 ,它是计划、工作设计、存货控制及其他一些问题的基础。

Matlab是 MathWorks公司开发的科学计算软件 ,它以其强大的计算和绘图功能、大量稳定可靠的算法库、简洁高效的编程语言以及庞大的用户群成为数学计算工具方面的标准 ,几乎所有的工程计算领域 ,Matlab都有相应的软件工具箱。

选用 Matlab软件正是基于 Matlab的诸多优点。

二、排队模型三.仿真算法原理(1)顾客信息初始化根据到达率λ和服务率μ来确定每个顾客的到达时间间隔和服务时间间隔。

服务间隔时间可以用负指数分布函数exprnd()来生成。

由于泊松过程的时间间隔也服从负指数分布, 故亦可由此函数生成顾客到达时间间隔。

需要注意的是exprnd()的输入参数不是到达率λ和服务率μ而是平均到达时间间隔 1/λ和平均服务时间1/μ。

根据到达时间间隔 ,确定每个顾客的到达时刻. 学习过C 语言的人习惯于使用 FOR循环来实现数值的累加, 但FOR循环会引起运算复杂度的增加而在MATLAB 仿真环境中, 提供了一个方便的函数cumsum() 来实现累加功能读者可以直接引用对当前顾客进行初始化。

第1 个到达系统的顾客不需要等待就可以直接接受服务其离开时刻等于到达时刻与服务时间之和。

(2)进队出队仿真在当前顾客到达时刻,根据系统内已有的顾客数来确定是否接纳该顾客。

若接纳则根据前一顾客的离开时刻来确定当前顾客的等待时间、离开时间和标志位;若拒绝,则标志位置为0.流程图如下:四、程序实现单服务台服务,服务参数M/M/1,λ=μ=,排队规则为FIFO,以分为单位,仿真时间240分钟。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

matlab 单服务台排队系统实验报告一、实验目的本次实验要求实现M/M/1单窗口无限排队系统的系统仿真,利用事件调度法实现离散事件系统仿真,并统计平均队列长度以及平均等待时间等值,以与理论分析结果进行对比。

二、实验原理根据排队论的知识我们知道,排队系统的分类是根据该系统中的顾客到达模式、服务模式、服务员数量以及服务规则等因素决定的。

1、 顾客到达模式设到达过程是一个参数为λ的Poisson 过程,则长度为t 的时间内到达k 个呼叫的概率 服从Poisson 分布,即etkk k t t p λλ-=!)()(,⋅⋅⋅⋅⋅⋅⋅⋅⋅=,2,1,0k ,其中λ>0为一常数,表示了平均到达率或Poisson 呼叫流的强度。

2、 服务模式设每个呼叫的持续时间为i τ,服从参数为μ的负指数分布,即其分布函数为{}1,0t P X t e t μ-<=-≥3、 服务规则先进先服务的规则(FIFO ) 4、 理论分析结果在该M/M/1系统中,设λρμ=,则稳态时的平均等待队长为1Q ρλρ=-,顾客的平均等待时间为T ρμλ=-。

三、实验内容M/M/1排队系统:实现了当顾客到达分布服从负指数分布,系统服务时间也服从负指数分布,单服务台系统,单队排队,按FIFO 方式服务。

四、采用的语言MatLab 语言 源代码:clear; clc;%M/M/1排队系统仿真SimTotal=input('请输入仿真顾客总数SimTotal='); %仿真顾客总数;Lambda=0.4; %到达率Lambda;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(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)<t_Arrive(i)t_Leave(i)=t_Arrive(i)+Interval_Serve(i);elset_Leave(i)=t_Leave(i-1)+Interval_Serve(i);endLeaveNum(i)=i;endt_Wait=t_Leave-t_Arrive; %各顾客在系统中的等待时间t_Wait_avg=mean(t_Wait);t_Queue=t_Wait-Interval_Serve;%各顾客在系统中的排队时间t_Queue_avg=mean(t_Queue);Timepoint=[t_Arrive,t_Leave];%系统中顾客数随时间的变化Timepoint=sort(Timepoint);ArriveFlag=zeros(size(Timepoint));%到达时间标志CusNum=zeros(size(Timepoint));temp=2;CusNum(1)=1;for i=2:length(Timepoint)if (temp<=length(t_Arrive))&&(Timepoint(i)==t_Arrive(temp)) CusNum(i)=CusNum(i-1)+1;temp=temp+1;ArriveFlag(i)=1;CusNum(i)=CusNum(i-1)-1;endend%系统中平均顾客数计算Time_interval=zeros(size(Timepoint));Time_interval(1)=t_Arrive(1);for i=2:length(Timepoint)Time_interval(i)=Timepoint(i)-Timepoint(i-1);endCusNum_fromStart=[0 CusNum];CusNum_avg=sum(CusNum_fromStart.*[Time_interval 0] )/Timepoint(end);QueLength=zeros(size(CusNum));for i=1:length(CusNum)if CusNum(i)>=2QueLength(i)=CusNum(i)-1;elseQueLength(i)=0;endendQueLength_avg=sum([0 QueLength].*[Time_interval 0] )/Timepoint(end);%系统平均等待队长%仿真图figure(1);set(1,'position',[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');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_avg=',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)函数产生的结果相同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_avg=sum(CusNum_fromStart.*[Time_interval 0] )/Timepoint(end); %系统中平均顾客数计算QueLength_avg=sum([0 QueLength].*[Time_interval 0] )/Timepoint(end); %系统平均等待队长2.算法的流程图六、仿真结果分析顾客的平均等待时间与顾客的平均等待队长,计算其方差如下:从上表可以看出,通过这种模型和方法仿真的结果和理论值十分接近,增加仿真顾客数时,可以得到更理想的结果。

但由于变量定义的限制,在仿真时顾客总数超过1,500,000时会溢出。

证明使此静态仿真的思想对排队系统进行仿真是切实可行的。

实验结果截图如下(SimTotal分别为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编程语言更加熟悉,并了解到仿真在通信网中的重要作用。

此次实验我受益匪浅。

相关文档
最新文档