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