IniziaInizia gratis

Gestire le code alla cassa

Un negozio di abbigliamento diventa molto affollato nelle ore di punta, quando spesso si crea la coda per pagare. Al momento c’è una sola cassa e ti è stato chiesto di fare un’analisi costi-benefici per capire quante casse servono per ridurre al minimo i tempi di attesa e aumentare la redditività.

Hai deciso di costruire un modello a eventi discreti. Sai che:

  • In media, durante le ore di punta un nuovo cliente si mette in coda ogni 15 secondi;
  • I clienti di solito hanno più articoli, in genere tra 1 e 20; e
  • Servono in media 3 secondi per passare un articolo alla cassa e il pagamento richiede in genere altri 20 secondi.

L’argomento counter contiene la risorsa SimPy e l’argomento customer_num traccia il numero di clienti.

Eseguiamo il modello e calcoliamo quanto tempo serve per servire 30 clienti con un numero diverso di casse.

Questo esercizio fa parte del corso

Simulazione a eventi discreti in Python

Visualizza il corso

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

def customer(env, customer_num, counter):

    num_items = random.randint(1.0, 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.0, 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()
Modifica ed esegui il codice