Skip to content

Commit 3f02916

Browse files
authored
Update simulate.py
reformat using flake and black
1 parent 5f65be1 commit 3f02916

File tree

1 file changed

+24
-23
lines changed

1 file changed

+24
-23
lines changed

simulation-with-simpy/simulate.py

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99
import simpy
1010
import random
1111

12+
arrival_times = []
13+
departure_times = []
14+
1215

1316
class Theater(object):
1417
def __init__(self, env, num_cashiers, num_servers, num_ushers):
@@ -18,60 +21,60 @@ def __init__(self, env, num_cashiers, num_servers, num_ushers):
1821
self.usher = simpy.Resource(env, num_ushers)
1922

2023
def purchase_ticket(self, moviegoer):
21-
yield self.env.timeout(random.randint(1, 2))
22-
23-
def sell_food(self, moviegoer):
24-
yield self.env.timeout(random.randint(0, 5))
24+
yield self.env.timeout(random.randint(1, 3))
2525

2626
def check_ticket(self, moviegoer):
2727
yield self.env.timeout(3 / 60)
2828

29+
def sell_food(self, moviegoer):
30+
yield self.env.timeout(random.randint(1, 5))
31+
2932

30-
def moviegoer(env, num, theater):
33+
def go_to_movies(env, moviegoer, theater):
3134
with theater.cashier.request() as request:
3235
yield request
33-
yield env.process(theater.purchase_ticket(num))
34-
35-
with theater.server.request() as request:
36-
yield request
37-
yield env.process(theater.sell_food(num))
36+
yield env.process(theater.purchase_ticket(moviegoer))
3837

3938
with theater.usher.request() as request:
4039
yield request
41-
yield env.process(theater.check_ticket(num))
40+
yield env.process(theater.check_ticket(moviegoer))
41+
42+
get_food = [0, 1]
43+
if random.choice(get_food) == 1:
44+
with theater.server.request() as request:
45+
yield request
46+
yield env.process(theater.sell_food(moviegoer))
4247

4348
departure_time = env.now
4449
departure_times.append(departure_time)
4550

4651

4752
def run_theater(env, num_cashiers, num_servers, num_ushers):
4853
theater = Theater(env, num_cashiers, num_servers, num_ushers)
49-
interarrival = 0.20
5054

51-
for num in range(3):
52-
env.process(moviegoer(env, num, theater))
55+
for moviegoer in range(3):
56+
env.process(go_to_movies(env, moviegoer, theater))
5357
arrival_time = env.now
5458
arrival_times.append(arrival_time)
5559

5660
while True:
57-
# Wait a bit before generating a new person
58-
yield env.timeout(interarrival)
61+
yield env.timeout(0.20) # Wait a bit before generating a new person
5962

60-
num += 1
61-
env.process(moviegoer(env, num, theater)) # Generate the next person
63+
moviegoer += 1
64+
env.process(go_to_movies(env, moviegoer, theater))
6265
arrival_time = env.now
6366
arrival_times.append(arrival_time)
6467

6568

6669
def calculate_wait_time(arrival_times, departure_times):
6770
total_wait = []
68-
num_cleared = len(departure_times)
71+
total_seated = len(departure_times)
6972

70-
for i in range(num_cleared):
73+
for i in range(total_seated):
7174
total_wait.append(departure_times[i] - arrival_times[i])
7275

7376
# Pretty print the results
74-
average_wait = sum(total_wait) / num_cleared
77+
average_wait = sum(total_wait) / total_seated
7578
minutes, frac_minutes = divmod(average_wait, 1)
7679
seconds = frac_minutes * 60
7780
return round(minutes), round(seconds)
@@ -112,6 +115,4 @@ def main():
112115

113116

114117
if __name__ == "__main__":
115-
arrival_times = []
116-
departure_times = []
117118
main()

0 commit comments

Comments
 (0)