Začněte nyníZačněte zdarma

Správa front u pokladen

V oblíbeném obchodě s oblečením bývá v době špiček rušno – zákazníci se řadí do fronty u pokladny. Momentálně je k dispozici jediný pokladní, a tebou bylo požádáno o analýzu nákladů a přínosů, která určí, kolik pokladních by bylo potřeba ke zkrácení čekacích dob a zvýšení ziskovosti.

Rozhodl/a ses sestavit diskrétně-událostní model. Víš, že:

  • V době špiček přichází v průměru každých 15 sekund nový zákazník;
  • Zákazníci obvykle přinášejí více položek – typicky 1 až 20; a
  • Naskenování jedné položky trvá průměrně 3 sekundy a samotná platba pak dalších 20 sekund.

Argument counter uchovává SimPy zdroj a argument customer_num sleduje počet zákazníků.

Spusťme model a zjistěme, jak dlouho trvá obsloužit 30 zákazníků při různém počtu pokladních.

Toto cvičení je součástí kurzu

Diskrétní simulace událostí v Pythonu

Zobrazit kurz

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

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()
Upravit a spustit kód