Aan de slagGa gratis aan de slag

Betaalrijen beheren

Een kledingwinkel is tijdens piekuren erg druk, waardoor mensen vaak in de rij staan om te betalen. Er is nu maar één kassamedewerker, en jou is gevraagd een kosten-batenanalyse te doen om te bepalen hoeveel kassa’s nodig zijn om de wachttijden zoveel mogelijk te verkorten en zo de winstgevendheid te verhogen.

Je hebt besloten een discrete-evenementenmodel te bouwen. Je weet dat:

  • Er tijdens piekuren gemiddeld elke 15 seconden een nieuwe klant in de rij komt;
  • Klanten meestal meerdere artikelen meenemen, doorgaans tussen 1 en 20; en
  • Het gemiddeld 3 seconden kost om een artikel te scannen aan de kassa, en dat het afrekenen meestal nog eens 20 seconden duurt.

Het argument counter bevat de SimPy-resource, en het argument customer_num houdt het aantal klanten bij.

Laten we het model draaien en uitrekenen hoe lang het duurt om 30 klanten te helpen met een verschillend aantal kassa’s.

Deze oefening maakt deel uit van de cursus

Discrete Event Simulation in Python

Cursus bekijken

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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()
Code bewerken en uitvoeren