【基本情報】M/M/1待ち行列、「前提の確認」から始めると安定します|利用率・待ち時間・応答時間

「M/M/1待ち行列モデル」。名前は複雑に見えますが、モデルの前提 → 利用率 → 待ち時間と応答時間の違い、の順に整理すると安定して解きやすくなります。式だけを暗記すると前提や用語を取り違えやすい分野なので、意味から入りましょう。

先に合言葉をひとつ。公式を使う前に、「M/M/1か?」と「ρ<1か?」の2つを確認する。この記事を読み終わるころには、この確認の意味が分かるようになっています。

まず確認:M/M/1はどんなモデルか

M/M/1の3文字には、それぞれ意味があります。

  • 最初のM:客の到着がポアソン過程(到着の間隔が指数分布に従う、「ランダムにパラパラ来る」イメージ)
  • 2つ目のM:1件あたりのサービス時間も指数分布に従う
  • 1:サービスをする窓口が1台

つまりM/M/1は単に「窓口が1台」という意味ではなく、到着のしかたと処理時間のばらつき方まで込みのモデル名です。この記事の公式は、さらに次の標準的な条件で成立します。

  • 到着とサービス時間は独立
  • 並んだ順に処理する(先着順、FCFS)
  • 待ち行列の容量は十分大きく、待ちきれず帰る客は考えない
  • 十分時間が経って落ち着いた状態(定常状態)
  • 利用率ρが0以上1未満

最重要条件:ρ<1

利用率ρは、0 ≦ ρ < 1 でなければなりません。

ρ=1だと式の分母(1−ρ)が0になりますし、ρ>1は「到着ペースが処理能力を上回っている」状態。行列は溜まる一方で、定常状態の有限な平均待ち時間そのものが存在しません。ρ≧1のときにこの後の公式へ代入してはいけない。値が出たとしても、それはモデルの安定条件を満たしていない無意味な数字です。

記号と単位の整理

記号 意味 単位例
λ(ラムダ) 平均到着率 件/秒、件/分、件/時
μ(ミュー) 平均サービス率 件/秒、件/分、件/時
S 平均サービス時間 秒/件、分/件、時間/件
ρ(ロー) 利用率 無次元、0以上1未満
Wq 平均待ち時間 秒、分、時間
W 平均応答時間(系内時間) 秒、分、時間
Lq 待ち行列の平均人数 人、件
L 系内平均人数(処理中を含む) 人、件

つなぎの関係は2本。

S = 1/μ(サービス時間とサービス率は逆数)
ρ = λ/μ = λS

λとμは必ず同じ時間単位にそろえてください。λSで計算する場合も、「件/時 × 時間/件」のように単位が相殺される形にそろえます。

M/M/1の基本公式

以下はすべて「M/M/1・定常状態・ρ<1」で成立します。

求めるもの 記号 公式
利用率 ρ λ/μ = λS
平均待ち時間 Wq ρS/(1−ρ)
平均応答時間 W S/(1−ρ) = Wq+S
待ち行列の平均人数 Lq ρ²/(1−ρ) = λWq
系内平均人数 L ρ/(1−ρ) = λW

表は5行ありますが、丸暗記が5本要るわけではなく、Wq=ρS/(1−ρ)というひとつの基本関係から、足し算(W=Wq+S)とLittleの法則(後述)で残りが芋づる式に出てくる構造です。

例題:窓口の利用率が0.6、1件の処理に平均2秒かかる(M/M/1)。平均待ち時間は?

Wq = 0.6 ÷ 0.4 × 2 = 1.5 × 2 = 3秒

ρ÷(1−ρ)の正体:「待ち時間がサービス時間の何倍か」

式の頭にあるρ÷(1−ρ)は、平均待ち時間が平均サービス時間の何倍になるかを表す倍率です。ρ=0.6なら1.5倍。「平均して1.5件分のサービス時間が、自分より先に残っている」という読み方もできます。

ここでひとつ注意。M/M/1では、この値は系内平均人数L(待っている客+処理中の客の合計の平均)にも一致します。「列で待っている人数」ではありません。待ち行列だけの平均人数はLq=ρ²/(1−ρ)という別の式で、ρ=0.6なら0.36÷0.4=0.9件。処理中の分だけLより小さくなります。人数を聞かれたら、「列だけ(Lq)」か「処理中込み(L)」かを問題文で確認してください。

「待ち時間」と「応答時間」は別物です

特に重要な区別がこれ。

  • 待ち時間(Wq):並び始めてから、自分の処理が始まるまでの時間
  • 応答時間(W):並び始めてから、自分の処理が終わるまでの時間(=待ち時間+サービス時間)

W = Wq + S = S ÷(1−ρ)

さっきの例題なら、応答時間は 2÷0.4=5秒。待ち3秒+処理2秒=5秒で、ちゃんとつじつまが合います。問題文が「待ち時間」なのか「応答時間」なのか、最初に丸をつけるのをおすすめします。もう片方の値が典型的な誤答としてよく置かれています。

なおここでの「応答時間」は、あくまで待ち行列モデル上の系内時間です。実際の情報システムの応答時間には、通信時間・CPU処理・ディスクI/O・複数段の待ちなどが加わることがあるので、M/M/1のWをそのままシステム全体の応答時間と同一視はできません。

利用率の求め方:ρ=λS(またはλ/μ)

利用率が直接与えられず、自分で出すパターンもあります。

例題:1時間に平均30件の依頼が来て、1件の処理に平均1分かかる。利用率は?

λSで:λ=30件/時、S=1分/件=1/60時間/件 → ρ=30 × 1/60 = 0.5
λ/μで:S=1分/件だからμ=60件/時 → ρ=30 ÷ 60 = 0.5

「1時間のうち処理に使うのは30分だから、埋まってる割合は30÷60」という直感的な解き方は、λSを具体的に展開したものです。どちらで解いても同じ答えになります。

時間から人数を出す:Littleの法則

「平均で何人(何件)いるか」を聞かれたら、この法則です。

Lq = λ × Wq(列で待っている平均人数)
L = λ × W(待ち+処理中の平均人数)

意味は「平均人数 = 到着のペース × 平均滞在時間」。さっきの例題で確かめてみます。S=2秒なのでμ=0.5件/秒、ρ=0.6なのでλ=0.6×0.5=0.3件/秒。すると、

Lq = 0.3 × 3 = 0.9件
L = 0.3 × 5 = 1.5件

Lの1.5は、さっきのρ÷(1−ρ)=0.6÷0.4=1.5とぴったり一致します。時間の公式と人数の公式が、Littleの法則で1本につながっているわけです。検算にも使えます(λの時間単位とW・Wqの時間単位はそろえてください。ここでは両方「秒」です)。

重要な性質:「混むと急に遅くなる」

ρ÷(1−ρ)の値を並べてみると、面白いことに気づきます。

利用率ρ 待ち時間の倍率 ρ/(1−ρ)
0.5 1
0.8 4
0.9 9
0.95 19
0.99 99

平均サービス時間が同じなら、利用率が0.5から0.9に上がると平均待ち時間は9倍。比例ではなく、ρが1に近づくほど急増して、数学的にはρ→1で無限大へ発散します(「爆発する」と言いたくなる伸び方ですが、正確には「発散」です)。ρ=1以上はそもそも安定条件の外。「サーバの利用率に余裕をもたせましょう」と言われる数学的な理由がこれで、倍率を求める問題として出題されることもあります。

逆算パターン:待ち時間・応答時間から利用率へ

基本式を変形すると、逆算用の形が出てきます。

ρ = Wq ÷(Wq+S)(待ち時間とサービス時間から)
ρ = 1 − S/W(応答時間とサービス時間から)
λ = ρ/S、μ = 1/S

例題:平均待ち時間6秒、平均サービス時間2秒のとき、利用率は?

ρ = 6 ÷(6+2)= 0.75

例題:平均応答時間8秒、平均サービス時間2秒なら?

ρ = 1 − 2/8 = 0.75

同じ状況を別の入口から見ているだけなので、答えも一致します。ここでも単位(秒なら秒)をそろえるのを忘れずに。

サービス時間を短くすると、利用率も変わる

改善系の問題でありがちな落とし穴がここです。

例題:到着率は30件/時で一定。平均サービス時間を1分から40秒に短縮した。改善前後の利用率・平均待ち時間・平均応答時間は?

改善前:S=60秒、ρ=30×1/60=0.5
Wq=0.5/0.5×60=60秒、W=60+60=120秒
改善後:S=40秒=1/90時間、ρ=30×1/90=1/3
Wq=(1/3)/(2/3)×40=20秒、W=20+40=60秒

ポイントは、到着率が一定なら、サービス時間を変えた時点でρ=λSを計算し直すこと。サービス時間が2/3になると、利用率が下がり、待ち時間の倍率も下がるので、応答時間は120秒→60秒と「サービス時間の短縮分以上に」改善します。改善前のρ=0.5を使い回すと、この効果を取りこぼします。

補足:M/M/1の公式を使えない主な場合

この記事の公式はM/M/1専用です。窓口が複数(M/M/c)、サービス時間が指数分布でない(M/G/1など)、到着がポアソン過程でない、優先度付き、行列の容量に上限がある、途中で帰る客がいる、複数段の行列、サーバ故障を考える——こうした設定では別のモデル・公式が必要になります。特に「窓口が2台ならμを2倍すればM/M/1で解ける」と無条件には言えないので、問題文のモデル指定を確認してください。試験の計算問題は、M/M/1と明示されるか、それに相当する条件が書かれているのが普通です。

解く前の判定フロー

  1. M/M/1(相当の条件)と書かれているか確認
  2. λ、μまたはSを拾い、時間単位をそろえる
  3. ρ=λ/μ=λSを計算し、ρ<1を確認
  4. 求めるものがWq・W・Lq・Lのどれかに丸をつける
  5. 対応する公式で計算し、Littleの法則で検算
  6. 最後に単位と丸め方を確認

代表的なミスまとめ

やらかし 出てくる誤答 対策
待ち時間と応答時間の取り違え もう片方の値 問題文の言葉に丸をつける
ρをそのまま倍率にする 利用率と同じ数字 ρ÷(1−ρ)まで計算する
倍率を比例だと思う 利用率の比の値 倍率はρ→1で急増(発散)
λとμの単位が違う 利用率が大きくズレる 件/秒・件/分・件/時を統一
Sとμの混同 掛け算と割り算が逆 μ=1/S
LqとLの取り違え 処理中の分ズレた値 Lは系内、Lqは列だけ
ρ/(1−ρ)を待ち人数と思う Lqの過大評価 L=ρ/(1−ρ)、Lq=ρ²/(1−ρ)
ρ≧1でも公式に代入 ゼロ除算・不自然な値 最初にρ<1を確認
改善後もρを固定 改善効果の誤り 到着率一定ならρ=λSを再計算
途中で丸める 最終値が選択肢とズレる 丸めは最後の1回

仕上げに演習10問どうぞ

演習では、待ち時間・応答時間・系内の人数、利用率の算出と逆算、「サービス時間を短縮したら利用率はどうなる?」という改善系まで揃えてあります。基本式と関連公式を使い分ける練習として、判定フローに沿って手を動かしてみてください。


今日のまとめ

  • M/M/1の公式が使えるのは「1窓口・ポアソン到着・指数サービス時間・定常状態」のモデルだけ
  • ρ=λ/μ=λS。公式を使う前に必ずρ<1を確認する
  • Wq=ρS/(1−ρ)、W=Wq+S=S/(1−ρ)。「待ち」か「応答」かに丸をつける
  • ρ/(1−ρ)は待ち時間の倍率であり系内平均人数L。列だけの人数はLq=ρ²/(1−ρ)
  • Littleの法則(Lq=λWq、L=λW)で時間と人数がつながる。検算にも使える
  • 平均サービス時間が同じなら、ρ 0.5→0.9で待ち時間9倍。ρ→1で発散する
  • サービス時間を変えたら、ρ=λSを再計算する

次回は「確率・期待値・組合せ」。基本的な解法を2つの道具に整理します。

参考資料

  • IPA「基本情報技術者試験(レベル2)シラバス Ver.9.2」
  • 標準的な待ち行列理論(M/M/1、Littleの法則)に関する公開資料

本記事の例題は、基本情報技術者試験の出題範囲及び標準的な待ち行列理論を参考に、当サイトで独自に作成したものです。

関連する問題


コメント

タイトルとURLをコピーしました