Sesi 10 BDM

Sesi 10: Simulation Modeling | Business Decision Modeling

Sesi 10: Simulation Modeling

Business Decision Modeling (BDM) | Referensi: Chapter 10 – Balakrishisan et al.

🎬 Pengantar Simulasi

Simulasi adalah salah satu teknik pemodelan keputusan yang paling banyak digunakan di dunia bisnis. Alih-alih mencari solusi matematis yang mutlak optimal (seperti pada Linear Programming), simulasi berusaha meniru karakteristik dan perilaku dari sistem dunia nyata untuk membantu manajer mengevaluasi berbagai skenario dan mengambil keputusan di tengah ketidakpastian.

Video pengantar tentang konsep dasar simulasi dan penerapannya dalam pengambilan keputusan bisnis

📊 1. Apa Itu Simulasi? (Konsep Dasar untuk Pemula)

💡 Analogi Sederhana: Simulasi Seperti “Flight Simulator”

Bayangkan Anda ingin belajar menerbangkan pesawat. Apakah Anda langsung menerbangkan pesawat sungguhan dengan penumpang? Tentu tidak! Anda menggunakan flight simulator — sebuah mesin yang meniru cockpit pesawat sungguhan. Di simulator, Anda bisa berlatih mendarat, menghadapi badai, atau bahkan mengalami kegagalan mesin tanpa risiko nyata.

Simulasi bisnis bekerja dengan cara yang sama! Kita membuat “model” di komputer yang meniru perilaku bisnis nyata, lalu kita bisa menguji berbagai keputusan tanpa risiko kehilangan uang sungguhan.

Definisi Formal Simulasi

Simulasi adalah upaya untuk menduplikasi (meniru) karakteristik dan perilaku dari sistem nyata ke dalam model matematis atau komputasi. Tujuannya adalah untuk memahami bagaimana sistem tersebut bekerja dan membantu pengambilan keputusan.

Konsep Kunci: Simulasi TIDAK memberikan jawaban “terbaik” secara otomatis. Simulasi hanya mengatakan apa yang akan terjadi jika kita memilih keputusan tertentu. Kita harus mencoba beberapa pilihan dan membandingkan hasilnya.

✅ Keuntungan Simulasi (Mengapa Kita Butuh Simulasi?)

  1. Fleksibel: Dapat disesuaikan dengan berbagai skenario dan situasi bisnis yang berbeda.
  2. Menangani Sistem Kompleks: Mampu menangani sistem besar yang terlalu rumit untuk dipecahkan dengan rumus matematika tradisional.
  3. “What-If” Analysis: Memungkinkan kita menjawab pertanyaan “Bagaimana jika…?” tanpa risiko nyata. Contoh: “Bagaimana jika permintaan naik 20%?” atau “Bagaimana jika supplier terlambat 3 hari?”
  4. Non-Disruptif (Tidak Mengganggu): Tidak mengganggu operasional sistem nyata yang sedang berjalan. Kita tidak perlu menghentikan pabrik atau toko untuk melakukan eksperimen.
  5. Mempelajari Interaksi Antar Variabel: Kita bisa melihat bagaimana perubahan satu variabel mempengaruhi variabel lainnya.
  6. Kompresi Waktu: Kita bisa mensimulasikan operasi 10 tahun hanya dalam beberapa detik di komputer. Bayangkan jika harus menunggu 10 tahun sungguhan untuk melihat hasil keputusan!
  7. Menangani Kerumitan: Bisa menangani komplikasi yang tidak bisa ditangani oleh metode lain (seperti Linear Programming).

❌ Kerugian Simulasi (Apa Kelemahannya?)

  1. Mahal & Lama: Membangun model yang akurat membutuhkan waktu berbulan-bulan dan biaya besar untuk pengumpulan data dan pemrograman.
  2. Tidak Memberi Solusi Optimal: Simulasi hanya mengevaluasi solusi yang kita coba, tidak secara otomatis memberi jawaban terbaik. Kita harus mencoba banyak kombinasi sendiri.
  3. Manajer Harus Memilih Skenario: Manajer harus memutuskan skenario “what-if” mana yang ingin dicoba. Simulasi tidak bisa membaca pikiran Anda!
  4. Setiap Model Unik: Model yang dibuat untuk satu perusahaan sulit digunakan ulang untuk perusahaan lain karena setiap bisnis punya karakteristik berbeda.
  5. Membutuhkan Keahlian: Manajer harus memahami asumsi dan batasan model agar tidak salah interpretasi hasil.

🎓 Tips untuk Pemula

Jangan bayangkan simulasi sebagai “bola kristal” yang bisa meramal masa depan. Simulasi hanya memberikan probabilitas dan distribusi dari kemungkinan yang akan terjadi. Hasil simulasi sangat bergantung pada kualitas data yang dimasukkan (“Garbage In, Garbage Out” — jika data sampah yang dimasukkan, hasil sampah yang keluar).

🇮🇩 Contoh Indonesia: Simulasi Kemacetan Tol Jakarta-Cikampek

Situasi: Pemerintah ingin mengetahui apakah penambahan 1 pintu tol di Karawang akan mengurangi macet saat mudik Lebaran.

Masalah jika uji coba langsung: Membangun pintu tol sungguhan hanya untuk uji coba adalah hal yang mustahil — terlalu mahal (miliaran rupiah) dan akan mengganggu arus lalu lintas yang sudah macet.

Solusi dengan Simulasi: Ahli transportasi membuat model simulasi di komputer yang meniru perilaku pengemudi, arus kendaraan, dan pola kemacetan. Mereka bisa menjalankan skenario “what-if” berulang kali:

  • Skenario A: Tambah 1 pintu tol → macet berkurang 15%
  • Skenario B: Tambah 2 pintu tol → macet berkurang 30%
  • Skenario C: Tidak tambah pintu tol, tapi buka contraflow → macet berkurang 20%

Dengan kompresi waktu, mereka bisa mensimulasikan arus lalu lintas selama 1 bulan mudik hanya dalam 5 menit! Setelah melihat hasil simulasi, pemerintah bisa mengambil keputusan berdasarkan data, bukan tebakan.

🎲 2. Simulasi Monte Carlo: Menangani Ketidakpastian

💡 Analogi Sederhana: Monte Carlo Seperti “Lempar Dadu Berulang Kali”

Bayangkan Anda bermain monopoli dan ingin tahu: “Berapa kemungkinan saya mendarat di petak penjara dalam 10 giliran berikutnya?” Anda tidak bisa menghitungnya dengan rumus sederhana karena ada banyak faktor acak (lemparan dadu, kartu kesempatan, dll).

Solusinya: Mainkan permainan itu 1000 kali (atau minta komputer memainkannya untuk Anda), lalu hitung berapa kali Anda mendarat di penjara. Jika dari 1000 kali permainan, Anda mendarat di penjara 200 kali, maka probabilitasnya adalah 20%.

Inilah esensi Simulasi Monte Carlo! Kita mengulangi proses yang mengandung unsur acak berkali-kali, lalu melihat pola hasilnya.

Kapan Kita Butuh Simulasi Monte Carlo?

Simulasi Monte Carlo digunakan ketika model mengandung variabel probabilistik — yaitu variabel yang nilainya tidak pasti dan mengandung unsur keberuntungan/risiko.

Apa itu Variabel Probabilistik?
Variabel yang nilainya tidak tetap, tapi memiliki distribusi probabilitas. Contoh dalam bisnis:
  • Permintaan produk: Besok akan terjual 100 unit? 150 unit? 200 unit? Kita tidak tahu pasti, tapi kita punya data historis yang menunjukkan probabilitasnya.
  • Lead time (waktu tunggu barang): Supplier biasanya mengirim dalam 2-3 hari, tapi kadang bisa 4-5 hari karena macet atau hujan.
  • Waktu layanan: Berapa lama teller bank melayani satu nasabah? Bisa 3 menit, bisa 7 menit, tergantung kompleksitas transaksi.
  • Waktu antar kedatangan pelanggan: Kapan nasabah berikutnya akan datang? Bisa 1 menit lagi, bisa 5 menit lagi.

📋 3 Langkah Simulasi Monte Carlo (Penjelasan Detail)

Langkah 1: Tentukan Distribusi Probabilitas untuk Setiap Variabel Acak

Apa yang dilakukan: Identifikasi semua variabel yang nilainya tidak pasti (variabel acak), lalu tentukan distribusi probabilitasnya berdasarkan data historis.

Contoh: Sebuah toko kopi mencatat penjualan harian selama 100 hari terakhir:

Penjualan Harian (cup)Jumlah HariProbabilitas
100 cup20 hari20% (0.20)
150 cup50 hari50% (0.50)
200 cup30 hari30% (0.30)

Interpretasi: Berdasarkan data historis, ada kemungkinan 50% besok akan terjual 150 cup, 30% kemungkinan terjual 200 cup, dan 20% kemungkinan terjual 100 cup.

Jenis distribusi yang umum: Normal (bell curve), Uniform (semua nilai sama mungkinnya), Poisson (untuk jumlah kejadian), Exponential (untuk waktu antar kejadian), dll.

Langkah 2: Gunakan Angka Acak untuk Menghasilkan Nilai Variabel

Apa yang dilakukan: Generate angka acak (random numbers) antara 0 dan 1, lalu petakan (map) angka tersebut ke nilai variabel berdasarkan distribusi probabilitas.

Contoh Perhitungan Manual:

Mari kita petakan probabilitas penjualan kopi ke interval angka acak:

PenjualanProbabilitasProbabilitas KumulatifInterval Angka Acak
100 cup0.200.00 – 0.200.00 – 0.19
150 cup0.500.20 – 0.700.20 – 0.69
200 cup0.300.70 – 1.000.70 – 0.99

Cara membacanya:

  • Jika angka acak yang muncul adalah 0.15 → jatuh di interval 0.00-0.19 → penjualan = 100 cup
  • Jika angka acak yang muncul adalah 0.45 → jatuh di interval 0.20-0.69 → penjualan = 150 cup
  • Jika angka acak yang muncul adalah 0.85 → jatuh di interval 0.70-0.99 → penjualan = 200 cup

Di Excel: Gunakan fungsi =RAND() untuk menghasilkan angka acak antara 0 dan 1. Setiap kali spreadsheet dihitung ulang, angka ini akan berubah!

Langkah 3: Replikasi (Ulangi Simulasi Berkali-kali)

Apa yang dilakukan: Ulangi proses simulasi ratusan atau ribuan kali. Setiap pengulangan disebut satu replikasi.

Mengapa perlu banyak replikasi?

Karena setiap replikasi hanya menghasilkan satu kemungkinan. Jika kita hanya menjalankan simulasi 1 kali, hasilnya bisa sangat bias (kebetulan saja). Dengan menjalankan 1000 kali, kita mendapatkan distribusi hasil yang lebih akurat dan bermakna secara statistik.

Contoh: Jika kita mensimulasikan penjualan kopi selama 30 hari (1 bulan), dan kita ulangi 1000 kali (1000 replikasi), kita akan mendapatkan 1000 kemungkinan skenario penjualan bulanan. Dari sana kita bisa menghitung:

  • Rata-rata penjualan bulanan: 4.800 cup
  • Probabilitas penjualan di bawah 4.000 cup: 15%
  • Probabilitas penjualan di atas 5.500 cup: 10%

🎓 Tips untuk Pemula

Jangan takut dengan istilah “probabilitas” dan “distribusi”! Intinya sederhana: kita menggunakan data masa lalu untuk menebak apa yang mungkin terjadi di masa depan. Semakin banyak data historis yang kita punya, semakin akurat tebakan kita.

Kenapa disebut “Monte Carlo”? Karena Monte Carlo di Monaco terkenal dengan kasino dan perjudian yang mengandalkan keberuntungan (acak). Simulasi ini juga menggunakan angka acak, jadi dinamai menurut tempat tersebut!

🇮🇩 Contoh Indonesia: Stok Biji Kopi di Kopi Kenangan / Janji Jiwa

Situasi: Manajer cabang Kopi Kenangan di Jakarta Selatan ingin menentukan berapa kg biji kopi yang harus dipesan untuk bulan depan.

Masalah: Permintaan kopi per hari tidak pasti. Kadang ramai (200 cup), kadang sepi (100 cup). Jika pesan terlalu sedikit, kehabisan stok dan kehilangan pelanggan. Jika pesan terlalu banyak, biji kopi bisa basi (karena kopi punya masa kedaluwarsa).

Penerapan Monte Carlo:

  1. Langkah 1: Kumpulkan data penjualan 100 hari terakhir. Hitung probabilitas untuk setiap tingkat penjualan (100, 150, 200 cup).
  2. Langkah 2: Di Excel, gunakan =RAND() untuk menghasilkan angka acak, lalu petakan ke tingkat penjualan berdasarkan probabilitas.
  3. Langkah 3: Simulasikan 30 hari (1 bulan) dan ulangi 1000 kali (1000 replikasi).

Hasil Simulasi:

  • Rata-rata total penjualan bulanan: 4.800 cup = 48 kg biji kopi
  • Jika pesan 48 kg: 85% kemungkinan stok cukup, 15% kemungkinan kehabisan di tengah bulan
  • Jika pesan 55 kg: 98% kemungkinan stok cukup, tapi 10% kemungkinan ada sisa 5 kg yang bisa basi

Keputusan: Manajer bisa memilih tingkat risiko yang nyaman. Jika tidak mau risiko kehabisan sama sekali, pesan 55 kg. Jika mau hemat dan siap risiko 15% kehabisan, pesan 48 kg.

💻 3. Peran Komputer, Excel & Crystal Ball

💡 Analogi Sederhana: Manual vs Komputer

Bayangkan Anda ingin menghitung rata-rata nilai 1000 mahasiswa. Anda bisa melakukannya manual dengan kalkulator, tapi akan memakan waktu berjam-jam dan rentan error. Dengan Excel, Anda cukup masukkan data dan ketik =AVERAGE(), selesai dalam 1 detik!

Simulasi juga seperti itu. Melakukan simulasi manual (by hand) sangat melelahkan. Bayangkan harus mengulang simulasi 1000 kali dengan kalkulator! Komputer bisa melakukannya dalam hitungan detik.

Mengapa Komputer Sangat Penting dalam Simulasi?

  1. Kecepatan: Komputer bisa melakukan ribuan replikasi dalam hitungan detik. Manual bisa memakan waktu berhari-hari.
  2. Akurasi: Komputer tidak membuat kesalahan perhitungan (asalkan programnya benar).
  3. Generate Angka Acak: Komputer bisa menghasilkan angka acak dengan cepat dan berkualitas tinggi.
  4. Visualisasi: Komputer bisa menampilkan hasil simulasi dalam bentuk grafik, chart, dan statistik yang mudah dipahami.

📊 Simulasi di Microsoft Excel (Tanpa Add-in)

Excel sudah cukup powerful untuk melakukan simulasi dasar. Berikut fitur-fitur yang berguna:

Fungsi RAND() dan RANDBETWEEN()

=RAND() — Menghasilkan angka acak antara 0 dan 1 (desimal). Contoh hasil: 0.734, 0.156, 0.982

=RANDBETWEEN(1,6) — Menghasilkan angka bulat acak antara 1 dan 6 (seperti lempar dadu). Contoh hasil: 3, 5, 1

Catatan: Setiap kali Anda menekan Enter atau menghitung ulang spreadsheet, angka acak ini akan berubah!

Data Table untuk Replikasi Otomatis

Masalah: Anda punya model simulasi di satu sel, dan ingin mengulanginya 1000 kali untuk melihat distribusinya.

Solusi manual: Copy-paste model 1000 kali → melelahkan!

Solusi dengan Data Table: Excel bisa mengulang model secara otomatis dan mencatat hasilnya.

Cara menggunakan:

  1. Buat kolom nomor replikasi (1, 2, 3, …, 1000)
  2. Di sebelahnya, referensikan ke sel yang berisi hasil simulasi
  3. Select seluruh tabel, lalu Data → What-If Analysis → Data Table
  4. Kosongkan kedua input (Row dan Column), klik OK
  5. Excel akan mengisi 1000 hasil simulasi secara otomatis!
Scenario Manager untuk Menguji Berbagai Keputusan

Masalah: Anda ingin mencoba berbagai kombinasi keputusan. Contoh: “Bagaimana jika Q=10 dan R=5? Bagaimana jika Q=12 dan R=8?”

Solusi: Scenario Manager bisa menyimpan dan menjalankan berbagai skenario secara otomatis.

Cara menggunakan:

  1. Data → What-If Analysis → Scenario Manager
  2. Add scenario baru, beri nama (misal “Skenario A”)
  3. Pilih sel yang berisi variabel keputusan (Q dan R)
  4. Masukkan nilai untuk skenario ini (Q=10, R=5)
  5. Ulangi untuk skenario lainnya
  6. Klik Summary untuk melihat perbandingan semua skenario

🔮 Crystal Ball: Add-in Simulasi untuk Excel

Crystal Ball adalah add-in (plugin) populer untuk Excel yang dibuat oleh Decisioneering Inc. Add-in ini mempermudah proses simulasi dengan fitur-fitur khusus.

Mengapa Pakai Crystal Ball?
Meskipun Excel bisa melakukan simulasi, Crystal Ball menawarkan:
  • Fungsi probabilitas built-in: Tidak perlu repot memetakan angka acak manual
  • Prosedur replikasi otomatis: Tinggal tentukan berapa replikasi, Crystal Ball akan melakukannya
  • Pengumpulan dan tampilan data yang lebih mudah: Hasil disajikan dalam grafik statistik yang profesional

📋 4 Langkah Utama Menggunakan Crystal Ball

1. Define Assumption (Tentukan Asumsi)

Apa yang dilakukan: Tentukan distribusi probabilitas untuk setiap variabel acak.

Cara: Klik sel yang berisi variabel acak → Click Define Assumption → Pilih distribusi (Normal, Uniform, dll) → Masukkan parameter (mean, standard deviation, dll)

2. Define Forecast (Tentukan Forecast)

Apa yang dilakukan: Tentukan sel mana yang berisi hasil/output yang ingin kita kumpulkan datanya.

Contoh: Jika kita ingin mengumpulkan data Total Profit dari setiap replikasi, klik sel Total Profit → Define Forecast

3. Run Preferences (Pengaturan Jalankan)

Apa yang dilakukan: Atur berapa banyak replikasi yang ingin dijalankan dan opsi lainnya.

Cara: Click Run Preferences → Masukkan jumlah trial (misal 1000) → Atur opsi sampling (Monte Carlo atau Latin Hypercube)

4. Start Simulation (Mulai Simulasi)

Apa yang dilakukan: Jalankan simulasi dan lihat hasilnya.

Hasil: Crystal Ball akan menampilkan:

  • Histogram distribusi hasil
  • Statistik: mean, median, standard deviation
  • Percentiles (misal: 5th percentile, 95th percentile)
  • Probabilitas mencapai target tertentu

🎓 Tips untuk Pemula

Mulai dari yang sederhana! Jangan langsung mencoba memodelkan sistem yang sangat kompleks. Mulailah dengan model sederhana di Excel (tanpa Crystal Ball), pahami konsepnya, baru naik ke Crystal Ball.

Validasi model Anda! Sebelum percaya hasil simulasi, cek apakah model Anda masuk akal. Coba jalankan dengan nilai-nilai ekstrem dan lihat apakah hasilnya sesuai dengan logika Anda.

📦 4. Studi Kasus 1: Simulasi Inventori (Simkin’s Hardware)

💡 Analogi Sederhana: Mengelola Stok Seperti Mengelola Uang di Dompet

Bayangkan dompet Anda. Anda harus memutuskan:

  • Kapan harus isi ulang? (Reorder Point / R) — Misalnya, jika uang di dompet tinggal Rp 100.000, saatnya tarik tunai di ATM.
  • Berapa banyak yang ditarik? (Order Quantity / Q) — Misalnya, tarik Rp 500.000 setiap kali.

Trade-off:

  • Jika tarik terlalu sedikit dan terlalu sering → rugi biaya transportasi ke ATM (biaya pesan)
  • Jika tarik terlalu banyak → uang menganggur di dompet, risiko hilang/dicuri (biaya simpan)
  • Jika telat isi ulang → kehabisan uang saat butuh (stockout, kehilangan peluang)

Simulasi inventori bekerja dengan logika yang sama! Kita mencari keseimbangan antara biaya pesan, biaya simpan, dan biaya stockout.

Latar Belakang Kasus: Simkin’s Hardware Store

Simkin’s Hardware Store menjual bor listrik (electric drills). Toko ini menghadapi masalah klasik inventori: bagaimana menentukan kebijakan pemesanan yang meminimalkan total biaya.

🎯 Dua Keputusan Utama (Variabel Keputusan)

Q (Order Quantity): Berapa banyak unit yang dipesan setiap kali memesan.
R (Reorder Point): Titik di mana pesanan baru harus dilakukan. Jika stok akhir hari < R, maka pesan Q unit.

💰 Tiga Jenis Biaya yang Harus Dipertimbangkan

Jenis BiayaBiayaPenjelasan untuk Pemula
Stockout Cost
(Biaya Kehabisan Stok)
$8 per bor Kerugian karena tidak bisa menjual saat ada pelanggan yang mau beli. Pelanggan kecewa dan mungkin beli di toko lain (lost sale).
Holding Cost
(Biaya Simpan)
$0.02 per bor per hari Biaya untuk menyimpan barang di gudang: sewa tempat, asuransi, risiko rusak, uang yang menganggur. Semakin lama disimpan, semakin mahal.
Order Cost
(Biaya Pesan)
$20 per order Biaya administrasi, telepon, pengiriman, dan penerimaan setiap kali memesan. Tidak peduli pesan 1 atau 100 unit, biayanya tetap $20.
Tujuan Simulasi: Mencari kombinasi (Q, R) yang meminimalkan total biaya (Stockout + Holding + Order).

🎲 Variabel Acak dalam Kasus Ini

  1. Permintaan Harian (Daily Demand): Berapa bor yang terjual per hari. Nilainya acak karena tergantung berapa pelanggan yang datang.
  2. Lead Time: Waktu dari saat pesanan dilakukan sampai barang datang. Dalam kasus ini, Lead Time berdistribusi Uniform antara 1-3 hari (artinya bisa 1, 2, atau 3 hari dengan probabilitas sama).

📋 Langkah-langkah Simulasi (Penjelasan Detail)

Langkah 1: Tentukan Kebijakan (Q, R) yang Ingin Diuji

Misalnya kita ingin menguji: Q = 10, R = 5

Artinya: Setiap kali memesan, pesan 10 unit. Jika stok akhir hari kurang dari 5 unit, lakukan pemesanan.

Langkah 2: Inisialisasi Kondisi Awal

Misalnya: Hari ke-1 dimulai dengan stok = 7 unit.

Langkah 3: Simulasikan Setiap Hari (Ulangi untuk 25 hari)

Untuk setiap hari, lakukan langkah-langkah berikut:

  1. Generate permintaan acak: Gunakan angka acak untuk menentukan berapa bor yang diminta hari ini (misal: 6 unit).
  2. Hitung penjualan aktual: Penjualan = Minimum(stok, permintaan). Jika stok = 7 dan permintaan = 6, maka jual 6 unit.
  3. Hitung stockout: Jika permintaan > stok, maka stockout = permintaan – stok. Jika stok = 3 dan permintaan = 6, maka stockout = 3 unit (kehilangan 3 penjualan).
  4. Update stok: Stok akhir = Stok awal – penjualan aktual.
  5. Cek apakah perlu pesan: Jika stok akhir < R (5), maka pesan Q unit (10 unit).
  6. Jika pesan, tentukan lead time: Generate angka acak untuk lead time (misal: 2 hari). Barang akan datang 2 hari lagi.
  7. Terima barang yang datang: Jika ada pesanan yang sudah jatuh tempo (lead time sudah lewat), tambahkan stok.
  8. Hitung biaya hari ini:
    • Holding cost = Stok akhir × $0.02
    • Stockout cost = Jumlah stockout × $8
    • Order cost = $20 jika hari ini pesan, $0 jika tidak
Langkah 4: Hitung Total Biaya untuk 25 Hari

Jumlahkan semua biaya (holding + stockout + order) selama 25 hari. Ini adalah total biaya untuk satu bulan simulasi.

Langkah 5: Replikasi (Ulangi 200 Kali)

Ulangi langkah 2-4 sebanyak 200 kali. Setiap replikasi mewakili satu bulan (25 hari) dengan permintaan dan lead time yang berbeda-beda (karena acak).

Hitung rata-rata total biaya dari 200 replikasi. Ini adalah estimasi biaya bulanan untuk kebijakan (Q=10, R=5).

Langkah 6: Uji Kebijakan Lain

Ulangi seluruh proses untuk kebijakan lain: (Q=8, R=5), (Q=10, R=8), (Q=12, R=5), (Q=12, R=8), (Q=14, R=5), (Q=14, R=8), dll.

Bandingkan rata-rata total biaya dari setiap kebijakan. Pilih yang paling rendah!

🎓 Tips untuk Pemula

Mengapa perlu 200 replikasi? Karena setiap replikasi menggunakan angka acak yang berbeda, hasilnya akan bervariasi. Satu replikasi bisa kebetulan dapat bulan yang sepi (biaya rendah), replikasi lain dapat bulan yang ramai (biaya tinggi). Dengan 200 replikasi, kita mendapatkan rata-rata yang lebih stabil dan representatif.

Mengapa 25 hari? Karena 25 hari dianggap mewakili 1 bulan kerja (tidak termasuk weekend). Ini adalah periode yang umum digunakan dalam simulasi inventori.

🇮🇩 Contoh Indonesia: Manajemen Stok Beras di Gudang Indomaret

Situasi: Indomaret harus menentukan kebijakan stok beras di gudang.

Variabel Keputusan:

  • Q: Berapa karung beras yang dipesan ke distributor setiap kali pesan (misal: 20 karung)
  • R: Kapan harus pesan ulang, misal jika stok di rak tinggal 5 karung

Variabel Acak:

  • Permintaan harian: Fluktuatif, melonjak saat tanggal muda (gajian), hari raya, atau musim hajatan
  • Lead time: Waktu pengiriman dari gudang pusat, bisa 1-3 hari, kadang terlambat karena macet, hujan, atau truk rusak

Tiga Jenis Biaya:

  • Stockout cost: Kehilangan penjualan karena beras habis. Pelanggan kecewa dan lari ke Alfamart. Estimasi: Rp 50.000 per karung (margin yang hilang + kehilangan pelanggan)
  • Holding cost: Biaya simpan di gudang: sewa tempat, risiko beras kutuan/rusak, asuransi. Estimasi: Rp 2.000 per karung per hari
  • Order cost: Biaya administrasi pemesanan, telepon, pengiriman. Estimasi: Rp 100.000 per order

Trade-off yang Harus Dipertimbangkan:

  • Jika Q terlalu besar (pesan 100 karung): Biaya simpan membengkak, gudang penuh, beras bisa kutuan sebelum terjual
  • Jika Q terlalu kecil (pesan 5 karung): Harus sering pesan, biaya order tinggi, risiko stockout tinggi
  • Jika R terlalu rendah (pesan saat tinggal 2 karung): Risiko stockout sangat tinggi, sering kehabisan sebelum barang datang
  • Jika R terlalu tinggi (pesan saat tinggal 20 karung): Stok selalu banyak, biaya simpan tinggi, uang menganggur

Solusi dengan Simulasi: Indomaret bisa mensimulasikan berbagai kombinasi (Q, R) selama 200 replikasi (200 bulan) untuk menemukan kombinasi dengan total biaya terendah. Misal hasilnya: Q=25 karung, R=8 karung adalah yang paling optimal.

🚶 5. Studi Kasus 2: Simulasi Antrean (Denton Savings Bank)

💡 Analogi Sederhana: Antrean Seperti Antri di Kasir Supermarket

Pernahkah Anda mengantri di kasir supermarket dan merasa antreannya terlalu lama? Supermarket menghadapi dilema:

  • Jika buka sedikit kasir → antrean panjang, pelanggan kecewa, mungkin tidak balik lagi
  • Jika buka banyak kasir → antrean pendek, pelanggan puas, tapi biaya gaji kasir tinggi

Bagaimana menentukan jumlah kasir yang optimal? Simulasi antrean bisa membantu menjawab pertanyaan ini dengan memodelkan kedatangan pelanggan dan waktu layanan, lalu menghitung rata-rata waktu tunggu dan panjang antrean untuk berbagai skenario jumlah kasir.

Latar Belakang Kasus: Denton Savings Bank

Bank memiliki antrean nasabah yang dilayani oleh teller. Bank ingin memastikan kepuasan pelanggan dengan memenuhi dua kriteria:

  1. Rata-rata waktu tunggu < 2 menit
  2. Panjang rata-rata antrean < 2 nasabah

🎲 Variabel Acak dalam Antrean

Ada dua sumber ketidakpastian utama dalam sistem antrean:

  1. Waktu Antar Kedatangan (Time Between Arrivals): Berapa lama waktu antara nasabah satu dengan nasabah berikutnya. Bisa 1 menit, bisa 5 menit, tergantung seberapa ramai bank.
  2. Waktu Layanan (Service Time): Berapa lama teller melayani satu nasabah. Tergantung kompleksitas transaksi: setoran tunai mungkin 2 menit, transfer internasional bisa 10 menit.

📊 Apa yang Dilacak dalam Simulasi Antrean?

Untuk setiap nasabah yang datang, simulasi akan melacak:

VariabelPenjelasanCara Menghitung
Time Since Previous Arrival
(Waktu Sejak Kedatangan Sebelumnya)
Berapa lama sejak nasabah sebelumnya datang Generate angka acak berdasarkan distribusi waktu antar kedatangan
Arrival Time
(Waktu Kedatangan)
Jam berapa nasabah ini datang Arrival Time sebelumnya + Time Since Previous Arrival
Start Service Time
(Waktu Mulai Dilayani)
Jam berapa nasabah mulai dilayani teller Maximum(Arrival Time, End Service Time nasabah sebelumnya). Artinya: nasabah mulai dilayani saat dia datang ATAU saat teller selesai melayani nasabah sebelumnya, mana yang lebih akhir.
Service Time
(Waktu Layanan)
Berapa lama teller melayani nasabah ini Generate angka acak berdasarkan distribusi waktu layanan
End Service Time
(Waktu Selesai Dilayani)
Jam berapa nasabah selesai dilayani Start Service Time + Service Time
Waiting Time
(Waktu Tunggu)
Berapa lama nasabah menunggu sebelum dilayani Start Service Time – Arrival Time
Queue Length
(Panjang Antrean)
Berapa banyak orang yang mengantri (termasuk nasabah ini) Hitung berapa orang yang sudah datang tapi belum selesai dilayani

📋 Langkah-langkah Simulasi Antrean

Langkah 1: Inisialisasi

Mulai clock di waktu 0. Asumsikan 1 teller. Simulasikan kedatangan 150 nasabah.

Langkah 2: Untuk Setiap Nasabah, Hitung Semua Variabel

Gunakan tabel di atas untuk menghitung semua variabel untuk nasabah ke-1, ke-2, …, ke-150.

Contoh perhitungan untuk nasabah ke-3:

  • Time Since Previous Arrival = 3 menit (di-generate acak)
  • Arrival Time = Arrival Time nasabah ke-2 + 3 = 7 + 3 = 10 menit
  • End Service Time nasabah ke-2 = 12 menit (teller masih sibuk sampai menit ke-12)
  • Start Service Time = Maximum(10, 12) = 12 menit (nasabah harus menunggu teller selesai)
  • Service Time = 4 menit (di-generate acak)
  • End Service Time = 12 + 4 = 16 menit
  • Waiting Time = 12 – 10 = 2 menit
  • Queue Length = 2 (nasabah ke-3 dan nasabah ke-4 yang datang di menit 11)
Langkah 3: Hitung Statistik

Setelah semua 150 nasabah disimulasikan, hitung:

  • Rata-rata Waiting Time: Jumlahkan semua Waiting Time, bagi 150
  • Rata-rata Queue Length: Jumlahkan semua Queue Length, bagi 150
Langkah 4: Cek Kriteria Kepuasan

Apakah rata-rata Waiting Time < 2 menit? Apakah rata-rata Queue Length < 2 nasabah?

Jika tidak, pertimbangkan menambah teller atau memperbaiki proses layanan.

🎓 Tips untuk Pemula

Apa itu “Discrete Event Simulation”? Ini adalah jenis simulasi yang melacak waktu secara detail (clock time). Disebut “discrete” karena waktu berubah secara diskrit (melompat) dari satu event ke event berikutnya (kedatangan nasabah, mulai layanan, selesai layanan), bukan terus-menerus.

Mengapa Start Service Time = Maximum(Arrival Time, End Service Time sebelumnya)? Karena nasabah hanya bisa mulai dilayani jika: (1) dia sudah datang, DAN (2) teller sudah selesai melayani nasabah sebelumnya. Mana yang lebih akhir di antara kedua kondisi ini, itulah waktu mulai layanan.

🇮🇩 Contoh Indonesia: Antrean Loket Samsat atau Bank BCA

Situasi: Manajer Bank BCA Cabang Thamrin ingin memastikan nasabah tidak menunggu lebih dari 10 menit. Namun, menambah teller berarti menambah biaya gaji (sekitar Rp 8 juta/bulan per teller).

Data Historis:

  • Waktu antar kedatangan: Rata-rata 2 menit, berdistribusi Exponential
  • Waktu layanan: Rata-rata 5 menit, berdistribusi Normal dengan standard deviation 2 menit
  • Jam operasional: 8 jam/hari = 480 menit
  • Jumlah nasabah per hari: sekitar 240 orang

Pertanyaan: Berapa teller yang dibutuhkan agar rata-rata waktu tunggu < 10 menit?

Simulasi:

  • Skenario A: 3 teller → rata-rata waktu tunggu = 15 menit ❌ (terlalu lama)
  • Skenario B: 4 teller → rata-rata waktu tunggu = 8 menit ✅ (memenuhi kriteria)
  • Skenario C: 5 teller → rata-rata waktu tunggu = 4 menit ✅ (lebih cepat, tapi biaya lebih tinggi)

Analisis Biaya:

  • Biaya gaji 4 teller: 4 × Rp 8 juta = Rp 32 juta/bulan
  • Biaya gaji 5 teller: 5 × Rp 8 juta = Rp 40 juta/bulan
  • Selish: Rp 8 juta/bulan

Keputusan: Apakah worth membayar Rp 8 juta/bulan ekstra untuk mengurangi waktu tunggu dari 8 menit menjadi 4 menit? Manajer harus mempertimbangkan: berapa nilai kepuasan nasabah? Apakah nasabah akan lebih loyal dan membawa lebih banyak bisnis jika waktu tunggu lebih pendek?

Dengan simulasi, manajer bisa membuat keputusan berdasarkan data, bukan tebakan atau intuisi semata.

✈️ 6. Studi Kasus 3: Revenue Management (Judith’s Limousine)

💡 Analogi Sederhana: Revenue Management Seperti Mengisi Kursi Pesawat

Pesawat memiliki kapasitas tetap (misal 180 kursi). Setiap kursi yang kosong saat pesawat takeoff adalah pendapatan yang hilang selamanya (karena kursi tidak bisa dijual lagi setelah pesawat terbang).

Maskapai tahu dari data historis bahwa sekitar 10% penumpang yang sudah booking akan no-show (tidak jadi terbang karena sakit, miss connection, dll).

Dilema:

  • Jika hanya jual 180 tiket → saat hari-H pasti ada 18 kursi kosong (10% no-show) → rugi potensi revenue
  • Jika jual 200 tiket → jika semua datang, 20 orang tidak kebagian kursi → harus kasih kompensasi (hotel, tiket gratis, uang tunai) → rugi kompensasi

Solusi: Gunakan simulasi untuk menemukan angka penjualan tiket yang menghasilkan profit maksimal dengan risiko kompensasi yang dapat ditoleransi.

Latar Belakang Kasus: Judith’s Airport Limousine Service

Judith menjalankan layanan transportasi bandara dengan van berkapasitas 10 penumpang. Ia melakukan 4 perjalanan (trips) per hari ke bandara yang berjarak 50 mil.

💰 Parameter Ekonomi

ItemNilaiPenjelasan
Kapasitas Van10 penumpangMaksimal 10 orang yang bisa diangkut per trip
Biaya Operasional$100 per tripBiaya bensin, supir, maintenance. Tetap harus dibayar meskipun van kosong!
Harga Tiket Reservasi$35Termasuk deposit $10 yang tidak bisa dikembalikan (non-refundable)
Harga Tiket Walk-up$50Penumpang tanpa reservasi, bayar lebih mahal
Denda Overbook$75 per orangJika yang datang > 10, Judith harus bayar transportasi alternatif. Rugi bersih = $75 – $35 = $40 per orang

🎲 Variabel Acak

  1. Permintaan Reservasi: Berapa orang yang ingin reservasi per trip. Distribusi: Uniform dari 7 sampai 14 orang (artinya bisa 7, 8, 9, …, 14 dengan probabilitas sama).
  2. No-show Rate: 20% orang yang reservasi tidak datang. Artinya jika 10 orang reservasi, rata-rata 2 orang tidak datang.
  3. Permintaan Walk-up: Berapa orang yang datang tanpa reservasi. Distribusi:
    • 0 orang: probabilitas 30%
    • 1 orang: probabilitas 45%
    • 2 orang: probabilitas 25%

🎯 Keputusan yang Harus Diambil

Pertanyaan: Berapa banyak reservasi yang harus diterima Judith?

Opsi: Terima 10, 11, 12, 13, atau 14 reservasi per trip.

Tujuan: Maksimalkan rata-rata profit per trip.

📋 Logika Perhitungan Profit

Untuk setiap trip, profit dihitung sebagai berikut:

Langkah 1: Hitung Jumlah yang Datang

Jumlah yang datang dari reservasi = Jumlah reservasi yang diterima × (1 – no-show rate)

Contoh: Jika terima 12 reservasi, dan no-show rate 20%, maka yang datang = 12 × 0.8 = 9.6 ≈ 10 orang

Catatan: Dalam simulasi sebenarnya, jumlah no-show di-generate secara acak menggunakan distribusi Binomial, bukan rata-rata.

Langkah 2: Hitung Jumlah Walk-up yang Bisa Diangkut

Kapasitas tersisa = 10 – Jumlah yang datang dari reservasi

Walk-up yang bisa diangkut = Minimum(Kapasitas tersisa, Permintaan walk-up)

Contoh: Jika yang datang dari reservasi = 8, maka kapasitas tersisa = 2. Jika permintaan walk-up = 3, maka yang bisa diangkut = 2.

Langkah 3: Hitung Revenue

Revenue dari reservasi = Jumlah yang datang dari reservasi × $35

Revenue dari walk-up = Jumlah walk-up yang diangkut × $50

Total Revenue = Revenue reservasi + Revenue walk-up

Langkah 4: Hitung Biaya dan Denda

Biaya operasional = $100 (tetap per trip)

Denda overbook = Jika total yang datang (reservasi + walk-up) > 10, maka denda = (Total yang datang – 10) × $40

Contoh: Jika total yang datang = 12, maka denda = (12 – 10) × $40 = $80

Langkah 5: Hitung Profit

Profit = Total Revenue – Biaya operasional – Denda overbook

📊 Hasil Simulasi (Contoh)

Setelah menjalankan simulasi 1000 replikasi untuk setiap opsi, didapatkan:

Reservasi DiterimaRata-rata Profit per TripProbabilitas Overbook
10$1800%
11$2105%
12$22515%
13$22035%
14$19560%

Keputusan optimal: Terima 12 reservasi per trip → rata-rata profit tertinggi ($225) dengan risiko overbook yang masih dapat ditoleransi (15%).

🎓 Tips untuk Pemula

Mengapa profit turun saat terima 13 atau 14 reservasi? Karena risiko overbook meningkat drastis. Meskipun revenue dari reservasi lebih tinggi, denda overbook ($40 per orang) sangat besar sehingga menggerus profit.

Apa itu distribusi Binomial? Distribusi ini digunakan untuk menghitung jumlah “sukses” dalam n percobaan, di mana setiap percobaan memiliki probabilitas sukses p. Dalam kasus ini: n = jumlah reservasi, p = probabilitas no-show (0.20), dan kita ingin tahu berapa orang yang no-show.

🇮🇩 Contoh Indonesia: Kebijakan Overbooking Tiket Pesawat (Garuda / Lion Air)

Situasi: Pesawat Boeing 737-800 Garuda Indonesia memiliki kapasitas 180 kursi. Rute Jakarta-Bali beroperasi 4 kali per hari.

Data Historis:

  • No-show rate: 8% (dari 100 orang yang booking, rata-rata 8 orang tidak datang)
  • Permintaan per flight: rata-rata 170 orang, bisa sampai 200 orang saat peak season
  • Biaya operasional per flight: Rp 150 juta
  • Harga tiket ekonomi: Rp 1.5 juta
  • Kompensasi overbook: Rp 3 juta per orang (uang tunai + voucher hotel jika perlu)

Dilema:

  • Jika hanya jual 180 tiket → saat hari-H rata-rata ada 14 kursi kosong (8% no-show) → kehilangan potensi revenue = 14 × Rp 1.5 juta = Rp 21 juta per flight
  • Jika jual 200 tiket → jika semua datang, 20 orang harus diturunkan → kompensasi = 20 × Rp 3 juta = Rp 60 juta + reputasi rusak

Simulasi Revenue Management:

Garuda menjalankan simulasi Monte Carlo dengan 10.000 replikasi untuk setiap opsi penjualan tiket:

Tiket DijualRata-rata Revenue per FlightRata-rata KompensasiRata-rata ProfitProbabilitas Overbook
180Rp 255 jutaRp 0Rp 105 juta0%
185Rp 262 jutaRp 0.5 jutaRp 111.5 juta2%
190Rp 268 jutaRp 2 jutaRp 116 juta8%
195Rp 272 jutaRp 6 jutaRp 114 juta20%
200Rp 275 jutaRp 15 jutaRp 100 juta45%

Keputusan optimal: Jual 190 tiket per flight → profit tertinggi (Rp 116 juta) dengan risiko overbook yang rendah (8%).

Catatan: Inilah mengapa maskapai sering melakukan overbooking! Mereka sudah menghitung dengan cermat menggunakan simulasi untuk memaksimalkan profit. Jika Anda pernah mengalami overbook, itu bukan kesalahan sistem, tapi hasil dari perhitungan matematis yang canggih.

🎮 7. Jenis Model Simulasi Lainnya

Selain Monte Carlo, Inventori, Antrean, dan Revenue Management, terdapat jenis simulasi lain untuk konteks yang lebih spesifik:

🎯 Operational Gaming (Simulasi Operasional)

Definisi: Simulasi yang melibatkan dua atau lebih pemain/pihak yang saling bersaing. Setiap pemain membuat keputusan, dan hasil untuk setiap pemain tergantung pada keputusan pemain lain.

Karakteristik:

  • Ada unsur kompetisi atau konflik kepentingan
  • Setiap pemain punya strategi dan tujuan sendiri
  • Hasil untuk satu pemain dipengaruhi oleh keputusan pemain lain
  • Sering digunakan untuk pelatihan, pendidikan, atau perencanaan strategis

Contoh:

  • Business War Games: Tim-tim dari perusahaan yang berbeda (atau divisi yang berbeda) bersaing dalam simulasi pasar. Setiap tim membuat keputusan tentang harga, promosi, R&D, dll, dan melihat bagaimana keputusan mereka mempengaruhi market share vs kompetitor.
  • Simulasi Militer: Dua pasukan bersaing dalam simulasi pertempuran. Setiap jenderal membuat keputusan taktis, dan hasilnya tergantung pada keputusan kedua belah pihak.
  • Simulasi Lelang: Beberapa perusahaan bersaing dalam lelang spektrum frekuensi atau kontrak pemerintah. Setiap perusahaan harus memutuskan berapa harga yang ditawarkan, dengan mempertimbangkan apa yang mungkin ditawarkan kompetitor.

🌐 Systems Simulation (Simulasi Sistem)

Definisi: Simulasi yang memodelkan dinamika sistem yang sangat besar dan kompleks, di mana berbagai komponen saling berinteraksi secara dinamis seiring berjalannya waktu. Lebih kompleks dari Monte Carlo standar karena melibatkan banyak variabel yang saling terkait dan berubah secara kontinu.

Karakteristik:

  • Model berskala besar (seluruh kota, negara, atau bahkan global)
  • Banyak komponen yang saling berinteraksi
  • Dinamis: kondisi berubah seiring waktu
  • Sering melibatkan feedback loops (umpan balik)
  • Membutuhkan software khusus (seperti Vensim, Stella, AnyLogic)

Contoh:

  • Model Transportasi Kota: Memodelkan interaksi ribuan kendaraan, pejalan kaki, transportasi umum, lampu lalu lintas, dan pola perjalanan di seluruh kota. Perubahan satu variabel (misal: buka rute MRT baru) akan mempengaruhi banyak variabel lain (kemacetan di jalan, ok

Leave a Comment

Your email address will not be published. Required fields are marked *