Submisi tugas mata kuliah Antrian dan Simulasi (MII4213) Semester Genap 2019/2020
Program Studi Ilmu Komputer
Departemen Ilmu Komputer dan Elektronika
Fakultas Matematika dan Ilmu Pengetahuan Alam
Universitas Gadjah Mada
Oleh:
- Almas Fauzia Wibawa
- Gregorius Aria Neruda
- Rayhan Naufal Ramadhan
Di dalam folder ini terdapat 3 simulator untuk 3 permasalahan yang berbeda, yaitu:
- Permasalahan antrian M/M/1/K
- Permasalahan antrian M/M/c/K
- Permasalahan antrian n-M/M/1/K
Ketiga permasalahan tersebut diselesaikan dengan implementasi berbasis event. Terdapat 2 jenis event, arrival dan service. Event dengan rate yang paling kecil akan dieksekusi lebih dulu.
-
Yang terjadi ketika event arrival dieksekusi adalah datangnya customer baru ke dalam sistem. Event arrival yang baru saja dieksekusi kemudian dihapus dan dibuat event arrival baru dengan rate random. Rate pada event arrival baru menandakan waktu yang dibutuhkan untuk customer selanjutnya tiba di sistem.
-
Yang terjadi ketika event service dieksekusi adalah perginya seorang customer dari sistem. Event service yang baru saja dieksekusi dihapus dan dibuat event service baru dengan rate random. Rate pada event service baru menandakan waktu yang dibutuhkan server untuk melayani customer selanjutnya.
Dalam menginisialisasi random rate, digunakan exponential distribution (CDF) dengan lambda = 0,5. Nilai lambda dapat diubah dengan mengganti nilai exp_dist_lambda
pada program.
Log yang dihasilkan menyimpan informasi mengenai:
- Kedatangan customer.
- Masuknya customer ke server.
- Kepergian customer.
- Dilakukannya drop ketika customer datang dan antrian telah penuh.
Masing-masing informasi akan disertai dengan timestamp untuk menunjukkan pada detik ke berapa peristiwa tersebut terjadi.
Untuk mengeksekusi program, jalankan command di bawah ini pada command line di dalam direktori disimpannya program:
- M/M/1/K
$ python ./MM1K.py -K
Di mana K
adalah maksimal banyaknya customer di dalam antrian (termasuk yang sedang di-serve)
Akan dihasilkan log dengan nama file logMM1K.csv
setelah program selesai dijalankan.
- M/M/c/K
$ python ./MMcK.py -c -K
Di mana c
adalah banyaknya server di dalam antrian, dan K
adalah maksimal banyaknya customer di dalam antrian (tidak termasuk yang sedang di-serve)
Akan dihasilkan log dengan nama file logMMcK.csv
setelah program selesai dijalankan.
- n-M/M/1/K
$ python ./n-MM1K.py -n -K
Di mana n
adalah banyaknya antrian M/M/1, dan K
adalah maksimal banyaknya customer di dalam antrian (tidak termasuk yang sedang di-serve)
Akan dihasilkan log dengan nama file logN-MM1K.csv
setelah program selesai dijalankan.