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 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: b base i basemin [ basemax base L 2 1 Dengan b adalah bilangan decimal base i, L adalah panjang deret bit (dalam hal ini L = 6), base max dan base min adalah 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. min ] (a) Gambar 2 (a) Fungsi keanggotakan x dan (b) Fungsi keanggotaan y, untuk string 1 iterasi 1 (b) 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 y 1, y 2, y 3, y 4 dan y 5. Sebagai contoh: Untuk x = 1 x (1) = 0 maka y 1 = 0 Untuk x = 4 x (4) = 0,37 maka y 4 dicari dengan cara mencari nilai y yang mempunyai nilai keanggotaan 0,37; dari gambar diperoleh 12,25 Untuk x = 5 x (5) = 1 maka y 5 dicari dengan cara mencari nilai y yang mempunyai nilai keanggotaan 1; dari gambar diperoleh y 5 = 25 Tentukan nilai y 2, dan y 3 (bagaimana cara memperolehnya)? Mengapa y 4 5,05? Mengapa y 5 0? Adakah cara lain untuk menentukan nilai y 1, y 2, y 3, dan y 4? 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 Base 2 Base 3 Base4 Base 1 Base 2 Base 3 Base 4 y 1 y 2 y 3 y 4 y 5 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. 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 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 Base 2 Base 3 Base4 Base 1 Base 2 Base 3 Base 4 y 1 y 2 y 3 y 4 y 5 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 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. Data --- [x 1 x 2 ] Nilai Keanggotaan --- [R 1 R 2 ] 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] 8
Dataset yang digunakan untuk pengujian: No. Data --- [x 1 x 2 ] Nilai Keanggotaan --- [R 1 R 2 ] 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 X i : input W i : 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 w i jk = 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 E i+1 k = error yang bersesuaian dengan element ke-k pada lapis ke (i+1) x jk = input dari element ke-j pada lapis ke-i menuju ke elemen ke-k pada lapis ke (i+1), yaitu O i j 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 x 1 =0,005; x 2 =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 x 1 =0,009; x 2 =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 R 1 dan R 2. Bagaimana nilai keanggotaan data tersebut pada himpunan fuzzy R 1 dan R 2? 12