待ち行列の様子を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]

Posted by 春日井 優