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
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()