matlab排队模型和排队系统仿真

通过对服务对象到来及服务时间的统计研究,得出这些数量指标(等待时间、排队长度、忙期长短等)的统计规律,然后根据这些规律来改进服务系统的结构或重新组织被服务对象,使得服务系统既能满足服务对象的需要,又能使机构的费用最经济或某些指标最优。

排队论基本构成与指标

排队论的基本构成

输入过程:描述顾客按照怎样的规律到达排队系统。顾客总体(有限/无限)、到达的类型(单个/成批)、到达时间间隔。
排队规则:指顾客按怎样的规定次序接受服务。常见的有等待制、损失制、混合制、闭合制。
服务机构:服务台的数量; 服务时间服从的分布。

排队系统的数量指标

队长:系统中的平均顾客数(包括正在接受服务的顾客)。
等待队长:系统中处于等待的顾客的数量。
等待时间:等待时间包括顾客的平均逗留时间。
忙期:连续保持服务的时长。

数学表示

A输入过程
B服务时间
C服务台数
n系统容量

模型

默认顾客为泊松分布,除非题里有额外说明
M/M/S/∞输入为泊松分布,服务时间服从负指数分布;系统有S个服务台,系统容量为无穷大的瞪大排队系统
M/M/S/S
顾客到达服从泊松分布,服务台服务时间服从负指数分布,当 S 个服务台被占用后,顾客自动离开,不再等待。
M/M/S/K
顾客到达服从泊松分布,服务台服务时间服从负指数分布,系统容量为 K,当 K 个位置被占用时,顾客自动离开。
M/M/S/K/K
顾客到达服从泊松分布,服务台服务时间服从负指数分布,
系统容量和潜在的顾客数都为 K。
M/M/S/∞
顾客到达规律服从泊松分布,[0,t]时间内到达的顾客平均数为λt。
在这里插入图片描述
顾客接受服务的时间服从参数为μ的负指数分布。每个顾客接受服务的平均时间为1/μ。在这里插入图片描述
当S=1时:
系统的服务强度在这里插入图片描述
无顾客的概率 在这里插入图片描述
有 n 个顾客的概率在这里插入图片描述
平均队长在这里插入图片描述
平均等待队长
在这里插入图片描述
平均逗留时间在这里插入图片描述
平均等待时间在这里插入图片描述
Little 公式在这里插入图片描述
当S>1时
服务能力和强度在这里插入图片描述
服务台都空闲的概率在这里插入图片描述
平均队长
在这里插入图片描述
平均逗留时间在这里插入图片描述
平均等待时间在这里插入图片描述
平均等待队长在这里插入图片描述
对于单服务台,时间状态如下
在这里插入图片描述
在这里插入图片描述
对于多个服务台
假设所有人都是去“办事”
在这里插入图片描述在这里插入图片描述
exprnd函数
其中exprnd(x,y,z),y与z控制生成的矩阵高宽,x具体改变的是……
我直接放图吧,感受效果,这是x=5,10,15的效果
在这里插入图片描述

x=[1:30];
for i=5:5:15
    y=(exprnd(i,1,30))'
    [m,n]=max(y);
    plot(x,y);
    hold on;
    plot(n,m,'*r');
    hold on;
end
legend('5max','5','10max','10','15max','15')

自动取款机案例

银行计划安置取款机, A 机价格和平均服务率都是 B 机的 2倍.。应购置 1 台 A 机还是 2 台 B 机?
顾客平均每分钟到达 1 位, A 型机的平均服务时间为 0.9, B型机为 1.8 分钟, 顾客到达间隔和服务时间都服从指数分布。

%一台A机器
people_num=100;%设置访问人数
at=1;ft=0.9;%到达和服务的指数分布参数
at_dis=cumsum(exprnd(at,1,people_num));%客户到达的时间分布
ft_dis=exprnd(ft,1,people_num);%每个客户需要的服务时间
ser_time=zeros(people_num,1);%新建服务时刻数组
lea_time=zeros(people_num,1);%新建离开时刻数组
wai_time=zeros(people_num,1);%新建等待时长数组
ser_time(1)=at_dis(1);%第一个客户出现
lea_time(1)=at_dis(1)+ft_dis(1);%第一个客户结束服务——离开时刻
wai_time(1)=0;%等待时长
for i=2:people_num
    ser_time(i)=max(at_dis(i),lea_time(i-1));%服务时刻
    lea_time(i)=ser_time(i)+ft_dis(i);%离开时刻
    wai_time(i)=at_dis(i)-lea_time(i-1);%等待时长
end
%两台B机器
ft_b=1.8;
ft_dis_b=exprnd(ft_b,1,people_num);
ser_time_b=zeros(people_num,1);%新建服务时刻数组
lea_time_b=zeros(people_num,1);%新建离开时刻数组
wai_time_b=zeros(people_num,1);%新建等待时长数组
cou=[0 0];%初始柜台
ser_time_b(1)=at_dis(1);%第一个客户出现
lea_time_b(1)=at_dis(1)+ft_dis(1);%第一个客户结束服务——离开时刻
wai_time_b(1)=0;%等待时长
cou(1)=lea_time(1);
for i=2:people_num
    [mi w]=min(cou);
    ser_time_b(i)=max(at_dis(i),cou(w));%服务时刻
    lea_time_b(i)=ser_time(i)+ft_dis_b(i);%离开时刻
    cou(w)=lea_time_b(i);
    wai_time_b(i)=at_dis(i)-cou(w);%等待时长
end
x=[1:people_num];
plot(x,at_dis,'r',x,ft_dis_b,'k',x,lea_time_b,'b',x,ft_dis,':k',x,lea_time,':b')
legend('到达时间','B服务时长','B离开时间','A服务时长','A离开时刻')

说实在的效果不是很明显,离开时间差的也不多。
在这里插入图片描述
两台B机,M/M/S/K模型下的程序编写
链接

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值