質問: とあるショップの待ち時間の計算をどうしたものかと悩んでいます。 ショップの開店から閉店までの時間を30分で区切って、 その間に来店した顧客の人数を2年間貯めたものがデータとしてあります。 受付(来店)から支払い(退店)までの時間は一応あるのですが、 退店後しばらく経ってからデータを入力するケースがあるため当てになりません。 (当てになるのならこの件は終了ですね) ここで、 「ざっくり」と1人が受付て支払いをするまでの時間を7分とし、 一人ずつ処理するため複数人が並列になることはない(キューってやつです)、 待ち時間が60分を越えたら「とても待つ」という表現にする、という条件で 各時間帯の待ち時間というものはどう計算したら良いものでしょうか? 私が考えているところでは、 ・30分間、1人辺り7分だから、5人来店があると30分を越えるので次の30分間に繰り越しになる。 ・つまり期間中に来店した人全員が要する時間は、a=繰越時間(分)、b=来店社数とすると、 a+7b分ということになる。 ・待ち時間と言っても、最短、平均、最長があるはず。 ・30分間の来店客の分布の仕方によって待ち時間は変動する。 ・分布による待ち時間の変動も、(平均の)最短、平均、最長の3つに絞る。 ・上記を踏まえ9通りのデータをプログラミングで算出したい。 といったところです。 ここまでで、質問しようと考えをまとめていたら 私なりに閃いたのでそのアルゴリズムを記述します。 ``` 1.30分を1分ごとに区切る 2.そこに来店者数を散りばめるパターンを全パターンつくる 3.各パターンで待ち時間の最短・平均・最長を算出する。 4.算出方法 a.1~30までを繰り返しながら、 b.待ち時間を0を限度にカウントダウン c.来店者がいたらその時点の待ち時間をその来店者の待ち時間とする d.待ち時間に7をカウントアップ e.来店者が他にもいたらc,dを行う f.来店者がいなかったら次の1分に進む g.30分まで終わったら、そのパターンの待ち時間の最短、平均、最長、繰越時間を算出 h.繰越時間は期間中に1人しかいない場合でも6分以内の時間がありえる。 これを考慮すると試行パターンが多くなってしまうので、 単純値(例えば8人だったら8×7-30=26)を次に繰り越す。 (または、最後の人が来た時間とその人の待ち時間から算出した繰越時間の平均値とするか?) i.次のパターンでa~hを行う。 5.各時間・各パターンの最短・平均・最長の平均を尺度に、全パターンの平均の最短・平均・最長の3パターンを取り出す ``` といった感じです。 スマートではない力技な感はありますが、 これでも一応はできるのかな、と思います。 他に良いアイデアはありませんでしょうか? ちなみに、PHPで計算してその結果をデータベースに入れ込もうとしています。 ですからPHPの関数を使うことも可能です。
回答: > > 2.そこに来店者数を散りばめるパターンを全パターンつくる > > > ここにちょっと引っかかります。ポアソン分布に従うんじゃないかしら。