当記事では、待ち行列理論の M/M/1 モデルの「M」と「M」と「1」について紹介してみたいと思う。
当記事は M/M/1 を使う前提(仮定)の紹介記事のため、M/M/1 を使った具体的な数値計算については深入りしない。
また、当記事では飲み込みやすさを重視し、数学的な用語(ポアソン過程やマルコフ過程など)はあえて避けているため、厳密性が欠けている部分がある。
世の中にはいろいろな待ち行列がある
カフェのレジ待機列もそうだし、ラーメン屋の食券機もそうだし、
ディズニーランドでいつも混雑しているトイレもそうである。
エンジニア的には、サーバへのアクセスやDBへのクエリを順次処理する待ち行列のほうが馴染み深いかも。
数学に「待ち行列理論」がある
確率論という分野にある「待ち行列理論」では、待ち行列の性質について扱う。
待ち行列理論は、資格試験(基本情報、応用情報、そして高度試験)でよく見かける。
2026年現在、これらの試験区分の見直しが進んでいるが、
待ち行列理論はシステム性能評価に用いられる大切な考え方なので、試験範囲から消えることはないと思う。
待ち行列理論は大学や専門学校でも教えられている。
数学や確率論の授業で扱われるほか、数学を使って問題解決を目指す「オペレーションズ・リサーチ」の授業でも扱われる。
さらに理系でなくても、待ち行列の分析はいわばマーケティングであるため、経営学部でも学ぶ機会があるかもしれない。
M/M/1 というモデルがある
待ち行列理論ではいろいろな種類の待ち行列を扱うので、
待ち行列のモデル(型のようなもの)もいろいろあるのだが、
中でも「M/M/1」というモデルが最もシンプルでとっつきやすい。
M/M/1 を使うための、3つの仮定
今回は例として、カフェのレジ待機列を考える。
しかしカフェのレジ待機列を「M/M/1」に当てはめるには、下記3つの仮定(約束事) が必要である。
1. 来客間隔について
今回のカフェは、来客間隔が指数分布に従っているものとする。
ちょっと数学的な言い方をしてしまったが、ようするにこういうこと:
-
来客の発生はランダム
- そろそろランチタイムだから混みがちとか、今日は花火大会があるから団体客が多いとか、そういうのは考えない
-
長い来客間隔ほど発生しにくい
- 短い間隔で客が次々と来る確率が高い
-
未来の確率は、現在の状況から決まり、過去は関係ない
- 前の客が来たばかりだから数分間は誰も来ないだろうとか、そういう予測はしない
- このように過去に左右されない性質をマルコフ性という
M/M/1 の最初の「M」は、マルコフ性 Markovian の頭文字から来ている。
2. 接客時間について
今回のカフェは、接客時間が指数分布に従っているものとする。
ようするにこういうこと:
-
長い接客時間ほど発生しにくい
- 短い接客で終わる客(お茶を買うだけとか)の確率が高い
-
未来の確率は、現在の状況から決まり、過去は関係ない
- この客とはもう3分間も相手してるからあと1分後には帰るだろうとか、そういう予測はしない
- このように過去に左右されない性質をマルコフ性という
M/M/1 の2番目の「M」は、マルコフ性 Markovian の頭文字から来ている。
3. レジの台数について
今回のカフェは、レジの台数は1つだけとする。
M/M/1 の3番目の「1」は、レジの台数から来ている。
当記事のまとめ
待ち行列理論の最も基礎的なモデルである M/M/1 に、現実の待ち行列を当てはめるには、
到着の間隔が指数分布で(M)、サービス時間も指数分布で(M)、窓口は1台(1)
だと仮定する(前提とする)必要がある。
(おまけ)M/M/1 を使うとどういう計算ができるの?
今回のカフェは、1時間に平均8人の客が来るとする。
また、今回のカフェの店員は、1時間に平均10人の客を応対できるとする。
ここで M/M/1 に当てはめると下記のことが計算で分かる。
- 店員の稼働率は80%である(つまり勤務時間中の20%は暇である)
- レジ待機列には平均3.2人の客が並んでいる
- 店内には平均4人の客がいる
- 客はレジ待機列に平均24分間並んでいる
- 客はレジ待機列に並んでからカフェを出るまで平均30分かかる
いろいろパラメータを変えて計算してみると面白いので、それについても別途Qiita記事を書いてみようかなと思っている。
今回はここまで。