ÎncepețiÎncepe gratuit

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

Vezi cursul

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()
Editează și rulează codul