Python Пакет Simpy

  • Автор темы APJIEKUH48
  • Дата начала
A

APJIEKUH48

#1
Программа создаёт системму массового обслуживания с 1 устройством и несколькими клиентами:
Код:
1 
2 """A counter with a random service time""" 
3 from SimPy.Simulation import * 
4 from random import expovariate, seed 
5 
6 class Source(Process): 
7	 """ Source generates customers randomly""" 
8 
9	 def generate(self,number,interval): 
10		 for i in range(number): 
11			 c = Customer(name = "Customer%02d"%(i,)) 
12			 activate(c,c.visit(timeInBank=12.0)) 
13			 t = expovariate(1.0/interval) 
14			 yield hold,self,t 
15 
16 class Customer(Process): 
17	 """ Customer arrives, is served and leaves """ 
18 
19	 def visit(self,timeInBank=0): 
20		 arrive=now() 
21		 print "%7.4f %s: Here I am	 "%(now(),self.name) 
22		 yield request,self,counter 
23		 wait=now()-arrive 
24		 print "%7.4f %s: Waited %6.3f"%(now(),self.name,wait) 
25		 tib = expovariate(1.0/timeInBank) 
26		 yield hold,self,tib 
27		 yield release,self,counter 
28		 print "%7.4f %s: Finished	 "%(now(),self.name) 
29 
30 def model(theseed): 
31	 global counter 
32	 seed(theseed) 
33	 counter = Resource(name="Karen") 
34 
35	 initialize() 
36	 source = Source(’Source’) 
37	 activate(source,source.generate(5,interval=10.0),0.0) 
38	 simulate(until=400.0) 
39 
40 model(theseed=12345)
Подскажите пожалуста как можно подсчитать длинну очереди и время простоя устройства обслуживания?
Заранее благодарен.