窓口数と待ち時間(M/M/c)
窓口の数 c を増やすと待ち時間がどう減るか、そして「1列共有」と「窓口ごとの列」のどちらが速いかを、待ち行列モデル M/M/c とシミュレーションで体感します。
3
6.0
2.5
並び方:
利用率 ρ = λ / (cμ)
—
平均待ち時間 Wq(理論)
—
平均待ち人数 Lq(理論)
—
実測 平均待ち時間(共有/個別)
—
待ち行列アニメ ── 上半分:いま選んだ並び方/下半分:もう一方(比較)。色付きの人が「待っている人」。
銀行やレジのように、客が到着率 λでやって来て、c 個の窓口がそれぞれ処理率 μでさばく状況を M/M/c モデルと呼びます(M=到着・処理が指数分布)。
窓口を増やす(c↑)と、混雑の指標 利用率 ρ = λ/(cμ) が下がり、待ち時間 Wq は急激に短くなります。ただし ρ ≥ 1 だと行列は無限に伸び続けます。
並び方には2種類あります。1列共有(先頭が空いた窓口へ進む。空港やフォーク型レジ)と、窓口ごとの列(最初にどの列に並ぶか決める)。同じ λ・μ・c でも、たまたま遅い列に並ぶ不運が起きる窓口ごとの列のほうが平均待ち時間は長くなりがちです。アニメで見比べてみましょう。
窓口を増やす(c↑)と、混雑の指標 利用率 ρ = λ/(cμ) が下がり、待ち時間 Wq は急激に短くなります。ただし ρ ≥ 1 だと行列は無限に伸び続けます。
並び方には2種類あります。1列共有(先頭が空いた窓口へ進む。空港やフォーク型レジ)と、窓口ごとの列(最初にどの列に並ぶか決める)。同じ λ・μ・c でも、たまたま遅い列に並ぶ不運が起きる窓口ごとの列のほうが平均待ち時間は長くなりがちです。アニメで見比べてみましょう。
いま何が起きている?
ここがポイント
- 利用率 ρ = λ/(cμ) ── 窓口数 c を増やすと ρ が下がり、待ち時間は非線形に(ρ→1 付近で急激に)短くなる。
- ρ ≥ 1 は不安定 ── 到着が処理能力を超えると行列は際限なく伸びる(このシミュレーションでは赤く警告)。
- 1列共有 > 窓口ごとの列 ── 同じ c でも、空いた窓口へ先頭が進む共有列のほうが平均待ち時間が短い(遅い列に取り残されない)。
- Erlang-C の式で待ち確率と Wq を厳密に計算 ── 直感(c を2倍にしても待ち時間は半分よりずっと短くなる)を数式が裏付ける。