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