Model simulasi harus merefleksikan sifat-sifat penting sistem nyata. Untuk menjelaskan proses pemodelan akan digunakan percobaan jarum Buffon. ¾ Percobaan Disimulasikan Percobaan Jarum Buffon. Jarum sepanjang l dijatuhkan secara acak pada bidang yang memuat sekumpulan garis paralel dengan jarak antar garis d, yang dapat direpresentasikan keramik lantai (lihat Gambar 1). Panjang jarum diasumsikan lebih kecil atau sama dengan jarak antar garis paralel. Jika percobaan menjatuhkan jarum dilakukan secara berulang-ulang, probabilitas (p) jarum akan menyentuh atau memotong garis dapat diperoleh dari hasil bagi jumlah jarum menyentuh atau memotong garis (NI) dibagi dengan jumlah percobaan (NT), atau P = NI/NT. Dilihat dari prosedurnya, percobaan jarum Buffon adalah simulasi Monte Carlo, karena kita menggunakan angka acak dan sampel acak untuk memperkirakan hasil percobaan.
Gambar 1. Bidang percobaan jarum Untuk mensimulasikan percobaan ini, kita harus dapat menempatkan jarum secara acak, relatif terhadap garis. Dalam percobaan fisik, hal ini tidak sulit dilakukan, kita hanya perlu menjatuhkan jarum pada bidang yang sudah ditentukan. Tetapi dalam simulasi komputer percobaan akan berbeda. Jarum pada bidang harus ditempatkan secara unik, untuk itu kita harus menentukan lokasi spesifik jarum. Anggap lokasi jarum terhadap garis mempunyai titik tengah m dan sudut θ. Untuk memenuhi posisi acak, variabel jarak diperlakukan sebagai variabel acak dan berdistribusi uniform. Kita hanya perlu mempertimbangkan satu area yang diapit oleh dua garis, karena area lainnya biasanya duplikat dari area ini. Begitu titik tengah jarum m sudah ditentukan, kita harus menentukan garis mana dari antara kedua garis tersebut yang terdekat. Posisi acak bersifat
simetris, oleh karena itu kita hanya memerlukan setengah dari jarak kedua garis. Oleh karena itu a yang merupakan jarak dari m ke garis adalah variabel acak berdistribusi uniform pada kisaran 0 – d/2. Karena sifat simetris, θ juga variabel acak yang berdistribusi uniform pada kisaran 0 - π radian.
d/2 m θ
a
l/2 sin θ
Gambar 2. Diberikan a dan θ acak, metode untuk menentukan apakah jarum menyentuh atau memotong garis adalah sebagai berikut:hitunglah proyeksi vertikal jarak m ke akhir jarum sebagai (l/2) sin θ, dan bandingkan dengan jarak a. Jika a ≤ (l/2) sin θ, jarum menyentuh atau memotong garis, seperti yang ditunjukkan di atas. Jika a > (l/2) sin θ, jarum tidak menyentuh atau memotong. Untuk menyelesaikan pengembangan model, kita harus menentukan rata-rata nilai a dan θ. Untuk mendapatkan sampel acak a dan θ, akan lebih baik menggunakan bilangan pseudorandom, r, dengan 0 ≤ r ≤ 1. Kemudian kita dapat mendefinisikan nilai a dan θ untuk percobaan tertentu sebagai : a = (d/2)r θ=πr kisaran a dan θ yang diinginkan adalah: 0 ≤ a ≤ d/2 0≤θ≤π Logika pemrograman untuk mensimulasikan percobaan jarum ditunjukkan Gambar 3. Running akan dilakukan sebanyak 3000 kali dengan panjang jarum (l) = 10cm dan jarak garis (d) = 20cm. Hasil simulasi memperkirakan p (probabilitas jarum akan menyentuh atau memotong garis) sebesar 0.3133. Pertanyaan berikutnya adalah seberapa akurat perkiraan ini?
Pilih l dan d
Turunkan r1
Hitung a
Turunkan r2
Hitung θ
Hitung l/2 sin θ ya a ≤ l/2 sin θ tidak Tambahkan NI
Tambahkan NT
Jumlah running sudah cukup
tidak
ya Cetak hasil
stop Gambar 3. Logika pemrograman percobaan jarum Buffon Keakuratan p ditentukan oleh jumlah ulangan setiap percobaan yang disimulasikan. Dalam pembentukan selang kepercayaan untuk presisi ini, hal berikut dilakukan. Jatuhnya jarum merupakan percobaan Bernoulli, jumlah kesuksesan (NI) dalam ulangan NT adalah variabel acak Binomial, dan P = NI/NT yang merupakan penduga bagi parameter Binom p (probabilitas sukses). Dengan menggunakan P = pˆ , maka dapat dinyatakan:
E [ pˆ ] = E [NI / NT ] = p karena E[NI] = p × NT VAR[ pˆ ] = p(1 − p ) karena VAR[NI] = NT × p (1 − p ) NT ) 12 ⎛ ( p − p ) p(1 − p ) ⎞ Z =⎜ ⎟ NT ⎝ ⎠ ) Dapat diasumsikan bahwa p menyebar normal (percobaan sebanyak 3000 jauh lebih besar dibandingkan 30), dan oleh karena itu Z diasumsikan berdistribusi normal dengan rata-rata 0 dan ragam 1. Lalu kita dapat menulis probabilitasnya: ) 12 ⎤ ⎡ ⎛ ( p − p ) p(1 − p ) ⎞ ⎢ P − Z 0.025 ⎜ ⎟ ≤ Z 0.025 ⎥ = 0.95 NT ⎥⎦ ⎢⎣ ⎝ ⎠ ) ) 12 ) ) 12 ⎡) ) ⎛ p(1 − p ) ⎞ ⎛ p(1 − p ) ⎞ ⎤ P ⎢ p − Z 0.025 ⎜ ⎟ ≤ p ≤ p + Z 0.025 ⎜ ⎟ ⎥ = 0.95 ⎢⎣ ⎝ NT ⎠ ⎝ NT ⎠ ⎥⎦
) menggunakan p =0.3133 (nilai probabilitas hasil simulasi di atas), kita akan mendapatkan : P[0.2967 ≤ p ≤ 0.3299] = 0.95 Program simulasi menggunakan FORTRAN adalah sbb: C PERMASALAHAN JARUM BUFFON TYPE *, ‘MASUKKAN PANJANG JARUM, LEBAR AREA (JARAK ANTARA DUA GARIS), JUMLAH PERCOBAAN’ TYPE *, READ *,FNEEDLE,DIST,NTRIALS TYPE*,PANJANG JARUM = ‘,FNEEDLE, ‘LEBAR AREA = ‘,DIST, ‘JUMLAH PERCOBAAN = ‘,NTRIALS WRITE (6,100) FNEEDLE,DIST,NTRIALS 100 FORMAT (‘ PANJANG JARUM = ‘,F7.0,’LEBAR AREA = ‘,F7.0, ‘JUMLAH PERCOBAAN =’,I6) DO 1 I=1,NTRIALS Y=RAN(ISEED) A=Y*DIST/2 Y=RAN(ISEED) THETA=Y*3.1417 IF(A.LE.(FNEEDLE/2.)*SIN(THETA)) THEN CROSS=CROSS+1 END IF IF(MOD(I,50) .EQ.0) THEN TYPE *,’PERCOBAAN NO. = ‘,I,’FRACTION CROSSING= ‘,CROSS/FLOAT (I) 101 FORMAT(‘ PERCOBAAN NO.= ‘,I,’ FRACTION CROSSING= ‘F5.4) END IF CONTINUE 1 THEO_PROB=2.*FNEEDLE/(3.1417*DIST) TYPE *,’PELUANG TEORITIS= ‘,THEO_PROB WRITE(6,102) THEO_PROB 102 FORMAT(‘ PROB. TEORITIS= ‘,F6.5) END
Sebelum mengembangkan model simulasi kompleks, kita bicarakan dulu list processing dalam simulasi. Untuk model simulasi sederhana, kita dapat menemukan tidak ada list atau maksimum hanya satu list record dengan 1 atribut. Tapi untuk model simulasi kompleks kita harus berhadapan dengan beberapa list yang memuat banyak records juga dengan banyak atribut. Sering pemrosesan FIFO (First In First Out) tidak efisien. Jika jumlah besar informasi ini tidak disimpan dan dimanipulasi secara efisien, eksekusi model akan membutuhkan waktu yang lama dan memori penyimpanan yang besar akan mengakibatkan model simulasi tidak layak. Ada dua cara penyimpanan list records dalam komputer yaitu alokasi sekuensial dan terhubung (linked). Pendekatan alokasi-sekuensial meletakkan records berdekatan secara fisik dalam lokasi penyimpanan, satu demi satu record sesuai dengan hubungannya. Dalam pendekatan alokasi penyimpanan terhubung, setiap record memuat atribut dan pointer (link). Pointer menunjukkan relasi logik dari satu record ke record lainnya dalam list. Sehingga record dalam list yang saling berhubungan tidak harus diletakkan berdekatan. Pendekatan kedua ini (alokasi penyimpanan terhubung) lebih disukai dalam pemodelan simulasi karena memiliki beberapa keuntungan, yaitu: 1. waktu pemrosesan yang dibutuhkan untuk jenis list tertentu dapat dikurangi secara signifikan. 2. pemrosesan list-kejadian untuk model simulasi dimana daftar (list) kejadian memuat sejumlah besar record kejadian secara simultan dapat dipercepat 3. untuk beberapa model simulasi, kapasitas memori komputer yang dibutuhkan untuk menyimpan bisa lebih kecil. 4. menyediakan kerangka umum yang memungkinkan menyimpan dan memanipulasi banyak daftar secara simultan dengan mudah, dimana records dalam daftar berbeda dapat diproses dengan cara berbeda.