先日、孫に算数を教えて得意になった話をエッセイに書いた。「ひさしぶりに得意の爺・・・ニュートン算」そのエッセイの最後に、ずにのって昔オペレーションズリサーチの通信教育を受けた頃の話を思い出して、自分流の問題を作って載せた。もちろん答えは検討がつかぬから正直に「解法は・・・・・うーん、難しいから次ぎに行こう。」としめくくったのだけれど・・・・。
「野球場には平均5分に一人の割合で客が訪れます。入ってくる人一人を処理するのに平均3分かかります。すると客は平均何分待たなければならないでしょう。また入口をふたつにすれば待ち時間はどれくらいにへるでしょう。」
ところが会社の先輩のAさんが「54秒でしょう?二つにすれば27秒になるのかな。」と書いてきた。少し考えてこれが間違いである、とわかった。5人のうち3人は待たなければならないだろう。二人は待たずにすむだろう。3人は処理時間が3分と言うから平均1.5分待つだろう。その平均をとって54秒、二つなら半分、と考えたのだろう。しかしすでに待っている人間がいるケースはないだろうか。一人待っていれば彼は作業が終るまでに平均4.5分も待たなければならないことになる。
そのように答えたけれども後が大変。私もオトコノコ。昔のORの本を引っ張り出す。この種の問題は情報処理技術者の試験問題に出るときいてインターネットで探し始める。頭のよさそうな友人にもメールで問い合わせて見る。ついには初歩のOR本を買ってくる。やっとほとんど同じ問題を見つけたので、掲載されている公式を用いて計算。100%自信があるとはいえぬ。間違えていたら、正直どなたか教えて・・・・。
訪れる客の頻度=A=1/5 (人/分)、処理速度=B=1/3(人/分)
今A/B=zとすると
待たねばならぬ確率=z=0.6
一人も待たなくて良い確率=1-z=0.4
従って一人待たねばならぬ確率=z*(1-z) 二人待たねばならぬ確率=z**2*(1-z)
以下同様に成るから、待たなければならない人数Kは次のようになる。
K=(1-z)*0+z*(1-z)*1+z**2*(1-z)*2+z**3*(1-z)*3・・・・・・(1)
Kを求めるために高等学校のときにやった数列計算を思い出す必要がある。
K*z=z*(1-z)*0+z**2*(1-z)*1+z**3*(1-z)*2+z**4*(1-z)*3・・・・・・(2)
(1) 式から(2)式をひくと
K*(1-z)= z*(1-z)+z**2*(1-z)+z**3*(1-z) +z**4*(1-z)・・・・・
よってK=z /(1-z)=1.5人(待っている客と処理中の人=系の中にいる人)
待ち時間の期待値=1/B*z* /(1-z)=4.5分
同様に到着してから処理されるまでの時間の期待値=7.5分となる。
窓口が二つの場合、最初の客が一人も待っていない確率を決める過程がかなりややこしい(実はよくわからない!)ので、公式にあてはめた計算結果のみを示す。
客が一人も待っていない確率(P0)=1/((1*1+z)+1/2*z**2*(2 /(2 -z))
=(2-z)/(2+z)= (7/13)=0.538
待ち時間の期待値=1/B*z**2/(2-z)**2*P0=(27/49)*(7/13)=27/91=0.297分
(到着してから処理されるまでの時間の期待値=3.297分)
・ ・・・・それにしても窓口を二つにした効果は大きいものですね。
ところでこの話をある自転車置き場を売り出している会社の社長にきいたところ「何、そんなのは経験だよ。」と一蹴された。現場ではそうなのかもしれない。また別の女性は「劇場のトイレなどにはあてはまらない。」と言った。それはそのとおりだ。この計算は客はポアソン分布で一日バラバラと来ることを想定している。休憩時間にどっと押し寄せるようなものは別問題である。
参考:初等ORテキスト OR演習部会編 日科技連
オペレーションズリサーチの手ほどき 加瀬滋男 日刊工業新聞社
註 ご意見をお待ちしています。
e-mail agatha@bekkoame.ne.jp
home-page http://www.bekkoame.ne.jp/~agatha
読者からメールをいただき、自分なりに検討しました。
「待ち合わせ問題は難しい!続編」(4月23日(月)曇り)
4月10日「待ち合わせ問題は難しい!」であの問題の答えらしきものを考えた。
しかしあのエッセイの最後に書いたように、答えは客が団子状に来たりすると全然当てはまらない。5分間隔で到着といってもすぐに11人がやってきて、1時間後に12人目がやってきたりすれば全然違う。サービス時間についても同様。
答えには前提がある。客の到着について
「到着はランダムにおこり、ある特定のときに到着数が多いとか少ないとか言うこともなければ(定常性)、さきにどれほどの到着数があったかにも無関係(無残留効果性)とする。さらに多くの単位が、同時に到着することはあまりない(希少性)」
数式はややこしいから省略するが、これを一般にポアソン(タイプの)到着と呼ぶ。
一方サービス時間は、サービス時間がt=0の確率が一番高く1で、tの増加に伴い単調に(いいかえると山や谷がなく)確率ゼロに近づく、と仮定している。これは指数分布と呼ばれている。これは余りありそうな仮定ではなく、実際にはあるサービス時間のところに山が出来るだろう。こちらを「Erlang分布」などと呼ぶようだ。
この問題について友人のA君が次のような検討をしたとメールしてきた。
「小生が導いた数値実験のための式を以下に示します。この方法で良いかどうかの100%の自信はありませんが、折をみて乱数を用い、試算してみたいと思います。
窓口を一つとし、客の到着時間間隔をT1、T2、・・・
Tnとし、n番目のひとの待ち時間をWn、サービスの時間を Snとする。0番目の客は、時刻0に到着し、待ち時間がないものとする。すなわち、
W0=0とする。このとき
W1=S0―T1―W0
W2=S1―T2―W1
W3=S2―T3―W2
・・・・・・
Wn=Sn-1―(Tn―Wn-1)
上の式が負になるときは、待ち時間が0になるときであるから、一般に、
Wn= max{0、Sn-1―(Tn―Wn-1)}
従って、待ち時間の平均Wqは、
Wq=(W1+W2+・・・・・・Wn)/n
因に、2N人の客が来るとして、まず、半分の客N人が等
間隔Tで来た後、残りの客N人が団子状態 で来ると
する。また、 Sn=Sと固定しT>Sとする。このとき、待ち時間Wは、
W=N(N+1)×S/4N=(N+1)×S/2
となり、Nの増加とともにWが増加する。客全員が等間隔で やって来るときは待ち時間は0であるから、Wqは0と∞の
間にある。」
なるほどなあ、と思った。ただ乱数をどのように発生させるのか、考えが及ばない。
こんなことを考えているうちに、実際問題としてはいろいろな情報で、客の到着時間を予測し、サービス時間を乱数で考えるあたりなのかなあ、と思ったりした。
A氏は最後に「久しぶりに頭を使わせて頂 き、ありがとうございました。」と書いてくれたけれど、実は私自身も同じ気分。久しぶりに頑張った気がした。