前提・実現したいこと
(M/M/1)待ち時間行列のプログラムをPythonで作っています。その途中で、arriveがうまく作動していないことに気づき、arriveをきちんと動かせるようにしたいです。
発生している問題・エラーメッセージ
これを実行すると、arriveが0のときに新しい値に置き換わるはずなのですが、-1,-2…と動いてしまうことがあり、うまく実行できません。
(if文のarrive == 0 と service <= 0 が同時に起こると上記のことが起こります。)
該当のソースコード
Python
1import numpy as np 2 3def q2(num): 4 service = np.random.exponential(3) #平均サービス時間は3分間隔の指数分布 5 arrive = np.random.poisson(5) #客の到着時間は5分間隔のポアソン分布 6 queue = 0 #並んでいる行列長 7 8 for i in range(num): 9 service = service - 1 #時間を1進める 10 arrive = arrive - 1 #時間を1進める 11 12 if arrive == 0: #到着が0分になったとき 13 queue = queue + 1 #行列長+1 14 arrive = np.random.poisson(5) #新しい到着時間を出す 15 16 if service <= 0: #サービス時間が負になったとき 17 if queue >= 1: #行列長があるとき 18 queue = queue - 1 #行列長ー1 19 service = np.random.exponential(3) #新しいサービス時間 20 else: #行列長がないとき 21 service = 0 #サービス時間は0 22 23 print(arrive)
Python
1q2(10000)
試したこと
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー