5.MONTE CARLO 5.1. Metode Monte Carlo

Slides:



Advertisements
Presentasi serupa
Sistem Operasi (pertemuan 5) Memori Razief Perucha F.A
Advertisements

TURUNAN/ DIFERENSIAL.
Pengendalian Proses : Seleksi (Conditional)
SIMULASI MONTE CARLO.
FUNGSI / FUNCTION ALGPROG II
Procedure pada Pascal ALPROG II
1 ANALISA VARIABEL KOMPLEKS Oleh: Drs. Toto’ Bara Setiawan, M.Si. (
LATIHAN SOAL-SOAL 1. Himpunan 2. Aritmatika Sosial 3. Persamaan GL.
SOAL ESSAY KELAS XI IPS.
UKURAN PEMUSATAN Rata-rata, Median, Modus Oleh: ENDANG LISTYANI.
Selamat Datang Dalam Kuliah Terbuka Ini 1. Kuliah terbuka kali ini berjudul “Pilihan Topik Matematika -I” 2.
Selamat Datang Dalam Kuliah Terbuka Ini 1. Kuliah terbuka kali ini berjudul “Pilihan Topik Matematika -II” 2.
Soal-Soal Latihan Mandiri
Sistem Persamaan Diferensial
Bab 11A Nonparametrik: Data Frekuensi Bab 11A.
METODE SIMPLEKS OLEH Dr. Edi Sukirman, SSi, MM
DISTRIBUSI PROBABILITAS
THE RATIO ESTIMATOR VARIANCE DAN BIAS RATIO PENDUGA SAMPEL VARIANCE
Linked List BEBERAPA CONTOH SOAL 6.3 & 7.3 NESTED LOOP.
WEEK 6 Teknik Elektro – UIN SGD Bandung PERULANGAN - LOOPING.
Materi Kuliah Kalkulus II
Mengenal Sifat Material Konfigurasi Elektron dalam Atom
ELASTISITAS PERMINTAAN DAN PENAWARAN
Elastisitas.
Induksi Matematik TIN2204 Struktur Diskrit.
DISTRIBUSI PROBABILITAS
Integral Lipat-Tiga.
Mengenal Sifat Material Konfigurasi Elektron dalam Atom
DISTRIBUSI PROBABILITAS DISKRET
Selamat Datang Dalam Kuliah Terbuka Ini
Bahan Kuliah IF3051 Strategi Algoritma Oleh: Rinaldi Munir
Bab 18 Karakteristik Butir Karakteristik Butir
Luas Daerah ( Integral ).
Modul 1- Review Java.
FUNGSI MATEMATIKA DISKRIT K- 6 Universitas Indonesia
Pemrogramman Terstruktur
Peluang Diskrit.
PELUANG SUATU KEJADIAN
UJI KOMPETENSI 1.
4. BILANGAN ACAK dan Pembangkitannya
Teori Peluang Diskrit.
DISTRIBUSI PROBABLITAS
DISTRIBUSI PROBABILITAS DISKRET
ITK-121 KALKULUS I 3 SKS Dicky Dermawan
Aritmatika Bilangan Biner
FUNGSI STRUKTUR DISKRIT K-8 Program Studi Teknik Komputer
Dasar Pemrograman ARRAY/LARIK.
Algoritma Branch and Bound
Bahan Kuliah IF2120 Matematika Diskrit Oleh: Rinaldi Munir
BAB I SISTEM BILANGAN.
BAB XII PROBABILITAS (Aturan Dasar Probabilitas) (Pertemuan ke-27)
Algoritma Pergantian Halaman
ELASTISITAS PERMINTAAN DAN PENAWARAN
13. Graf berbobot (Weighted graph)
METODE PENCARIAN HEURISTIK
Kompleksitas Algoritma
13. Graf berbobot (Weighted graph)
Dasar probabilitas.
Persamaan Garis Lurus Latihan Soal-soal.
PENERAPAN DIFFERENSIASI
Fungsi WAHYU WIDODO..
WISNU HENDRO MARTONO,M.Sc
D3 Manajemen Informatika S1 Sistem Informasi
DISTRIBUSI PELUANG Pertemuan ke 5.
DISTRIBUSI PROBABLITAS (SSTS 2305 / 3 sks)
Simulasi Monte Carlo.
Pertemuan 14 Algoritma Genetika.
MODEL SIMULASI Pertemuan 13
Pertemuan 13 Algoritma Genetika.
Simulasi Monte Carlo.
Transcript presentasi:

5.MONTE CARLO 5.1. Metode Monte Carlo Metode pencarian acak adalah suatu metode dimana solusi dicari secara acak dan diulang-ulang sampai dihasilkan solusi yang diharapkan. Misalkan dicari suatu angka antara 0 sampai dengan 100, maka akan diacak angka-angka antara 0 dan 100 sampai didapatkan angka yang dimaksud. Metode ini tampak sangat sederhana, karena hanya diperlukan bagaimana suatu solusi dinyatakan dan kemudian mengacak nilainya hingga diperoleh nilai yang diharapkan dari model solusi yang ada. Metode pencarian acak ini menjadi tidak popular karena hasilnya memang tidak bagus, tetapi sudah merupakan konsep dasar yang menarik untuk dibahas. Ada beberapa hal yang perlu diperbaiki dari konsep pencarian acak ini, antara lain: Tidak semua nilai pada solusi harus diubah pada setiap iterasi. Bila sudah solusi mendekati target tidak perlu perubahan yang terlalu besar. Perlu pertimbangan bahwa munculnya bilangan acak sangat tergantung pada distribusi bilangan acak yang digunakan (lihat bab 4).

5.1. Metode Monte Carlo Metode Monte Carlo memperbaiki metode pencarian acak ini dengan mempertimbangkan kedua hal di atas, sehingga metode ini menjadi metode simulasi yang banyak digunakan. Metode Monte Carlo sebenarnya merupakan metode pencarian acak, tetapi dengan beberapa perbaikan, yaitu: tidak semua nilai pada solusi diacak ulang, tetapi dipilih satu nilai saja di antara barisan nilai solusi, dan kemungkinan acak dari setiap kejadian solusi. Sebagai contoh, pada pencarian kata setiap iterasi hanya mengubah satu nilai saja dari kelima nilai yang ada dalam satu solusi. Bila pada solusi hanya mengandung satu nilai saja maka metode Monte Carlo ini sama dengan metode pencarian acak. Beberapa impelementasi dasar dari Monte Carlo dalam proses simulasi adalah sebagai berikut: Metode Rejection pada pembangkitan bilangan acak yang berdistribusi non-uniform seperti telah dibahas pada bab 4. Menghitung nilai p. Menghitung nilai integral Pencarian Acak Dengan Monte Carlo

5.2. Monte Carlo Untuk Menghitung Nilai p Perhatikan lingkaran dengan jari-jari 1, maka dapat dikatakan bahwa luas lingkaran tersebut adalah p. Bila kita mengacak pasangan (x,y) dengan bilangan acak [0,1] maka kita cukup memandang pada kuadran I pada bujursangkar luar dari lingkaran berjari-jari 1 maka kemungkinan titik (x,y) berada dalam lingkaran adalah: 1 -1

5.2. Monte Carlo Untuk Menghitung Nilai p Dengan kata lain bila dibangkitkan N pasang pasangan korrdinat (x,y) dengan bilangan acak [0,1] maka ada m=Np/4 pasangan yang berada dalam lingkaran pada kuadran I. Aturan ini bisa dikatakan bahwa: nilai p dapat dihitung dengan: dimana m adalah jumlah titik acak [0,1] yang masuk dalam lingkaran, dan N adalah jumlah titik yang dibangkitkan. Implementasi Monte Carlo untuk menghitung nilai p dalam MATLAB adalah sebagai berikut:

5.2. Monte Carlo Untuk Menghitung Nilai p % Memasukkan jumlah titik yang diacak n=input('Jumlah titik acak = '); % Mengacak n buah titik x=rand(1,n); y=rand(1,n); % Menghitung jumlah titik % yang masuk daerah lingkaran p=(y<(1-x.^2).^0.5); m=sum(p); % Menghitung dan menampilkan nilai pi mpi=4*m/n; fprintf('pi = %1.5f\n',mpi); Simpan dalam file hitungpi.m, kemudian jalankan program ini. Beberapa hasil dari program ini adalah:

5.2. Monte Carlo Untuk Menghitung Nilai p Jumlah titik acak = 10 pi = 3.20000 Jumlah titik acak = 100 pi = 2.88000 Jumlah titik acak = 1000 pi = 3.15200 Jumlah titik acak = 2000 pi = 3.13800 Jumlah titik acak = 2500 pi = 3.11840 Jumlah titik acak = 4000 pi = 3.12800 Jumlah titik acak = 10000 pi = 3.15760 Jumlah titik acak = 20000 pi = 3.12640 Jumlah titik acak = 50000 pi = 3.13600 Jumlah titik acak = 100000 pi = 3.13876 Jumlah titik acak = 250000 pi = 3.14133 Jumlah titik acak = 500000 pi = 3.14120 Jumlah titik acak = 1000000 pi = 3.14156 Memang dibutuhkan jumlah titik yang besar untuk dapat mendekati nilai p yang sebenarnya. Tetapi ide ini merupakan ide dasar pencarian yang sangat bagus.

5.3. Monte Carlo Untuk Menghitung Integral Persoalan menghitung integral adalah persoalan dasar dalam kalkulus, tetapi ternyata tidak semua fungsi dapat dihitung integralnya dengan mudah. Metode Monte Carlo dapat digunakan untuk menghitung integral dengan menghitung jumlah titik yang berada di dalam suatu kawasan fungsi f(x) pada interval yang ditentukan.

5.3. Monte Carlo Untuk Menghitung Integral Untuk menghitung integral f(x) dari [a,b] dengan menggunakan metode Monte Carlo, maka dibangkitkan pasangan (x,y) secara acak dengan nilai x=[a,b] dan nilai y=[0,1], Hitung jumlah titik (x,y) dimana y<f(x) dengan f(x) didefinisikan Nilai integral dapat dihitung dengan : dimana : M=jumlah titik yang terletak di dalam fungsi f(x) N=jumlah titik yang dibangkitkan

5.3. Monte Carlo Untuk Menghitung Integral Contoh 5.1. Menghitung nilai: Implementasi Monte Carlo untuk menghitung integral di atas dalam MATLAB adalah: % Memasukkan jumlah titik yang diacak n=input('Jumlah titik acak = '); % Mengacak n buah titik x=rand(1,n); y=rand(1,n); % Menghitung jumlah titik % yang masuk daerah integral fungsi p=(y<x.*exp(-x)); m=sum(p); % Menghitung dan menampilkan nilai integral L=m/n; fprintf('Integral = %1.5f\n',L);

5.3. Monte Carlo Untuk Menghitung Integral Simpan dalam file integral1.m, kemudian jalankan. Salah satu contoh hasilnya adalah sebagai berikut: Jumlah titik acak = 10 Integral = 0.40000 Jumlah titik acak = 1000 Integral = 0.26800 Jumlah titik acak = 1500 Integral = 0.24800 Jumlah titik acak = 2000 Integral = 0.26950 Jumlah titik acak = 5000 Integral = 0.26440 Jumlah titik acak = 10000 Integral = 0.26470 Jumlah titik acak = 50000 Integral = 0.26316 Jumlah titik acak = 100000 Integral = 0.26270 Jumlah titik acak = 500000 Integral = 0.26416 Jumlah titik acak = 1000000 Integral = 0.26451 Hasil eksak dari nilai integral di atas adalah sebagai berikut:

5.4. Pencarian Acak (Random Walk) Metode paling sederhana dalam menyelesaikan suatu permasalahan tanpa harus melibatkan banyak operasional matematis dan struktur data yang rumit adalah metode pencarian secara acak, dimana suatu penyelesaian diperoleh dengan mencoba-coba (trial and error) dengan memanfaatkan bilangan acak. Misalkan untuk mencari nilai terbesar dari f(x,y)=x*exp(-y) dapat dihitung dengan mengacak pasangan nilai (x,y), dan hitung nilai f(x,y), kemudian acak lagi pasangan nilai (x,y) dan hitung nilai f(x,y), bila f(x,y) yang baru lebih besar dicatat demikian seterusnya sehingga diperoleh f(x,y) yang paling besar. Algoritma dari pencarian acak untuk mencari nilai maksimal suatu fungsi f(x) dari barisan nilai x=[xk ] dapat dituliskan sebagai berikut:

5.4. Pencarian Acak (Random Walk) Acak satu penyelesaian x yang mungkin. Hitung nilai fungsi dari penyelesaian tersebut f(x) anggap sebagai f_maksimal Acak lagi satu penyelesaian yang mungkin, dengan mengubah satu atau beberapa bagian kejadian pada ruang solusi. Hitung nilai fungsi dari penyelesaian tersebut f(x) Bila f(x)>f_maksimal maka f_maksimal=f(x) Ulangi langkah 2 sampai dinyatakan stop dengan kriteria stop yang ditentukan. Kriteria stop yang banyak dilakukan adalah jumlah iterasi atau nilai maksimal acuan.

5.4. Pencarian Acak (Random Walk) Contoh 5.1. Mencari nilai maksimum dari fungsi: dimana Sebelum mencari penyelesaiannya sebaiknya terlebih dahulu digambarkan fungsi ini dengan cara: >> x=0:0.1:2; >> y=x.*exp(-2*x); >> plot(x,y), grid Dari grafik di atas, terlihat bahwa nilai maksimum sekitar 0.18 sampai dengan 2, yang terjadi di nilai x sekitar 0.4 sampai dengan 0.6. Implementasi pencarian acak dalam MATLAB untuk mem-peroleh nilai maksimum dari fungsi f(x).

5.4. Pencarian Acak (Random Walk) Contoh 5.1. Mencari nilai maksimum dari fungsi: dimana Sebelum mencari penyelesaiannya sebaiknya terlebih dahulu digambarkan fungsi ini dengan cara: >> x=0:0.1:2; >> y=x.*exp(-2*x); >> plot(x,y), grid Dari grafik di atas, terlihat bahwa nilai maksimum sekitar 0.18 sampai dengan 2, yang terjadi di nilai x sekitar 0.4 sampai dengan 0.6. Implementasi pencarian acak dalam MATLAB untuk mem-peroleh nilai maksimum dari fungsi f(x).

5.4. Pencarian Acak (Random Walk) % Memasukkan jumlah iterasi n=input(‘Jumlah iterasi = ‘); % Pengacakan nilai awal x=rand; y=x*exp(-2*x); % Random walk dengan n iterasi for iterasi=1:n x1=rand; y1=x1*exp(-2*x1); if y1>y x=x1; y=y1; end % Hasil fprintf('Iterasi %d : ',n); fprintf('Nilai maksimum %1.3f ',y); fprintf('terjadi di x = %1.3f\n',x);

5.4. Pencarian Acak (Random Walk) Simpan program ini dalam file rndwalk1.m, dan hasil dari implementasi ini untuk setiap jumlah iterasi tertentu adalah sebagai berikut: Iterasi 10 : Nilai maksimum 0.184 terjadi di x = 0.500 Iterasi 50 : Nilai maksimum 0.184 terjadi di x = 0.499 Iterasi 100 : Nilai maksimum 0.184 terjadi di x = 0.499 Nilai maksimal yang diperoleh adalah 0.184. Contoh 5.2. Mencari kata acak sampai diperoleh kata yang disimpan oleh komputer, misalkan kata acaknya adalah ‘STATE’. Sebelumnya pastikan nilai target (kata yang disimpan) dibentuk dalam array integer sehingga didefinisikan: target = { 19 20 1 20 5 }, dimana nilai-nilai tersebut menyatakan urutan dari alfabet pada kata target.

5.4. Pencarian Acak (Random Walk) Implementasinya dalam bahasa MATLAB adalah: % Menyimpan kata target target=[19 20 1 20 5]; katatarget=char(target+64); % Membuat kata secara acak s=floor(rand(1,5)*26)+1; % Menghitung jarak antara kata target dan s e=sum(abs(target-s)); % Proses iterasi pencarian sebanyak 300 kali for iterasi=1:300 % Menyimpan s ke dalam s1 s1=s; % Melakukan update dengan mengubah % salah satu huruf saja

5.4. Pencarian Acak (Random Walk) k=floor(rand*5)+1; s1(k)=floor(rand*26)+1; % Menghitung jarak s1 dengan target e1=sum(abs(target-s1)); % Menguji apakah s baru diterima if(e1<=e) s=s1; e=e1; end % Setiap 20 iterasi ditampilkan if mod(iterasi,25)==0 kata=char(s+64); fprintf('Iterasi ke %d : %s\n',iterasi,kata);

5.4. Pencarian Acak (Random Walk) Simpan dalam file carikata.m, lalu jalankan. Salah satu hasilnya adalah sebagai berikut: >> carikata Iterasi ke 25 : VUJTC Iterasi ke 50 : VUETC Iterasi ke 75 : VUATE Iterasi ke 100 : UTATE Iterasi ke 125 : QTATE Iterasi ke 150 : QTATE Iterasi ke 175 : STATE Iterasi ke 200 : STATE Iterasi ke 225 : STATE Iterasi ke 250 : STATE Iterasi ke 275 : STATE Iterasi ke 300 : STATE

5.4. Pencarian Acak (Random Walk) Tugas 3.2. Buat program sederhana dalam MATLAB untuk meng-hitung nilai integral : untuk x = 0 s/d 1 2. Buatlah grafik yang menghubungkan jumlah titik yang dibangkitkan dan nilai integral yang diperoleh.

5.6. Algoritma Metropolis Sampel data yang diperoleh dengan konfigurasi spin dari lattice diletakkan pada suatu kesatuan. Kita pilih data yang mempunyai bobot w, dimana Hi adalah energi pada konfigurasi i, teknik ini dinamakan dengan algoritma Metropolis. Hal ini berguna untuk memilih kandidat berikutnya pada proses pencarian acak (random walk), dimana konfigurasi solusi yang dapat diterima adalah konfigurasi solusi dengan bobot: Bila proses ini dilakukan secara terus-menerus akan diperoleh kumpulan data sampling yang mempunyai distribusi:

5.6. Algoritma Metropolis Contoh 5.3. Bangkitkan 10 bilangan acak [-1 1] yang menyatakan komposisi elektron dari suatu atom. Misalkan: S = [1 1 –1 1 –1 –1 –1 1 1 –1] Energi yang terpancar dalam suatu komposisi elektron adalah energi yang terjadi ketika terjadi dua kutub yang berbeda yang berada secara berdampingan. Energi untuk S dapat dihitung dengan: S = [1 1 –1 1 –1 –1 –1 1 1 –1] dE = [ 0 1 1 1 0 0 1 0 1 ] Total Energi E=5. Algoritma metropolis bersama-sama random walk dari Monte Carlo akan mengubah komposisi di atas menjadi komposisi dengan Energi yang minimum.

5.6. Algoritma Metropolis Proses 1: Nomor state yang berubah = 3 dE’ = [ 0 0 0 1 0 0 1 0 1 ] Total Energi E = 3 State ini diterima Proses 2: Nomor state yang berubah = 5 S’ = [1 1 1 1 1 –1 –1 1 1 –1] dE’ = [ 0 0 0 0 1 0 1 0 1 ] Proses 3: Nomor state yang berubah = 6 S’ = [1 1 1 1 –1 1 –1 1 1 –1] dE’ = [ 0 0 0 1 1 1 1 0 1 ] Total Energi E = 5 State ini tidak diterima

5.6. Algoritma Metropolis Proses di atas hanya melakukan pertimbangan perubahan state dilakukan ketika energi lebih kecil. Perhatikan pada proses 1 dan proses 2, meskipun kedua state ini berbeda tetapi energinya sama. Hal ini membuat teknik perubahan state hanya dengan pertimbangan besar-kecilnya energi masih terlalu dini untuk dapat menyatakan kondisi terbaik. Contoh Implementasi Algoritma Metropolis: Algoritma metropolis untuk membangkitkan sejumlah bilangan acak xk dengan distribusi f(xk). Bangkitkan N pasangan bilangan acak (x,y) Untuk Xn=xn Hitung ratio Metropolis dari masing-masing pasangan bilangan acak: Tentukan :

5.6. Algoritma Metropolis Contoh 5.4. Membangkitkan bilangan acak berdistribusi exponensial : , untuk 0 < x < 1 Implementasi Algoritma Metropolis untuk membangkitkan bilangan acak dengan distribusi eksponensial di atas adalah sebagai berikut: % Memasukkan jumlah bilangan acak % yang akan dibangkitkan n=input('Jumlah bilangan acak = '); % Membangkitkan n pasangan bilangan acak (x,y) for i=1:n x=rand; y=rand; % Menghitung nilai ratio metropolis fx=exp(-x)/0.4323; fy=exp(-y)/0.4323; r=fy./fx; p=rand;

5.6. Algoritma Metropolis if p<r s(i)=y; else s(i)=x; end disp(s) Simpan dalam file acakmet.m, kemudian jalankan. Perhatikan hasil dari pembangkitan bilangan acak dengan algoritma metropolis. Untuk membangkitkan bilangan acak dengan fungsi distribusi yang berbeda, tinggal mengganti fx dan fy pada program di atas.