Logika Fuzzy Pertemuan 10 Contoh Penerapan Algoritma Genetik

advertisement
Logika Fuzzy
Pertemuan 10
Contoh Penerapan Algoritma Genetik Untuk Menentukan Fungsi Keanggotaan
Misalkan system dengan input dan output tunggal seperti pada table berikut.
Tabel 1. Data set
No Data
1
2
3
4
5
x
1
2
3
4
5
y’
1
4
9
16
25
Dan table 2 berikut adalah table pemetaan fungsional untuk system untuk input x dan output y.
Tabel 2. Pemetaan fungsional system
x
Y
S
S
L
VL
Pada table 2 variabel x dan y masing-masing menggunakan 2 kelas fuzzy; variable x
menggunakan S (small) dan L (large); variable y menggunakan S (small) dan VL (very large).
Tabel 2 memperlihatkan bahwa x bernilai S dipetakan ke y bernilai S juga, sedangkan x bernilai L
dipetakan ke y bernilai VL. Misalkan diasumsikan bahwa jangkauan nilai x adalah [0, 5] dan
jangkauan y adalah [0, 25]. Diasumsikan pula bahwa bentuk fungsinya berupa segitiga siku-siku
seperti diperlihatkan pada gambar 1 berikut (berlaku juga untuk variable y dengan
menyesuaikan peta fungsionalnya).
Gambar 1. Bentuk fungsi
keanggotaan yang akan digunakan
Fungsi keanggotaan pada sisi kanan mempunyai sudut siku-siku pada batas atas dari jangkauan
variable (x atau y), sedangkan pada sisi kiri mempunyai sudut siku-siku pada batas bawah dari
jangkauan variable (x atau y). Dengan bentuk fungsi keanggotaan yang demikian, maka hanya
diperlukan untuk mengetahui panjang dari base 1 dan base 2 (untuk input x) serta base 3 dan
1
base 4 (untuk output y). Maka inilah 4 parameter yang harus dicari menggunakan algoritma
genetic yaitu panjang base 1, base 2, base 3, dan base 4.
Akan digunakan string dengan panjang 6 bit untuk menyandikan masing-masing parameter
yang akan dicari sehingga total digunakan 4 x 6 = 24 bit.
1. Pada kolom 1 dibangkitkan 4 populasi awal, sepanjang 24 bit, sehingga setiap parameter
disandikan dengan 6 bit.
2. Pada kolom 2, 3, 4, dan 5, masing-masing adalah nilai biner sandi untuk masing-masing
parameter yaitu base 1, base 2, base 3, dan base 4.
3. Pada kolom 6, 7, 8, dan 9, masing-masing adalah panjang base 1, base 2, base 3, dan base 4
yang ditentukan menggunakan rumus:
base i  basemin 
b
[basemax  basemin ]
2 1
L
Dengan b adalah bilangan decimal base i, L adalah panjang deret bit (dalam hal ini L = 6),
basemax dan basemin adalah batas maksimum dan minimum untuk variable input x dan
output y. Dalam hal ini untuk variable input x maka basemax = 5 dan basemin = 0. Sedangkan
untuk variable output y maka basemax = 25 dan basemin = 0.
Parameter base 1 dan base 2 kemudian digunakan untuk membuat fungsi keanggotaan
variable input x, sedangkan parameter base 3 dan base 4 digunakan untuk membuat fungsi
keanggotaan variable output y. Untuk string yang pertama diperoleh fungsi keanggotaan
variable x dan y seperti gambar 1 berikut.
(a)
(b)
Gambar 2 (a) Fungsi keanggotakan x dan (b) Fungsi keanggotaan y, untuk string 1 iterasi 1
2
Pada table 3 untuk string pertama, diperoleh base 1 = 0,56 dan base 2 = 1,59. Hasil ini digunakan untuk menggambar fungsi keanggotaan variable input x (gambar 2a).
Sedangkan base 3 = 8,73 dan base 4 = 20,24 digunakan untuk menggambar fungsi keanggotaan variable output y (gambar 2b). Kedua fungsi keanggotaan yang
diperoleh digunakan untuk mencari nilai y1, y2, y3, y4 dan y5. Sebagai contoh:
Untuk x = 1  x(1) = 0  maka y1 = 0
Untuk x = 4  x(4) = 0,37  maka y4 dicari dengan cara mencari nilai y yang mempunyai nilai keanggotaan 0,37; dari gambar
diperoleh 12,25
Untuk x = 5  x(5) = 1  maka y5 dicari dengan cara mencari nilai y yang mempunyai nilai keanggotaan 1; dari gambar
diperoleh y5 = 25
Tentukan nilai y2, dan y3 (bagaimana cara memperolehnya)?
Mengapa y4  5,05?
Mengapa y5  0?
Adakah cara lain untuk menentukan nilai y1, y2, y3, dan y4?
Table 3. Iterasi pertama menggunakan algoritma genetic
0
No
String
1
2
3
4
1
String
000111
010010
010101
100100
010100
001100
101010
001001
010110
101100
001101
101100
110011
100110
101000
100011
2
Base1
(biner)
7
18
21
36
3
Base 2
(biner)
20
12
42
9
4
Base 3
(biner)
22
44
13
44
5
Base4
(biner)
51
38
40
35
6
Base 1
7
Base 2
8
Base 3
9
Base 4
10
y1
11
y2
0,56
1,43
1,67
2,86
1,59
0,95
3,33
0,71
8,73
17,46
5,16
17,46
20,24
15,08
3,1
12,22
0
12,22
3,1
6,98
0
0
10,72
12,22
12
y3
13
y4
14
y5
15
f(x)=
1000-(yi-yi’)2
0
12,25 25
887,94
0
0
25
521,11
15,48 20,24 25
890,46
0
0
25
559,67
Sum = f = 2859,18
Rerata = sum/4 = fav = 714,80
Maks = 890,46
16
f/fav
1,24
0,73
1,25
0,78
17
Jml
duplikat
1
0
2
1
Tabel 4 memperlihatkan tiga string yang dipertahankan dan diduplikasi. String-string ini ditampilkan pada kolom 0; posisi yang dipilih untuk melakukan crossover
(persilangan) juga diperlihatkan pada kolom ini. Kolom 1 memperlihatkan hasil persilangan string; string-string pada kolom ini merupakan generasi baru hasil
reproduksi dan persilangan yang pertama. Untuk kolom-kolom selanjutnya, setiap string diperlakukan sama seperti pada iterasi yang pertama. Untuk kolom ke-15
2
digunakan f(x) = 1000 -  (y i- yi’) .
Pada gambar 3 diperlihatkan pemetaan untuk string terbaik pada iterasi pertama, dan gambar 4 untuk string terbaik iterasi kedua.
3
Table 4. Iterasi kedua menggunakan algoritma genetic
0
String terpilih
(dari iterasi sebelumnya)
000111 0101|00 010110 110011
010101 1010|10 001101 101000
010101 101010 001101 10|1000
100100 001001 101100 10|0011
1
String baru
000111
010101
010101
100100
010110
101000
101010
001001
001101
010110
001101
101100
101000
110011
100011
101000
2
Base1
(biner)
7
21
21
36
3
Base 2
(biner)
22
40
42
9
4
Base 3
(biner)
13
22
13
44
5
Base4
(biner)
40
51
35
40
6
Base 1
7
Base 2
8
Base 3
9
Base 4
10
y1
11
y2
12
y3
0,56
1,67
1,67
2,86
1,75
3,17
3,33
0,71
5,16
8,73
5,16
17,46
15,87
20,24
13,89
15,87
0
5,24
3,1
6,11
0
5,85
12,51
12,22
0
12,23
16,68
0
13
y4
14
y5
15,93
25
18,62
25
20,84
25
0
25
Sum = f =
Rerata = sum/4 = fav =
Maks =
15
f(x)
16
f/fav
902
962,3
840,78
569,32
3273,4
818,35
961,3
1,1
1,18
1,03
0,7
17
Jml
duplikat
1
2
1
0
Gambar 3 (a) Fungsi keanggotakan x dan (b) Fungsi keanggotaan y, untuk
string terbaik pada iterasi pertama
(a)
(b)
Gambar 4 (a) Fungsi keanggotakan x dan (b) Fungsi keanggotaan y, untuk
string terbaik pada iterasi kedua
(a)
(b)
4
Logika Fuzzy
Pertemuan 10
Contoh Penerapan Penalaran Induktif Untuk Menentukan Fungsi Keanggotaan
Bentuk sebuah elips dapat dicirikan menggunakan rasio (perbandingan) panjang radius mayor
(a) dan radius minor (b) seperti diperlihatkan pada gambar 5 berikut.
Gambar 5. Geometri sebuah elips
Misalkan x = a/b; maka jika nilai a/b   maka bentuk bangun yang terjadi akan berubah
menjadi garis horizontal. Sedangkan jika nilai a/b  0 maka bentuk bangun yang terjadi akan
berubah menjadi garis vertical, dan jika a/b = 1 maka bentuk bangun yang terjadi akan berubah
menjadi lingkaran. Nilai rasio x = a/b dapat digunakan untuk membagi elips menjadi dua kelas;
misalnya menggunakan data yang diperlihatkan pada table 5 berikut.
Table 5. Segmentasi x menjadi dua kelas
x = a/b 0 0,1 0,15 0,2 0,2 0,5 0,9 1,1 1,9 5 50 100
Kelas
1 1
1
1
1
2
1
1
2
2 2 2
1. Tentukan nilai entropi untuk nilai-nilai x yang berbeda. Misalnya dipilih nilai x = 0,7; 1,0; 1,5; dan
3,45.
2. Hitung p1, p2, q1, q2, p(x), q(x), Sp(x), Sq(x), dan S. Tabel 6 memperlihatkan hasil perhitungan untuk
nilai-nilai x yang dipilih.
3. Nilai x yang meberikan entropi minimum dipilih sebagai nilai ambang pertama (PRI); dari hasil pada
table 6 maka nilai entropi minimum adalah 0,4 untuk x = 1,5 sehingga PRI = 1,5. Partisi yang
terbentuk diperlihatkan pada gambar 6.
4. Partisi pada gambar 6 dapat dibagi lagi menjadi lebih banyak partisi dengan menerapkan cara yang
sama, sehingga pada sisi PO diperoleh nilai ambang kedua (SEC1) dan pada sisi NG diperoleh nilai
ambang kedua (SEC2).Hasil perhitungan untuk mencari nilai SEC1 dan SEC2 diperlihatkan pada table
7 dan 8. Jika dua nilai ini telah ditemukan maka dapat dibentuk kembali fungsi keanggotaannya;
lihat gambar 7 (dalam hal ini maka elips terbagi dalam 3 kelas).
5
Tabel 6. Hasil perhitungan untuk menentukan nilai ambang pertama (PRI)
Gambar 6. Partisi variable x = a/b menjadi 2 partisi yaitu PO (positif) dan NG (negative)
Tabel 7. Hasil perhitungan untuk menentukan nilai ambang kedua (SEC1 dan SEC2) pada sisi NG
6
Tabel 8. Hasil perhitungan untuk menentukan nilai ambang kedua (SEC1 dan SEC2) pada sisi PO
Gambar 7. Partisi variable x = a/b menjadi 3 partisi yaitu PO, ZE, dan NG
7
Logika Fuzzy
Pertemuan 10
Contoh Penerapan Neural Network Untuk Menentukan Fungsi Keanggotaan
Misalkan akan digunakan system neural network 2X3X3X2 seperti gambar berikut.
Dataset yang digunakan untuk pelatihan:
No.
1
2
3
4
5
6
7
8
9
10
Data --[0,05
[0,09
[0,12
[0,15
[0,20
[0,75
[0,80
[0,82
[0,90
[0,95
[x1 x2]
0,02]
0,11]
0,20]
0,22]
0,25]
0,75]
0,83]
0,80]
0,89]
0,89]
Nilai Keanggotaan --- [R1 R2]
[1 0]
[1 0]
[1 0]
[1 0]
[1 0]
[0 1]
[0 1]
[0 1]
[0 1]
[0 1]
8
Dataset yang digunakan untuk pengujian:
No.
1
2
3
4
5
6
7
8
9
10
Data --[0,09
[0,10
[0,14
[0,18
[0,22
[0,77
[0,79
[0,84
[0,94
[0,98
[x1 x2]
0,04]
0,10]
0,21]
0,24]
0,28]
0,78]
0,81]
0,82]
0,93]
0,99]
Nilai Keanggotaan --- [R1 R2]
[1 0]
[1 0]
[1 0]
[1 0]
[1 0]
[0 1]
[0 1]
[0 1]
[0 1]
[0 1]
Bobot awal yang digunakan (diambil nilai acak/sebarang) adalah sbb:
Untuk menentukan output digunakan fungsi aktivasi berupa fungsi sigmoid, sehingga output ditentukan
menggunakan formula:
Dengan
O : output
Xi : input
Wi : bobot
t : nilai ambang
Iterasi pertama
Iterasi pertama dilakukan untuk menentukan output setiap elemen pada setiap lapis jaringan neural.
Akan dipilih nilai ambang t = 0.
9
Output lapis ke-2 ditentukan sebagai berikut:
Output lapis ke- 3 ditentukan sebagai berikut:
Output lapis ke-4 ditentukan sebagai berikut:
Dan error untuk iterasi yang pertama ditentukan:
Kemudian error tersebut didistribusikan ke arah balik (back propagation) menggunakan formula:
10
Pertama, error didistribusikan ke lapis ke-3 sehingga:
Lalu, didistribusikan ke lapis ke-2 sehingga:
Kemudian dilakukan up-date bobot untuk semua lapis menggunakan error yang bersesuaian:
dengan
wijk = bobot pada jalur yang menghubungkan elemen ke-j pada lapis ke-i menuju elemen ke-k pada
lapis (i+1)
 = konstanta pembelajaran (learning constant), misalnya diambil  = 0,3
Eki+1 = error yang bersesuaian dengan element ke-k pada lapis ke (i+1)
xjk = input dari element ke-j pada lapis ke-i menuju ke elemen ke-k pada lapis ke (i+1), yaitu Oij
Up-date bobot yang menghubungkan elemen pada lapis ke-3 dan ke-4:
11
Up-date bobot yang menghubungkan elemen pada lapis ke-2 dan ke-3:
Up-date bobot yang menghubungkan elemen pada lapis ke-1 dan ke-2:
Dengan demikian semua bobot dalam system neural network telah diperbaharui (up-date), kemudian
data yang sama (yaitu x1=0,005; x2=0,02) digunakan lagi sebagai input system neural network tetapi
bobot yang digunakan adl bobot yang telah di-update (disebut iterasi yang kedua). Proses yg sama spt yg
telah dilakukan di atas diulangi hingga error-nya mencapai suatu nilai tertentu (misalnya ≤ 10-6). Setelah
itu maka gunakan data yang kedua (yaitu x1=0,009; x2=0,11) , ketiga, dst hingga semua data pelatihan
digunakan. Bobot terakhir yang diperoleh adalah bobot yang terbaik (sering disebut sebagai bobot akhir)
yang bisa dihasilkan dalam proses ini.
Tugas
Lakukan iterasi yang kedua. Anggaplah bobot hasil up-date pada iterasi kedua tersebut sebagai bobot
akhir, kemudian gunakan dataset pengujian yang pertama yaitu [0,09 0,04] sebagai input system neural
network. Perlihatkan perhitungannya hingga diperoleh nilai output R1 dan R2. Bagaimana nilai
keanggotaan data tersebut pada himpunan fuzzy R1 dan R2?
12
Download