排队论mm1和mms

分类

mm1模型

介绍

在这里插入图片描述

代码

clear 
clc 
%***************************************** 
%初始化顾客源 
%***************************************** 

%需要改动的地方就只有仿真时间,到达率和服务率
%服务率一般很难提升,但是到达率可以减小,比如肯德基的服务台由1 变为5%而实际到店的人数没变,但是随机分布,平均分到每个服务台的人数就变为2了,
%可以把肯德基的5个服务台看作5个mm1

%总仿真时间 
Total_time = 10; 
%队列最大长度 
N = 10000000000; 
%到达率与服务率 
lambda = 10; 
mu = 6; 
%平均到达时间与平均服务时间 
arr_mean = 1/lambda; 
ser_mean = 1/mu; 
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]; 
for i = 2:arr_num 
%如果第 i个顾客的到达时间超过了仿真时间,则跳出循环 

if events(1,i)>Total_time 

break; 

else 
number = sum(events(4,member) > events(1,i)); 
%如果系统已满,则系统拒绝第 i个顾客,其标志位置 0 
if number >= N+1 
events(5,i) = 0; 
%如果系统为空,则第 i个顾客直接接受服务 
else 
if number == 0 
%其等待时间为 0

2009.1516

%PROGRAMLANGUAGEPROGRAMLANGUAGE
events(3,i) = 0; 
%其离开时刻等于到达时刻与服务时间之和 
events(4,i) = events(1,i)+events(2,i); 
%其标志位置 1 
events(5,i) = 1; 
member = [member,i]; 
%如果系统有顾客正在接受服务,且系统等待队列未满,则 第 i个顾客进入系统 

else len_mem = length(member); 
%其等待时间等于队列中前一个顾客的离开时刻减去其到 达时刻 
events(3,i)=events(4,member(len_mem))-events(1,i); 
%其离开时刻等于队列中前一个顾客的离开时刻加上其服 
%务时间 
events(4,i)=events(4,member(len_mem))+events(2,i); 
%标识位表示其进入系统后,系统内共有的顾客数 
events(5,i) = number+1; 
member = [member,i]; 
end 
end 

end 
end 
%仿真结束时,进入系统的总顾客数 
len_mem = length(member); 
%***************************************** 
%输出结果 
%***************************************** 
%绘制在仿真时间内,进入系统的所有顾客的到达时刻和离 
%开时刻曲线图(stairs:绘制二维阶梯图) 
stairs([0 events(1,member)],0:len_mem); 
hold on; 
stairs([0 events(4,member)],0:len_mem,'.-r'); 
legend('到达时间 ','离开时间 '); 
ylabel('进入系统的总顾客数');
xlabel('各顾客达到时间间隔 ');
hold off; 
grid on; 
%绘制在仿真时间内,进入系统的所有顾客的停留时间和等 
%待时间曲线图(plot:绘制二维线性图) 
figure; 
plot(1:len_mem,events(3,member),'r-*',1: len_mem,events(2,member)+events(3,member),'k-'); 
xlabel('进入系统的总顾客数');
ylabel('各顾客达到时间间隔 ');
legend('等待时间 ','停留时间 '); 
grid on;

结果截图

在这里插入图片描述
在这里插入图片描述

mms模型

介绍

在这里插入图片描述

代码

%%只需要更改参数s  mu  lambda 即可

s=3;%服务台个数
mu=24;%单位时间内(hour)单个服务台能服务的顾客数
lambda=54;%单位时间(per hour)内到达的顾客数




ro=lambda/mu;
ros=ro/s;
sum1=0;

for i=0:(s-1)
    sum1=sum1+ro.^i/factorial(i);
end

sum2=ro.^s/factorial(s)/(1-ros);

p0=1/(sum1+sum2);
p=ro.^s.*p0/factorial(s)/(1-ros);
Lq=p.*ros/(1-ros);
L=Lq+ro;
W=L/lambda;
Wq=Lq/lambda;
fprintf('排队等待的平均人数为%5.2f人\n',Lq)
fprintf('系统内的平均人数为%5.2f人\n',L)
fprintf('平均逗留时间为%5.2f分钟\n',W*60)
fprintf('平均等待时间为%5.2f分种\n',Wq*60)

结果截图

在这里插入图片描述

### 关于MM1排队模型 #### MM1模型简介 在排队论中,MM1是一种基本的排队模型,其中第一个M表示顾客到达过程遵循泊松分布[^1],第二个M代表服务时间服从负指数分布,而数字1则表明只有一个服务器。这种类型的系统适用于描述许多实际场景中的排队现象。 对于MM1系统的性能指标计算如下: - **交通强度 (ρ)**:定义为$\rho=\frac{\lambda}{\mu}$, 其中 $\lambda$ 是平均到达率,$\mu$ 表示每单位时间内可以完成的服务数量。 - **队长期望值 ($L_q$ $L_s$)**: - 平均等待队列长度$L_q = \frac{{\rho}^2}{(1-\rho)}$ - 系统内的平均总人数$L_s = L_q+\rho$ - **停留时间等待时间** - 客户在系统中的平均停留时间$W_s = \frac{1}{(\mu-\lambda)}$ - 客户仅处于等待状态的时间$W_q=W_s-\frac{1}{\mu}$ ```matlab % MATLAB代码用于模拟简单的MM1排队系统 clear all; clc; lambda = 5; % 到达率为每小时5名客户 mu = 6; % 每个服务员处理速度为每小时6名客户 if lambda >= mu error('The arrival rate must be less than the service rate.'); end rho = lambda / mu; % 计算各种性能度量 Lq = rho^2 / (1-rho); Ls = Lq + rho; Ws = 1 / (mu-lambda); Wq = Ws - 1/mu; fprintf('Average number of customers waiting in queue: %.2f\n', Lq); fprintf('Average total number of customers in system: %.2f\n', Ls); fprintf('Average time spent by a customer in the system: %.2f minutes\n', Ws * 60); fprintf('Average wait time before being served: %.2f minutes\n', Wq * 60); ``` 上述MATLAB脚本展示了如何基于给定参数来评估一个典型的MM1排队系统的几个重要特征[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值