连续时间马尔科夫链与排队论

文章目录

  • 连续时间马尔科夫链与排队论
    • 1. 连续时间马氏链
      • 1.1 概述
      • 1.2 停留时间的分布
      • 1.3 跳变概率
        • 1.3.1 连续时间马氏链CK方程
        • 1.3.2 Q矩阵
        • 1.3.3 前进后退方程
      • 1.4 泊松过程与连续时间马氏链
      • 1.5 连续时间马氏链的极限分布
    • 2. M/M/1模型排队论
      • 2.1 模型描述
      • 2.2 模型建立--生灭模型
      • 2.3 平均队长
      • 2.4 平均等待时间
      • 2.5 little's formula

1. 连续时间马氏链

Continuous Time Markov Chains \text{Continuous Time Markov Chains} Continuous Time Markov Chains

1.1 概述

  离散时间马尔科夫链是时间是离散的,状态也是离散的一种随机过程。而连续时间马氏链是时间是连续的,状态是离散的一种随机过程。我们可以重新定义转移概率,跟离散的定义是一样的

S = { x 1 , x 2 , . . . , x n , . . . } P i j ( s , t ) = P ( X ( t ) = j ∣ X ( s ) = i ) ∀ t , t 1 , . . . , t n ⇒ ( X ( t 1 ) , . . . , X ( t n ) ) P ( X ( t n ) = x n ∣ X ( t n − 1 ) = x n − 1 , . . . , X ( t 1 ) = x 1 ) = P ( X ( t n ) = X n ∣ X ( t n − 1 ) = x n − 1 ) S = \{x_1,x_2,...,x_n,... \} \\ P_{ij}(s,t) = P(X(t)=j |X(s)=i) \\ \forall t,t_1,...,t_n \Rightarrow (X(t_1),...,X(t_n)) \\ P(X(t_n)=x_n|X(t_{n-1})=x_{n-1},...,X(t_1)=x_1) = P(X(t_n)=X_n|X(t_{n-1})=x_{n-1}) S={x1​,x2​,...,xn​,...}Pij​(s,t)=P(X(t)=j∣X(s)=i)∀t,t1​,...,tn​⇒(X(t1​),...,X(tn​))P(X(tn​)=xn​∣X(tn−1​)=xn−1​,...,X(t1​)=x1​)=P(X(tn​)=Xn​∣X(tn−1​)=xn−1​)

  同时,我们一般认为转移概率具有平稳性,因此转移概率就与具体时间没有关系了

P i j ( s , t ) = P i j ( t − s ) P_{ij}(s,t) = P_{ij}(t-s) Pij​(s,t)=Pij​(t−s)

  这个转移概率的含义是,从i出发,经过t-s时间后到达j的概率。t-s这段时间,一般来说是包括在i上等待的时间和从i到j转移的时间的。如果我们忽略从i到j的转移时间,也就是会立刻到达,t-s就是一个停留的时间。

  对于连续时间马氏链的转移概率,这个概率包括两部分,一部分是停留时间(在i上停留的时间),一部分是跳变概率(从i到达要转移到哪里去)。

Sojourn Time Jump Probability \text{Sojourn Time} \\ \text{Jump Probability} Sojourn TimeJump Probability

  相比于离散时间马氏链,连续时间马氏链多了一个停留时间的概念,我们先研究停留时间的规律,然后进而研究跳变规律。

1.2 停留时间的分布

  事实上,停留时间是服从指数分布的,因为指数分布是无记忆的。

  我们可以分析一下停留时间的分布。

T i P ( T i > t ) = P ( X ( s ) = i , s ∈ [ 0 , t ] ) = P ( X ( s ) = i , X ( t ) = i , s ∈ [ 0 , t ] ) = P ( X ( s ′ ) = i , s ′ ∈ [ s , t ] ∣ X ( s ′ ′ ) = i , s ′ ′ ∈ [ 0 , s ] ) P ( X ( s ′ ′ ) = i , s ′ ′ ∈ [ 0 , s ] ) = P ( X ( s ′ ) = i , s ′ ∈ [ s , t ] ∣ X ( s ) = i ) P ( T i > s ) = P ( T i > t − s ) P ( T i > s ) T_i \quad P(T_i >t) = P(X(s) = i,s\in[0,t]) \\ = P(X(s)=i,X(t)=i,s \in [0,t]) \\ = P(X(s')=i,s' \in[s,t] |X(s'')=i,s'' \in [0,s])P(X(s'')=i,s'' \in [0,s]) \\ =P(X(s')=i,s' \in[s,t] |X(s)=i)P(T_i > s) \\ = P(T_i > t-s)P(T_i > s) Ti​P(Ti​>t)=P(X(s)=i,s∈[0,t])=P(X(s)=i,X(t)=i,s∈[0,t])=P(X(s′)=i,s′∈[s,t]∣X(s′′)=i,s′′∈[0,s])P(X(s′′)=i,s′′∈[0,s])=P(X(s′)=i,s′∈[s,t]∣X(s)=i)P(Ti​>s)=P(Ti​>t−s)P(Ti​>s)

Let  G ( t ) = P ( T > t ) G ( t ) = G ( s ) G ( t − s ) ∀ s ∈ [ 0 , t ] \text{Let } G(t) = P(T>t) \\ G(t) = G(s) G(t-s)\quad \forall s \in [0,t] Let G(t)=P(T>t)G(t)=G(s)G(t−s)∀s∈[0,t]

  这个形式的方程的唯一解就是指数

P ( T > t ) = G ( t ) = e x p ( − λ t ) ⇒ T ∼ e x p ( λ ) P(T>t) = G(t) = exp(-\lambda t) \Rightarrow T \sim exp(\lambda) P(T>t)=G(t)=exp(−λt)⇒T∼exp(λ)

1.3 跳变概率

1.3.1 连续时间马氏链CK方程

  下面我们继续研究跳变概率。先从CK方程开始说起

Chapman-Kolmogorow P i j ( s + t ) = ∑ k P i k ( s ) P k i ( t ) \text{Chapman-Kolmogorow} \\ P_{ij}(s+t) = \sum_k P_{ik}(s)P_{ki}(t) Chapman-KolmogorowPij​(s+t)=k∑​Pik​(s)Pki​(t)

  连续时间的CK方程和离散时间的CK方程是完全一样的。不过由于离散时间的CK方程,转移的最小单位是一步,可以对n步转移概率矩阵进行归并

P ( n ) = P ( n − 1 ) P ( n ) = P ( 1 ) P ( n − 1 ) ⇒ P ( n ) = ( P ( 1 ) ) n P(n) = P(n-1)P(n) = P(1)P(n-1) \\ \Rightarrow P(n) = (P(1))^n P(n)=P(n−1)P(n)=P(1)P(n−1)⇒P(n)=(P(1))n

  而连续时间马氏链找不到基本的步骤,因为时间理论上是可以无限细分的。连续时间和离散时间马氏链在这里就开始产生区别了。缺乏原子步骤。

  但是,由于离散时间一般对应差分方程,连续时间一般对应微分方程。因此,我们可以使用微分方程的形式对CK方程进行进一步的表示。

P i j ( t + Δ t ) − P i j ( t ) Δ t = ∑ k P i k ( t ) P k j ( Δ t ) − P i j ( t ) Δ t = P i j ( t ) P j j ( Δ t ) − P i j ( t ) + ∑ k = j P i k ( t ) P k j ( Δ t ) Δ t = P i j ( t ) ( P j j ( Δ t ) − 1 ) Δ t + ∑ k = j P i k ( t ) P k j ( Δ t ) Δ t \frac{P_{ij}(t+\Delta t)-P_{ij}(t)}{\Delta t} = \frac{\sum_k P_{ik}(t)P_{kj}(\Delta t)-P_{ij}(t)}{\Delta t} \\ = \frac{P_{ij}(t)P_{jj}(\Delta t)-P_{ij}(t)+\sum_{k \cancel=j}P_{ik}(t)P_{kj}(\Delta t)}{\Delta t} \\ = \frac{P_{ij}(t)(P_{jj}(\Delta t)-1)}{\Delta t} + \frac{\sum_{k \cancel=j}P_{ik}(t)P_{kj}(\Delta t)}{\Delta t} ΔtPij​(t+Δt)−Pij​(t)​=Δt∑k​Pik​(t)Pkj​(Δt)−Pij​(t)​=ΔtPij​(t)Pjj​(Δt)−Pij​(t)+∑k= ​j​Pik​(t)Pkj​(Δt)​=ΔtPij​(t)(Pjj​(Δt)−1)​+Δt∑k= ​j​Pik​(t)Pkj​(Δt)​

  现在我们想求这个式子的极限,事实上,左边式子的极限也是有意义的,因为当转移时间无限趋近于0的时候,从j状态到j状态没有转移时间,只能待在j,也就是说概率是1,上下就都是0了,就有了求极限的价值

Δ t → 0 ⇒ l i m Δ t → 0 P i j ( t ) ( P j j ( Δ t ) − 1 ) Δ t + l i m Δ t → 0 ∑ k = j P i k ( t ) P k j ( Δ t ) Δ t = P i j ( t ) ( l i m Δ t → 0 P j j ( Δ t ) − 1 Δ t ) + ∑ k = j P i k ( t ) ( l i m Δ t → 0 P k j ( Δ t ) Δ t ) \Delta t \rightarrow 0 \Rightarrow lim_{\Delta t \rightarrow 0} \frac{P_{ij}(t)(P_{jj}(\Delta t)-1)}{\Delta t} + lim_{\Delta t \rightarrow 0}\frac{\sum_{k \cancel=j}P_{ik}(t)P_{kj}(\Delta t)}{\Delta t} \\ = P_{ij}(t)(lim_{\Delta t \rightarrow 0} \frac{P_{jj}(\Delta t)-1}{\Delta t}) + \sum_{k \cancel = j} P_{ik}(t) (lim_{\Delta t \rightarrow 0} \frac{P_{kj}(\Delta t)}{\Delta t }) Δt→0⇒limΔt→0​ΔtPij​(t)(Pjj​(Δt)−1)​+limΔt→0​Δt∑k= ​j​Pik​(t)Pkj​(Δt)​=Pij​(t)(limΔt→0​ΔtPjj​(Δt)−1​)+k= ​j∑​Pik​(t)(limΔt→0​ΔtPkj​(Δt)​)

Let  q i i = l i m Δ t → 0 P j j ( Δ t ) − 1 Δ t q i j = l i m Δ t → 0 P i j ( Δ t ) Δ t i = j \text{Let } q_{ii} = lim_{\Delta t \rightarrow 0} \frac{P_{jj}(\Delta t)-1}{\Delta t} \\ q_{ij} = lim_{\Delta t \rightarrow 0} \frac{P_{ij}(\Delta t)}{\Delta t }\quad i \cancel=j Let qii​=limΔt→0​ΔtPjj​(Δt)−1​qij​=limΔt→0​ΔtPij​(Δt)​i= ​j

  然后我们就得到了微分方程,但是这个微分方程对角元和非对角元是有区别的

d P i j ( t ) d t = P i j ( t ) g i i + ∑ k = j P i k ( t ) g k j = ∑ k P i k ( t ) q k j ⇒ d d t P ( t ) = P ( t ) Q P ( t ) = ( P i j ( t ) ) i j Q = ( q i j ) i j \frac{dP_{ij}(t)}{dt} = P_{ij}(t)g_{ii} + \sum_{k \cancel=j} P_{ik}(t)g_{kj} = \sum_k P_{ik}(t) q_{kj} \\ \Rightarrow \frac{d}{dt}P(t) = P(t)Q \\ P(t) = (P_{ij}(t))_{ij} \\ Q = (q_{ij})_{ij} dtdPij​(t)​=Pij​(t)gii​+k= ​j∑​Pik​(t)gkj​=k∑​Pik​(t)qkj​⇒dtd​P(t)=P(t)QP(t)=(Pij​(t))ij​Q=(qij​)ij​

  我们可以得到新的对应关系,与离散时间一步转移概率相对应的就是Q矩阵。Q矩阵就是连续时间马氏链的一步转移矩阵。

Q = l i m Δ t → 0 = P ( Δ t ) − I Δ t Q = lim_{\Delta t \rightarrow 0} = \frac{P(\Delta t)-I}{\Delta t} Q=limΔt→0​=ΔtP(Δt)−I​

1.3.2 Q矩阵

  这个Q矩阵叫做生成元,对应一步转移概率的原子操作

Generator \text{Generator} Generator

  对于Q矩阵而言,对角线元一定都是非正的,非对角线元一定都是非负的

q i i = l i m Δ t → 0 P j j ( Δ t ) − 1 Δ t q i j = l i m Δ t → 0 P i j ( Δ t ) Δ t i = j q i i ≤ 0 q i j ≥ 0 i = j q_{ii} = lim_{\Delta t \rightarrow 0} \frac{P_{jj}(\Delta t)-1}{\Delta t} \\ q_{ij} = lim_{\Delta t \rightarrow 0} \frac{P_{ij}(\Delta t)}{\Delta t }\quad i \cancel=j \\ q_{ii} \leq 0 \\ q_{ij} \geq 0 \quad i \cancel=j qii​=limΔt→0​ΔtPjj​(Δt)−1​qij​=limΔt→0​ΔtPij​(Δt)​i= ​jqii​≤0qij​≥0i= ​j

  对于一步转移矩阵而言,行和是1,而对于Q矩阵而言,行和是0

∑ j g i j = 0 ⇒ ∑ j P i j ( Δ t ) − 1 = 0 \sum_jg_{ij}=0\Rightarrow\sum_{j} P_{ij}(\Delta t) -1 = 0 j∑​gij​=0⇒j∑​Pij​(Δt)−1=0

1.3.3 前进后退方程

  事实上,我们知道CK方程具有两种展开形式。

P i j ( t + Δ t ) − P i j ( t ) Δ t = ∑ k P i k ( t ) P k j ( Δ t ) − P i j ( t ) Δ t ⇒ d d t P ( t ) = P ( t ) Q ( i ) \frac{P_{ij}(t+\Delta t)-P_{ij}(t)}{\Delta t} = \frac{\sum_k P_{ik}(t)P_{kj}(\Delta t)-P_{ij}(t)}{\Delta t} \\ \Rightarrow \frac{d}{dt}P(t) = P(t)Q \quad\quad(i) ΔtPij​(t+Δt)−Pij​(t)​=Δt∑k​Pik​(t)Pkj​(Δt)−Pij​(t)​⇒dtd​P(t)=P(t)Q(i)

  我们用另外一种展开方法进行分析

l i m Δ t → 0 P i j ( t + Δ t ) − P i j ( t ) Δ t = l i m Δ t → 0 ∑ k P i k ( Δ t ) P k j ( t ) − P i j ( t ) Δ t = l i m Δ t → 0 P i i ( Δ t ) P i j ( t ) + ∑ k = i P i k ( Δ t ) P k j ( t ) − P i j ( t ) Δ t = l i m Δ t → 0 ( P i i ( Δ t ) − 1 ) P i j ( t ) Δ t + ( l i m Δ t → 0 ∑ k = i P i k ( Δ t ) Δ t ) P k j ( t ) = g i i P i j ( t ) + ∑ k = i g i k P k j ( t ) = ∑ k g i k P k j ( t ) ⇒ d P ( t ) d t = Q P ( t ) ( i i ) lim_{\Delta t \rightarrow 0}\frac{P_{ij}(t+\Delta t)-P_{ij}(t)}{\Delta t} = lim_{\Delta t \rightarrow 0}\frac{\sum_k P_{ik}(\Delta t)P_{kj}(t)-P_{ij}(t)}{\Delta t} \\ = lim_{\Delta t \rightarrow 0}\frac{P_{ii}(\Delta t)P_{ij}(t)+\sum_{k\cancel=i} P_{ik}(\Delta t)P_{kj}(t)-P_{ij}(t)}{\Delta t} \\ = lim_{\Delta t \rightarrow 0}\frac{(P_{ii}(\Delta t)-1)P_{ij}(t)}{\Delta t} + (lim_{\Delta t \rightarrow 0}\frac{\sum_{k\cancel=i} P_{ik}(\Delta t)}{\Delta t})P_{kj}(t) \\ = g_{ii} P_{ij}(t) + \sum_{k \cancel=i} g_{ik} P_{kj}(t) \\ =\sum_k g_{ik} P_{kj}(t) \\ \Rightarrow \frac{d P(t)}{dt} = Q P(t) \quad\quad(ii) limΔt→0​ΔtPij​(t+Δt)−Pij​(t)​=limΔt→0​Δt∑k​Pik​(Δt)Pkj​(t)−Pij​(t)​=limΔt→0​ΔtPii​(Δt)Pij​(t)+∑k= ​i​Pik​(Δt)Pkj​(t)−Pij​(t)​=limΔt→0​Δt(Pii​(Δt)−1)Pij​(t)​+(limΔt→0​Δt∑k= ​i​Pik​(Δt)​)Pkj​(t)=gii​Pij​(t)+k= ​i∑​gik​Pkj​(t)=k∑​gik​Pkj​(t)⇒dtdP(t)​=QP(t)(ii)

  我们得到的这两个方程都是对的,分布叫做前进方程和后退方程

d d t P ( t ) = P ( t ) Q Forward d P ( t ) d t = Q P ( t ) Backward Kolmonglov-Feller \frac{d}{dt}P(t) = P(t)Q \quad \quad \text{Forward} \\ \frac{d P(t)}{dt} = Q P(t) \quad \quad \text{Backward} \\ \text{Kolmonglov-Feller} dtd​P(t)=P(t)QForwarddtdP(t)​=QP(t)BackwardKolmonglov-Feller

  这两个方程具有相同的解

⇒ P ( t ) = e x p ( Q t ) P ( 0 ) P ( 0 ) = I ⇒ P i i ( 0 ) = 1 P i j ( 0 ) = 0 \Rightarrow P(t) = exp(Qt)P(0) \\ P(0) = I \Rightarrow P_{ii}(0) = 1 \quad P_{ij}(0) = 0 ⇒P(t)=exp(Qt)P(0)P(0)=I⇒Pii​(0)=1Pij​(0)=0

  这里需要注意的是,矩阵的指数就是其泰勒展开

e x p ( Q t ) = ∑ k = 0 ∞ ( Q t ) k k ! exp(Qt) = \sum_{k=0}^{\infty} \frac{(Qt)^k}{k!} exp(Qt)=k=0∑∞​k!(Qt)k​

  对于CK方程而言,离散的是矩阵乘法,连续的是矩阵指数。Q矩阵的行和是0,对角元是负的,非对角元是非负的。

  矩阵指数求解方法

  • 求矩阵Q的特征值λ1,…,λn
  • 求矩阵Q的特征向量矩阵U
  • 然后可以得到矩阵指数

e Q t = U ( e λ 1 t . . . e λ n t ) U − 1 e^{Qt} = U \begin{pmatrix} e^{\lambda_1 t} & \\ & ... \\ &&e^{\lambda_n t}\\ \end{pmatrix} U^{-1} eQt=U⎝⎛​eλ1​t​...​eλn​t​⎠⎞​U−1

1.4 泊松过程与连续时间马氏链

  连续时间马氏链是由转移概率的随机性和停留时间的随机性共同构成的,不过是在离散时间马氏链的基础上增加了指数分布的停留时间。泊松分布的停留时间也是指数分布,不过泊松分布的转移行为非常简单,不具备随机性,因此,可以说,泊松过程是最简单的马尔科夫过程。

  我们可以用马尔科夫的分析方法分析泊松过程,看看泊松过程具有怎么样的行为。

Poisson Process P i j ( Δ t ) = { ( λ Δ t ) j − i ( j − i ) ! e x p ( − λ Δ t ) j ≥ i 0 j < i \text{Poisson Process} \\ P_{ij}(\Delta t) = \begin{cases} \frac{(\lambda \Delta t)^{j-i}}{(j-i)!} exp(-\lambda \Delta t) & j \geq i \\ 0 & j <i \end{cases} Poisson ProcessPij​(Δt)={(j−i)!(λΔt)j−i​exp(−λΔt)0​j≥ij<i​

  然后我们来分析泊松过程的Q矩阵

g i i = l i m Δ t → 0 P i i ( Δ t ) − 1 Δ t = l i m Δ t → 0 e x p ( − λ Δ t ) − 1 Δ t = − λ g i , i + 1 = l i m Δ t → 0 P i , i + 1 ( Δ t ) Δ t = l i m Δ t → 0 λ Δ t e x p ( − λ Δ t ) Δ t = λ g i j = l i m Δ t → 0 ( λ Δ t ) i − j e x p ( − λ Δ t ) ( j − i ) ! Δ t = O ( Δ t ) = 0 j − i ≥ 2 g i j = 0 j < i g_{ii} = lim_{\Delta t \rightarrow 0} \frac{P_{ii}(\Delta t)-1}{\Delta t} = lim_{\Delta t \rightarrow 0}\frac{exp(-\lambda \Delta t)-1}{\Delta t} = -\lambda \\ g_{i,i+1} = lim_{\Delta t \rightarrow 0} \frac{P_{i,i+1}(\Delta t)}{\Delta t} = lim_{\Delta t \rightarrow 0}\frac{\lambda \Delta t exp(-\lambda \Delta t)}{\Delta t} = \lambda \\ g_{ij} = lim_{\Delta t \rightarrow 0} \frac{\frac{(\lambda \Delta t)^{i-j} exp(-\lambda \Delta t)}{(j-i)!}}{\Delta t} = O(\Delta t) = 0 \quad j-i \geq 2 \\ g_{ij} = 0 \quad\quad \quad\quad\quad\quad j<i gii​=limΔt→0​ΔtPii​(Δt)−1​=limΔt→0​Δtexp(−λΔt)−1​=−λgi,i+1​=limΔt→0​ΔtPi,i+1​(Δt)​=limΔt→0​ΔtλΔtexp(−λΔt)​=λgij​=limΔt→0​Δt(j−i)!(λΔt)i−jexp(−λΔt)​​=O(Δt)=0j−i≥2gij​=0j<i

  然后我们就可以得到泊松过程的Q矩阵

Q = ( − λ λ − λ λ − λ λ . . . . . . ) Q = \begin{pmatrix} -\lambda & \lambda & & & \\ & - \lambda & \lambda && \\ && - \lambda & \lambda&\\ &&&...&... \end{pmatrix} Q=⎝⎜⎜⎛​−λ​λ−λ​λ−λ​λ...​...​⎠⎟⎟⎞​

  我们可以看出泊松过程的Q矩阵,对角线都是负的,次对角线都是正的。其他地方都是0。并且主对角线和次对角线的和是0。

  由于这个Q矩阵非常简单,如果使用连续时间马氏链的方法分析Q矩阵,莫过于大炮打蚊子。因此泊松过程使用自己的分析方法就已经可以足够简单了。

1.5 连续时间马氏链的极限分布

  连续时间马氏链的极限分布更加的简单。因为对于离散时间马氏链,如果转移行为本身是震荡的,就会有极限不存在的问题。因此离散时间马氏链需要有非周期的条件。而连续时间马氏链不需要有周期性的条件。

  因为连续时间马氏链有等待时间,在任何一个状态待多久都是有可能的,随时会自己返回。不会有震荡的问题。因此连续时间的马氏链,只有可约,就一定有极限。

  不可约这个条件和停留行为没有关系,只会影响到转移行为。

Irreducible  ⇒ Limit ! \text{Irreducible } \Rightarrow \text{Limit}! Irreducible ⇒Limit!

  我们看看如何求得极限概率

d d t P ( t ) = P ( t ) Q Forward d P ( t ) d t = Q P ( t ) Backward Kolmonglov-Feller \frac{d}{dt}P(t) = P(t)Q \quad \quad \text{Forward} \\ \frac{d P(t)}{dt} = Q P(t) \quad \quad \text{Backward} \\ \text{Kolmonglov-Feller} dtd​P(t)=P(t)QForwarddtdP(t)​=QP(t)BackwardKolmonglov-Feller

  当时间趋于无穷的时候,P(t)会趋于一个常数,导数就会趋于0

l i m t → ∞ P ( t ) = Π d d t P ( t ) = 0 ⇒ Π Q = 0 Forward ⇒ Q Π = 0 Backward lim_{t \rightarrow \infty} P(t) = \Pi \\ \frac{d}{dt} P(t) = 0 \\ \Rightarrow \Pi Q = 0 \quad \quad \text{Forward} \\ \Rightarrow Q \Pi = 0 \quad \quad \text{Backward} limt→∞​P(t)=Πdtd​P(t)=0⇒ΠQ=0Forward⇒QΠ=0Backward

  我们应该用前进方程,不然得到的是恒等式。注意我们的π是个行向量。

Π Q = 0 P i j ( t ) = P j \Pi Q = 0 \\ P_{ij}(t) = P_j ΠQ=0Pij​(t)=Pj​

2. M/M/1模型排队论

2.1 模型描述

  我们之前基于过滤泊松过程介绍过M/G/∞模型的排队问题。但是这个问题不具有普遍性,因为服务台的资源不可能是无限的。

  因此,我们要介绍基于M/M/1模型的排队问题。

M / M / 1 M/M/1 M/M/1

  简单描述就是,马尔科夫的来,马尔科夫的走,然后服务台的数量是1

  马尔科夫来,意味着顾客是以泊松过程到来的;马尔科夫走,是指服务时间是指数分布。这是资源有限情况下的排队问题。

  我们假设顾客到达是强度是λ,我们假设服务时间是指数分布,其参数是μ

M ∼ λ ∼ Possion M ∼ μ ∼ Exponential M \sim \lambda \sim \text{Possion} \\ M \sim \mu \sim \text{Exponential} M∼λ∼PossionM∼μ∼Exponential

  对于排队模型,我们需要求解两个问题,一个问题是平均队长,另外一个问题是平均等待时间。

M / M / 1 ( 1 ) Mean Queue Length ( 2 ) Mean Waiting Time M/M/1 \\ (1) \text{Mean Queue Length} \\ (2) \text{Mean Waiting Time} M/M/1(1)Mean Queue Length(2)Mean Waiting Time

2.2 模型建立–生灭模型

  为了研究平均队长和平均等待时间问题,我们必须建立一个连续时间马尔科夫模型,就是生灭模型

Birth-Death Model \text{Birth-Death Model} Birth-Death Model

  过滤泊松过程要求等待时间之间的独立的,这个要求太强了,不实用。而生灭模型中生和灭两个因素是独立起作用的,也就是要求生作用和灭作用具有独立性,这个是合理的。

  我们先说生,讲的是delta t时间内人数的增加

Birth Δ t + 1 : λ Δ + O ( Δ t ) + ≥ 2 : O ( Δ t ) \text{Birth} \quad \Delta t \\+1: \lambda \Delta +O(\Delta t) \\+ \geq 2: O(\Delta t) BirthΔt+1:λΔ+O(Δt)+≥2:O(Δt)

  然后是灭模型,是delta t时间内人数的减少

Death Δ t − 1 : μ Δ t + O ( Δ t ) − ≥ 2 : O ( Δ t ) \text{Death} \quad \Delta t\\-1: \mu \Delta t +O(\Delta t) \\- \geq 2: O(\Delta t) DeathΔt−1:μΔt+O(Δt)−≥2:O(Δt)

  接下来要计算转移概率矩阵和Q矩阵。

  先看不增不减的情况。就包括没有生没有灭;生一个灭一个;生多个,灭多个。这里注意一下,因为生过程和灭过程是独立的,所以可以做乘法

P i i ( Δ t ) = ( 1 − λ Δ t + O ( Δ t ) ) ( 1 − μ Δ t + O ( Δ t ) ) + ( λ Δ t + O ( Δ t ) ) ( μ Δ t + O ( Δ t ) ) + O ( Δ t ) = ( 1 − λ Δ t + O ( Δ t ) ) ( 1 − μ Δ t + O ( Δ t ) ) + O ( Δ t ) + O ( Δ t ) = ( 1 − λ Δ t + O ( Δ t ) ) ( 1 − μ Δ t + O ( Δ t ) ) + O ( Δ t ) = 1 − λ Δ t − μ Δ t + O ( Δ t ) P_{ii}(\Delta t) = (1-\lambda \Delta t + O(\Delta t))(1-\mu \Delta t +O(\Delta t)) + (\lambda \Delta t +O(\Delta t))(\mu \Delta t +O(\Delta t)) + O(\Delta t) \\ = (1-\lambda \Delta t + O(\Delta t))(1-\mu \Delta t +O(\Delta t)) + O(\Delta t) + O(\Delta t) \\ = (1-\lambda \Delta t + O(\Delta t))(1-\mu \Delta t +O(\Delta t)) + O(\Delta t) \\ = 1 -\lambda \Delta t - \mu \Delta t + O(\Delta t) Pii​(Δt)=(1−λΔt+O(Δt))(1−μΔt+O(Δt))+(λΔt+O(Δt))(μΔt+O(Δt))+O(Δt)=(1−λΔt+O(Δt))(1−μΔt+O(Δt))+O(Δt)+O(Δt)=(1−λΔt+O(Δt))(1−μΔt+O(Δt))+O(Δt)=1−λΔt−μΔt+O(Δt)

  然后是增加一个。包括生一个没有灭;生两个灭一个等等

P i , i + 1 ( Δ t ) = ( λ Δ t + O ( Δ t ) ) ( 1 − μ Δ t + O ( Δ t ) ) + O ( Δ t ) P_{i,i+1}(\Delta t) = (\lambda \Delta t +O(\Delta t))(1-\mu \Delta t +O(\Delta t) ) +O(\Delta t) Pi,i+1​(Δt)=(λΔt+O(Δt))(1−μΔt+O(Δt))+O(Δt)

  然后是减少一个,包括没有生灭一个;灭两个生一个等等。

P i , i − 1 ( Δ t ) = ( 1 − λ Δ t + O ( Δ t ) ) ( μ Δ t + O ( Δ t ) ) + O ( Δ t ) P_{i,i-1}(\Delta t) = (1-\lambda \Delta t +O(\Delta t))(\mu \Delta t +O(\Delta t) ) +O(\Delta t) Pi,i−1​(Δt)=(1−λΔt+O(Δt))(μΔt+O(Δt))+O(Δt)

  如果是变化了很多的情况,就都是高阶无穷小了

P i j ( Δ t ) = O ( Δ t ) P_{ij}(\Delta t) = O(\Delta t) Pij​(Δt)=O(Δt)

  然后我们求Q矩阵

Q = l i m Δ t → 0 1 Δ t ( P ( Δ t ) − I ) Q = lim_{\Delta t \rightarrow 0} \frac{1}{\Delta t}(P(\Delta t) - I) Q=limΔt→0​Δt1​(P(Δt)−I)

g i i = − ( λ + μ ) g i , i + 1 = λ g i , i − 1 = μ g i j = 0 ∣ i − j ∣ > 1 g_{ii}= -(\lambda + \mu) \\ g_{i,i+1} = \lambda \\ g_{i,i-1} = \mu \\ g_{ij} = 0 \quad\quad |i-j| >1 gii​=−(λ+μ)gi,i+1​=λgi,i−1​=μgij​=0∣i−j∣>1

  Q矩阵第一行比较特殊,只能生,不能没

Q = ( − λ λ μ − ( λ + μ ) λ μ − ( λ + μ ) λ . . . . . . . . . ) Q = \begin{pmatrix} -\lambda & \lambda && \\ \mu & -(\lambda + \mu) & \lambda &\\ & \mu & - (\lambda +\mu) & \lambda & \\ &&...&...&...& \end{pmatrix} Q=⎝⎜⎜⎛​−λμ​λ−(λ+μ)μ​λ−(λ+μ)...​λ...​...​​⎠⎟⎟⎞​

  我们就算好了Q矩阵,然后我们可以求极限分布了,记得求极限要用前向方程

Π Q = 0 \Pi Q =0 \\ ΠQ=0

  然后我们可以得到下列的式子

− π 0 λ 0 + π 1 μ = 0 π 0 λ − ( λ + μ ) π 1 + μ π 2 = 0 π 1 λ − ( λ + μ ) π 2 + μ π 3 = 0 -\pi_0 \lambda_0 + \pi_1 \mu = 0 \\ \pi_0 \lambda - (\lambda +\mu) \pi_1 + \mu \pi_2 = 0 \\ \pi_1 \lambda - (\lambda + \mu)\pi_2 + \mu \pi_3 = 0 −π0​λ0​+π1​μ=0π0​λ−(λ+μ)π1​+μπ2​=0π1​λ−(λ+μ)π2​+μπ3​=0

  可以得到

π 1 = λ μ π 0 π 2 = λ μ π 1 = ( λ μ ) 2 π 0 π n = ( λ μ ) n π 0 \pi_1 = \frac{\lambda}{\mu} \pi_0 \\ \pi_2 = \frac{\lambda}{\mu}\pi_1 = (\frac{\lambda}{\mu})^2 \pi_0 \\ \pi_n = (\frac{\lambda}{\mu})^n \pi_0 π1​=μλ​π0​π2​=μλ​π1​=(μλ​)2π0​πn​=(μλ​)nπ0​

  值得注意的是,我们还必须要假设buffer是无穷大的,不然队伍太长的就会溢出。

  我们还需要对π做归一化

∑ k = 0 ∞ π k = π 0 ∑ k = 0 ∞ ( λ μ ) k λ μ < 1 \sum_{k=0}^{\infty} \pi_k = \pi_0 \sum_{k=0}^{\infty}(\frac{\lambda}{\mu})^k \\ \frac{\lambda}{\mu} <1 k=0∑∞​πk​=π0​k=0∑∞​(μλ​)kμλ​<1

  这里我们注意到,如果想要做归一化,还需要考虑这个级数是否收敛的问题,这里底数必须小于1

∑ k = 0 ∞ π k = π 0 ∑ k = 0 ∞ ( λ μ ) k = π 0 1 1 − λ μ = μ μ − λ π 0 = 1 ⇒ π 0 = 1 − λ μ π k = π 0 ( λ μ ) k = ( 1 − λ μ ) ( λ μ ) k \sum_{k=0}^{\infty} \pi_k = \pi_0 \sum_{k=0}^{\infty}(\frac{\lambda}{\mu})^k = \pi_0 \frac{1}{1-\frac{\lambda}{\mu}} \\ = \frac{\mu}{\mu - \lambda} \pi_0 = 1 \Rightarrow \pi_0 = 1- \frac{\lambda}{\mu} \\ \pi_k = \pi_0(\frac{\lambda}{\mu})^k = (1-\frac{\lambda}{\mu})(\frac{\lambda}{\mu})^k k=0∑∞​πk​=π0​k=0∑∞​(μλ​)k=π0​1−μλ​1​=μ−λμ​π0​=1⇒π0​=1−μλ​πk​=π0​(μλ​)k=(1−μλ​)(μλ​)k

2.3 平均队长

  我们已经知道了各个队长的概率,下面可以计算队长的均值了

E ( L ) = ∑ k = 0 ∞ k π k = ∑ k = 1 ∞ k ( 1 − λ μ ) ( λ μ ) k = ( 1 − λ μ ) ∑ k = 1 ∞ k ( λ μ ) k E(L) = \sum_{k=0}^{\infty} k \pi_k = \sum_{k=1}^{\infty} k (1-\frac{\lambda}{\mu})(\frac{\lambda}{\mu})^k \\ = (1-\frac{\lambda}{\mu})\sum_{k=1}^{\infty} k (\frac{\lambda}{\mu})^k \\ E(L)=k=0∑∞​kπk​=k=1∑∞​k(1−μλ​)(μλ​)k=(1−μλ​)k=1∑∞​k(μλ​)k

  这是级数求和

a < 1 R i g h t a r r o w ∑ k = 1 ∞ k a k = a ∑ k = 1 ∞ k a k − 1 = a ∑ k = 1 ∞ ( a k ) ′ = a ( ∑ k = 1 ∞ a k ) ′ = a ( ∑ k = 0 ∞ a k − 1 ) ′ = a ( 1 − a k 1 − a − 1 ) ′ = a ( 1 1 − a − 1 ) ′ = a ( 1 − a ) 2 a <1 \\ Rightarrow \sum_{k=1}^{\infty} k a^k = a\sum_{k=1}^{\infty} k a^{k-1} = a\sum_{k=1}^{\infty} (a^{k})' \\ = a (\sum_{k=1}^{\infty}a^{k})' = a (\sum_{k=0}^{\infty}a^{k}-1)' \\ =a (\frac{1-a^k}{1-a}-1)' \\ = a (\frac{1}{1-a}-1)' = \frac{a}{(1-a)^2} \\ a<1Rightarrowk=1∑∞​kak=ak=1∑∞​kak−1=ak=1∑∞​(ak)′=a(k=1∑∞​ak)′=a(k=0∑∞​ak−1)′=a(1−a1−ak​−1)′=a(1−a1​−1)′=(1−a)2a​

  把这个结论代入队长的均值中

E ( L ) = ( 1 − λ μ ) ∑ k = 1 ∞ k ( λ μ ) k = ( 1 − λ μ ) λ μ ( 1 − λ μ ) 2 = λ μ ( 1 − λ μ ) = λ μ − λ E(L) = (1-\frac{\lambda}{\mu})\sum_{k=1}^{\infty} k (\frac{\lambda}{\mu})^k \\ = (1-\frac{\lambda}{\mu})\frac{\frac{\lambda}{\mu}}{(1-\frac{\lambda}{\mu})^2} = \frac{\frac{\lambda}{\mu}}{(1-\frac{\lambda}{\mu})} \\ = \frac{\lambda}{\mu - \lambda} E(L)=(1−μλ​)k=1∑∞​k(μλ​)k=(1−μλ​)(1−μλ​)2μλ​​=(1−μλ​)μλ​​=μ−λλ​

2.4 平均等待时间

  然后计算一下平均等待时间,等待时间包括两部分,一部分是纯等待时间,一部分是服务时间。我们假设队长L是顾客到达的时候前面的人数,则等待时间=自身服务时间S+队长*S

  队长和服务时间的独立的,可以拆开

E ( w ) = E ( L S + S ) = E ( ( L + 1 ) S ) = E ( L + 1 ) ∗ E ( S ) = ( λ μ − λ + 1 ) ( 1 μ ) = 1 μ − λ E(w) = E(LS +S) = E((L+1)S) = E(L+1)*E(S) = (\frac{\lambda}{\mu - \lambda}+1)(\frac{1}{\mu}) = \frac{1}{\mu - \lambda} E(w)=E(LS+S)=E((L+1)S)=E(L+1)∗E(S)=(μ−λλ​+1)(μ1​)=μ−λ1​

2.5 little’s formula

  我们可以发现,平均队长就是平均等待时间乘以强度

E ( ω ) λ = E ( L ) E(\omega) \lambda =E(L) E(ω)λ=E(L)

  这个关系叫做little’s formula

little’s formula \text{little's formula} little’s formula

  我们可以理解为,刚来的时候排队在队尾,当随着队伍前进,成为第一个人的时候,后面又来了一些人,成为了新的队伍。在排队等待的时候,就是那些人来的时候,因此可以理解为路程(队长) = 速度(强度)*时间(等待时间)

  我们得到的这个公式应用非常广泛,不仅仅是MM1模型,这个公式是排队论的核心,很多其他的排队模型往往也能得到这个结论。

【随机过程】18 - 连续时间马氏链与排队论相关推荐

  1. 【随机过程】14 - 离散时间马氏链与转移概率

    离散时间马尔科夫链与转移概率 文章目录 离散时间马尔科夫链与转移概率 1. 马尔科夫性的引入 2. 马尔科夫性与马尔科夫链 2.1 定义 2.2 马尔科夫性的解读 2.3 马尔科夫性的扩展 2.3.1 ...

  2. 5. 连续时间马氏过程-强Markov族

    5. 连续时间马氏过程-强Markov族 上回主要介绍了有关马氏过程的两个部分内容,即 连续时间的马氏过程的定义及其等价命题: 构造从一个单点出发的Markov过程的两种方法,即「活动概率空间」和「M ...

  3. 数学建模(六) 主成分分析,聚类分析,对策论,马氏链

    全并到一起写是因为我只想写十篇. 1.主成分分析 PCA!!! 主成分分析(Principal Component Analysis, PCA),将多个变量通过线性变换以选出较少个数重要变量的一种多元 ...

  4. [学习笔记]马氏链模型

    引例: (带有反射壁的随机徘徊)如果在原点右边距离原点一个单位及距原点 s(s > 1)个单位处各立一个弹性壁.一个质点在数轴右半部从距原点两个单位处开始随机徘徊.每次分别以概率 p(0 < ...

  5. 有趣的马氏链及其平稳分布

    备注:参考LDA数学八卦讲述很详细,有需要的可以自行下载 马氏链的数学定义如下: P(Xt+1=x|Xt,Xt−1,⋯)=P(Xt+1=x|Xt) 假设当前这一代人处在下层.中层.上层的人的比例是概率 ...

  6. 齐次马氏链的性质(详解)

    目录 一.齐次马氏链和一般马氏链的区别 二.齐次马氏链的性质 1.计算n步转移矩阵 2.熟悉绝对分布,初始分布,极限分布 3.齐次马氏链的遍历性和平稳性 3.0一个重要定理 3.1遍历性定义 3.2判 ...

  7. 【数学建模】马氏链模型(基本概念+正则链+吸收链)

    马氏链模型(Markov Chain) 对于有随机因素影响的动态系统,系统从这个时期到下个时期的状态按照一定的概率进行转移,并且下个时期的状态只取决于这个时期的状态和转移概率. 无后效性:已知现在,将 ...

  8. 马氏链,Metropolis-Hastings采样与Gibbs采样的理解(附有python仿真)

    文章目录 马氏链 原理 采样方法 MH采样 原理 代码 Gibbs采样 原理 代码 马氏链 原理 采样方法 所谓的采样方法,主要就是利用了马氏链的性质 πn(x)\pi_n(x)πn​(x)为一个离散 ...

  9. 【老生谈算法】matlab实现马氏链算法源码——马氏链

    matlab马氏链代码 1.文档下载: 本算法已经整理成文档如下,有需要的朋友可以点击进行下载 序号 文档(点击下载) 本项目文档 [老生谈算法]matlab马氏链代码.docx 2.算法详解: 1. ...

最新文章

  1. metasploit 一款开源的渗透测试框架
  2. volunteer research
  3. BuildIt: Visual Studio .NET 的自动生成工具
  4. oracle 随笔数,Oracle数据库随笔
  5. 嗨,你选择自学成才还是参加培训?
  6. Crystal Report 2008
  7. WZ132发现打CXY要么是程序员,要么是丑小鸭
  8. 使用 ASP.NET Core Razor 页、Web API 和实体框架进行分页和排序
  9. nginx php-cgi php
  10. 银行恒温恒湿监控系统解决方案
  11. docker_6 Docker 网络
  12. 干货 | 你是不是希望一月入门深度学习,三月中一篇顶会?-- 关于做科研的态度和方法的一点感想...
  13. Netty 中的心跳机制,还有谁不会?
  14. 网络文学格局已定?未必
  15. 项目管理的方法论 一
  16. apply update from sdcard
  17. JsPlumb获取线数据
  18. 《Linux那些事儿之我是USB》我是U盘(15)冬天来了,春天还会远吗?(一)
  19. python之并发编程-进程之间的通信
  20. Mac安装IE浏览器

热门文章

  1. 4273. 【NOIP2015模拟10.28B组】圣章-精灵使的魔法语
  2. 猜数字小游戏(java代码编写)
  3. 安卓APP布局——相对布局常用属性
  4. Codefroces 384 D.Taxes(哥德巴赫猜想,三素数定理)
  5. 挥手告别大学生涯,憧憬2017!憧憬未来!
  6. 【摩客专访】简单易用的背后是吹毛求疵的追求 | 专访“方片收集”作者田飞
  7. 破解《天龙八部》惊世之秘无名僧的身份
  8. 仿QQ圆头像裁剪开源项目——ClipCircleHeadLikeQQ
  9. MacOS 开发 - FSEventStream(文件系统改变事件监控)
  10. 2.3 案例3 加点料-增加一张图片