首页 > 编程知识 正文

排队论相关的数学问题(数学建模(8)——排队论模型)

时间:2023-05-06 20:04:14 阅读:121589 作者:3336

数学建模(8) ——排队论模型1,排队论模型的含义:生活中出现了各种排队现象,我们如何合理设置指标,准确评价排队论的好坏,进行系统的优化、修正,这就是排队论模型的含义

2、排队论模型的建立2.1排队论构成:排队论由三部分组成。

1、客户输入流程2、队列流程3、服务流程

接下来,让我们来看看各个部分。

2.1.1、客户录入流程:

2.1.2、队列过程:

2.1.3、服务流程:

2.2系统各项参数: 1、队长:系统中客户数量(n )期望值为Ls

2、排长:系统等待服务的客户数; 期望值为Lq

3、停留时间:是指一个客户在系统停留的全部时间; 期望值,Ws

4、等待时间:是指一个客户在系统中排队的等待时间; 期望值写为http://www.Sina.com/http://www.Sina.com/[服务时间]

5、排队系统每小时平均客户到达次数Wq

6、排队系统每小时平均服务客户数Ws = Wq + E

7、前台数量:

8、服务强度:=/s*; (必须*1)整个系统的平均服务率为s,

9、表示过渡概率pn(t )时刻t系统状态n ) t )=n的概率;

10、稳态概率pn:pn=pn(t ); 通常,当排队系统运行一段时间以上时,系统状态的概率分布不会随时间t而变化。 也就是说,初始时刻(t=0)的系统状态的概率分布(pn(0)、n0 ) )的影响消失。

2.3模型制作:请勿观看以下内容

上面大概知道就好了

3、排队论模式实例:认识3.1.1 M/M/1模式:

3.1.2 M/M/1型号示例: http://www.Sina.com/http://www.Sina.com /

3.2.1认识m/m/s型号:

3.2.2 M/M/S模型示例1 :

在这里,可以用手工计算和程序求解。

直接在MATLAB中输入代码:

s=2; mu=4; lambda=3; ro=lambda/mu; ros=ro/s; sum1=0; forI=0:(s-1 ) sum1=sum1 ro.^i/factorial(i ) I; Endsum2=ro.^s/factorial(s )/(1-ROS ); p0=1/(sum1sum2); p=ro.^s.*p0/factorial(s )/(1-ROS ); LQ=p.*ROS/(1-ROS; L=Lq ro; W=L/lambda; Wq=Lq/lambda; frintf (排队平均人数为(5.2f人(n ),LQ fprintf ),系统中平均人数为) 5.2f人(n ),l fprintf ),平均停留时间为) 5.2f分钟(n ),w * 60 fprintf

3.2.2 M/M/S型号示例2 :

只需改变s=3、mu=24、lambda=54。

s=3; mu=24; lambda=54; ro=lambda/mu; ros=ro/s; sum1=0; forI=0:(s-1 ) sum1=sum1 ro.^i/factorial(i ) I; Endsum2=ro.^s/factorial(s )/(1-ROS ); p0=1/(sum1sum2); p=ro.^s.*p0/factorial(s )/(1-ROS ); LQ=p.*ROS/(1-ROS; L=Lq ro; W=L/lambda; Wq=Lq/lambda; frintf (排队平均人数为(5.2f人(n ),LQ fprintf ),系统中平均人数为) 5.2f人(n ),l fprintf ),平均停留时间为) 5.2f分钟(n ),w * 60 fprintf

p和P0手动计算。

clear CLC % * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。 %到达率和服务率lambda=5; mu=6; %平均到达时间和平均服务时间arr_mean=1/lambda; s

er_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 %其等待时间为 02009.1516%PROGRAMLANGUAGEPROGRAMLANGUAGEevents(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('到达时间 ','离开时间 '); hold off; grid on; %绘制在仿真时间内,进入系统的所有顾客的停留时间和等 %待时间曲线图(plot:绘制二维线性图) figure; plot(1:len_mem,events(3,member),'r-*',1: len_mem,events(2,member)+events(3,member),'k-'); legend('等待时间 ','停留时间 '); grid on;

运行显示:

其中代码中

Total_time(总仿真时间),lambda(每小时进入的顾客数量),mu (单服务台每小时服务顾客数量)可根据实际改变。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。