Zahlungsschlangen managen
Ein Modegeschäft ist zu Stoßzeiten sehr stark frequentiert, sodass sich oft Schlangen an den Kassen bilden. Derzeit gibt es nur eine Kasse. Du sollst eine Kosten-Nutzen-Analyse durchführen, um zu bestimmen, wie viele Kassen nötig wären, um die Wartezeiten so weit wie möglich zu reduzieren und damit die Profitabilität zu steigern.
Du hast dich entschieden, ein ereignisdiskretes Modell zu bauen. Du weißt:
- Im Durchschnitt kommt während der Stoßzeiten alle 15 Sekunden ein neuer Kunde zur Schlange hinzu;
- Kunden bringen normalerweise mehrere Artikel mit, typischerweise zwischen 1 und 20; und
- Das Scannen eines Artikels an der Kasse dauert im Mittel 3 Sekunden, und die Bezahlung dauert in der Regel weitere 20 Sekunden.
Das Argument counter speichert die SimPy-Ressource, und das Argument customer_num verfolgt die Anzahl der Kunden.
Lass uns das Modell ausführen und berechnen, wie lange es dauert, 30 Kunden mit unterschiedlicher Anzahl an Kassen zu bedienen.
Diese Übung ist Teil des Kurses
Diskrete-Ereignis-Simulation mit Python
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
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()