पेमेंट क्यूज़ को मैनेज करना
पीक आवर्स में कपड़ों की दुकान पर बहुत भीड़ हो जाती है और लोग भुगतान के लिए अक्सर कतार में लगते हैं। फिलहाल केवल एक कैशियर है, और आपसे कॉस्ट-बेनिफिट एनालिसिस करने के लिए कहा गया है ताकि यह तय किया जा सके कि वेटिंग टाइम को यथासंभव कम करके प्रॉफिटेबिलिटी बढ़ाने के लिए कितने कैशियर चाहिए।
आपने डिस्क्रीट-इवेंट मॉडल बनाने का फैसला किया है। आपको पता है कि:
- पीक आवर्स के दौरान औसतन हर 15 सेकंड में एक नया ग्राहक कतार में जुड़ता है;
- ग्राहक आम तौर पर कई आइटम लाते हैं, आमतौर पर 1 से 20 के बीच; और
- एक आइटम को कैशियर पर स्कैन करने में औसतन 3 सेकंड लगते हैं, और भुगतान में आमतौर पर अतिरिक्त 20 सेकंड लगते हैं।
आर्ग्युमेंट counter में SimPy रिसोर्स स्टोर होता है, और आर्ग्युमेंट customer_num ग्राहकों की संख्या ट्रैक करता है।
आइए मॉडल चलाएँ और अलग-अलग कैशियरों की संख्या के साथ 30 ग्राहकों की सेवा करने में कितना समय लगता है, यह निकालें।
यह अभ्यास पाठ्यक्रम का हिस्सा है
Python में Discrete Event Simulation
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
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()