METODE MONTE CARLO DAN
PENERAPANNYA
Monte Carlo Method and Its Applications
Noor Cholis Basjaruddin
Politeknik Negeri Bandung
2016
POLBAN
2
Daftar Isi
1 Abstrak... 3
2 Abstract ... 3
3 Pendahuluan... 3
4 Metoda Monte Carlo ... 4
5 Contoh Penerapan ... 5
5.1 Menghitung Luas Bangun ... 5
5.2 Membuktikan nilai π ... 10
5.3 Menghitung nilai probabilitas ... 13
5.4 Penalaan PID dengan Metoda Monte Carlo ... 17
5.5 Robustness Analysis dengan Metoda Monte Carlo... 17
5.6 Penggunaan Monte Carlo pada Scheduling ... 17
6 Kesimpulan ... 17 7 Daftar Pustaka... 18
POLBAN
3
1
Abstrak
Metode Monte Carlo menggunakan prinsip pembangkitan bilangan acak untuk menguji sebuah fungsi. Hasil pengujian yang berhasil akan dihitung dan dibandingkan dengan jumlah pengujian. Oleh karena itu semakin banyak pengujian maka akan diperoleh hasil yang lebih teliti. Persoalan yang mendasar dalam penggunakaan metode Monte Carlo adalah bagaimana merumuskan masalah menjadi fungsi yang dapat diuji dengan bilangan acak. Penentuan inside dan outside menjadi kunci dalam penerapan metode Monte Carlo.
2
Abstract
Monte Carlo method using the principle of the generation of random numbers to test a function. The test results are successful will be calculated and compared with the amount of testing. Therefore, more and more testing will be obtained more accurate results. The fundamental issue in a use of the Monte Carlo method is how to formulate the problem into a function that can be tested with random numbers. Determination of the inside and outside to be key in the implementation of the Monte Carlo method.
3
Pendahuluan
Pemakaian metode Monte Carlo demikian luasnya. Pada makalah ini dibahas beberapa contoh penerapan metode Monte Carlo. Makalah ini diharapkan dapat menambah pengetahuan kepada pembaca khusunya dalam memahami metode Monte Carlo dan penerapannya.
Program komputer yang digunakan dalam penerapan metode Monte Carlo untuk memecahkan beberapa masalah dibuat dengan bahasa PHP dan Matlab. Para pembaca dapat menjalankan program tersebut jika ingin mengetahui secara lebih mendalam bagaimana metode Monte Carlo diterapkan.
Kritik dan saran atas makalah ini sangat diharapkan dan dapat disampaikan ke penulis melalui email noorcholis@polban.ac.id.
POLBAN
4
4
Metode Monte Carlo
Salah satu metode komputasi yang banyak digunakan untuk memecahkan berbagai persoalan adalah metode Monte Carlo. Metode ini digunakan untuk mensimulasikan berbagai perilaku sistem fisika dan matematika.
Algoritma Monte Carlo adalah metode Monte Carlo numerik yang digunakan untuk menemukan solusi problem matematis yang dapat terdiri dari banyak variabel serta susah dipecahkan, misalnya dengan kalkulus integral atau metode numerik lainnya. Algoritma ini memerlukan pengulangan dan perhitungan yang kompleks sehingga metode Monte Carlo pada umumnya dilakukan menggunakan komputer dan memakai berbagai teknik simulasi komputer.
Penggunaan nama Monte Carlo bertujuan untuk menghormati paman dari Stanislaw Marcin Ulam yang seorang penjudi. Bersama-sama Enrico Fermi, John von Neumann dan Nicholas Metropolis, Stanislaw Marcin Ulam mengembangkan metode Monte Carlo. Penggunaan keacakan dan sifat pengulangan proses mirip dengan aktivitas yang dilakukan pada sebuah kasino.
Enrico Fermi pada tahun 1930 menggunakan metode acak untuk menghitung sifat-sifat neutron yang waktu itu baru saja ditemukan. Metode Monte Carlo merupakan simulasi inti yang digunakan dalam Manhattan Project, meski waktu itu masih menggunakan peralatan komputasi yang sangat sederhana. Monte Carlo mulai dipelajari secara mendalam sejak digunakannya komputer elektronik pada tahun 1945. Metode ini digunakan di Laboratorium Nasional Los Alamos pada tahun 1950-an untuk penelitian awal pengembangan bom hidrogen dan kemudian sangat populer dalam bidang fisika dan riset operasi. Rand Corporation dan Angkatan Udara AS merupakan dua institusi utama yang bertanggung jawab dalam pendanaan dan penyebaran informasi mengenai Monte Carlo waktu itu dan mereka mulai menemukan aplikasinya dalam berbagai bidang.
Penggunaan metode Monte Carlo memerlukan sejumlah besar bilangan acak dan hal tersebut semakin mudah dengan perkembangan pembangkit bilangan pseudoacak. Pembangkit bilangan pseudoacak jauh lebih cepat dan praktis dibandingkan dengan metode sebelumnya yang menggunakan tabel bilangan acak untuk sampling statistik.
POLBAN
5
5
Contoh Penerapan
5.1 Menghitung Luas Bangun
Perhitungan luas dengan metode Monte Carlo pada dasarnya dengan cara membandingkan luas dari dua bidang. Satu bidang menjadi acuan dan bidang lain (diarsir) yang akan dihitung luasnya. Perbandingan luas kedua bidang bisa didekati dengan menggunakan sejumlah N titik uji, dimana titik uji dipilih secara acak. Perbandingan banyak titik uji yang ada di dalam bidang diarsir terhadap banyak titik uji keseluruhan (N) mendekati perbanding luas bidang diarsir terhadap luas acuan. Diagram alir penentuan luas menggunakan metode Monte Carlo dapat dilihat pada Gambar 5.1.
Gambar 5.1 Diagram alir perhitungan luas bidang dengan MC
POLBAN
6 Menggunakan diagram alir tersebut akan dihitung luas bidang segitiga seperti diperlihatkan pada Gambar 5.2.
Gambar 5.2 Bidang segitiga Misal akan dihitung luas dari bidang yang diarsir pada Gambar 5.2.
Luas keseluruhan bidang adalah 2 x 4 = 8 satuan.
Luas bidang yang diarsir merupakan luas dibawah fungsi f(x) = 2x, karena fungsi tersebut membagi bidang menjadi dua bidang sama luas maka luas dibawah fungsi tersebut adalah 4 satuan.
Perbandingan luas bidang yang diarsir dengan bidang keseluruhan (bidang acuan) adalah:
8 dicari bidang Luas n keseluruha bidang Luas diarsir bidang Luas
Untuk menentukan luas bidang diarsir (dicari) bisa digunakan metode Monte Carlo. Umpamakan dilakukan pelemparan koin sebanyak N kali ke bidang acuan. Jika M dari N koin jatuh di bawah garis f(x) = 2x, maka perbandingan luas diarsir dan luas acuan adalah M/N dengan demikian: N M 8 Dicari Bidang Luas
Diagram alir perhitungan bidang segitiga dapat dilihat pada Gambar 5.3.
POLBAN
7 Gambar 5.3 Diagram alir perhitungan luas bidang
POLBAN
8
Program Simulasi dengan PHP
<?
// program perhitungan luas dengan monte carlo // f(x) = 2x
// x = 0 - 2, y = 0 - 4 // Noor Cholis Basjaruddin $n=0;
$M=0; $N=1000;
for($n;$n<$N;$n++) {
//generate random number x and y $xr=mt_rand(0,2000); $x =0.001*$xr; $yr=mt_rand(0,4000); $y =0.001*$yr; //calculate f(x) $F=2*$x; if($y<$F) { $M=$M+1; } echo "$x,$y<br>"; } $Luas = 8*($M/$N); $err=abs(4-$Luas); echo"M=$M,LUAS=$Luas, error=$err"; ?>
Akurasi dan Presisi Akurasi
Kedekatan hasil pengukuran dengan nilai benar.
(the degree of closeness of measurements of a quantity to that quantity's actual (true) value)
Presisi
Kedekatan hasil pengukuran dengan nilai rerata hasil pengukuran berulang-ulang.
(the degree to which repeated measurements under unchanged conditions show the same results)
POLBAN
9 Akurasi perhitungan bisa diamati dengan cara mengubah nilai N dan kehalusan titik sample x dan y. Tabel 5.1 adalah hasil simulasi dengan nilai N berbeda sedangan Tabel 5.2 adalah hasil simulasi dengan kehalusan (ketelitian) x dan y berbeda.
Tabel 5.1 Hasil perbandingan perhitungan luas dengan N berbeda
N Hasil Perhitungan Error
10 2.400 1.600 100 3.200 0.800 1000 3.784 0.216 10000 3.928 0.072
Tabel 5.2 Hasil perbandingan luas dengan N tetap, ketelitian x dan y berbeda
x dan y Hasil Perhitungan Error
# 3.088 0.912 #.# 4.064 0.064 #.## 4.048 0.048 #.### 4.040 0.040
Dari Tabel 5.1 dan Tabel 5.2 dapat dilihat bahwa akurasi perhitungan semakin baik jika N diperbesar atau kehalusan (ketelitian) x dan y ditingkatkan. Perbesaran data N akan menghasilkan perbandingan M/N semakin mendekati perbandingan luas acuan dan luas diarsir, dengan demikian hasil perhitungan luas akan lebih akurat. Penghalusan titik sample x dan y akan mengakibatkan perbandingan y dan f(x) semakin baik sehingga menghasilkan pengukuran yang lebih akurat.
Untuk mengamati kepresisian akan dihitung standar deviasi untuk perhitungan luas 100 kali. Tabel 3 Hasil perbandingan perhitungan rata-rata luas dan deviasi standar dengan N
berbeda
N Rata-rata Luas Standar Deviasi
10 4.008 1.336 100 4.018 0.404 1000 4.005 0.118 10000 3.996 0.037
Tabel 4 Hasil perbandingan perhitungan rata-rata luas dan deviasi standar dengan N tetap, ketelitian x dan y berbeda
x dan y Rata-rata Luas Standar Deviasi
# 3.176 0.132 #.# 3.889 0.130 #.## 4.001 0.125 #.### 3.990 0.123
POLBAN
10 Semakin kecil standar deviasi pengukuran berulang maka semakin presisi pengukuran tersebut. Tabel 3 dan 4 menunjukkan bahwa perhitungan luas bidang yang diarsir semakin presisi dengan penambahan N dan penghalusan titik sample. Penambahan titik sample dalam proses perhitungan (pembesaran nilai N) akan diikuti kenaikan kepresisian yang sangat besar, sedangkan penghalusan titik sample meski diikuti dengan kenaikan kepresisian namun tidak terlalu signifikan.
5.2 Membuktikan nilai π
Metode Monte Carlo dapat digunakan untuk membuktikan nilai π = 3,14... Perhatikan Gambar 5.4.
Gambar 5.4 Lingkaran dengan jari-jari R
Sebuah lingkaran dengan jari-jari R di dalam bangun persegi dengan sisi 2R.
Luas lingkaran = R2
Luas persegi = (2R) x (2R) = 4R2 Perbandingan luas lingkaran dan luas persegi =
4 4R R 2 2
Jika metode Monte Carlo dipakai dengan titik uji sejumlah N dan jumlah titik yang masuk (inside points) adalah M, maka hubungan perbandingan luas dua bangun di atas dan perbandingan inside points (M) dan test points (N) adalah
N 4 M atau N M x 4
Diagram alir pembuktian nilai π dengan metode Monte Carlo dapat dilihat pada Gambar 5.5.
POLBAN
11 Gambar 5.5 Diagram alir pembuktian nilai π
POLBAN
12
Program dengan bahasa PHP
<?
// program pembuktian pi = 3,14... // Noor Cholis Basjaruddin
$l=0; for($l;$l<100;$l++) { $n=0; $M=0; $N=1000; for($n;$n<$N;$n++) {
//generate random number x and y $xr=mt_rand(0,1000); $x =0.001*$xr; $yr=mt_rand(0,1000); $y =0.001*$yr; //calculate f(x) $x2=pow($x,2); $y2=pow($y,2); $F=$x2+$y2; if($F<1) { $M=$M+1; } //echo "$x,$y<br>"; } $pi = 4*($M/$N); $pi_array[] = $pi; } $pi_mean=array_sum($pi_array)/100; ?>
Hasil perhitungan nilai π dapat dilihat pada Tabel 5.3.
Tabel 5.3 Hasil perbandingan perhitungan luas dengan N berbeda
N Hasil Perhitungan
10 3,184 100 3,1432 1000 3.14044 10000 3.141684
Dari simulasi dengan N 100,1000, dan 10.000 terbukti bahwa nilai π = 3,14...
POLBAN
13
5.3 Menghitung nilai probabilitas
Diketahui probabilitas P(hujan) = 0.50, P(angin) = 0.20, P(gempa) = 0.001. Ketiga kejadian sangat mungkin terjadi bersamaan. Kemungkinan terjadinya hujan, angin, dan gempa secara bersamaan adalah:
P(h+a+g) = 1 – (1-0,5) (1-0,2) (1-0,001) = 0,6004
Nilai probabilitas tersebut dapat dihitung dengan metode Monte Carlo dan diagram alir pemecahan masalah tersebut dapat dilihat pada Gambar 5.6.
Gambar 5.6 Diagram alir pembuktikan probabilitas kejadian
POLBAN
14
Program dengan php
<?
// program perhitungan probabilitas // Noor Cholis Basjaruddin
$n=0; $MHAG=0; $MH=0; $MA=0; $MG=0; $N=100000; for($n;$n<$N;$n++) { $h=mt_rand(1,1000); $a=mt_rand(1,1000); $g=mt_rand(1,1000);
//hitung prob hujan atau angin atau gempa
if((0<$h and $h<501) or (0<$a and $a<201) or $g==1) {
$MHAG=$MHAG+1; $in1="Hujan Angin Gempa"; }
//hitung prob hujan if(0<$h and $h<501) {
$MH=$MH+1; $in2="Hujan"; }
//hitung prob angin if(0<$a and $a<201) {
$MA=$MA+1; $in3="Angin"; }
//hitung prob gempa if($g==1) { $MG=$MG+1; $in4="Gempa"; } }
echo"Hujan Angin Gempa =", ($MHAG/$N),"<br>"; echo"Hujan =", ($MH/$N),"<br>"; echo"Angin =", ($MA/$N),"<br>"; echo"Gempa =", ($MG/$N),"<br>"; ?>
POLBAN
15
Hasil
Hujan Angin Gempa =0.60056 Hujan =0.501
Angin =0.20023 Gempa =0.00093
Hasil perhitungan probabilitas hujan dan angin dan gempa dengan Monte Carlo adalah 0,60056 atau mendekati 0,6004. Untuk pengecekan, pada saat bersamaan juga dihitung probabilitas hujan, angin, dan gempa. Nilai P(h) = 0,501, P(a) = 0,20023, dan P(g) = 0,00093. Hasil perhitungan P(h+a+g) dengan rumus adalah 0.601285919. Perhitungan juga dapat dilakukan dengan menggunakan Matlab untuk mendapatkan ketelitian yang lebih tinggi.
Simulasi dengan MATLAB
% program perhitungan probabilitas hujan, angin, dan gempa % Noor Cholis Basjaruddin
N = 1e7; % jumlah iterasi n=0; clear r h = randi(1000,1,N); a = randi(1000,1,N); g = randi(1000,1,N); MH =0; MA =0; MG =0; MHAG =0; for n=1:N-1; % inside hujan if 1 <= h(1,n) & h(1,n)<= 500 MH=MH+1; end; % inside angin
if 501 <= a(1,n) & a(1,n)<= 700 MA=MA+1; end; % inside gempa if g(1,n) == 701 MG=MG+1; end;
% inside hujan atau angin atau gempa
if h(1,n)<=500 | (501 <=a(1,n) & a(1,n)<=700) | g(1,n)==701
POLBAN
16 MHAG=MHAG+1; end; end; PH=MH/N; PA=MA/N; PG=MG/N; PHAG=MHAG/N; disp('Probabilitas Hujan :'); disp(PH); disp('Probabilitas Angin :'); disp(PA); disp('Probabilitas Gempa :'); disp(PG);
disp('Probabilitas Hujan atau Angin atau Gempa :'); disp(PHAG); Hasil Simulasi Running-1 Probabilitas Hujan : 0.4998 Probabilitas Angin : 0.2001 Probabilitas Gempa : 0.0010
Probabilitas Hujan atau Angin atau Gempa : 0.6004 Running-2 Probabilitas Hujan : 0.5000 Probabilitas Angin : 0.2002 Probabilitas Gempa : 0.0010
Probabilitas Hujan atau Angin atau Gempa : 0.6005 Running-3 Probabilitas Hujan : 0.5001 Probabilitas Angin : 0.1999 Probabilitas Gempa : 0.0010
Probabilitas Hujan atau Angin atau Gempa : 0.6004
POLBAN
17
5.4 Penalaan PID dengan Metoda Monte Carlo
Metode Monte Carlo dapat digunakan untuk menentukan parameter kendali PID yaitu Kp, Ki, dan Kd. Bilangan random dibangkitkan untuk ketiga parameter tersebut dan keluaran sistem kendali diamati. Inside dalam MC ditentukan berdasarkan perbandingan kriteria sistem yang diinginkan dan keluaran yang diamati. Nilai Kp, Ki, dan Kd selanjutnya dapat diperoleh dengan cara mendapatkan nilai rata-rata dari beberapa kali perhitungan Kp, Ki, dan Kd. Tiap perhitungan parameter tersebut dilaksanakan dengan N kali iterasi.
5.5 Robustness Analysis dengan Metoda Monte Carlo
Metode Monte Carlo dapat digunakan untuk menganalisis robustness sistem. Bilangan random digunakan untuk mensimulasikan parameter gangguan, baik disturbance maupun perturbance. Kinerja sistem diamati dan diberikan kriteria untuk menentukan inside/outside.
5.6 Penggunaan Monte Carlo pada Scheduling
Metode Monte Carlo dapat digunakan untuk optimasi dalam proses scheduling. Kombinasi event dalam frame waktu atau tempat dinyatakan dalam bilangan random. Kriteria diberikan untuk menentukan optimal atau tidak pada setiap kombinasi event. Kombinasi event yang menghasilkan nilai optimal digunakan dalam scheduling.
6
Kesimpulan
Prinsip metode Monte Carlo adalah membangkitkan bilangan acak untuk menguji sebuah fungsi. Ketika diuji dengan bilangan acak, fungsi matematika tersebut akan menghasilkan nilai yang benar atau salah. Hasil pengujian yang benar (inside) akan dihitung dan dibandingkan dengan jumlah pengujian. Oleh karena itu semakin banyak pengujian maka akan diperoleh hasil yang lebih teliti. Persoalan yang mendasar dalam penggunaan metode Monte Carlo adalah bagaimana merumuskan masalah menjadi fungsi yang dapat diuji dengan bilangkan acak. Penentuan inside dan outside menjadi kunci dalam penerapan metode Monte Carlo.
POLBAN
18
7
Daftar Pustaka
Kaveh Madani, Jay R. Lund, A Monte-Carlo game theoretic approach for Multi-Criteria Decision Making under uncertainty, Advances in Water Resources, Volume 34, Issue 5, May 2011, Pages 607-616
Mateos, A. Jiménez, S. Ríos-Insua, Monte Carlo simulation techniques for group decision making with incomplete information, Journal of Operational Research, Volume 174, Issue 3, 1 November 2006, Pages 1842-1864
Michael Jay Schillaci, Ph.D., A Monte-Carlo Calculation of Pi, Department of Computer Science, Mathematics and Physics Roberts Wesleyan College, Rochester, NY
Sybert H. Stroeve, Henk A.P. Blom, G.J. (Bert) Bakker, Systemic accident risk assessment in air traffic by Monte Carlo simulation, Elsevier Ltd., 2008