เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การจัดการคิวชำระเงิน

ร้านเสื้อผ้าแห่งหนึ่งมีลูกค้าหนาแน่นมากในช่วงเวลาเร่งด่วน จนมักเกิดคิวรอชำระเงิน ปัจจุบันมีแคชเชียร์เพียงคนเดียว และคุณได้รับมอบหมายให้วิเคราะห์ความคุ้มค่าเพื่อหาว่าต้องการแคชเชียร์กี่คน จึงจะลดเวลารอได้มากที่สุดและเพิ่มผลกำไรให้กับร้าน

คุณตัดสินใจสร้างแบบจำลอง discrete-event โดยทราบข้อมูลดังนี้:

  • โดยเฉลี่ย ลูกค้าใหม่จะเข้าคิวทุก 15 วินาทีในช่วงเวลาเร่งด่วน
  • ลูกค้ามักพกสินค้าหลายชิ้น โดยทั่วไปอยู่ระหว่าง 1 ถึง 20 ชิ้น และ
  • ใช้เวลาเฉลี่ย 3 วินาทีต่อการสแกนสินค้า 1 ชิ้น และการชำระเงินใช้เวลาอีกประมาณ 20 วินาที

อาร์กิวเมนต์ counter เก็บ SimPy resource ไว้ และอาร์กิวเมนต์ customer_num ใช้ติดตามจำนวนลูกค้า

มารันโมเดลและคำนวณว่าใช้เวลานานเท่าใดในการให้บริการลูกค้า 30 คน เมื่อจำนวนแคชเชียร์แตกต่างกัน

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การจำลองเหตุการณ์แบบไม่ต่อเนื่องด้วย Python

ดูคอร์ส

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

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()
แก้ไขและรันโค้ด