はじめに
基本情報技術者試験の範囲に「待ち行列理論(M/M/1モデル)」というものがあり、窓口利用率を用いて以下の公式で待ち行列に並んでいる人数を算出するよう記載があります。*1
そんな便利な式ですが、この式の導出は真面目に取り組むとかなり難しいです。が、せっかくなので「公式導出について理解した気になる」をゴールにして分かりやすく説明してみました。
所要時間目安:10分
以下は道中で利用する公式や前提です。
無限級数の公式
上記公式はrの絶対値が1未満の時に成り立ちます。理系の方は高校数学で見たはず。
微分方程式
かつ定常状態であれば
要は関数fに時間変化がなくなれば、時間で微分した値は。
列に並んでいる人の公式を算出する
イメージ
最終的に算出したいゴールをまずはイメージします。
列に並んでいる人数の期待値が知りたければ、列に並んでいる人数のそれぞれの確率が分かれば算出できます。
例えば、窓口に0人並んでいる確率が0.2、窓口に1人並んでいる確率が0.5、窓口に2人並んでいる確率が0.3、窓口に3人以上並んでいる確率は0だとすれば
> 1*0.5+2*0.3 [1] 1.1
つまり1.1人並んでいると算出できました。
これを一般化すれば窓口に人並んでいる確率がとすれば列に並ぶ人の数は
と書けます。
要は窓口に人並んでいる確率を求めることが肝となります。
窓口に0人並んでいる確率を状態遷移で考える
とっかかりのために、窓口に0人並んでいる確率に関する式を求めます。
具体的にはある時刻から微小時間が経過した際に0人が並んでいる・・という状態を考えてみます。
上記で考えられるパターンは以下の2種類。
- 時刻に0人並んでいて微小時間の間に客が到着しない
- 時刻に1人並んでいて微小時間の間に客がサービスを受けていなくなる
これを数式で表すと以下になります。
平均到着率や平均サービス量に時間をかけることで確率として表現しています。
ちなみに時刻に2人並んでいて微小時間の間に2人ともサービスを受けていなくなる確率は、微小時間を限りなく小さくすることで無視できる前提のもとで考慮に入れません。
上の状態方程式を整理すると
↓
↓
ここで冒頭に記載した前提である"定常状態であれば "という部分を式に当てはめます。
この定常性は自明ではありませんが、サービス量と到着率が一定であればそれぞれの確率は時間に寄らず一定になりそうな感覚をイメージしてください。
そうすると上の式は
↓
となりました。
次に窓口に人並んでいる時の微小時間後というより一般的なケースを考えます。
窓口にn人並んでいる確率を状態遷移で考える
考えられるパターンは以下の3種類。
- 時刻に人並んでいて微小時間の間に客が到着する
- 時刻に人並んでいて微小時間の間に客は到着しないしサービスも受けない
- 時刻に人並んでいて微小時間の間に客がサービスを受けていなくなる
それらを上と同じように式にして変形すると以下のようになります。
これもまた定常状態を仮定すれば左辺は0になります。
上の式は任意のnで成り立つので、例えばを代入してみます。。
ここで先ほど窓口0人の状態式で導出したが使えます。これを代入すると
↓
新たな関係式が出てきました。
次はを代入してみると...?
なんと、これを繰り返えして行けば、窓口にn人並んでいる確率は以下の式で表現できます。
前半部分で述べた「窓口に人並んでいる確率を求めることができれば並んでいる人数は求められる」のゴールが近づいてきました。あとはが算出できればゴールは目の前です。
確率の全体は1
窓口に0人並んでいる確率と窓口に1人並んでいる確率と... 窓口に∞人並んでいる確率の合計は100%である1になります。
この情報を数式で表現したのが以下。
が成り立ちます。
そして冒頭の前提に書いたを利用すると
を利用して式をスッキリさせました。
が
になりました。最後は期待値を求めます。
いよいよゴールです。
列に並んでいる人数の期待値
人並んでいる確率がなので
が求める値です。
になるのでしょうか。
ここでも無限級数の公式を利用すると
となりました。長い道のりでした...
終わりに
今回はかなりざっくりした説明で、ポアソン分布や指数分布といった本来の議論の前提をすっ飛ばしてエッセンスだけを紹介しました。
ITパスポートや基本情報技術者の参考書で公式だけを覚えておくようにして切り上げるのも納得のボリュームの本内容ですが、あの公式はどっから来ているのだろうか?という素朴な疑問を持たれた方の理解の一助になれば幸いです。
*1:では平均到着率では平均サービス量