待ち行列の様子をPythonで書いてみる
こんにちは。そういえば、待ち行列のシミュレーションのプログラミングを忘れていました。
というわけで、Pythonで書いてみることにします。
Excel版のリンク
以前書いたExcelでの記事へのリンクを貼っておきます。
お客さんが到着する確率は指数分布に従うものとしていました。
Pythonのプログラム
ここで,お客さんが到着する間隔をリストなどでもたせるのではなく,乱数を発生させて計算により求めることにしてみます。
累積分布関数は \(F(x)=1-e^{-\lambda x}\) でした。
乱数で\(F(x)\)を発生させ,前のお客さんとの時間差\(x\)を求めることにしてみます。
ということで,逆関数を求めなければなりません。
\[ \begin{eqnarray} F(x) &=& 1-e^{-\lambda x} \\ e^{-\lambda x} &=& 1- F(x) \\ -\lambda x &=& log(1-F(x)) \\ x &=& -\frac{ log(1-F(x)) }{ \lambda } \end{eqnarray} \]
で求められます。
それ以外については,Excelと同じにしておきます。
それでは,Pythonのプログラムです。
このプログラムの実行結果は次になります。
客No 到着 開始 注文 調理 受取 待ち
No 1 6 6 定食 60 66 0
No 2 12 66 ラーメン 50 116 54
No 3 14 116 ラーメン 50 166 102
No 4 33 166 定食 60 226 133
No 5 35 226 カレー 20 246 192
No 6 53 246 定食 60 306 193
No 7 64 306 カレー 20 326 242
No 8 67 326 定食 60 386 259
No 9 75 386 ラーメン 50 436 311
No10 84 436 定食 60 496 353
No11 125 496 カレー 20 516 372
No12 149 516 そば 30 546 367
No13 162 546 定食 60 606 384
No14 205 606 カレー 20 626 401
No15 230 626 定食 60 686 397
No16 288 686 定食 60 746 399
No17 322 746 ラーメン 50 796 424
No18 340 796 定食 60 856 456
No19 346 856 定食 60 916 510
No20 349 916 定食 60 976 568
今回はこれでおしまいにします。それではまた。
[mathjax]
ディスカッション
コメント一覧
まだ、コメントがありません