基本等候模式 (M/M/1):(N/∞/FCFS)

(M/M/1):(N/∞/FCFS) 提示:

客戶以隨機方式 (依卜瓦松分布) 請求服務,由於請求複雜度不一,因此服務者需要隨機時間 (依指數分布) 提供服務,當服務者正在執行某項服務時,其他客戶便必須等候服務者完成前項服務。

    • 服務系統達到穩態時,

      • 客戶進入等候系統人數 λ 為常數。

      • 平均服務客戶人數 μ 為常數。

    • 在任何一個時段,

      • 客戶進入等候系統事件為獨立。

      • 客戶進入等候系統機率相同。

      • 客戶進入等候系統人數與時段長度成正比。

      • 在極短時間內,超過 1 人進入等候系統機率為 0。

應用一

工廠只有一名維修員,維修員在其工作檯修理半成品瑕疵,生產線作業員將待修半成品交由維修員修理,工作檯旁配置有 2 個待修籃。

當維修員正修理其他半成品時,若維修員有空,作業員交待修品給維修員修理,否則將待修品置放於待修籃內等候修理。

但若待修籃內已滿,作業員會等下次有空時再嘗試送修。

經過工管人員觀察分析,作業員送修半成品與維修員修理均成指數分配,作業員平均每小時送修 2 件半成品,而維修員平均需要 20 分鐘修理時間。求算:

    1. 無待修品機率。

    2. 分別有 1~2 個待修品送修機率。

    3. 待修品送修等候修理機率。

    4. 服務系統內平均客戶數 L。

    5. 服務系統內平均處理時間 W。

    6. 等候線內平均客戶數 Lq

    7. 等候線內平均處理時間 Wq

rm(list=ls()) options(digits=4) QueuingFullCapacity <- function(lamda, mu, maxNumOfCustomer) { rho <- lamda / mu if (rho==1) { P0 <- 1 / (maxNumOfCustomer + 1) Pn <- P0 L <- maxNumOfCustomer / 2 } else { P0 <- (1 - rho) / (1 - rho ^ (maxNumOfCustomer + 1)) Pn <- P0 * rho ^ maxNumOfCustomer L <- (rho / (1 - rho)) - ((maxNumOfCustomer + 1)*rho ^ (maxNumOfCustomer + 1) / (1 - rho ^ (maxNumOfCustomer + 1))) } Lq <- P0 + L - 1 W <- L / (lamda * (1 - Pn)) Wq <- Lq / (lamda * (1 - Pn)) ans <- c(rho, P0, Pn, L, W, Lq, Wq) ans } queuing <- function(lamda, mu, maxNumOfCustomer, numOfCustomer, P0, L) { rho <- lamda / mu if (rho==1) { Pn <- P0 } else { Pn <- P0 * rho ^ numOfCustomer } Lq <- P0 + L - 1 W <- L / (lamda * (1 - Pn)) Wq <- Lq / (lamda * (1 - Pn)) ans <- c(rho, P0, Pn, L, W, Lq, Wq) ans } avgNumOfCustomer <- 2 numOfRequestCanHold <- 3 ans <- QueuingFullCapacity(lamda=avgNumOfCustomer, mu=numOfRequestCanHold, maxNumOfCustomer=3) P0 <- ans[2] L <- ans[4] print(sprintf("無客人機率=%.4f", P0)) print(sprintf("服務系統內平均客戶數=%.4f", ans[4])) print(sprintf("服務系統內平均處理時間=%.4f", ans[5])) print(sprintf("等候線內平均客戶數=%.4f", ans[6])) print(sprintf("等候線內平均處理時間=%.4f", ans[7])) ans <- queuing(lamda=2, mu=3, maxNumOfCustomer=3, numOfCustomer=1, P0, L) print(sprintf("客人等待機率=%.4f", 1- ans[2] - ans[3])) for (i in 1:2) { ans <- queuing(lamda=2, mu=3, maxNumOfCustomer=3, numOfCustomer=i, P0, L) print(sprintf("客人有 %d 人機率=%.4f", i, ans[3])) }

[1] 無客人機率=0.4154 [2] 服務系統內平均客戶數=1.0154 [3] 服務系統內平均處理時間=0.5789 [4] 等候線內平均客戶數=0.4308 [5] 等候線內平均處理時間=0.2456 [6] 客人等待機率=0.3077 [7] 客人有 1 人機率=0.2769 [8] 客人有 2 人機率=0.1846