お知らせ

ただいま、シンタックスハイライターの設定を見直しております。
プログラムが見にくくなっているページがありますが、ご容赦ください。

表計算ソフトウェアでシミュレーション(6)待ち行列のシミュレーション③待ち人数を視覚化する

モデル化とシミュレーション

こんにちは。まだまだ待ち行列を取り上げます。

ここまでは数値だけだったので、行列の様子があまりイメージできません。

行列の様子を視覚化してみます。

お客さんの状態を数式で表す

お客さんがどのような状態にあるかを、時刻ごとに数式で求めてみます。

状態としては、前のお客さんの後ろに並んでいる状態と、自分が注文して窓口で料理を作ってもらっている状態があります。

時間との関係を考えてみると

前のお客さんの後ろにいるのは、到着した時刻から注文する時刻までの間

自分が注文して窓口で料理を作ってもらっているのは、注文した時刻から料理を受け取る時刻までの間

になります。

ある時刻での状態を、表計算ソフトウェアで計算するために数式にすると

=if(到着時刻≦ある時刻<注文時刻,"待ち",if(注文時刻≦ある時刻<受取時刻,”窓口”,""))

となります。もちろん「 到着時刻≦ある時刻<注文時刻 」のような不等号にはさまれている部分は、andを使って2つの不等式に分けなければなりません。

うまく絶対参照を使うことで、数式をコピペするだけで行列の様子を視覚化できます。

それでは、数式とその結果を載せることにします。

わかりやすいように条件付き書式で色を変えています。

縦に見ると時間ごとの列の様子がわかり、横に見るとお客さんごとに店に到着してから料理を受け取るまでの時間経過がわかります。

列の長さを調べてみる

このように視覚化すると、縦方向に列の様子が示されるので、行列に並んでいる人数を数えることができます。

ついでなので、お客さんが20人来るとした場合の行列の最大の長さを調べてみます。

countif関数を使って行列の長さを調べ、循環参照を使って平均値を求めてみます。

計算結果です。

約5000回試行したところ、行列が最も長くなったときの、人数の平均は約10.6人になります。

ここまでに載せた図があまり行列感がないので、縮小して全体が見えるようにしてみます。

緑色が濃い部分が待っている状態のところです。

今回はこれでおしまいにします。それではまた。

Posted by kasugai