超详细的排队论建模
排隊系統
顧客輸入過程
- 顧客源(總體):有限/無限
- 顧客到達方式:逐個/逐批(主要是逐個)
- 顧客到達間隔:隨機型/確定型
- 顧客到達:相互獨立/相互關聯
- 輸入過程:平穩/非平穩
排隊結構與排隊規則
- 顧客排隊方式:等待制/即時制
- 排隊系統容量:有限制/無限制
- 排隊隊列數目:單列/雙列
- 中途是否退出:允許/禁止
- 是否允許列間轉移:允許/禁止
服務機構與服務規則
- 服務臺數量:單個/多數
- 服務臺排列形式:并聯/串聯/混合
- 服務臺服務方式:逐個/逐批
- 服務時間分布:隨機型/確定型
- 服務時間分布是否平穩:平穩/非平穩
服務臺給顧客的服務順序
- 先來先服務
- 后到先服務
- 隨機服務
- 優先服務
達到間隔與服務時間的典型分布
- 泊松分布 $ M$
- 負指數分布 $ M$
- k階埃爾朗分布 EKE_KEK?
- 確定型分布 $ D$
- 一般服務時間分布 $ G$
排隊模型
系統運行狀態參數
-
系統狀態N(t)N(t)N(t)
排隊系統在t時刻的全部顧客數NNN ,包括“排隊顧客數”和“正在被服務顧客數”
-
系統狀態概率
a.瞬間概率Pn(t)P_n(t)Pn?(t) :系統t時刻的系統狀態N(t)=nN(t)=nN(t)=n 的概率
b.穩態概率PnP_nPn? : $P_n= \lim_{n\rightarrow+\infty} P_n(t) $ .排隊系統運行了一定長的時間后系統狀態的概率不再隨時間t變化
系統運行指標參數(評價參數)
-
隊長LsL_sLs?
系統中的顧客數(n)期望值記為LsL_sLs? (排隊中以及服務中)
-
排隊長LqL_qLq?
系統中排隊等待服務的顧客數,期望值為LqL_qLq?
-
逗留時間WsW_sWs?
一個顧客在系統中停留的總時間,期望為WsW_sWs?
-
等待時間WqW_qWq?
一個顧客在系統中的排隊等待時間,期望為WqW_qWq?
于是有WsW_sWs? =WqW_qWq? +W服務W_{服務}W服務?
-
忙期
從顧客到達空閑服務機構起到服務機構再次空閑的時間長度
-
忙期服務量
一個忙期內系統平均完成服務的顧客數
-
損失率
顧客到達排隊系統,未接受服務而離開的概率
-
服務強度:ρ=λ/μs\rho=\lambda/{\mu s}ρ=λ/μs
λ\lambdaλ指單位時間到達排隊系統的人數, s指服務臺的數量,μ\muμ 指單位時間能夠服務的顧客數
泊松流與泊松分布
一般我們認為顧客達到和顧客服務時間的概率是按泊松流的概率分布來的
泊松流滿足三個條件:
1.每一時段到達系統的顧客數相互獨立,即無后效性
2.在充分小的時間間隔內$ [t,t+\Delta t],到達一個顧客的概率與時間t無關,僅與時間間隔成正比,有,到達一個顧客的概率與時間t 無關,僅與時間間隔成正比,有,到達一個顧客的概率與時間t無關,僅與時間間隔成正比,有P_{(t,t+\Delta t)}=\lambda\Delta t+\omicron(\Delta t)$ ,即平穩性
3.對于充分小的時間間隔$ [t,t+\Delta t]$ ,兩個及以上的顧客到達的概率可忽略不計,即普通性
泊松流到達的間隔服從負指數分布
-
顧客到達間隔T的概率密度為:
fT(t)={λe?λt,t?00,t<0f_T\text{(}t\text{)}=\begin{cases} \lambda e\overset{-\lambda t}{}\,\, ,t\geqslant 0\\ 0 ,t<0\\ \end{cases} fT?(t)={λe?λt,t?00,t<0? -
顧客到達間隔T的分布函數為:
FT(t)={1?λe?λt,t?00,t<0F_T\text{(}t\text{)}=\begin{cases} 1-\lambda e\overset{-\lambda t}{}\,\, ,t\geqslant 0\\ 0 ,t<0\\ \end{cases} FT?(t)={1?λe?λt,t?00,t<0?
由概率論的知識我們可以知道
E[T]=1/λ;Var[T]=1/λ2;σ[T]=1/λE\left[ T \right] =1/\lambda ; Var\left[ T \right] =1/\lambda ^2; \sigma \left[ T \right] =1/\lambda E[T]=1/λ;Var[T]=1/λ2;σ[T]=1/λ
顧客服務時間服從負指數分布
對一個顧客的服務時間TsT_sTs?,等價于相鄰兩個顧客離開排隊系統的時間間隔
-
顧客到達間隔TsT_sTs? 的概率密度為:
fTs(t)={λe?λt,t?00,t<0f_{T_s}\text{(}t\text{)}=\begin{cases} \lambda e\overset{-\lambda t}{}\,\, ,t\geqslant 0\\ 0 ,t<0\\\end{cases} fTs??(t)={λe?λt,t?00,t<0? -
顧客到達間隔TsT_sTs?的分布函數為:
FTs(t)={1?λe?λt,t?00,t<0F_{T_s}\text{(}t\text{)}=\begin{cases} 1-\lambda e\overset{-\lambda t}{}\,\, ,t\geqslant 0\\ 0 ,t<0\\\end{cases} FTs??(t)={1?λe?λt,t?00,t<0?
由概率論的知識我們可以知道
E[Ts]=1/λ;Var[Ts]=1/λ2;σ[Ts]=1/λE\left[ {T_s} \right] =1/\lambda ; Var\left[ {T_s}\right] =1/\lambda ^2; \sigma \left[ {T_s} \right] =1/\lambda E[Ts?]=1/λ;Var[Ts?]=1/λ2;σ[Ts?]=1/λ
單服務臺負指數分布M/M/1排隊系統
模型滿足的條件
1.輸入過程:顧客源是無限隨機的,逐個到來,服從泊松分布
2.排隊規則:單隊,無隊長限制,先到先服務
3.服務機構:單服務臺,服務時間的長短隨機,服從泊松分布
該模型的公式
P0=1?ρPn=ρn(1?ρ)Ls=λμ?λ=ρ1?ρLq=λ2μ(μ?λ)=ρ21?ρ=LsρWs=1μ?λWq=λμ(μ?λ)=WsρP(N>k)=ρk+1N表示系統中的顧客數\,\, P_0=1-\rho \,\,\,\,\,\,\,\, P_n=\rho ^n\,\,\left( 1-\rho \right) \\ L_s=\frac{\lambda}{\mu -\lambda}=\frac{\rho}{1-\rho}\,\,\,\,\,\,\,\, L_q=\frac{\lambda ^2}{\mu \left( \mu -\lambda \right)}=\frac{\rho ^2}{1-\rho}=L_s\rho \\ W_s=\frac{1}{\mu -\lambda}\,\, \,\,\,\,\,\, W_q=\frac{\lambda}{\mu \left( \mu -\lambda \right)}=W_s\rho \\ \,\, P\left( N>k \right) =\rho ^{k+1}\,\, N\text{表示系統中的顧客數} P0?=1?ρPn?=ρn(1?ρ)Ls?=μ?λλ?=1?ρρ?Lq?=μ(μ?λ)λ2?=1?ρρ2?=Ls?ρWs?=μ?λ1?Wq?=μ(μ?λ)λ?=Ws?ρP(N>k)=ρk+1N表示系統中的顧客數
模型舉例
某醫院急診室同時只能診治一個病人,診治時間服從指數分布,每個病人平均需要15分鐘。病人按泊松分布到達,平均每小時到達3人。試對此排隊隊系統進行分析
1.確定參數
λ=3,s=1,μ=60/15=4,ρ=λsμ=0.75\,\, \lambda =3 , s=1 , \mu =60/15=4, \,\,\rho =\frac{\lambda}{s\mu}=0.75 λ=3,s=1,μ=60/15=4,ρ=sμλ?=0.75
2.計算穩態概率
急診室空閑,即病人能立即就醫的概率
P0=1?ρ=0.25\,\, P_0=1-\rho =0.25 P0?=1?ρ=0.25
急診室繁忙,即病人需等待就醫的概率為服務強度,即0.75
3.計算系統主要工作指標
急診室內外的病人平均數:
Ls=λμ?λ=3{L_s=\frac{\lambda}{\mu -\lambda}=3}Ls?=μ?λλ?=3
急診室外排隊等待的病人平均數:
$L_q=L_s\rho =2.25
$
病人在急診室內外平均逗留時間:
$
W_s=\frac{1}{\mu -\lambda}=60\min
$
病人平均等候時間:
$
W_q=W_s\rho =45\min$
M/M/S排隊系統
此模型與M/M/1模型不同之處在于有S個服務臺,各服務臺的工作相互獨立,服務率相等,如果顧客到達時,S個服務臺都忙著,則排成一隊等待,先到先服務的單隊模型(該模型非常公平)
整個系統的平均服務率為sμ,ρ=λ/sμ,(ρ<1)為該系統的服務強度
1.狀態概率
P0=[∑k=0s?11k!(λμ)+1s!11?ρ(λμ)s]?1Pn={1n!(λμ)nP00<n?S1S!Sn?S(λμ)nP0n?SP_0=\left[ \sum_{k=0}^{s-1}{\frac{1}{k!}\left( \frac{\lambda}{\mu} \right) +\frac{1}{s!}\frac{1}{1-\rho}\left( \frac{\lambda}{\mu} \right) ^s} \right] ^{-1} \\ P_n\,\,=\begin{cases} \frac{1}{n!}\left( \frac{\lambda}{\mu} \right) ^nP_0\,\,\,\,\,\, 0<n\leqslant S\\ \frac{1}{S!S^{n-S}}\left( \frac{\lambda}{\mu} \right) ^nP_0\,\, \,\, \,\,\,\, n\geqslant S\\ \end{cases} \\ P0?=[k=0∑s?1?k!1?(μλ?)+s!1?1?ρ1?(μλ?)s]?1Pn?=????n!1?(μλ?)nP0?0<n?SS!Sn?S1?(μλ?)nP0?n?S?
2.主要評價指標
Lq=(Sρ)SρS!(1?ρ)2P0Ls=Lq+SρWq=LqλWs=Lλ=Wq+1μ\\ L_q=\frac{\left( S\rho \right) ^S\rho}{S\text{!(}1-\rho \text{)}^2}P_0\,\, \,\, \,\, \,\, L_s=L_q+S\rho \\ W_q=\frac{L_q}{\lambda}\,\,\,\, \,\, \,\, W_s=\frac{L}{\lambda}=W_q+\frac{1}{\mu} Lq?=S!(1?ρ)2(Sρ)Sρ?P0?Ls?=Lq?+SρWq?=λLq??Ws?=λL?=Wq?+μ1?
3.系統狀態$ N\geqslant k$ 的概率
$P\left( N\geqslant k \right) =\sum_{n=k}^{\infty}{P_n}=\frac{\rho ^k}{k\text{!(}1-\rho \text{)}}P_0,, $
4.模型舉例
某醫院急診室同時能同時診治兩個病人,并且平均服務率相同,診治時間服從指數分布,每個病人平均需要15分鐘。病人按泊松分布到達,平均每小時到達3人。試對此排隊隊系統進行分析
1.確定參數
λ=3,s=2,μ=60/15=4,ρ=λsμ=0.375\,\, \lambda =3 , s=2 , \mu =60/15=4,\,\,\rho =\frac{\lambda}{s\mu}=0.375 λ=3,s=2,μ=60/15=4,ρ=sμλ?=0.375
2.計算穩態概率
即病人能立即就醫的概率
P0=[∑k=0s?11k!(λμ)+1s!11?ρ(λμ)s]?1=0.45P_0=\left[ \sum_{k=0}^{s-1}{\frac{1}{k!}\left( \frac{\lambda}{\mu} \right) +\frac{1}{s!}\frac{1}{1-\rho}\left( \frac{\lambda}{\mu} \right) ^s} \right] ^{-1} =0.45 P0?=[k=0∑s?1?k!1?(μλ?)+s!1?1?ρ1?(μλ?)s]?1=0.45
3.計算系統主要工作指標(評價模型好壞最重要的幾個指標)
急診室外排隊等待的病人平均數:
Lq=(Sρ)SρS!(1?ρ)2P0=0.12L_q=\frac{\left( S\rho \right) ^S\rho}{S\text{!(}1-\rho \text{)}^2}P_0=0.12Lq?=S!(1?ρ)2(Sρ)Sρ?P0?=0.12
急診室內外的病人平均數:
$ L_s=L_q+S\rho =0.87$
病人在急診室內外平均逗留時間:
$
W_s=17.4\min
$
病人平均等候時間:
$
W_q=2.4\min$
病人必須等候的概率:
$P\left( N\geqslant 2 \right) =\sum_{n=2}^{\infty}{P_n}=\frac{\rho ^2}{2\text{!(}1-\rho \text{)}}P_0,, $=0.20
排隊論代碼部分
單服務臺負指數分布M/M/1排隊系統
clear clc %***************************************** %初始化顧客源 %***************************************** %總仿真時間 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 %其等待時間為 02009.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('到達時間 ','離開時間 '); 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;
M/M/S排隊系統
%修改前三個數據 s=2; mu=4; lambda=3; ro=lambda/mu; ros=ro/s; sum1=0;for i=0:(s-1)sum1=sum1+ro.^i/factorial(i); endsum2=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)!](https://img-blog.csdnimg.cn/20210201192334667.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L211YmliYWl3aGFsZQ==,size_16,color_FFFFFF,t_70#pic_center)
總結
- 上一篇: 编写一个c语言源程序输出以下信息,C语言
- 下一篇: 科大讯飞股价暴跌趋势不明,语音交互产业风