kuliah4

Upload: kristian-maulana

Post on 15-Jul-2015

43 views

Category:

Documents


0 download

TRANSCRIPT

5

.

M

O

N

T

E

C

A

R

L

O

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 1 pada distribusi bilangan acak yang digunakan (lihat bab 4).

5 . 1 .

M e t o d e

M o n t e

C a r l o

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. 1. Menghitung nilai p. 2. Menghitung nilai integral 3. Pencarian Acak Dengan Monte Carlo2

5.2. Monte Carlo Untuk Menghitung Nilai pPerhatikan 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

1

-1

3

5.2. Monte Carlo Untuk Menghitung Nilai pDengan 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 T dapat dihitung dengan:

4m T ! Ndimana m adalah jumlah titik acak [0,1] yang masuk dalam lingkaran, dan N adalah jumlah titik yang dibangkitkan. 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:4

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 x=0:0.1:2; >> y=x.*exp(-2*x); >> plot(x,y), grid

sebaiknya

terlebih

dahulu

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 memperoleh nilai maksimum dari fungsi f(x).

13

5.4.

Pencarian

Acak

(Random

Walk)

Contoh 5.1.Mencari nilai maksimum dari fungsi: dimana

0e xe2

f ( x) ! xe

2 x

Sebelum mencari penyelesaiannya digambarkan fungsi ini dengan cara: >> x=0:0.1:2; >> y=x.*exp(-2*x); >> plot(x,y), grid

sebaiknya

terlebih

dahulu

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 memperoleh nilai maksimum dari fungsi f(x).

14

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 end % Hasil fprintf('Iterasi %d : ',n); fprintf('Nilai maksimum %1.3f ',y); fprintf('terjadi di x = %1.3f\n',x);

15

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.16

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

17

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> 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 : STATEIterasi ke 300 : STATE19

5.4.

Pencarian

Acak

(Random

Walk)

Tugas 3.2. 1. Buat program sederhana dalam MATLAB untuk meng-hitung nilai integral :

f ( x) ! 2 T e xuntuk x = 0 s/d 1 2. Buatlah grafik yang menghubungkan jumlah titik yang dibangkitkan dan nilai integral yang diperoleh.

20

5 . 6 .

A l g o r i t m a

M e t r o p o l i s

Sampel data yang diperoleh dengan konfigurasi spin dari lattice diletakkan pada suatu kesatuan. Kita pilih data yang mempunyai bobot w,

w!e

FH i / Z

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: FH trial

e w ! FH i ef (Z ) ! e

Bila proses ini dilakukan secara terus-menerus akan diperoleh kumpulan data sampling yang mempunyai distribusi: FH i / Z21

5 . 6 .

A l g o r i t m a

M e t r o p o l i s

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. 22

5 . 6 .

A l g o r i t m a

M e t r o p o l i s

Proses 1: Nomor state yang berubah = 3 S = [1 1 1 1 1 1 1 1 1 1] 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 ] Total Energi E = 3 State ini diterima 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 diterima23

5 . 6 .

A l g o r i t m a

M e t r o p o l i s

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). 1. Bangkitkan N pasangan bilangan acak (x,y) 2. Untuk Xn=xn Hitung ratio Metropolis dari masing-masing pasangan bilangan acak: f ( y)

r!

f ( x)3. Tentukan : y dengan p ! min(1, r) x n 1 ! x dengan 1 p 24

5 . 6 .

A l g o r i t m a

M e t r o p o l i s

Contoh 5.4. Membangkitkan bilangan acak berdistribusi exponensial :

1 2 x p( x) ! , e 0.4323

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;25

5 . 6 .if p