Kom igångKom igång gratis

Hantera betalningsköer

En klädbutik blir mycket fullsatt under rusningstid när kunder ofta köar för att betala. För närvarande finns det bara en kassör, och du har fått i uppdrag att göra en kostnads-nyttoanalys för att avgöra hur många kassörer som behövs för att minska väntetiderna så mycket som möjligt och öka lönsamheten.

Du har bestämt dig för att bygga en diskret händelsemodell. Du vet att:

  • I genomsnitt ansluter en ny kund till kön var 15:e sekund under rusningstid;
  • Kunder brukar ha med sig flera varor, vanligtvis mellan 1 och 20; och
  • Det tar i genomsnitt 3 sekunder att scanna en vara i kassan, och betalningen tar vanligtvis ytterligare 20 sekunder.

Argumentet counter lagrar SimPy-resursen och argumentet customer_num spårar antalet kunder.

Kör modellen och beräkna hur lång tid det tar att betjäna 30 kunder med olika antal kassörer.

Den här övningen är en del av kursen

Diskret händelsesimulering i Python

Visa kurs

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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()
Redigera och kör kod