当前位置:文档之家› MM1排队系统matlab仿真

MM1排队系统matlab仿真

MM1排队系统matlab仿真
MM1排队系统matlab仿真

排队系统仿真matlab实验报告

M/M/1排队系统实验报告 一、实验目的 本次实验要求实现M/M/1单窗口无限排队系统的系统仿真,利用事件调度法实现离散事件系统仿真,并统计平均队列长度以及平均等待时间等值,以与理论分析结果进行对比。 二、实验原理 根据排队论的知识我们知道,排队系统的分类是根据该系统中的顾客到达模式、服务模式、服务员数量以及服务规则等因素决定的。 1、 顾客到达模式 设到达过程是一个参数为λ的Poisson 过程,则长度为t 的时间内到达k 个呼叫的概 率 服从Poisson 分布,即e t k k 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:SimTotal t_Arrive(i)=t_Arrive(i-1)+Interval_Arrive(i); ArriveNum(i)=i; end t_Leave(1)=t_Arrive(1)+Interval_Serve(1);%顾客离开时间LeaveNum(1)=1; for i=2:SimTotal if t_Leave(i-1)

queuing modeling排队论的matlab仿真(包括仿真代码)

Wireless Network Experiment Three: Queuing Theory ABSTRACT This experiment is designed to learn the fundamentals of the queuing theory. Mainly about the M/M/S and M/M/n/n queuing MODELS. KEY WORDS: queuing theory, M/M/s, M/M/n/n, Erlang B, Erlang C. INTRODUCTION A queue is a waiting line and queueing theory is the mathematical theory ofwaiting lines.More generally, queueing theory is concerned with the mathematical modeling and analysisof systems that provide service to random demands. Incommunication networks, queues are encountered everywhere. For example, theincoming data packets are randomly arrived and buffered, waiting for the routerto deliver. Such situation is considered as a queue. A queueing model is an abstract description of such a system. Typically, a queueing model represents (1) thesystem's physical configuration, by specifying the number and arrangement of theservers, and (2) the stochastic nature of the demands, by specifying the variabilityin the arrival process and in the service process. The essence of queueing theory is that it takes into account the randomness ofthe arrival process and the randomness of the service process. The most commonassumption about the arrival process is that the customer arrivals follow a Poisson process, where the times between arrivals are exponentially distributed. Theprobability of the exponential distribution function

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

matlab 单服务台排队系统实验报告 一、实验目的 本次实验要求实现M/M/1单窗口无限排队系统的系统仿真,利用事件调度法实现离散事件系统仿真,并统计平均队列长度以及平均等待时间等值,以与理论分析结果进行对比。 二、实验原理 根据排队论的知识我们知道,排队系统的分类是根据该系统中的顾客到达模式、服务模式、服务员数量以及服务规则等因素决定的。 1、 顾客到达模式 设到达过程是一个参数为λ的Poisson 过程,则长度为t 的时间内到达k 个呼 叫的概率 服从Poisson 分布,即 e t k k 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:SimTotal t_Arrive(i)=t_Arrive(i-1)+Interval_Arrive(i); ArriveNum(i)=i; end t_Leave(1)=t_Arrive(1)+Interval_Serve(1);%顾客离开时间LeaveNum(1)=1; for i=2:SimTotal if t_Leave(i-1)

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

物流系统建模与仿真 单服务台排队系统仿真研究报告 ——选大学A区门口中国银行分行某一服务窗口为单服务台排队系统研究对象一、系统基本背景 社会的进步越来越快,人们的生活节奏也随之越来越快。在科技的发展,新技术的普及下, 我国的银行业以计算机和信息技术、互联网技术为前提, 通过大量资金和科技的投入, 不断地开发出新产品和新业务。另外有网上银行、支付宝等新业务的出现, 大大提高了工作效率。然而现代的金融服务并不是都可以靠刷卡来解决, 许多技术还不完善, 这些新技术也并不适合所有顾客群,去银行办理业务的顾客仍然经常性地出现排队现象。顾客等待时间过长, 造成顾客满意度下降, 矛盾较为突出, 因此本报告试利用单服务台排队论的方法, 定性定量地对具有排队等候现象的银行服务系统进行统计调查与分析研究,希望能帮助改进银行工作效率, 优化系统的运营。 本报告研究对象为中国银行大学处分行某一服务窗口,数据取自银行唯一非现金业务柜台。研究对象的选取虽然不是最典型的,但是综合考虑了研究地域围和小组成员作业时间有限,另有其他方案由于各种原因无法进行,故选择离学校

较近的有代表性的中国银行中的服务窗口作为最终方案。 中国银行简介:中国银行是中国历史最为悠久的银行之一,在大家对银行的概念中有着一定地位。中国银行主营传统商业银行业务,包括公司金融业务、个人金融业务和金融市场业务。公司业务以信贷产品为基础,致力于为客户提供个性化、创新的金融服务和融资、财务解决方案。个人金融业务主要针对个人客户的金融需求,提供包括储蓄存款、消费信贷和银行卡在的服务。作为中国金融行业的百年品牌,中国银行在稳健经营的同时,积极进取,不断创新,创造了国银行业的许多第一,在国际结算、外汇资金和贸易融资等领域得到业界和客户的广泛认可和赞誉。 二、系统描述 该银行工作时间为上午8:30至下午16:30(周一至周日),另周末不办理对公业务,属于每天8小时工作制。系统调查对象为银行唯一非现金业务柜台,可知到达的顾客中,需要办理非现金业务的顾客在正常现金业务柜台忙碌的情况下可以选择该服务台。在队列中,等待服务的顾客和服务台构成了一个排队系统。由于银行前台出纳员逐个接待顾客,当顾客较多的时候就会出现排队等待的现象。其中,顾客的到达是随机的,每两个先后到达的顾客的到达间隔时间是不确定的。 本排队系统用顾客的数目、到达模式、服务模式、系统容量和排队规则来描述。 为探求此排队系统的规律, 首先需确定顾客流在一定时间到达的概率分布

多服务台排队系统的仿真

实验3--- 多服务台排队系统的仿真 姓名:学号: 一、目标任务 已知一个系统有N 个服务员,能力相等,服务时间服从指数分布。顾客的到达时间间隔服从指数分布。用Monte-Carlo 仿真,分别求按下列方案的总体平均排队时间: ①M|M|N 。 ②N 个单通道系统并列,按1/N 概率分裂到达流。 ③N 个单通道并列,挑选最短的队。 要求: ①给出程序设计的过程。 ②如果采用固定的N,则要求N>2。 ③至少取p二和p二两种强度运行程序。 ④对结果进行分析。 二、编程语言 Matlab 三、关键代码

N = 3; % 服务员人数 r = 6; % 顾客到达流强度 u = 20; % 服务员服务强度 T = 1000000; % 仿真运行时间 avg_wait_time = []; % 平均等待时间 for i=1:100 % 模拟排队函数 server_time = [, , ]; % 用来保存服务员下一空闲时间 time = 0; % 绝对时钟,初始为 0 client_num = 0; % 顾客总数,初始为 0 CRTime = 0; % 顾客到达时间间隔 ServeTime = 0; % 顾客服务时间 server_id = 0 ; % 当前进入排队窗口的服务员编号 total_wait_time = 0;% 系统中到达顾客的总等待时间 while 1 按 1..N 的顺序循环排入服务

员窗口 if server_id ==0 server_id = N; end if server_time(1, server_id) <= time % 如果当前 server_id 号 服务员空闲, 则直接接收服务 server_time(1, server_id) = time + ServeTime; % 服务员下 一空闲时间为当 前绝对时钟加上当前服务时间 else % 否则所有服务员都在忙碌,顾客要排队等候 total_wait_time = total_wait_time + server_time(1, server_id) - time; % 顾客排队等候时间为当前服务员下一空闲时间减去绝对时 钟 server_time(1, server_id) = server_time(1, server_id) + ServeTime; end end avg_wait_time = [avg_wait_time, total_wait_time/client_num]; end % 计算平均等待时间 mean_avg_wait_time = mean(avg_wait_time); CRTime = exprnd(1/r); % 按指数分布产生顾客到达时间间隔 time = time + CRTime; % 更新系统的绝对时钟 if time > T break; end client_num = client_num + 1; % 顾客数加 1 ServeTime = exprnd(1/u); % 按指数分布产生顾客服务间隔 server_id = mod(client_num, N); %

单服务排队系统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分钟。 仿真程序代码如下 %总仿真时间 Total_time = 240; %到达率与服务率

排队论地matlab仿真(包括仿真代码)

Wireless Network Experiment Three: Queuing Theory ABSTRACT This experiment is designed to learn the fundamentals of the queuing theory. Mainly about the M/M/S and M/M/n/n queuing models. KEY WORDS: queuing theory, M/M/s, M/M/n/n, Erlang B, Erlang C. INTRODUCTION A queue is a waiting line and queueing theory is the mathematical theory of waiting lines. More generally, queueing theory is concerned with the mathematical modeling and analysis of systems that provide service to random demands. In communication networks, queues are encountered everywhere. For example, the incoming data packets are randomly arrived and buffered, waiting for the router to deliver. Such situation is considered as a queue. A queueing model is an abstract description of such a system. Typically, a queueing model represents (1) the system's physical configuration, by specifying the number and arrangement of the servers, and (2) the stochastic nature of the demands, by specifying the variability in the arrival process and in the service process. The essence of queueing theory is that it takes into account the randomness of the arrival process and the randomness of the service process. The most common assumption about the arrival process is that the customer arrivals follow a

排队系统仿真 - 副本

食堂排队系统仿真 专业班级: 20121171 姓名: 学号: 年月日

一、实验名称 食堂排队系统仿真实验 二、实验目的 学习Flexsim仿真软件的基本用法并建立一个简单的食堂排队模型;学习根据临时实体类型来定义临时实体的流程路径;学习统计数据的收集、分析与比较。 三、实验内容 根据数据调查统计,得到顾客到达的时间间隔服从指数分布exponential(0,*,*)。顾客随机的均匀到达。 有*个打饭窗口为顾客提供服务,顾客将首先到空闲可用的打饭窗口接受服务。 顾客接受服务的时间服从(*,*)的**分布。顾客接受完服务后离开系统。以上时间单位皆为分钟。 对上述系统进行建模,仿真*小时的运行状况,收集各打饭窗口的利用率、顾客的平均等待时间等数据,提出服务设施的改进建议,使得顾客的平均等待时间不超过**分钟。 四、仪器设备 计算机、Flexsim仿真软件 五、实验步骤 1.添加控件 首先flexsim仿真软件,软件,*个发生器,*个暂存区,*个处理器,*个吸收器,并连接各个实体控件。如图

图 2. 设置发生器的参数 <1>到达时间间隔设置 <2>发生触发器离开出发设置 3、设置处理器的参数 定义发生器Processor1、Processor2(根据上面设定的发生器个数)为顾客提供服务,并设置其参数 处理时间设置 临时实体流设置 4、模拟仿真模型 先打开实验控制器按钮,设置系统仿真时间***分钟(根据上面的设置),再编译,然后

运行。 5、统计数据 图(生成报告的图)6.实验结论 平均排队时间**,平均排队人数**,最大排队时间**,最大排队人数**,(之后分析自己的模型,排队是否过长,处理时间是否过长) 六、方案改进 增加*个的处理器(即增加服务窗口),连接控件。(等)

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

单服务台系统MATLAB仿真 学号:1040408115 姓名:缪晨 一、引言 排队是日常生活中经常遇到的现象。通常,当人、物体或是信息的到达速率大于完成服务的速率时,即出现排队现象。排队越长,意味着浪费的时间越多,系统的效率也越低。在日常生活中,经常遇到排队现象,如开车上班、在超市等待结账、工厂中等待加工的工件以及待修的机器等。总之,排队现象是随处可见的。排队理论是运作管理中最重要的领域之一,它是计划、工作设计、存货控制及其他一些问题的基础。Matlab是MathWorks公司开发的科学计算软件,它以其强大的计算和绘图功能、大量稳定可靠的算法库、简洁高效的编程语言以及庞大的用户群成为数学计算工具方面的标准,几乎所有的工程计算领域,Matlab都有相应的软件工具箱。选用Matlab软件正是基于Matlab的诸多优点。二、排队模型 三.仿真算法原理 (1)顾客信息初始化 根据到达率λ和服务率μ来确定每个顾客的到达时间间隔和服务时间间隔。服务间隔时间可以用负指数分布函数exprnd()来生成。由于泊松过程的时间间隔也服从负指数分布, 故亦可由此函数生成顾客到达时间间隔。需要注意的是exprnd()的输入参数不是到达率λ和服务率μ 而是平均到达时间间隔1/λ

和平均服务时间1/μ。 根据到达时间间隔,确定每个顾客的到达时刻. 学习过C 语言的人习惯于使用FOR循环来实现数值的累加, 但FOR循环会引起运算复杂度的增加而在MATLAB 仿真环境中, 提供了一个方便的函数cumsum() 来实现累加功能读者可以直接引用 对当前顾客进行初始化。第1 个到达系统的顾客不需要等待就可以直接接受服务其离开时刻等于到达时刻与服务时间之和。 (2)进队出队仿真 在当前顾客到达时刻,根据系统内已有的顾客数来确定是否接纳该顾客。若接纳则根据前一顾客的离开时刻来确定当前顾客的等待时间、离开时间和标志位;若拒绝,则标志位置为0. 流程图如下:

计算机模拟---排队系统仿真研究

计算机模拟--- 医院排队系统仿真研究与分析 专业:交通工程 年级:2009级 姓名:颜奋帆 学号:20092953

摘要 本文通过研究排队系统的构成,来到过程,服务时间,服务窗口,服务类型等方面,评价排队服务系统性能的主要指标。在对排队系统进行分析后,得到结构图与主要流程图。通过医院排队系统仿真研究与分析,得到排队系统的一般运行规律,并提出合理的意见与建议。 Abstract By analyzing different aspects like queuing system, processing, service time, service windows and service type, this paper introduced a way to evaluate the main indicators of the queuing system. After detailed research, structure chart and main flow chart is then worked out. The study of queuing system in hospitals highlights general rules for queuing system, as well as reasonable comments and suggestions related to it.

医院排队系统仿真研究与分析 一.研究背景与意义 排队论已经广泛应用于各种管理系统。比如仓库供应、企业生产、物资分配与流通、交通运输、计算机作业及生活服务。这些系统都可以作为排队服务系统进行处理。在系统仿真应用中,又以排队系统的离散型仿真最为普遍。在某种程度上说,管理系统仿真正是在排队系统的离散型仿真的基础上逐渐发展起来的。 医院就医排队是一种经常遇见的非常熟悉的现象。它每天以这样或那样的形式出现在我们面前。例如,患者到医院就医,患者到药房配药、患者到输液室输液等,往往需要排队等待接受某种服务。这里,护士台、收费窗口、输液护士台及其服务人员都是服务机构或服务设备。 以上排队都是有形的,还有些排队是无形的。由于患者到达的随机性,所以排队现象是不可避免的。 如果医院增添服务人员和设备,就要增加投资或发生空闲浪费;如果减少服务设备,排队等待时间太长,对患者和社会都会带来不良影响。因此,医院管理人员要考虑如何在这两者之间取得平衡,以便提高服务质量,降低服务费用。 在排队论中,患者和提供各种形式服务的服务机构组成一个排队系统,称为随机服务系统。排队系统模型已广泛应用于各种管理系统。如手术管理、输液管理、医疗服务、医技业务、分诊服务,等等。 二.排队服务系统问题的提出 2.1 医院排队系统的组成 排队系统的基本结构由四个部分构成:来到过程(输入)、服务时间、服务窗口和排队规则。 1、来到过程(输入)是指不同类型的患者按照各种规律来到医院。 2、服务时间是指患者接收服务的时间规律。 3、服务窗口则表明可开放多少服务窗口来接纳患者。 4、排队规则确定到达的患者按照某种一定的次序接受服务。 5、排队列数,有单列的和多列的。 6、队列容量,分为有限的和无限的。 2.2 来到过程 常见的来到过程有定长输入、泊松(Poisson)输入、埃尔朗(A. K. Erlang)输入等,其中泊松输入在排队系统中的应用最为广泛. 所谓泊松输入即满足以下4个条件的输入: ①平稳性:在某一时间区间内到达的患者数的概率只与这段时间的长度和患者数有关; ②无后效性:不相交的时间区间内到达的患者数是相互独立的; ③普通性:在同时间点上就诊或手术最多到达1个患者, 不存在同时到达2个以上患者的情况; ④有限性:在有限的时间区间内只能到达有限个患者, 不可能有无限个患

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

实验2排队系统仿真 一、学习目的 1.了解仿真的特点 2.学习如何建构模型 3.熟悉eM-Plant基本的对象和操作 4.掌握排队系统的特点与仿真的实现方法 二、问题描述 该银行服务窗口为每个到达的顾客服务的时间是随机的,表2.4是顾客服务时间纪录的统计结果 表2.4 每个顾客服务时间的概率分布 对于上述这样一个单服务待排队系统,仿真分析30天,分析该系统中顾客的到

达、等待和被服务情况,以及银行工作人员的服务和空闲情况。 三、系统建模 3.1 仿真目标 通过对银行排队系统的仿真,研究银行系统的服务水平和改善银行服务水平的方法,为银行提高顾客满意度,优化顾客服务流程服务。 3.2.系统建模 3.2.1 系统调研 1. 系统结构: 银行服务大厅的布局, 涉及的服务设备 2. 系统的工艺参数: 到达-取号-等待-服务-离开 3. 系统的动态参数: 顾客的到达时间间隔, 工作人员的服务时间 4. 逻辑参数: 排队规则, 先到先服务 5. 系统的状态参数: 排队队列是否为空, 如果不为空队长是多少, 服务台是否为空 6. 系统的输入输出变量:输入变量确定其分布和特征值,顾客的到达时间间隔的概率分布表和每个顾客被服务时间的概率分布. 输出变量根据仿真目标设定. 包括队列的平均队长、最大队长、仿真结束时队长、总服务人员、每个顾客的平均服务时间、顾客平均排队等待服务时间、业务员利用率等。 3.2.2系统假设 1.取号机前无排队,取号时间为0 2.顾客排队符合先进先出的排队规则 3.一个服务台一次只能对一个顾客服务 4.所有顾客只有一种单一服务 5.仿真时间为1个工作日(8小时) 6.等候区的长度为无限长 3.2.3系统建模 系统模型: 3.2.4 仿真模型 1.实体:银行系统中的实体是人(主动体)

(完整版)单服务排队系统MATLAB仿真程序

%总仿真时间 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 = []; %按负指数分布产生各顾客达到时间间隔 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); %***************************************** % 计算第1 个顾客的信息 %***************************************** %第1 个顾客进入系统后直接接受服务,无需等待 events(3,1) = 0; %其离开时刻等于其到达时刻与服务时间之和 events(4,1) = events(1,1)+events(2,1); %其肯定被系统接纳,此时系统内共有1 个顾客,故标志位%置1 events(5,1) = 1; %其进入系统后,系统内已有成员序号为1 member = [1]; %***************************************** % 计算第i 个顾客的信息 %***************************************** for i = 2:arr_num %如果第i 个顾客的到达时间超过了仿真时间,则跳出循环if events(1,i)>Total_time break; %如果第i 个顾客的到达时间未超过仿真时间,则计算在其%到达时刻系统中已有的顾客个数 else number = sum(events(4,member) > events(1,i));

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

单服务台系统MATLAB仿真 一、引言 排队是日常生活中经常遇到的现象。通常,当人、物体或是信息的到达速率大于完成服务的速率时,即出现排队现象。排队越长,意味着浪费的时间越多,系统的效率也越低。在日常生活中,经常遇到排队现象,如开车上班、在超市等待结账、工厂中等待加工的工件以及待修的机器等。总之,排队现象是随处可见的。排队理论是运作管理中最重要的领域之一,它是计划、工作设计、存货控制及其他一些问题的基础。Matlab是MathWorks公司开发的科学计算软件,它以其强大的计算和绘图功能、大量稳定可靠的算法库、简洁高效的编程语言以及庞大的用户群成为数学计算工具方面的标准,几乎所有的工程计算领域,Matlab都有相应的软件工具箱。选用Matlab软件正是基于Matlab的诸多优点。 二、排队模型 三.仿真算法原理 (1)顾客信息初始化 根据到达率λ和服务率μ来确定每个顾客的到达时间间隔和服务时间间隔。服务间隔时间可以用负指数分布函数exprnd()来生成。由于泊松过程的时间间隔也服从负指数分布, 故亦可由此函数生成顾客到达时间间隔。需要注意的是exprnd()的输入参数不是到达率λ和服务率μ而是平均到达时间间隔1/λ和平均服务时间1/μ。 根据到达时间间隔 ,确定每个顾客的到达时刻. 学习过 C 语言的人习惯于使用 FOR循环来实现数值的累加, 但FOR循环会引起运算复杂度的增加而在MATLAB 仿真环境中, 提供了一个方便的函数cumsum() 来实现累加功能读者可以直接引用 对当前顾客进行初始化。第1 个到达系统的顾客不需要等待就可以直接接受服务其离开时刻等于到达时刻与服务时间之和。 (2)进队出队仿真 在当前顾客到达时刻,根据系统内已有的顾客数来确定是否接纳该顾客。若接纳则根据前一顾客的离开时刻来确定当前顾客的等待时间、离开时间和标志位;若拒绝,则标志位置为0. 流程图如下: 四、程序实现 单服务台服务,服务参数M/M/1,λ=μ=0.1,排队规则为FIFO,以分为单位,仿真时间240分钟。 仿真程序代码如下 %总仿真时间 Total_time = 240; %到达率与服务率 lambda = 0.1; mu =0.1; %平均到达时间与平均服务时间 arr_mean = 1/lambda; ser_mean = 1/mu; %可能到达的最大顾客数(round:四舍五入求整数)

matlab仿真设计-多服务台排队系统建模与动画仿真

1.要求分析 仿真系统以运筹学中排队论为数学基础,根据其中的多服务台负指数分布排队系统建立仿真模型。 对于排队服务系统,顾客往往注重排队顾客是否太多、等待时间是否太长,而服务员则关心她的空闲时间。因此队长、等待时间以及服务利用率等指标可以衡量系统性能。多服务排队系统(M/M/N模型)中,按照顾客到达的时间概率分布为泊松分布,顾客服务时间的长短服从负指数分布的情况,对排队系统进行仿真。 其过程如下图: 2.问题分析 根据系统要求,设计过程中主要需要解决一下问题 1.利用MATLAB所提供的GUI工具,设计系统界面。 2.根据输入参数,建立服务模型,使顾客到达率符合泊松分布,顾客服务时间符合负指数分布,并由数学关系得到平均等待时间、平均队长、服务利用率。3.通过输入参数,利用MATLAB图形功能实现系统动画仿真。 4.对整体系统进行调整,检验系统稳定性与正确性,完善系统功能。 5.对整个设计过程进行评估。 3.模型假设 根据系统设计要求与实际情况,服务系统基于以下假设:

1.顾客源是无穷的; 2.排队长度没有限制; 3.到达系统的顾客按先到先服务原则依次进入服务; 4.服务员在仿真过程中没有休假; 5.顾客到达时排成一队,当有服务台空闲时进入服务状态; 6.单位时间内到达的顾客数量服从泊松分布; 7.顾客所需的服务时间服从负指数分布; 8.各服务台服务无相互影响且平均服务时间相同。 4.模型分析 4.1 排队系统构成 系统设计过程中,将排队过程分为到达过程,排队过程,服务过程三部分。 4.1.1到达过程 到达过程主要针对顾客到达情况,对于不同的模型背景,顾客到达情况有不同的限制,此次系统设计过程中顾客到达基于以下假设: 1.顾客源是无限的。 2.顾客单个到来,且相互独立。 3.顾客到达的时间服从泊松分布,且到达过程是平稳的。 4.1.2排队过程 排队过程规定顾客在排队过程中的排队规则,即规定顾客在排队系统中按怎样的规则、次序接收服务的,本次系统设计采用以下排队规则: 1.顾客到达时若所有服务台均被占用,则顾客均选择排队等候。 2.顾客的服务次序采取先到先服务。 3.队列数目为单列,顾客不会在排队过程中中途退出。

多服务台排队系统的仿真设计

实验3---多服务台排队系统的仿真 :学号: 一、目标任务 已知一个系统有N个服务员,能力相等,服务时间服从指数分布。顾客的到达时间间隔服从指数分布。用Monte-Carlo仿真,分别求按下列方案的总体平均排队时间: ① M|M|N。 ② N个单通道系统并列,按1/N概率分裂到达流。 ③ N个单通道并列,挑选最短的队。 要求: ①给出程序设计的过程。 ②如果采用固定的N,则要求N>2。 ③至少取ρ=0.3和ρ=0.7两种强度运行程序。 ④对结果进行分析。 二、编程语言 Matlab 三、关键代码 方案一: N = 3; % 服务员人数 r = 6; % 顾客到达流强度 u = 20; % 服务员服务强度 T = 1000000; % 仿真运行时间 avg_wait_time = []; % 平均等待时间 for i=1:100 % 模拟排队函数 server_time = [0.0, 0.0, 0.0]; % 用来保存服务员下一空闲时间 time = 0; % 绝对时钟,初始为0 client_num = 0; % 顾客总数,初始为0 CRTime = 0; % 顾客到达时间间隔 ServeTime = 0; % 顾客服务时间 server_id = 0; % 当前进入排队窗口的服务员编号 total_wait_time = 0;% 系统中到达顾客的总等待时间 while 1 CRTime = exprnd(1/r); % 按指数分布产生顾客到达时间间隔 time = time + CRTime; % 更新系统的绝对时钟

if time > T break; end client_num = client_num + 1; % 顾客数加1 ServeTime = exprnd(1/u); % 按指数分布产生顾客服务间隔 server_id = mod(client_num, N); % 按1..N的顺序循环排入服务员窗口 if server_id ==0 server_id = N; end if server_time(1, server_id) <= time % 如果当前server_id号服务员空闲,则直接接收服务 server_time(1, server_id) = time + ServeTime; % 服务员下一空闲时间为当前绝对时钟加上当前服务时间 else % 否则所有服务员都在忙碌,顾客要排队等候 total_wait_time = total_wait_time + server_time(1, server_id) - time; % 顾客排队等候时间为当前服务员下一空闲时间减去绝对时钟 server_time(1, server_id) = server_time(1, server_id) + ServeTime; end end avg_wait_time = [avg_wait_time, total_wait_time/client_num]; end % 计算平均等待时间 mean_avg_wait_time = mean(avg_wait_time); fprintf('ρ=%2.1f平均等待时间 %6.5f\n', r/u, mean_avg_wait_time); % 打印平均等待时间 % 绘制每次仿真的平均等待时间和总体平均等待时间线状图 x = 1:100; %plot(x, avg_wait_time, x, mean_avg_wait_time); scatter(x, avg_wait_time, '.'); 方案二: N = 3; % 服务员人数 r = 6; % 顾客到达流强度 u = 20; % 服务员服务强度 T = 1000; % 仿真运行时间 avg_wait_time = []; % 平均等待时间

相关主题
文本预览
相关文档 最新文档