CommencezCommencez gratuitement

Gérer les files d'attente au paiement

Une boutique de vêtements devient très achalandée aux heures de pointe, et les clients font souvent la file pour payer. À l'heure actuelle, il n'y a qu'un seul caissier, et on vous a demandé de faire une analyse coûts-avantages pour déterminer combien de caissiers seraient nécessaires afin de réduire le temps d'attente autant que possible et ainsi augmenter la rentabilité.

Vous avez décidé de bâtir un modèle à événements discrets. Vous savez que :

  • En moyenne, un nouveau client se joint à la file toutes les 15 secondes pendant les heures de pointe;
  • Les clients apportent généralement plusieurs articles, typiquement entre 1 et 20; et
  • Il faut en moyenne 3 secondes pour numériser un article à la caisse, et le paiement prend généralement 20 secondes de plus.

L'argument counter contient la ressource SimPy, et l'argument customer_num suit le nombre de clients.

Exécutons le modèle et calculons le temps nécessaire pour servir 30 clients avec un nombre variable de caissiers.

Cette activité fait partie du cours

Simulation d'événements discrets en Python

Voir le cours

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

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()
Modifier et exécuter le code