当前位置:网站首页>Matlab-离散事件系统仿真实验
Matlab-离散事件系统仿真实验
2022-07-27 09:57:00 【用户9925864】
分析一个单服务台排队系统1、排队系统的一般理论
一般的排队系统都有三个基本组成部分:
(1) 到达模式:指动态实体(顾客)按怎样的规律到达,描写实体到达的统计特性。通常假定顾客总体是无限的。
(2) 服务机构:指同一时刻有多少服务设备可以接纳动态实体,它们的服务需要多少时间。它也具有一定的分布特性。通常,假定系统的容量(包括正在服务的人数加上在等待线等待的人数)是无限的。(3) 排队规则:指对下一个实体服务的选择原则。通用的排队规则包括先进先出(FIFO),后进先出(LIFO),随机服务(SIRO)等。
2、离散系统常用的仿真策略
(1)事件调度法(Event Scheduling):
基本思想:离散事件系统中最基本的概念是事件,事件发生引起系统状态的变化,用事件的观点来分析真实系统。通过定义事件或每个事件发生系统状态的变化,按时间顺序确定并执行每个事件发生时有关逻辑关系。
(2)活动扫描法:
基本思想:系统有成分组成,而成分又包含活动。活动的发生必须满足某些条件,且每一个主动成分均有一个相应的活动例程。仿真过程中,活动的发生时间也作为条件之一,而且较之其他条件具有更高的优先权。
(3)进程交互法:
基本思想:将模型中的主动成分历经系统所发生的事件及活动,按时间发生的顺序进行组合,从而形成进程表。系统仿真钟的推进采用两张进程表,一是当前事件表,二是将来事件表。
3、本实验采用单服务台模型
(1) 到达模式:顾客源是无限的,顾客单个到达,相互独立,一定时间的到达数服从指数分布。
(2) 排队规则:单队,且对队列长度没有限制,先到先服务的 FIFO规则。
(3) 服务机构:单服务台,各顾客的服务时间相互独立,服从相同的指数分布。
(4) 到达时间间隔和服务时间是相互独立的。
4、仿真运行方式
仿真运行方式可分为两大类:
(1)终止型仿真:仿真的运行长度是事先确定的由于仿真运行时间长度有限,系统的性能与运行长度有关,系统的初始状态对系统性能的影响是不能忽略的。为了消除由于初始状态对系统性能估计造成的影响,需要多次独立运行仿真模型。
(2)稳态型仿真:这类仿真研究仅运行一次,但运行长度却是足够长,仿真的目的是估计系统的稳态性能。
5、系统设计
采用事件调度法,事件调度法共有三种事件:即“顾客到达”、“服务开始”、“服务结束”。其中“服务开始”为条件事件,其条件是“顾客队列长度不为零且服务员空闲”。在用事件调度法时,不单独考虑条件事件,而将其并入非条件事件中。因此,需要考虑的事件例程有“顾客到达时间例程”和 “服务结束时间例程”。“顾客到达时间例程”和 “服务结束时间例程”如图
事件调度法的程序结构设计如下:
(1)初始化。
设置仿真的开始时间 t0和结束时间 tf ;
设置实体的初始化状态;
设置初始事件及其发生时间 ts。
(2)仿真时钟 TIME = ts。
(3)确定在当前时钟 TIME 下发生的事件类型 E(i = 1,2,3,…,n),并按解结规则排序。
(4)如果 TIME <= tf执行。
{case E1:执行 E1 的事件例程;产生后续事件类型及发生时间;……case En:执行 En 的事件例程;产生后续事件类型及发生时间;
}
否则,转(6).
(5)将仿真时钟 TIME 推进到下一最早事件发生时刻;转(3)。(6)结束仿真。
6、思路分析
采用事件调度法来研究单服务台排队系统。顾客逐个到达服务台,且相邻两个顾客到达服务台的时间间隔服从参数为 3 min 的指数分布。到达服务台后,若这时服务员空闲,则为其提供服务,若此时服务员正在为其他顾客服务,则刚到的顾客排队等待。服务员为每位顾客服务的时间长度服从参数为 4 min 的指数分布。使用 Matlab 软件进行建模仿真,用 exprnd 函数生成符合指数分布的随机数。用三个空白数组分别存储第 i 个顾客引起的三种事件先后发生的时刻,对获得的参数按照时间顺序进行整理和分析,可以得出平均队长、平均等待时间等重要参数,流程样例如下
单服务台排队系统的流程框架图如下:
clc
close all
clear
rng default
T = 1000; % T-仿真长度(min)
mu1=3; %顾客到达时间间隔(指数分布)的均值
mu2=4; %服务时间(指数分布)均值
arriveGap = []; % 到达时间间隔
serveGap = []; % 服务时间
Arrive=[]; %顾客到达时间
Serve=[]; %服务开始时间
Leave=[]; %服务结束时间
%===========初始化============%
i=0; % 第几个顾客抵达
t0=0; % 仿真开始时间
TIME=0; % 系统时间
arriveGap = [arriveGap, exprnd(mu1)];
Tarrv=t0+arriveGap(i+1); % 第i个抵达时间
serveGap = [serveGap, exprnd(mu2)];
Tleave=Tarrv+serveGap(i+1); % 第i个服务结束时间
Arrive=[Arrive,Tarrv];
Serve=[Serve,Tarrv];
Leave=[Leave,Tleave];
% 开始仿真
while TIME < T
i=i+1;
arriveGap = [arriveGap, exprnd(mu1)];
Tarrv=Tarrv+arriveGap(i+1); %确定下一顾客到达时刻
% 留个空白思考
if Leave(i)<=Arrive(i+1) %服务员空闲,无需排队
% 留个空白思考
else %服务员忙碌,需要排队
% 留个空白思考
end
% 留个空白思考
Leave=[Leave,Tleave];
end
%%
Twait=[]; %每个顾客的等待时间
Nwait=[]; %每个顾客接受服务时的队长
WaitNum=0; % 平均等待人数
WaitTime=0; % 平均等待时间
%平均等待时间
for j=1:i
Twait(j)=Serve(j)-Arrive(j);
WaitTime=WaitTime+Twait(j);
end
WaitTime=WaitTime/i;
%平均队长
for m=1:i
k=0;
for n=m+1:i
if Leave(m)>Arrive(n)
k=k+1;
else
break;
end
end
Nwait(m)=k;
WaitNum=WaitNum+Nwait(m);
end
WaitNum=WaitNum/i;
%绘图
figure
plot(arriveGap)
xlabel 顾客序号
ylabel 到达间隔时间/min
figure
plot(serveGap)
xlabel 顾客序号
ylabel 服务时间/min
figure
plot(Twait);
xlabel 顾客序号
ylabel 等待时间/min
figure
plot(Nwait);
xlabel 顾客序号
ylabel 队伍长度/人
disp(['平均到达间隔时间:', num2str(mean(arriveGap)),' min'])
disp(['平均服务时间:', num2str(mean(serveGap)),' min'])
disp(['平均等待时间:', num2str(WaitTime),' min'])
disp(['平均队长指标:', num2str(WaitNum),' 人'])边栏推荐
- 线代004
- Oracle RAC 19C PDB instance is down
- System parameter constant table of system architecture:
- Shell read read console input, use of read
- Food safety | is sugar free really sugar free? These truths need to be known
- LeetCode.565. 数组嵌套____暴力dfs->剪枝dfs->原地修改
- 食品安全 | 垃圾食品越吃越想吃?这份常见食品热量表请收好
- Practice and exploration of overseas site Seata of ant group
- [scm] source code management - lock of perforce branch
- Gbase 8A MPP cluster capacity expansion practice
猜你喜欢

Food safety | the more you eat junk food, the more you want to eat it? Please keep this common food calorimeter

Provincial Emergency Management Department: Guangzhou can strive to promote the experience of emergency safety education for children
![Shell函数、系统函数、basename [string / pathname] [suffix] 可以理解为取路径里的文件名称 、dirname 文件绝对路径、自定义函数](/img/3d/d7276d2010f1d77a3bd572cc66eced.png)
Shell函数、系统函数、basename [string / pathname] [suffix] 可以理解为取路径里的文件名称 、dirname 文件绝对路径、自定义函数

Stylegan paper notes + modify code to try 3D point cloud generation

备战金九银十Android面试准备(含面试全流程,面试准备工作面试题和资料等)

视觉SLAM十四讲笔记(一):第一讲+第二讲

Robotframework+eclispe environment installation

DCGAN论文改进之处+简化代码
![Shell中的文本处理工具、cut [选项参数] filename 说明:默认分隔符是制表符、awk [选项参数] ‘/pattern1/{action1}filename 、awk 的内置变量](/img/ed/941276a15d1c4ab67d397fb3286022.png)
Shell中的文本处理工具、cut [选项参数] filename 说明:默认分隔符是制表符、awk [选项参数] ‘/pattern1/{action1}filename 、awk 的内置变量

LeetCode.1260. 二维网格迁移____原地暴力 / 降维+循环数组直接定位
随机推荐
7/26 thinking +dp+ suffix array learning
2016 outlook
Case of burr (bulge) notch (depression) detection of circular workpiece
Shell read read console input, use of read
蚂蚁集团境外站点 Seata 实践与探索
vs2019社区版下载教程(详细)
Summary of binary tree exercises
PCL各模块概述(1.6)
Brush the title "sword finger offer" day04
3D修复论文:Shape Inpainting using 3D Generative Adversarial Network and Recurrent Convolutional Networks
Food safety | the kitchen board environment is very important. Do you know these use details?
ACL2021最佳论文出炉,来自字节跳动
Shell综合应用案例,归档文件、发送消息
How does data analysis solve business problems? Here is a super detailed introduction
RobotFramework+Eclispe环境安装篇
Metaaploit-后渗透技知识
3D face reconstruction and dense alignment with position map progression network
活体检测综述
Failure of CUDA installation nsight visual studio edition failed
Concurrent thread state transition