2016-08-28 2 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) 

결과 :

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

이러한 프로세스의 첫 번째는 90 시간 단계 후, 당신은 이미 대기중인 90 개 새로운 프로세스를 만들었습니다 완료 그렇게되면, process_client() 모든 시간 단계를 생성. 그래서 당신의 숫자는 꽤 잘 보이고 있습니다.

관련 문제