Ödeme kuyruklarını yönetme
Bir giyim mağazası, yoğun saatlerde oldukça kalabalık oluyor ve insanlar sıkça ödeme kuyruğuna giriyor. Şu anda yalnızca bir kasiyer var ve bekleme sürelerini olabildiğince azaltıp kârlılığı artırmak için kaç kasiyere ihtiyaç duyulduğunu belirlemek üzere senden bir maliyet-fayda analizi yapman isteniyor.
Ayrık olaylı bir model kurmaya karar verdin. Şunları biliyorsun:
- Yoğun saatlerde ortalama her 15 saniyede bir yeni müşteri kuyruğa katılıyor;
- Müşteriler genellikle yanlarında 1 ile 20 arasında değişen sayıda ürün getiriyor; ve
- Kasada bir ürünü okutmak ortalama 3 saniye sürüyor, ödemenin tamamlanması ise genelde ek 20 saniye alıyor.
counter argümanı SimPy kaynağını tutar ve customer_num argümanı müşteri sayısını takip eder.
Hadi modeli çalıştıralım ve farklı sayıda kasiyerle 30 müşteriye hizmet vermenin ne kadar sürdüğünü hesaplayalım.
Bu egzersiz
Python ile Ayrık Olay Benzetimi
kursunun bir parçasıdırUygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
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()