0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

M/M/1待ち行列を理解したい。

0
Posted at

1. はじめに

応用情報技術者試験などの過去問で見かける「M/M/1の待ち行列モデル」。
解説を見ると下記の公式で解けるようです。

$W = \frac{\rho}{1 - \rho} \times T_s$

このギリシャ文字と分数の羅列を見た瞬間、嫌になりますが、
今回は、この待ち行列モデルを「友達の家でのスマブラ」に置き換えて、なぜこの計算式になるのかを考えてみます。

2. 待ち行列の公式を「スマブラ」に翻訳する

まずは、小難しい専門用語を一旦リセットして、スマブラの状況に翻訳してみましょう。

  • $T_s$(平均サービス時間) = 1試合にかかる時間
    • 例:タイム制で1試合の平均が「4分」とします。
  • $\rho$(利用率) = Switchの混み具合
    • 例:常に誰かが遊んでいる状態が100%(1.0)。半分くらい空いている時間が50%(0.5)です。
  • $W$(平均待ち時間) = コントローラーを握るまで待つ時間
    • 例:自分の番が回ってくるまでに、後ろのソファーで他の人のプレイを見ながら待つ時間です。

これを先ほどの公式に当てはめると、こういうことになります。
「待ち時間 =($\frac{\text{今の混み具合}}{1 - \text{今の混み具合}}$)$\times$ 1試合の時間」

具体的な数字で計算してみよう(待ち時間のリアル)

公式の形がわかったところで、実際の数字を入れて「待ち時間のリアル」を体感してみましょう。1試合の時間は先ほどと同じ「4分($T_s = 4$)」とします。

パターン①:ほどよく遊んでいる状態。1試合同じくらい(4分)ダラダラする時間がある状態。(利用率50%)

  • $\rho = 0.5$ の場合です。
  • 計算式:$W = \frac{0.5}{1 - 0.5} \times 4$
  • $W = \frac{0.5}{0.5} \times 4 = 1 \times 4 = \mathbf{4}$

【結果】 待ち時間は4分。つまり、目の前でやっている1試合が終わるのを待てば、すぐに自分の番が回ってきます。直感的にも非常に納得できる数字ですね。

パターン②:みんなガチ勢な状態。ほとんど休憩なしで回している状態(利用率80%)

  • 「ちょっと混んできたな」という $\rho = 0.8$ の場合です。
  • 計算式:$W = \frac{0.8}{1 - 0.8} \times 4$
  • $W = \frac{0.8}{0.2} \times 4 = 4 \times 4 = \mathbf{16}$

【結果】 なんと、待ち時間は一気に16分に跳ね上がります!1試合4分のために、他の人が戦っているのを4試合分もソファーで眺めていなければなりません。

このように、具体的な数字を入れてみると、「混み具合(利用率)が少し上がるだけで、待ち時間は一気に跳ね上がる」というのがイメージできます。

3. 「窓口を統合したら待ち時間はどうなる?」

もし、窓口を1つにまとめたら、待ち時間はどう変化するか?こちらもスマブラで例えてみます。

【統合前:別々の部屋で遊ぶ】
Aくんの部屋とBくんの部屋に、それぞれSwitchが1台ずつあります。
それぞれの部屋の混み具合(利用率)は「$\rho$」だとします。

【統合後:1つの部屋に全員集合】
ある日、Aくんの部屋のSwitchが壊れてしまいました。
仕方なく、全員Bくんの部屋(Switch1台)に集まることになりました。
1試合の時間($Ts$)は4分のまま変わりませんが、遊びに来る人が2倍になりました。
Switchは1台のままなので、Switchの混み具合(利用率)も単純に2倍の「$2\rho$」になります。

人が2倍になったなら、Switchの混み具合(利用率)も単純に2倍の「$2\rho$」になりますよね。

【公式への代入】
ここで先ほどの「魔法の計算式」の出番です。
「待ち時間 =($\frac{\text{今の混み具合}}{1 - \text{今の混み具合}}$)$\times$ 1試合の時間」

今の混み具合は「$2\rho$」になったので、そのまま当てはめるだけ!
$W = \frac{2\rho}{1 - 2\rho} \times T_s$

4. 利用率(混み具合)が上がると待ち時間は「爆発」する

さて、ここで勘違いしやすい大きな罠があります。
「人が2倍(混み具合が2倍)になれば、待ち時間も2倍になるんでしょ?」と思いがちですが、
それは間違いです。

実際に、1試合4分($T_s = 4$)でシミュレーションしてみましょう。

  • パターンA:元々ガラガラだった場合
    • 元々の利用率が20%($\rho = 0.2$)だったとします。
    • 統合して人が2倍になっても、利用率は40%($\rho = 0.4$)です。
    • 計算:$\frac{0.4}{1 - 0.4} \times 4$ = 約2.66分(約2分40秒
    • 結果:まだ余裕です。すぐ順番が回ってきます。
  • パターンB:元々そこそこ混んでいた場合
    • 元々の利用率が45%($\rho = 0.45$)だったとします。
    • 統合して人が2倍になると、利用率は一気に90%($\rho = 0.9$)になります。
    • 計算:$\frac{0.9}{1 - 0.9} \times 4 = \frac{0.9}{0.1} \times 4 = 9 \times 4$ = 36分
    • 結果:1試合4分遊ぶために、36分待つことになります。

このように、利用率が100%(1.0)に近づくと、待ち時間は比例(直線)ではなく加速度的に(反比例のカーブを描いて)爆発します。

5. まとめ

M/M/1の公式は、「利用率($\rho$)= 忙しさのパラメータ」という構造さえイメージできれば、
「窓口が統合された」「処理速度が半分になった」と設定が変わっても、解くことができそうです。

🍌NanoBanana君による解説漫画

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?