blog/content/post/2008-04-19-00000876.md

12 KiB
Raw Blame History

title author date url wordtwit_post_info categories
待ち行列理論について kazu634 2008-04-19 /2008/04/19/_941/
O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:3903;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}
つれづれ

 こいつが全く分からないのでここで一つまとめておきたいと思います。

Wikipediaだと

待ち行列理論まちぎょうれつりろん 英訳Queueing Theoryは、応用数学のオペレーションズ・リサーチにおける分野の一つで、様々な待ち行列系を数理モデル化して、待ち行列の平均長や、到着してから去るまでの平均の時間などを考察する理論である。

コンビニエンスストアや銀行などでは、しばしば窓口で順番待ちをしている人の列が生じる。このような行列を「待ち行列」と言う。この発生には様々な要因があり、客の現れる時間や、窓口での対応時間などをモデルとして記述し、その時間などを考察する。

待ち行列理論 Wikipedia

いや、これじゃわからん。テキストを見てみよう。

待ち行列とは

 駅の切符の自動販売機やスーパーのレジなどにおいて、人が滞留する現象がある。これは、混雑がひどく、サービスの時間に対して人が滞留していく割合の方が大きい状態である。このように、サービスを受けようとして待っている人や設備を「待ち行列」という。

これならわかりそう。

待ち行列理論

 待ち行列理論は、待ち行列ができたときの平均待ち時間や平均応答時間を求める手法である。待ち行列の状態を表すものとしてケンドールの記法がある。例えば

 M / M / m

システムの設計でよく用いられるのは、 M / M / mである。これはサービスの要求の発生頻度分布がランダムで、サービスの処理時間分布が指数分布、サービス窓口の数がm個であることを表す。そのほか、 M / D / m M / G / 1がよく用いられる。

数学的に解きやすく、応用範囲が広いのは M / M / 1である。これはサービス要求の発生頻度分布がランダムで、サービス処理時間分布が指数分布、サービス窓口の数が一個であることを表す。統計数学では、ランダムな発生はポアソン分布で近似する。

 指数分布とポアソン分布が分からないorz。指数分布は指数関数的な分布なのかしらそもそも「分布」ってなによ

 ポアソン分布は説明がある。

二項分布 P(x) =  _n C _x P _x (1-P)^n^-^xにおいて、Pが非常に小さくかつnが大きいとき、確率Pをもつ事象がn回の観察で起こる確率

 P(x) = ¥frac{¥mu e ^-^¥mu}{x!}

(平均値、分散共に ¥mu)統計数学ではランダムな発生はポアソン分布に従うことが知られている。そこで、 M / M / 1待ち行列の到着はポアソン到着という。

要するに、「ポアソン分布に従う」は「ランダムだよ」ということらしい。続きを見てみよう。

 M / M / 1待ち行列はいくつかの公式を覚えておくことで、解析的に解くことができる。 M / M / 1待ち行列の公式を整理しておく。

  • 平均到着率( ¥lambda= 単位時間あたりの平均到着数(件 / 時間)
  • 平均処理率( ¥mu = 単位時間あたりの平均処理数(件 / 時間)

このように定義したときに、利用率(サービス窓口が処理中である確率)を ¥rhoとすると、次式が成り立つ。

 ¥rho = ¥frac{¥lambda}{¥mu}

 ¥rhoは、 0 < ¥rho < 1 (¥lambda < ¥mu) でないと、待ち行列が際限なく大きくなってしまう。

ここらへんは定義だから暗記しなければいけない部分なのだろう。

 また、トランザクション一件あたりの処理時間は平均処理率の逆数で、平均処理時間(平均サービス時間)という。

平均処理時間( t_s =  ¥frac{1}{¥mu}(時間 / 件)

したがって、 ¥rhoは次のように表すこともできる。

 ¥rho = ¥lambda t_s

ここいらへんも定義を知っていればなんとかなりそうだ。

以上を基本として以下の公式が導かれる。

  •  E_w: システム内に処理中も含めて滞留しているジョブ数の平均値 =  ¥frac{¥rho}{1-¥rho}
  •  T_q: ジョブが到着してから処理が開始されるまでの時間の平均値(平均待ち時間) =  E_w ¥times ¥frac{1}{¥mu} = E_w ¥times t_s = ¥frac{¥rho}{1-¥rho} = ¥frac{¥rho}{1-¥rho} ¥times t_s

 T_qはトランザクションが到着したとき、すでに到着しているトランザクションの官僚を待たないと、処理を開始することができないため、待っているジョブと処理中のジョブに平均処理時間をかけることになる。

さらに次の公式を導くことができる。

  •  T_w: ジョブが到着してから処理が終了するまでの時間の平均値(平均応答時間) = 平均待ち時間 + 平均処理時間 =  T_q + t_s

平均待ち時間が分かれば、平均応答時間は平均待ち時間に到着したトランザクションの処理時間を加算すればよい。

ここらへんになると、ちょっときつい。。。ちょっと問題解いて確認するか。