大多數 M/M/1 佇列計算錯誤都發生在輸入階段,而非公式本身:時間單位不一致、速率比不穩定,或假設與實際系統不符。M/M/1 是 Kendall 符號中最簡單的穩態佇列——到達為馬可夫過程(Poisson)、服務時間為馬可夫過程(指數分配),且只有一個 FIFO 伺服器服務於無限的呼叫人口與無限的等候佇列。因為代數化簡為一組簡潔的公式,佇列理論計算機可在瀏覽器中即時運算。剩下的風險因此落在輸入與隱含假設上:若到達率 λ 與服務率 μ 的時間單位不同、若 μ 並未嚴格大於 λ,或若實際系統有多個伺服器、有限容量、優先權等級、或重尾服務時間,所產生的指標不只是不夠精確——而是毫無意義。帶著這些假設的意識使用計算機,並透過 Little 定理 (L = λW 和 Lq = λWq) 做快速合理性檢查,正是區分具參考價值的數字與誤導性數字的關鍵。

M/M/1 真正的意義(以及它的限制)
「M/M/1」這個標籤其實是一個非常特定模型的簡寫,幾乎每個可避免的錯誤都來自對模型承諾內容的誤解。第一個 M 代表到達來自 Poisson 過程——具有單一、平穩到達率 λ 的獨立指數到達間隔時間。第二個 M 代表服務時間為獨立且呈指數分配的,具有單一速率 μ。1 代表恰有一個伺服器,以先進先出順序服務來自實際無限人口的客戶,面對實質無限的佇列。Princeton 的M/M/1 演算法參考以教科書形式說明相同的符號。
每一個假設都是承重的支柱。若你的實際負載是排班制到達而非獨立的,「Poisson 到達」就是勉強的。若服務時間近乎固定(例如:條碼掃描)或重尾(例如:長尾 API 呼叫),「指數分配」就是錯的。若你有兩個櫃員、三個電話客服、或備援的網頁層級,「一個伺服器」就是錯的。若系統尚未進入長期穩定狀態——例如你上週二才剛開門營業——穩態公式也無法描述你的真實狀況。
誠實的框架是這樣:M/M/1 是一個基準。它作為教科書基準、粗略的單一伺服器容量檢查,以及手算結果的合理性驗證都是極佳工具。但它本身並不是一個可以直接用於人力配置、安全或客戶服務決策的工具。任何以這些目的解讀其輸出的行為,都只是模型在說話,而非現實在說話。
最常被搞錯的兩個輸入
兩個錯誤就佔了使用者從 M/M/1 得到錯誤結果的大部分案例:速率單位不一致,以及穩定性條件被靜默地違反。
速率單位錯誤是最常見、也最不明顯的錯誤。佇列理論計算機要求 λ 與 μ 使用相同的時間單位。若 λ 是每小時到達數,而 μ 是每分鐘服務數,公式仍然會運算——引擎無從得知你的意圖——但所產生的等待時間並無有意義的單位。在輸入之前,先將兩個速率統一為同一基準(每秒、每分鐘,或每小時)。以分鐘為單位輸入會得到分鐘;以小時為單位輸入則得到小時。保持足夠精度,讓速率比能反映實際運作比,而不是某個四捨五入後的目標值。
穩定性條件是不可妥協的。M/M/1 模型只有在 μ > λ 時才存在有限的穩態解。當 μ ≤ λ,佇列在長期下會無界成長,均值等待時間或均值人數根本不存在。計算機會拒絕這種情況,而不是對一個不穩定系統印出看似有限的數字,因為一個看似有限的答案實際上比明確的拒絕更糟糕。如果你看到無界的結果,問題不是「工具錯了」——而是當下你的服務容量跟不上到達率。
把這兩個檢查(單位一致、μ > λ)當作每次計算前的固定前置作業。它們大約花十秒鐘,卻能消除大約三分之二可避免的錯誤。
如何毫無差錯地執行計算
一旦輸入與假設都到位,計算本身是機械式的。以下是使用佇列理論計算機的標準作業程序。
- 選定單一時間單位(每分鐘或每小時最常見),將到達率與服務率都換算至該單位。將數字寫下來,讓它們並列可見。
- 開啟佇列理論計算機,將 λ 輸入為到達率、μ 輸入為服務率,兩者皆標示為所選單位。不要在同一表單中混用「每小時客戶數」與「每分鐘服務數」。
- 確認 μ 嚴格大於 λ,並確認四項假設——Poisson 到達、指數服務、一個 FIFO 伺服器、無限呼叫人口與佇列、穩態——足夠貼近你的實際系統以具實用價值。若不符合,請在此停下,改用其他模型。
- 點擊計算。工具會回傳使用率 ρ = λ/μ、平均等待人數 Lq = λ²/[μ(μ−λ)]、系統內平均人數 L = λ/(μ−λ)、平均佇列等待時間 Wq = λ/[μ(μ−λ)],以及平均總時間 W = 1/(μ−λ),全部以你輸入速率所用的時間單位表示。
- 複製指標時一併保留單位標籤(例如,「L = 9 位系統內客戶」),並作為容量討論或工作表的輸入。切勿在投影片上貼上一個沒有單位的裸數字——這正是下游讀者被誤導的起點。
- 在頁面上以 Little 定理快速驗算:L 應等於 λ·W,Lq 應等於 λ·Wq。若任一組不相符,請將此視為訊號,代表先前某處出錯(通常是單位混用或處於不穩定狀態)。
上述步驟就是整個工作流程。多數專業人士會直接跳到第四步。會避開錯誤的專業人士則不會。
結果出來後,如何察覺靜默的計算錯誤
即使輸入正確,M/M/1 的輸出仍可能被誤讀。尤其有三個模式經常讓人措手不及。
第一,使用率是一個忙碌分數,並非等待時間。一個常見且明確錯誤的解讀是「80% 使用率代表 80% 等待」,我們的相關頁面M/M/1 中 80% 使用率的主張對此逐步說明。最清楚的解釋方式是透過一個計算範例。設 λ = 9、μ = 10,皆以小時為單位,則 ρ = 9/10 = 0.9,W = 1/(μ−λ) = 1/(10−9) = 1 小時。交叉驗算:L = λ/(μ−λ) = 9/1 = 9 位系統內客戶,且 L = λ·W = 9·1 = 9 —— Little 定理成立。同樣的計算告訴你,在 90% 使用率下,平均客戶在這個單一伺服器系統中會耗上整整一小時的等效時間。等待時間曲線並非 ρ 的線性函數;它會在 ρ 從下方逼近 1 時急劇向上彎折。從 ρ = 0.5 跳到 ρ = 0.9,不是 40% 的等待增加;而是接近一個數量級。
第二,均值無法描述尾端。L 與 W 是幾何分配的均值;一旦使用率超過約 70%,佇列長度的第 95 百分位數會是均值的數倍。若服務水準協議寫「不超過 1% 客戶的等待時間長於 X」,單靠均值無法告訴你是否達標。應在使用計算機輸出之餘,搭配百分位數、觀測資料或模擬來檢驗,而不是取代它們。
第三,將結果複製到他處時,留意單位漂移。若計算機給的是分鐘,你卻貼到一張以小時為單位的容量表格,你即將誤讀自己的輸出。每次都把單位放進標籤裡。
當 M/M/1 模型是錯誤的工具時
最大一類可避免的錯誤,就是把 M/M/1 用在實際上不符合的系統上。風險不在數學;數學沒問題。風險在於把數學的結果當作描述你實際工作負載的依據。佛羅里達大學的基礎佇列理論筆記說明了當假設一旦滑落,標準公式會多快崩壞。
若你的系統有多個伺服器,M/M/1 會低估等待。單一伺服器公式假設只有一個工作者構成整個瓶頸;多一個工作者就能大幅縮減平均等待。應改用 M/M/c 模型——我們的相關指南M/M/1 計算機的多伺服器限制是最該先讀的邊界案例。若服務時間近乎固定(例如自動化測試執行)或重尾(例如複雜案件偶爾會路由到資深專家),指數假設會產出看似合理的均值,但百分位數卻嚴重失真。M/G/1 加上 Pollaczek-Khinchine 均值公式是標準的修正方式。有限等候室、依時段變動的速率、放棄等候的來電、休假的伺服器、以及優先權佇列,各自都需要對應的佇列模型——或者,當真實情況過於雜亂時,使用明確的模擬。
| 實際系統的情境 | M/M/1 仍可用 | 更好的模型 |
|---|---|---|
| 單一 FIFO 伺服器,Poisson 到達,指數服務 | 是 | — |
| 兩個以上相同的平行伺服器 | 否 | M/M/c |
| 服務時間近乎固定或重尾 | 否 | M/D/1 或 M/G/1 (Pollaczek-Khinchine) |
| 有界等候容量(無無限佇列) | 否 | M/M/1/K 有限容量模型 |
| 到達率依小時或班別隨時間變動 | 否 | 非穩態分析或模擬 |
| 客戶在受服務前離開佇列 | 否 | M/M/1 + 耐心耗損 / Erlang-A |
將此表當作前置檢查。若右欄適用於你的情境,執行 M/M/1 計算機只會給你一個看似精確、但無法用於決策的數字——這正是你想要避免的失敗模式。
此計算機在你工作流程中的定位
佇列理論計算機是一個教學與粗估容量的工具。它適合用於教科書練習、對單一佇列是否處於合理狀態的粗略信封背檢查,以及驗證 M/M/1 公式的兩種實作是否一致。它不適合作為人力配置、安全、醫療分診、客戶服務水準承諾或基礎設施佈建決策的唯一輸入。先以觀測資料驗證到達與服務的分配,為你的實際限制選擇正確的佇列模型,檢視變異性與百分位數而非僅看均值,並在把數字提交給實際計畫前,先檢視最壞情況下的錯誤後果。