Gestionarea cozilor de plată
Un magazin de haine devine foarte aglomerat în orele de vârf, când clienții stau adesea la coadă pentru a plăti. În prezent, există un singur casier, iar ți s-a cerut să faci o analiză cost-beneficiu pentru a determina câți casieri ar fi necesari pentru a reduce timpii de așteptare cât mai mult posibil și a crește profitabilitatea.
Ai decis să construiești un model de simulare cu evenimente discrete. Știi că:
- În medie, un client nou se alătură cozii la fiecare 15 secunde în orele de vârf;
- Clienții aduc de obicei mai multe produse cu ei, de regulă între 1 și 20; și
- Scanarea unui produs durează în medie 3 secunde, iar plata propriu-zisă mai necesită încă 20 de secunde.
Argumentul counter stochează resursa SimPy, iar argumentul customer_num urmărește numărul de clienți.
Să rulăm modelul și să calculăm cât timp este necesar pentru a servi 30 de clienți cu un număr diferit de casieri.
Acest exercițiu face parte din cursul
Simulare de evenimente discrete în Python
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
def customer(env, customer_num, counter):
num_items = random.randint(1, 20)
print(f"Time: {env.now:7.4f} sec | Customer {customer_num:02d} > Joining the queue with {num_items:02d} items!")
# Open the resource counter request
with counter.____() as request:
yield request
print(f"Time: {env.now:7.4f} sec | Customer {customer_num:02d} > Got to cashier!")
time_counter = TIME_PAY + random.randint(1, 20) * TIME_SCAN_PER_ITEM
# Yield the processing time
yield env.____(time_counter)
print(f"Time: {env.now:7.4f} sec | Customer {customer_num:02d} > Finished ")
env = simpy.Environment()
# Create resource
counter = simpy.Resource(env, capacity=____)
env.process(source(env, NEW_CUSTOMERS, INTERVAL_CUSTOMERS, counter))
env.run()