基本等候模式 (M/M/1):(N/N/FCFS)
(M/M/1):(N/N/FCFS) 提示:
客戶以隨機方式 (依卜瓦松分布) 請求服務,由於請求複雜度不一,因此服務者需要隨機時間 (依指數分布) 提供服務,當服務者正在執行某項服務時,其他客戶便必須等候服務者完成前項服務。
服務系統達到穩態時,
客戶進入等候系統人數 λ 為常數。
平均服務客戶人數 μ 為常數。
在任何一個時段,
客戶進入等候系統事件為獨立。
客戶進入等候系統機率相同。
客戶進入等候系統人數與時段長度成正比。
在極短時間內,超過 1 人進入等候系統機率為 0。
應用一:
工廠只有一名維修員,維修員負責管理 3 台設備,平均每部設備運轉 6 天即必須維修,設備維修平均需要 2 天時間方能正常運轉。求算:
維修員閒置機率。
分別有 1~3 部設備發生維修機率。
設備等候維修機率。
服務系統內平均客戶數 L。
服務系統內平均處理時間 W。
等候線內平均客戶數 Lq。
等候線內平均處理時間 Wq。
rm(list=ls()) options(digits=4) QueuingFullCapacity <- function(lamda, mu, maxNumOfCustomer) { rho <- lamda / mu sumTemp <- 0 for (i in 0:3) { sumTemp <- sumTemp + (rho ^ i) * (factorial(maxNumOfCustomer) / factorial(maxNumOfCustomer - i)) } P0 <- 1/sumTemp Lq <- maxNumOfCustomer - ((lamda + mu) * (1 - P0)) / lamda L <- Lq + (1 - P0) avgLamda <- (maxNumOfCustomer - L) * lamda W <- L / avgLamda Wq <- Lq / avgLamda ans <- c(rho, P0, L, W, Lq, Wq) ans } queuing <- function(maxNumOfCustomer, numOfCustomer, rho, P0) { Pn <- P0 * (rho ^ numOfCustomer) * factorial(maxNumOfCustomer) / factorial(maxNumOfCustomer - numOfCustomer) Pn } avgNumOfCustomer <- 1/6 numOfRequestCanHold <- 1/2 ans <- QueuingFullCapacity(lamda=avgNumOfCustomer, mu=numOfRequestCanHold, maxNumOfCustomer=3) P0 <- ans[2] print(sprintf("維修員閒置機率=%.4f", P0)) print(sprintf("服務系統內平均客戶數=%.4f", ans[3])) print(sprintf("服務系統內平均處理時間=%.4f", ans[4])) print(sprintf("等候線內平均客戶數=%.4f", ans[5])) print(sprintf("等候線內平均處理時間=%.4f", ans[6])) for (i in 1:3) { Pn <- queuing(maxNumOfCustomer=3, numOfCustomer=i, rho=ans[1], P0=P0) print(sprintf("設備 %d 部維修機率=%.4f", i, Pn)) } Pn <- queuing(maxNumOfCustomer=3, numOfCustomer=1, rho=ans[1], P0=P0) print(sprintf("設備等候維修機率=%.4f", 1 - P0 - Pn))
[1] 維修員閒置機率=0.3462 [2] 服務系統內平均客戶數=1.0385 [3] 服務系統內平均處理時間=3.1765 [4] 等候線內平均客戶數=0.3846 [5] 等候線內平均處理時間=1.1765 [6] 設備 1 部維修機率=0.3462 [7] 設備 2 部維修機率=0.2308 [8] 設備 3 部維修機率=0.0769 [9] 設備等候維修機率=0.3077