Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
Diterbitkan olehAmy Prayudha Telah diubah "9 tahun yang lalu
1
Contoh: Time-shared computer and multi-teller bank
Catatan diambil dari “Simulation Modeling and Analysis” by A. Law and W. Kelton, Third edition, McGraw Hill, 2000.
2
Tujuan Contoh simulasi Model komputer time-shared
Multi-teller bank dengan jockey Model job shop
3
Model komputer Time-Shared
4
Spesifikasi masalah Terminal “berpikir”, kemudian meng-isukan job
Think time terdistribusi eksponensial - 25 detik Job service time juga terdistribusi eksponensial detik Aturan pemrosesan job processing rule: round-robin Waktu setiap kali diproses CPU q = 0.1 detik. (quantum) Jika sisa waktu pemrosesan > q detik, akan diberikan q detik, kemudian dikeluarkan kembali Jika sisa waktu pemrosesan q detik, akan diberikan selama yang diperlukan, kemudian dikembalikan ke terminalnya Cara lain pemrosesan job: FIFO, SJF, LIFO dsb. Swap time: = 0.15 detik. Diperlukan pada saat job memasuki CPU sebelum pemrosesan dimulai
5
Spesifikasi masalah Waktu Respon satu job = (waktu job kembali ke terminal) – (waktu job meninggalkan terminalnya). Pada awalnya, komputer kosong dan tidak bekerja, seluruh n job pada think state di terminal mereka. Aturan penghentian: dikumpulkan 1000 waktu respon Output: Rata-rata waktu respon Rata-rata jumlah job pada antrian CPU Utilisasi CPU Pertanyaan: berapa terminal (n) dapat dimuati job dan memiliki waktu respon rata-rata di bawah 30 detik?
6
Mengubah spesifikasi menjadi program
Kedatangan Job Pemrosesan CPU Akhiri simulasi Terminal
7
Event, list Event list, atribut:
1 = Kedatangan job di komputer (di akhir think time) 2 = Job meninggalkan CPU (selesai atau dikeluarkan sementara) 3 = Akhir simulasi (dijadwalkan setelah job ke-1000 selesai) list, atribut: 1 = queue, attributes = [waktu kedatangan job pada komputer, waktu layanan yang tersisa] 2 = CPU, attributes = [waktu kedatangan job pada komputer, waktu layanan yang tersisa] Dalam CPU, jika waktu layanan yang tersisa > 0 maka job membutuhkan waktu CPU sebesar ini setelah lewat di CPU terakhir kali; jika waktu layanan yang tersisa 0, job akan selesai setelah lewat di CPU kali ini 25 = event list, attributes = [event time, event type]
8
Variable, random stream
variable: waktu respon Random-number stream: 1 = think time, 2 = service time
9
arrive() function Function arrive() Letakkan job pada antrian
CPU idle? Ya Tidak Return Start CPU run
10
start_CPU_run() function
11
end_CPU_run() function
12
Multi-teller Bank Kedatangan baru: Pada awalnya kosong dan idle
Waktu antar kedatangan: Exp (mean = 1 mnt.) Waktu layanan: Exp (mean = 4.5 mnt.) Kedatangan baru: Jika ada teller yang idle (tidak bekerja), pilih teller idle yang paling kiri Jika semua teller sibuk, pilih antrian paling pendek Pada awalnya kosong dan idle Penghentian: Pintu tutup setelah 480 menit. Jika semua teller idle pada saat itu, langsung stop. Jika ada teller yang masih bekerja, tetap beroperasi hingga semua nasabah meninggalkan pelayanan.
13
Aturan Jockey Misalkan teller i (i tertentu) selesai melayani — misalnya, i = 3 pada gambar di atas. Maka teller i menjadi idle, atau antrian i berkurang 1. Mungkin seorang nasabah pada antrian lain, j ( i) pindah ke teller i (jika sekarang idle) atau ke ujung antrian i yang sekarang lebih pendek Untuk setiap teller/antrian k, nk = jumlah nasabah yang menghadapi (antri + yang dilayani) teller k segera setelah teller i selesai melayani Prosedur: Jika nj > ni + 1 untuk j i, maka jockey akan terjaadi Jika nj > ni + 1 untuk beberapa nilai j i, pilih j yang paling dekat (min |j – i|) Jika nj > ni + 1 untuk dua nilai j i yang sama dekat (kiri dan kanan), pilih yang kiri (nilai j yang lebih kecil)
14
Ukuran Kinerja Estimasi Bagaimana efek jumlah teller?
Rata-rata jumlah nasabah pada (semua) antrian per satuan waktu Rata-rata dan maksimum delay nasabah pada antrian Bagaimana efek jumlah teller?
15
Event, list Event list, atribut (n = jumlah teller):
1 = Kedatangan nasabah ke bank 2 = Kepergian nasabah dari teller (harus diketahui teller #) 3 = Tutup pintu pada menit ke-480. (mungkin merupakan Akhir, mungkin juga belum) (Gunakan juga “utility” non-event function jockey jika ada yang ingin jockey, dan, jika ya, lakukan) list, atribut (n = jumlah teller): 1, …, n = queues, attributes = [waktu kedatangan pada antrian] n + 1, …, 2n = tellers, no attributes = (dummy list untuk utilisasi) 25 = event list, attributes = [event time, event type, nomer teller jika event type = 2]
16
Variabel, stream variable: 1 = delay nasabah pada antrian (s)
Random-number streams: 1 = interarrival time, 2 = service time
17
arrive() function
18
depart() function
19
jockey() function
20
Model Job Shop Model Lima workstation Tiga type job
Jumlah mesin yang identik pada setiap workstation seperti pada gambar Jaringan antrian multiserver Tiga type job Waktu antar kedatangan (semua type job digabungkan) exp. (mean = 0.25 jam) Type job ditentukan setelah kedatangan Type 1, 2, 3 w.p. 0.3, 0.5, 0.2 Rute workstation untuk type job: Type 1: 3 1 2 5 (lihat gb.) Type 2: 4 1 3 Type 3: 2 5 1 4 3 Mean service time (2-Erlang distrib.): Type 1: 0.60 0.85 0.50 Type 2: 0.80 0.75 Type 3: 0.25 0.70 0.90 1.0 Pada awalnya kosong dan idle Stop pada waktu 365 8 jam
21
Model Job Shop (lanjutan)
Estimasi Total delay rata-rata pada antrian untuk setiap type job secara terpisah Total delay rata-rata pada antrian secara menyeluruh meliputi semua type job, dibebani oleh probabilitas kejadian (yang telah diketahui) Untuk setiap kelompok mesin secara terpisah: Delay rata-rata pada antrian (semua type job dikumpulkan) Jumlah rata-rata job pada antrian per satuan waktu (semua type job) Utilisasi grup = Jumlah mesin dalam grup Pertanyaan: Jika Anda dapat menambahkan satu mesin ke shop, ke grup mana mesin tersebut harus ditambahkan? Rata-rata jumlah mesin yang bekerja per satuan waktu Jumlah mesin dalam grup
22
Event, list, dst Event list, atribut: 1 = Kedatangan job pada sistem
2 = Kepergian job dari satu station tertentu 3 = Akhir simulasi list, atribut: 1, …, 5 = queues, attributes = [waktu kedatangan pada station, job type, task number ] 25 = event list, attributes = [event time, event type, job type (jika event type = 2), task number (jika event type = 2)] (Task number sebuah job adalah jarak pada rutenya, diukur dalam stations, sehingga mulailah dari 1, kemudian di-inkremen sebesar 1 untuk setiap station)
23
variable variable: delay antrian pada grup mesin 1, …, 5 total delay antrian untuk type job 1, 2, 3 Jumlah mesin busy pada grup mesin 1, …, 5 Random-number stream: 1 = interarrival time, 2 = job-type coin flip, 3 = service time
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.