380 likes | 806 Views
Simulasi Discrete-Event. Catatan diambil dari “Simulation Modeling and Analysis” by A. Law and W. Kelton, Third edition, McGraw Hill, 2000. Tujuan. Pelanggan sedang dilayani. Pelanggan pergi. Pelanggan datang. Pelanggan antri. Server. Mempelajari dasar simulasi discrete-event
E N D
Simulasi Discrete-Event Catatan diambil dari “Simulation Modeling and Analysis” by A. Law and W. Kelton, Third edition, McGraw Hill, 2000.
Tujuan Pelanggan sedang dilayani Pelanggan pergi Pelanggan datang Pelanggan antri Server • Mempelajari dasar simulasi discrete-event • Fokus pada simple single-server service center. Contoh: • Pasar swalayan: pembeli, kasir • Bandara: landasan, pesawat
Apa yang dimaksud dengan Simulasi Discrete-Event (DES)? • Pemodelan sistem dalam perubahannya terhadap waktu dengan representasi perubahan variabel status secara instan pada titik waktu waktu yang terpisah. • Lebih tepat lagi, status hanya dapat berubah pada sejumlah titik waktu yang dapat dihitung. • Titik-titik waktu ini adalah saat ketika events terjadi. • Apa yang dimaksud dengan event?Kejadian secara instan yang dapat merubah status sistem. • Kedatangan pelanggan • Selesainya pelayanan (dan kepergian) pelanggan • Akhir simulasi ( event “palsu”)
Single-Server Service Center Pelanggan dilayani Kepergian pelanggan Kedatangan pelanggan Server Pelanggan antri • Pengukuran kinerja yang diperlukan: • Waktu tunggu pelanggan rata-rata • Jumlah pelanggan antri rata-rata • Utilisasi server rata-rata • Bagaimana kita mensimulasi sistem ini dan melakukan pengukuran? • Harus mensimulasi “waktu” …
Mekanisme Time Advance • Simulation clock: variabel yang menyimpan nilai waktu terkini (simulasi) pada model • Satuan waktu harus ditentukan, dan harus konsisten. • Biasanya tidak ada hubungan antara waktu simulasi dan waktu (riil) yang diperlukan untuk menjalankan model pada komputer. • Dua pendekatan untuk time advance • Fixed-increment time advance • Next-event time advance
Fixed-Increment Time Advance 0 Δt 2Δt 3Δt 4Δt 5Δt 6Δt Time e1 e0 e2 • Event terjadi pada inkremen yang tetap. • Event yang terjadi antara inkremen waktu harus dipindah ke batas inkremen. • Sederhana untuk diimplementasikan, tetapi bukan merupakan realisasi yang akurat dari terjadinya event.
Next-event Time Advance • Inisialisai simulation clock menjadi 0 • Tentukan waktu terjadinya event – event list • Clock maju ke event berikutnya (yang paling dekat). Selanjutnya dilakukan eksekusi • Eksekusi event bisa melibatkan update event list • Terus berlanjut sampai aturan penghentian terpenuhi (harus ditentukan secara eksplisit) • Clock “lompat” dari waktu satu event ke waktu event berikutnya, dan tidak “ada” untuk waktu di antara event yang berturutan … periode tidak aktif diabaikan
Next-event time-Advance (lanjutan) • Pelajari contoh single-server service center berikut ini ti = waktu kedatangan pelanggan ke-i (t0 = 0) Ai = ti – ti-1 = waktu antara kedatangan pelanggan ke (i-1) dan ke-i Si = waktu untuk melayani pelanggan ke-i Di = delay di antrian yang dialami oleh pelanggan ke-i Ci = ti + Di + Si = waktu pelanggan ke-i selesai dilayani, kemudian pergi
Cara penulisan program next-event • Tentukan event dan pahami apa yang terjadi ketika event tersebut berlangsung • Buat event dan event list yang urut waktu • Berdasarkan list yang urut, kita harus menjadwalkan event • Catat informasi yang diperlukan selama simulasi berlangsung • Akhirnya, buat report ketika simulasi selesai
Komponen Program DES • Simulation clock – nilai terkini dari waktu simulasi. • Status sistem – variabel untuk mendeskripsikan status • Status server, jumlah pada antrian, waktu kedatangan, dst. • Event list – waktu untuk setiap jenis event • Pencacah Statistik – untuk akumulasi pengukuran kinerja • Waktu tunggu di antrian, utilisasi server, …
Komponen Program DES (lanjutan) • Rutin inisialisasi • Mulai simulasi pada waktu 0 • Rutin Timing • Menentukan waktu dan jenis event berikutnya; memajukan clock • Rutin event • Melaksanakan logika setiap jenis event • Rutin Library • Rutin utility untuk membangkitkan random variates, dll. • Report generator • Program utama • Menggabungkan semua rutin, dan menjalankannya dengan urutan yang benar
Organisasi Program DES Start Stop Rutin Inisialisasi Rutin Utama Rutin Library Rutin Timing Rutin Event Ya Tidak Report Generator Simulasi selesai?
Alur Program DES Start Rutin Inisialisasi Rutin Utama 1. Set clock = 0 2. Inisialisasi status & pencacah 3. Inisialisasi event list 4. Kembali ke program utama
Alur Program DES Rutin timing Rutin utama 1. Tentukan jenis event berikutnya, i 2. Majukan simulation clock 3. Kembali ke program utama
Alur Program DES Event routine i Rutin utama Library Routine 1. update system state 2. update counters 3. generate future events & add them to the event list
Alur Program DES Rutin utama Rutin timing Rutin event Tidak Simulasi selesai? Kembali ke program utama; Invoke timing routine
Simulasi manual untuk Single Server Service Center • Waktu antar kedatangan (semua waktu dalam satuan menit): 0.4, 1.2, 0.5, 1.7, 0.2, 1.6, 0.2, 1.4, 1.9, … • Waktu layanan: 2.0, 0.7, 0.2, 1.1, 3.7, 0.6, … • Diinginkan n = 6 delay pada antrian • Simulasi “Manual”: • Tampilkan variabel sistem dan status, clock, event list, pencacah statistik … seluruhnya setelah eksekusi setiap event • Gunakan list waktu antar kedatangan dan waktu layanan di atas untuk “menjalankan” simulasi • Hentikan ketika jumlah delay mencapai n = 6, hitung pengukuran kinerja output.
Pengukuran Kinerja • Delay rata-rata “ekspektasi” pada antrian (tidak termasuk waktu layanan) dari n pelanggan yang telah selesai antri • Jumlah pelanggan rata-rata ekspektasi pada antrian (tidak termasuk yang sedang dilayani) • Rata-rata waktu kontinu • Utilisasi ekspektasi (perbandingan dengan waktu kerja) server • Rata-rata waktu kontinu
Waktu = 0 Interarrival times: 0.4, 1.2, 0.5, 1.7, 0.2, 1.6, 0.2, 1.4, 1.9, … Service times: 2.0, 0.7, 0.2, 1.1, 3.7, 0.6, … Status yang ditunjukkan adalah setelah semua perubahan dilakukan untuk setiap kasus …
Waktu = 0.4 Interarrival times: 0.4, 1.2, 0.5, 1.7, 0.2, 1.6, 0.2, 1.4, 1.9, … Service times: 2.0, 0.7, 0.2, 1.1, 3.7, 0.6, …
Waktu = 1.6 Interarrival times: 0.4, 1.2, 0.5, 1.7, 0.2, 1.6, 0.2, 1.4, 1.9, … Service times: 2.0, 0.7, 0.2, 1.1, 3.7, 0.6, …
Waktu = 2.1 Interarrival times: 0.4, 1.2, 0.5, 1.7, 0.2, 1.6, 0.2, 1.4, 1.9, … Service times: 2.0, 0.7, 0.2, 1.1, 3.7, 0.6, …
Waktu = 2.4 Interarrival times: 0.4, 1.2, 0.5, 1.7, 0.2, 1.6, 0.2, 1.4, 1.9, … Service times: 2.0, 0.7, 0.2, 1.1, 3.7, 0.6, …
Waktu = 3.1 Interarrival times: 0.4, 1.2, 0.5, 1.7, 0.2, 1.6, 0.2, 1.4, 1.9, … Service times: 2.0, 0.7, 0.2, 1.1, 3.7, 0.6, …
Waktu = 3.3 Interarrival times: 0.4, 1.2, 0.5, 1.7, 0.2, 1.6, 0.2, 1.4, 1.9, … Service times: 2.0, 0.7, 0.2, 1.1, 3.7, 0.6, …
Waktu = 3.8 Interarrival times: 0.4, 1.2, 0.5, 1.7, 0.2, 1.6, 0.2, 1.4, 1.9, … Service times: 2.0, 0.7, 0.2, 1.1, 3.7, 0.6, …
Waktu = 4.0 Interarrival times: 0.4, 1.2, 0.5, 1.7, 0.2, 1.6, 0.2, 1.4, 1.9, … Service times: 2.0, 0.7, 0.2, 1.1, 3.7, 0.6, …
Waktu = 4.9 Interarrival times: 0.4, 1.2, 0.5, 1.7, 0.2, 1.6, 0.2, 1.4, 1.9, … Service times: 2.0, 0.7, 0.2, 1.1, 3.7, 0.6, …
Waktu = 5.6 Interarrival times: 0.4, 1.2, 0.5, 1.7, 0.2, 1.6, 0.2, 1.4, 1.9, … Service times: 2.0, 0.7, 0.2, 1.1, 3.7, 0.6, …
Waktu = 5.8 Interarrival times: 0.4, 1.2, 0.5, 1.7, 0.2, 1.6, 0.2, 1.4, 1.9, … Service times: 2.0, 0.7, 0.2, 1.1, 3.7, 0.6, …
Waktu = 7.2 Interarrival times: 0.4, 1.2, 0.5, 1.7, 0.2, 1.6, 0.2, 1.4, 1.9, … Service times: 2.0, 0.7, 0.2, 1.1, 3.7, 0.6, …
Waktu = 8.6 Interarrival times: 0.4, 1.2, 0.5, 1.7, 0.2, 1.6, 0.2, 1.4, 1.9, … Service times: 2.0, 0.7, 0.2, 1.1, 3.7, 0.6, … Pengukuran kinerja output terakhir: Waktu antri (delay) rata-rata = 5.7/6 = 0.95 mnt/pelanggan Jumlah rata-rata pada antrian = 9.9/8.6 = 1.15 pelanggan Utilisasi server = 7.7/8.6 = 0.90 (tidak berdimensi)
Isu Pemrograman DES • Aturan penghentian program • Jumlah event, waktu total • Klien meninggalkan antrian sebelum dilayani • Time break selama penjadwalan event • Pilih kepergian sebelum kedatangan • Dua kedatangan pada saat yang sama? Pilih satu secara acak • Aturan lain yang didefinisikan