という手順を実行すると、上と同じような数列が得られることが分かるでしょう。これをExcel で代行させる方法を考えます。
ExcelのRAND関数はさいころ振りを代行してくれました。これと、上のカード実験と結び
つけることは容易です。「簡単のために」(という言い方を良くします、説明を簡単にするため に、という意味を持った隠語です)データは10.2,1.9,4.9,1.6,6.7の5つだったとしましょう。
準備として、次のような対応表を作ります。
1.6 ⇐⇒ [0,0.2) 1.9 ⇐⇒ [0.2,0.4) 4.9 ⇐⇒ [0.4,0.6) 6.7 ⇐⇒ [0.6,0.8) 10.2 ⇐⇒ [0.8,1)
そこで、RAND関数の登場です。「=RAND()」が0.49871だとしたら、この対応表から4.9 を最初の客の到着時刻とします。ついで、=RAND()が0.80982だとしたら、次の客の到着ま での間隔は10.2とします。したがって、2番目の客の到着時刻は1.9 + 10.2 = 12.1とします。
以下順番にRAND関数を使って到着間隔を決め、到着時刻を計算します。ここではデータが五 つしかない場合に対して説明しましたが、この方法はデータがいくつの場合でも適用できます。
データがn個ある場合は、対応表の右側の区間データを£ 0,1n¢
,£1
n,n2¢ ,£2
n,n3¢
, ...のように与 えれば良いのです。
上の対応表を図示すると、もう少し見通しが良くなります。
経験分布関数
これは10.2,1.9,4.9,1.6,6.7というデータから計算された経験分布関数に他なりません。上の 対応表の意味は、
RAND関数から得られる数値を縦軸に取ったとき、それに対応する横軸の値を読む、
ということを表しているといって良いでしょう。これは逆関数の考え方と同じです。
データの取りうる値が連続的な場合、経験分布関数はデータが増えれば刻み幅が小さくなり、
究極的にはなめらかな曲線に収束して行くことが期待できます。これが累積分布関数F(x)で す。F(x)を使って対応表を書き直すと、
x ⇐⇒ [F(x), F(x+ ∆t))
のようになるでしょう。従って、累積分布関数にしたがうランダムデータ(乱数)は、RAND
関数から得られる数値をuとしたとき、逆関数F−1(.)を使ってF−1(u)を計算すればよいとい うことになりませんか。
逆関数法による乱数の生成法
ランダムに到着する場合、その到着間隔は指数分布に従うことが知られています。平均mの 指数分布の累積分布関数は
F(x) = 1−e−x/m (x≥0) で与えられます。その逆関数は
F−1(x) =−mlog(1−x)
ですから、Excelで自然対数関数が「=LN()」であることを知っていれば、ランダムな到着間
隔をExcelで生成することが出来ます。指数分布に従う乱数を簡単に指数乱数と言うことがあ
ります。なお、xが乱数ならば1−xも同じ性質を持っていることから、上の式を F−1(x) =−mlogx
と置き換えても良いことが分かります。
練習9.13 (1)Excelで平均5分の指数分布に従う乱数を100個生成し、それらの経験分布関数 を描き(階段にしなくても、累積の折れ線グラフでかまいません)、累積分布関数の形を類推し なさい。
(2)それらを到着間隔の架空のデータだと考え、累積することによって、ランダムな到着時刻 データを生成する式を入力しなさい。100人分の到着時刻を入力し、再計算キーを押しながら、
10人目の到着時刻、100人目の到着時刻がどのように変動するか、調べなさい。
(ヒント):経験分布関数はデータを大きさの順に並べ替える必要がありますが、データはそのま まにして、別の場所に、1番小さいデータ、2番目に小さいデータ、...のように取り出すことが 出来ます。たとえば、セルA7:A106に1から100までの通し番号、セルB7:B106にデータがあ る場合、セルD7に「=SMALL($B$7:$B$106,A7)」と入力すると、セルB7:B106の最小値が 表示されます。これをセルD8:D106にコピーペーストすると、セルB7:B106のデータを昇順に 並べ替えたものがセルD7:D106に表示されることになります。経験分布関数のグラフは、こう やって並べ替えた値がx軸の値になるので、注意が必要です。
解答:(グラフの概形を描きなさい)
9.6.2 窓口が一つのシステムのシミュレーション
1人のサーバしかいないサービス施設に客がランダムに到着して、先着順にサービスを受けて 退去するという状況、単一窓口待ち行列システムを考えます。到着の頻度が増えれば、待ち時間 が増加するということは分かりますが、その増え具合を数量的に調べるためにシミュレーション 分析をしてみましょう。
客の待ち時間は次のようにして「計算する」ことができます。到着した客はサービスが開始さ れるまで待ってから、サービスを受けて出て行きます。もし、次の客が待っていれば、出て行っ た直後にその客のサービスが開始されます。ということは客の滞在時間(待ち時間+サービス時 間)は、到着間隔と次の客の待ち時間を足したものに等しいということが分かります。
待ち時間とサービス時間、到着間隔の関係
記号を使って整理すると、次のようになるでしょう。n人目に到着する客の到着時刻をTn、待 ち時間をWn、サービス時間をSn、退去時刻をDnとすると、
Dn=Tn+Wn+Sn =Tn+1+Wn+1
と2通りに表すことが出来る、というのが上の図です。n番目の客とn+ 1番目の客の到着間隔
をAn+1=Tn+1−Tnとすると、結局、待ち時間に関して次のような漸化式が得られます。
Wn+1=Wn+Sn−An+1
上の図は、n番目の客が退去したときに次の客がサービス待ちしているという場合ですが、退 去したときに次の客がいなければ
Wn+1= 0
となることは言うまでもありません。両方のケースを合わせて、n+ 1番目に到着する客の待ち 時間は
Wn+1= max(0, Wn+Sn−An+1)
と書き表すことが出来ました。これを使えば、初期値W1= 0、つまり最初の客は待たない、と いうことを使って、架空の到着間隔、サービス時間を生成しながら、待ち時間W2, W3, ...を「計 算する」ことが出来るようになります。
手順をまとめておきましょう。時刻0にシステムに誰もいないところへ新たに客が到着したと します。最初の客の待ち時間は0です(w1= 0)
1. 乱数を使って1番目の客のサービス時間s1と次客との到着間隔a2を決めます 2. 2番目の客の待ち時間w2をmax(0, w1+s1−a2)によって計算します 3. 乱数を使って2番目の客のサービス時間s2と次客との到着間隔a3を決めます 4. 3番目の客の待ち時間w3をmax(0, w2+s2−a3)によって計算します 5. 乱数を使って3番目の客のサービス時間s3と次客との到着間隔a4を決めます
... 以下同様。
乱数によって架空のサービス時間s1, s2, s3,...と到着間隔a2, a3, ...を決めると、待ち時間が順番 に計算されてゆきます。
練習9.14(単一窓口待ち行列システムのシミュレーション)Excelを使い、上の手順に従って、
500人の客の平均待ち時間を計算するシートを作りなさい。
ただし、到着間隔は平均6分の指数分布に従い(到着率は1/6)、サービス時間は一定で4分 かかるものとします。
1人退去する毎にそれまで退去した客の待ち時間の平均値を計算して、それがどのように変化 するかを折れ線グラフに表しなさい。
再計算キーを押して、平均待ち時間の変動を観察しなさい。
(ヒント)上の手順をExcel上で実現する方法が、配布したExcelシートに書いてあります。見 比べて、正しいことを確認しながら入力してください。
解答
実験 1回目 2回目 3回目 4回目 平均待ち時間
練習9.15(続き)到着間隔の平均を5分に変えた場合、8分に変えた場合、10分に変えた場合 の平均待ち時間を計算する別々のExcelシートを作りなさい。サービス時間は一定で4分とし ます。実験毎に平均到着間隔を計算し、それの逆数に4を掛けることで、トラフィック密度の実 績値を計算し、トラフィック密度を横軸、平均待ち時間を縦軸にとって、すべての実験データを 一枚の散布図にまとめなさい。
解答
平均到着間隔 5分 8分 10分 平均待ち時間の一例
練習9.16 サービス時間を平均4分の指数分布としたとき、到着間隔を8分とした場合の平均待 ち時間を計算するExcelシートを作りなさい。到着間隔を10分にした場合、5分にした場合な ども調べなさい。再計算キーを何回か押して、平均待ち時間を計算し、一定サービス時間の場合 との違いを考察しなさい。
解答:
平均到着間隔 5分 8分 10分 平均待ち時間の一例
9.6.3 平均待ち時間と平均待ち行列長
上のようなシミュレーションを繰り返して、シミュレーション毎に平均到着間隔a、平均サー ビス時間sと、平均待ち時間wを計算(推定)して(s/a, w)を座標にプロットすると、下のよ うな図が描けます。
平均待ち時間の推定値と理論値
処理する客の数が500人しかいないので、シミュレーション結果はばらついていますが、トラ フィック密度、すなわち、一人の平均サービス時間中の到着客数、が増えれば平均待ち時間が増 えて行く様子が分かります。シミュレーションの理論によれば、実験を増やすことによって、ト ラフィック密度がいくつのとき平均待ち時間がいくつになるということが正確に推定できるよう になります。
この場合は、確率論を使って平均待ち時間を正確に知ることが出来ます。トラフィック密度を ρ、平均サービス時間をmとすると、平均待ち時間Wqは以下の式で与えられます。
Wq=m1 +c2 2
ρ 1−ρ
ここで、cはサービス時間の変動係数とします。バスの待ち時間を計算したときに出てきたあの 規準化されたばらつき、すなわち、標準偏差を平均で割ったものです。図の曲線はその理論値を 描いたものです。シミュレーション結果の点が理論値を挟んでばらついている様子が分かるで しょう。
システムを提供する側の評価尺度として重要なものの中に平均待ち行列長があります。これも 同じようにシミュレーションを実施して仮想現実から推定することができますが、そうしなくて も、最初に導いたリトルの公式
L=λW =λ(Wq+m) =λWq+ρ を使えば、平均待ち時間と到着率から「計算」することができます。
これらの結果は日頃体験する混雑現象を良く表現しています。トラフィック密度は到着率と処 理能力のバランスを指標化したもので、トラフィック密度が増えれば混雑具合が増加しますが、