待ち行列のシミュレーション

待ち行列理論とは

 はじめに,銀行の窓口を考えてみよう.お客は開店時間から次々と到来し,窓口で
払込や預金などの処理を頼む.1人のお客を行員が処理している間にも別のお客が
到着するので,窓口には行列ができる.

 この行列の長さや待ち時間は,行員の処理能力やお客がどれくらいやってくるかに
依存している.通常,窓口の平均的処理能力は,お客の平均到着率よりも上でなけれ
ばならない.そうでなければ,行列は増える一方であり,破綻してしまう.しかし,平均
処理能力が上であったとしても行列はできる.平均はあくまで平均であり,まったくお客
がこない場合もあれば,たまたま処理に時間がかかることや,一度にたくさんのお客が
到着することがある.

 つまり,このような確率的なゆらぎのために行列が生じるのである.この振る舞いを知
るために,待ち行列の平均行列長や平均待ち時間を解析的に解いた理論が待ち行列
理論である.この理論を使って,行列を長くしないようにするために,窓口を増やすべき
か,あるいはサービスにかける時間を短くするか,それによってどれほどコストがかかる
のかなどを経営判断をすることになる.

 しかし現実的なモデルを解くことはきわめて難解である.たとえば,行列の長さがある
程度以上になると帰ってしまう客がいたりする.そこでシミュレーションを使うことにより,
えば,このような複雑なモデルに対しても解答を得ることが可能になる.

                 図 1 待ち行列モデル

 

待ち行列のモデル

 待ち行列モデルを考える場合,決めなければならないことは客の到着間隔と,客1
あたり必要なサービス時間である.

 待ち行列モデルの典型例では,一定時間内の客の到着数をポアソン分布だと想定
する.これは次のような分布である.注意すべき点として,ポアソン分布は,離散分布
であり,整数値だけをとる.平均が3のポアソン分布は次のようなものである.

              図 2 平均が3のときのポアソン分布

 またサービス時間は指数分布に従うとされる.次のような連続分布である.

               図3 指数分布関数

 実はポアソン分布と指数分布は表裏一体であり,指数分布に従った時間間隔で客が
到着すると,単位時間あたりの到着数はポアソン分布になる.ただし,逆は厳密の意味
では成り立たない.ポアソン分布は離散分布であり,整数値しか取らないため,それを
使って指数分布などの連続分布を作り出すことはできないからである.

 これら分布の具体的な確率密度関数など数学的背景についてはここでは触れない.

 このように,到着がポアソン分布,サービス時間が指数分布に従い,窓口がひとつだ
けのモデルをケンドールの記号を用い,M/M/1モデルと表現する.Mがポアソン分布あ
るいは指数分布を表す.他に,

D: 単位分布 (定数)
G:
一般分布
E:
アーラン分布

がある.例えば,到着が一般分布,サービス時間が単位分布,窓口が3つの場合,G/D/3
と表現する.

 M/M/1モデルが待ち行列モデルの典型例であり,教科書で最初に記述されている.M/M/1
モデルを確率の面から考えて,解析的に解くと,

平均到着率(単位時間あたりの客の到着数)λ
平均サービス率(単位時間あたりの処理数)μとしたとき

系平均待ち時間(自分のサービス時間を含む) は  1/(μ-λ)
列平均待ち時間(自分のサービス時間を含まない)は λ/μ(μ-λ)

系平均人数(自分のサービス時間を含む,平均待ち行列の長さ)λ/(μ-λ)
列平均人数(自分のサービス時間を含まない待ち行列の長さ)は λ*λ/μ(μ-λ)

となることがわかっている.

モンテカルロシミュレーションによる待ち行列の解

 この待ち行列の振る舞いをシミュレーションするには,客の到着間隔と,サービス時間
を,発生させた乱数によって決定する.単純なM/M/1モデルの場合,両者とも指数分布に
従う乱数を発生することが考えられる.あるいは,単位時間あたりの客の到着人数と,単位
時間あたりのサービス人数をポアソン分布に従った乱数によって決定することも考えられる.
ここでは時間間隔の方を乱数で発生させるシミュレーションを行うことにする.

 指数分布に従う乱数を発生させるには,excelで次の式を用いればよい.(Excelの分析ツー
ルにある乱数の発生ツールでは,指数分布に従う乱数は発生できない.ポアソン分布は発生
できる.) 一様分布の乱数をrand()で生成し,次のように変換する.

r = -n * ln (1 - rand())

ここで,nは発生させる乱数の平均値である.

 指数分布に従う乱数を2組発生し,それぞれ客の到着間隔と,サービスに要する処理時間と
考える.それらを累積したりしながら次のようなシミュレーションを作成できる.

4で特に注意すべき項目は,処理開始時刻である.到着時刻より前に開始できないのは当然の
ことであるが,前の人が終了しなければ開始できない点に注意すること.

                図4 待ち行列のシミュレーション結果例

 この図から,開始待ち時間の平均および終了待ち時間の平均を求めて,系平均待ち時間,列平
均待ち時間を求めることができる.

また,この開始待ち時間の合計を全員の処理を開始するまでに要した時間,すなわち最後の人の処理開始時刻で
除したものが,列平均待ち行列の長さになる.系平均待ち行列の長さの方は,同様に終了待ち時間の合計を最後の人の処理終了時刻で除したものである.