Mulai sekarangMulai gratis

Mengelola antrean pembayaran

Sebuah toko pakaian menjadi sangat ramai pada jam sibuk ketika orang-orang sering mengantre untuk membayar. Saat ini hanya ada satu kasir, dan Anda diminta melakukan analisis biaya-manfaat untuk menentukan berapa banyak kasir yang diperlukan agar waktu tunggu dapat dikurangi semaksimal mungkin guna meningkatkan profitabilitas.

Anda memutuskan untuk membangun model kejadian-diskret. Anda mengetahui bahwa:

  • Rata-rata, seorang pelanggan baru bergabung ke antrean setiap 15 detik selama jam sibuk;
  • Pelanggan biasanya membawa beberapa barang, umumnya antara 1 hingga 20; dan
  • Rata-rata membutuhkan 3 detik untuk memindai satu barang di kasir, dan proses pembayaran umumnya membutuhkan 20 detik lagi.

Argumen counter menyimpan resource SimPy, dan argumen customer_num melacak jumlah pelanggan.

Mari jalankan modelnya dan hitung berapa lama waktu yang dibutuhkan untuk melayani 30 pelanggan dengan jumlah kasir yang berbeda.

Latihan ini merupakan bagian dari kursus

Simulasi Peristiwa Diskret dengan Python

Lihat Kursus

Latihan interaktif langsung praktik

Cobalah latihan ini dengan melengkapi kode contoh ini.

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()
Edit dan Jalankan Kode