2017年11月07日

M/M/sの窓口理論とsimpy

うん、難しい数学の話はよくわからんので、無し。(´・ω・`)
工学屋としてはいいから結果と道具を寄越せ、理屈は任せるスタンスで。
(ある程度は理解しないとあかんけどねぇ・・。)

んで、何かというと WebSphereのコネクションプールとか、スレッドプールとかの
キューイングネットワークの設定するときによく使われる窓口理論なんだけど式がややこしいあれ。
なんとか過程とか分布とかいわれても統計学やってないとさっぱりだと思う。
ならばシミュレーションしてみよう。
理屈はよくわからんが、どのぐらい必要かわかればよいのだ(ぉ

(1)pythonを用意しよう
(2)pip install simpy

あとはsimpyのチュートリアルとにらめっこして、youtubeのチュートリアルを見て
コネコネしてみる。

・コネコネしていてわかったこと

  シミュレーション単位はミリ秒でやったほうがよい。少数秒でやるとpythonの処理の遅延でうまくシミュレートできない。
  
  random.expovariate(1.0/transactionTime) の意味は 収束させたい数(transactionTime)の逆数を引数に入れる。
  間隔が指数分布になっていると到着率がポアソン分布になるので、結果がマルコフ過程に\(^o^)/ウボア

  リソースの獲得待ちはwithで
          with self.res.request() as req:
               yield req

  時間を消費するのを待つところ
    yield env.timeout(generate_timimg)

  このgenerate_timimgの扱いがよくわかってない(´・ω・`)
  これも指数分布にしていいのか、なんでもいいのか、固定値なのか、で結果変わります。

  15分分シミュレーションするなら、以下のように(ミリ秒単位)
  env.run(until=1000*60*15)  # 15分シミュレーション(unit=msec)
  
珍しく備忘録だな、こりゃ。(゚Д゚)


posted by koteitan at 11:30| Comment(0) | python | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。