1
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
x
y’
1
1
1
2
2
4
3
3
9
4
4
16
5
5
25
Dan table 2 berikut adalah table pemetaan fungsional untuk system untuk input x dan output y.
Tabel 2. Pemetaan fungsional system
x
S
L
Y
S
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
2
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:
]
[
1
2
max minmin
base
base
b
base
i
base
L
Dengan b adalah bilangan decimal base i, L adalah panjang deret bit (dalam hal ini L = 6),
base
maxdan base
minadalah batas maksimum dan minimum untuk variable input x dan
output y. Dalam hal ini untuk variable input x maka base
max= 5 dan base
min= 0. Sedangkan
untuk variable output y maka base
max= 25 dan base
min= 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)
3
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 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 No String String Base1 (biner) Base 2 (biner) Base 3 (biner) Base4 (biner)
Base 1 Base 2 Base 3 Base 4 y1 y2 y3 y4 y5 f(x)=
1000-(yi-yi’)2 f/fav Jml duplikat 1 000111 010100 010110 110011 7 20 22 51 0,56 1,59 8,73 20,24 0 0 0 12,25 25 887,94 1,24 1 2 010010 001100 101100 100110 18 12 44 38 1,43 0,95 17,46 15,08 12,22 0 0 0 25 521,11 0,73 0 3 010101 101010 001101 101000 21 42 13 40 1,67 3,33 5,16 3,1 3,1 10,72 15,48 20,24 25 890,46 1,25 2 4 100100 001001 101100 100011 36 9 44 35 2,86 0,71 17,46 12,22 6,98 12,22 0 0 25 559,67 0,78 1 Sum = f = 2859,18 Rerata = sum/4 = fav = 714,80
Maks = 890,46
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 digunakan f(x) = 1000 - (y i- yi’)2.
4
Table 4. Iterasi kedua menggunakan algoritma genetic
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
String terpilih (dari iterasi sebelumnya)
String baru Base1 (biner) Base 2 (biner) Base 3 (biner) Base4 (biner)
Base 1 Base 2 Base 3 Base 4 y1 y2 y3 y4 y5 f(x) f/fav Jml
duplikat 000111 0101|00 010110 110011 000111 010110 001101 101000 7 22 13 40 0,56 1,75 5,16 15,87 0 0 0 15,93 25 902 1,1 1 010101 1010|10 001101 101000 010101 101000 010110 110011 21 40 22 51 1,67 3,17 8,73 20,24 5,24 5,85 12,23 18,62 25 962,3 1,18 2 010101 101010 001101 10|1000 010101 101010 001101 100011 21 42 13 35 1,67 3,33 5,16 13,89 3,1 12,51 16,68 20,84 25 840,78 1,03 1 100100 001001 101100 10|0011 100100 001001 101100 101000 36 9 44 40 2,86 0,71 17,46 15,87 6,11 12,22 0 0 25 569,32 0,7 0 Sum = f = 3273,4 Rerata = sum/4 = fav = 818,35
Maks = 961,3
(a) (b)
(a) (b)
Gambar 3 (a) Fungsi keanggotakan x dan (b) Fungsi keanggotaan y, untuk string terbaik pada iterasi pertama
Gambar 4 (a) Fungsi keanggotakan x dan (b) Fungsi keanggotaan y, untuk string terbaik pada iterasi kedua
5
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).
6 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)
7 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
8
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. Data --- [x1 x2] Nilai Keanggotaan --- [R1 R2]
1 [0,05 0,02] [1 0] 2 [0,09 0,11] [1 0] 3 [0,12 0,20] [1 0] 4 [0,15 0,22] [1 0] 5 [0,20 0,25] [1 0] 6 [0,75 0,75] [0 1] 7 [0,80 0,83] [0 1] 8 [0,82 0,80] [0 1] 9 [0,90 0,89] [0 1] 10 [0,95 0,89] [0 1]
9 Dataset yang digunakan untuk pengujian:
No. Data --- [x1 x2] Nilai Keanggotaan --- [R1 R2]
1 [0,09 0,04] [1 0] 2 [0,10 0,10] [1 0] 3 [0,14 0,21] [1 0] 4 [0,18 0,24] [1 0] 5 [0,22 0,28] [1 0] 6 [0,77 0,78] [0 1] 7 [0,79 0,81] [0 1] 8 [0,84 0,82] [0 1] 9 [0,94 0,93] [0 1] 10 [0,98 0,99] [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.
10 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:
11 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
12 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