2016-08-28 5 views
0

イベントシミュレーションを始めたばかりで、待ち行列の監視にいくつか問題があります。SimPyで待ち行列サイズがENVサイズのように見える

私はキューをチェックするたびに、実際にはEnv.nowを表示しているようです。何かアドバイス?

import simpy 

num_of_machines = 2 

env = simpy.Environment() 
bcs = simpy.Resource(env, capacity=num_of_machines) 

def monitor(resource): 
    """This is our monitoring callback.""" 

    print('Queue size: %s' % len(resource.queue)) 

def process_client(env, name): 

    with bcs.request() as req: 
     yield req 
     print('%s starting to charge at %s' % (name, env.now)) 
     yield env.timeout(90) 
     print('%s ending charge at %s' % (name, env.now)) 
     monitor(bcs) 



def setup(env): 
    i = 0 

    while True: 
     i += 1 
     yield env.timeout(1) 

     env.process(process_client(env, ('Car %s' % i))) 

env.process(setup(env)) 

env.run(until=300) 

結果:これらのプロセスの最初の90時間ステップの後に行われたときに

Car 1 starting to charge at 1 
Car 2 starting to charge at 2 
Car 1 ending charge at 91 
Queue size: 88 
Car 3 starting to charge at 91 
Car 2 ending charge at 92 
Queue size: 88 
Car 4 starting to charge at 92 
Car 3 ending charge at 181 
Queue size: 176 
Car 5 starting to charge at 181 
Car 4 ending charge at 182 
Queue size: 176 
Car 6 starting to charge at 182 
Car 5 ending charge at 271 
Queue size: 264 
Car 7 starting to charge at 271 
Car 6 ending charge at 272 
Queue size: 264 
Car 8 starting to charge at 272 
+0

あなたの問題は何ですか? –

+0

私は充電待ちの待ち行列に何台の車があるのか​​把握しようとしています –

答えて

0

あなたはprocess_client()すべてのタイムステップを起動は、そう、あなたはすでにキューイングされている90個の新しいプロセスを作成しました。だから、あなたの数字はきちんと見えています。

関連する問題