Bab 5 (Fuzzy Logic Toolbox)



BAB 5 

FUZZY LOGIC TOOLBOX
  1. Untuk mengetahui toolbox pada fuzzy logic
  2. Untuk dapat menggunakan toolbox pada fuzzy logic

  • Matlab
Gambar 1. MATLAB
Software MATLAB atau Matrix Laboratory merupakan software pemrograman canggih yang banyak digunakan di bidang Teknik atau Engineering. Matlab dapat memecahkan masalah mulai dari analisis data, pengembangan algoritma, simulasi, visualisasi, hingga pengambilan kesimpulan


5.1 Sekilas fuzzy logic toolbox
Fuzzy logic toolbox adalah sekumpulan tool yang akan membantu dalam merancang sistem fuzzy untuk diaplikasikan dalam berbagai bidang, seperti automatical control, signal processing, identification system, pattern recognition, time series prediction, data mining, dan financial application.

Fuzzy logic toolbox dapat dikelompokkan menjadi tiga kategori:
1. command line
2. graphical user interfacce (GUI)
3. simulink block

5.2 Graphical User Interface 
Fuzzy logic toolbox menyediakan 5 jenis GUI untuk keperluan rancang bangun FIS:
1. FIS editor
2. Membership Function editor
3. Rule Editor
4. Rule viewer
5. Surface Viewer

5.3 FIS editor
Pada matlab prompt, ketikkan: fuzzy maka akan muncul FIS editor seperti pada gambar 5.1 dengan sebuah variabel masukan dengan label input 1 dan sebuah output dengan label output 1.

Gambar 5.1 FIS Editor

Untuk contoh kasus yang telah dibahas membangun FIS dengan dua masukan: pelayanan dan makanan dengan sebuah output bonus. langkahnya adalah sebagai berikut:
1. Pilih menu edit
2. Pilih add variable
3. Pilih add input sehingga muncul kotak kuning baru dengan label input 2 yang mana akan menjadi masukan kedua dari FIS.
4. Ubah input 1 menjadi pelayanan dengan mengklik kotak kuning berlabel input1, lalu pada bagian current variable disebelah kanan bawah, pada kolom nama, ganti label variable input1 menjadi pelayanan dan tekan enter
5. Lakukan hal yang serupa untuk mengubah input2 menjadi makanan
6. Ubah label output1 menjadi bonus dengan mengklik kotak biru di kanan atas, lalu pada bagian current variable di sebelah kanan bawah, pada kolom nama, ganti label variable output1 menjadi bonus dan tekan enter.
7. Pilih menu File
8. Pilih export
9. Pilih to workspace
10. Pilih edit field workspace variable, ketik fisbonus lalu klik OK. untuk menyimpan ke dalam harddisk, pilih menu File -> export -> to disk, masukkan nama file untuk FIS. file di harddisk akan diberi ekstensi *.fis dan dapat dipanggil cukup dengan mengetikkan fuzzy fisbonus pada MATLAB prompt.

Gambar 5.2 Menyimpan Fis

Setelah semuanya selesai, diagram FIS dengan label masukan dan keluaran seperti yang diinginkan dapat terlihat pada gambar 5.3.

Gambar 5.3 Diagram FIS fisbonus

5.4 Membership Function Editor
1. Dari Fis editor, pilih View -> Edit membership function
2. Dari Fis editor, klik ganda ikon variabel masukan/keluaran
3. Dari matlab command window, ketikkan mfedit fisbonus, mengasumsikan bawa anda sudah terlanjut menutup Fis editor.

Fuzzy logic toolbox menyediakan 11 macam fungsi keanggotaan: trimf, trapmf, gbellmf, gaussmf, gauss2mf, sigmf, dsigmf, psigmf, pimf, smf, dan zmf.

Gambar 5.4 membership function editor

Untuk merubah fungsi keanggotaan gaussmf (gaussian membership function) langka langkahnya adalah sebagai berikut:
1. Klik ikon variable FIS pelayanana
2. Pada bagian kiri bawah, pada Field Range, ubah range menjadi [0 10], lalu tekan enter
3. Pada bagian kiri bawah, pada Field Display Range, ubah display range menjadi [0 10], lalu tekan enter
4. Klik kurva yang berlabel mf1.
5. Pada bagian kanan bawah, pada field name, ubah mf1 menjadi mengecewakan, lalu tekan enter
6. Pada bagian kanan bawah, pada Field type, klik panah bawah, lalu pilih opsi tipe fungsi keanggotaan gaussmf.
7. Pada bagian bawah, pada field params. ketikkan parmeter parameter kurva gaussian lalu tekan enter. 
8 Lakukan langkah 4 terakhir di atas pada kurva mf2 dengan mengganti label kurva menjadi bagus.

Hasil dari kedelapan langkah di atas ditunjukkan pada gambar 5.4 dimana kurva fungsi keanggotaan bagus kebetulan telah di klik.

Pendefinisian variabel makanan terdiri dari 2 keanggotaan hambar dan enak.
1. Klik ikon variable FIS makanan.
2. Klik kurva yang berlabel mf2
3. Pilih menu edit->remove selected MF sehingga kurva berlabel mf2 akan dihapus.
4. Pada bagian kiri bawah, field range, ubah menjadi [0 10], lalu tekan enter
5. Pada bagian kiri bawah, pada Field Range ubah range menjadi [0 10], lalu tekan enter
6. Klik kurva yang berlabel [0 10]
7. Pada bagian kanan bawah, field name, ubah mf1 menjadi hambar, lalu tekan enter.
8. Pada bagian kanan bawah, pada Field Type, klik panah bawah, lalu pilih opsi tipe fungsi keanggotaan trimf
9. Pada bagian kanan bawah, pada Field params, ketikkan parameter parameter kurva trims lalu tekan enter. ubah default params menjadi [-4 0 7]. kolom pertama bisa diabaikan karena berada di luar rentang harga variabel makanan.
10. Lakukan 4 langkah terakhir di atas kurva pada kurva mf3 dengan mengubah kurva menjadi enak, dan mengisi params dengan [3 10 14] kolom ketiga diabaikan.

Gambar 5.5 mendefinisikan membership function untuk variable makanan
     
pendefinisian variable bonus

Variable Fis bonus telah ditentukan terdiri dari 3 fungsi keanggotaan yaitu: sedikit, sedang, dan banyak. pendefinisian fungsi keanggotaan bonus dilakukan melalui langkah langkah yang serupa dengan langkah dalam pendefinisian fungsi keanggotaan pelayanan. Field Range (dan juga Display Range) diset [0 30] untuk menampung semua rentang nilai keluaran. hasilnya diperlihatkan dalam gambar 5.6

Gambar 5.6 Mendefinisikan membership function untuk variable bonus

Semua variable telah didefinisikan, selanjutnya untuk membuka rule editor bisa dilakukan dengan dua cara yaitu:
1. Pada FIS editor atau membership function editor, pilih menu view lalu pilih edit rules
2. Pada MATLAB prompt, ketikkan ruleedit fisbonus

Penyisipan fungsi keanggotaan buatan sendiri
1. Buat sebuah M-file untuk fungsi keanggotaan myownmf
2. Buka membership function editor
3. Pilih edit -> add custom MF
4. Masukkan nama fungsi myownmf dalam file file M-File function name
5. Masukkan vector parameter dari fungsi dalam tanda kurung siku [...]
6. Masukkan nama yang unik dalam Field MF Name, nama itu harus berbeda dengan nama nama yang sudah ada
7. Klik OK
function derajat = myownmf(x, params)
lengthpar = length (params);
if lengthpar > 16 lengthpar = 16;
for i=1:length(x)
for j=1:lengthpar
if x(i) < params (j)
d(i) = params(j);
break
end
end
end
end
derajat = 0.1 *d
5.5 Rule Editor
Gambar 5.7 Rule Editor

Untuk menyisipkan rule pertama, langkah langkahnya sebagai berikut:
1. Dibawah variabel pelayanan, pilih mengecewakan.
2. Dibawah variabel makanan, pilih hambar
3. Dibawah block connection pilih OR
4. Dibawah variable bonus, pilih sedikit
5. Dalam Field Weight, set bobot rule diset 1 secara default
6. Klik add rule

Maka akan dihasilkan rule sebagai berikut:
1. if (pelayanan is mengecewakan) or (makanan is hambar) then bonus is sedikit (1)
2. if (pelayanan is bagis) then (bonus is sedang) (1)
3. if (pelayanan is memuaskan) or (makanan is enak) then (bonus is banyak) (1)

Untuk mengedit  rule tekan tombol Change rule. untuk mengubah format penampilan rule, pilih menu Option -> format lalu pilih jenis yang diinginkan: verbose, symbolic, atau index.
Gambar 5.8 Symbolic

Gambar 5.9 Indexed

5.6 Rule Viewer
Gambar 5.10 Rule Viewer

Kolom pertama adalah field input harga variabel pelayanan, dan kolom kedua untuk variabel makanan

5.7 Surface Viewer

Gambar 5.11 Surface Viewer

5.8 File Fis
Fis disimpan dengan ekstensi *.fis menggunakan format teks ASCII. file teks ini, bisa diedit, dimodifikasi, dan mudah dipahami. ketika menyimpan Fis ke workspace (memori sementara), berarti anda sedang membuat sebuah variabel dalam matlab environment berupa object atau structure, tetapi variabel tersebut akan ikut hilang ketika anda keluar dari matlab. oleh karenanya, jangan lupa untuk memastikan Fis juga disimpan ke disk dengan memilih menu file -> export -> to disk...

5.9 Penyisipan fungsi fungsi operator buatan sendiri
Dalam matlab, fungsi berupa matriks x, maka min (x) akan menghasilkan keluaran berupa vektor baris yang berisi elemen terkecil tiap kolom x, untuk fungsi min (x,y), keluarannya berupa array dengan size yang sama dengan x dan y sebagai contoh.
a = [1 2; 3 4];
b = [2 2; 2 2];
min(a, b)
Langkah berikutnya adalah menyisipkan dalam GUI fuzzy logic toolbox. caranya adalah sebagai berikut:
1. Buka FIS editor dengan mengetik fuzzy pada matlab prompt
2. Pad panel sebelah miri bawah, cari fungsi yang ingin anda ganti
3. Klik drop down menu, klik custom. sebuah kotak dialog akan muncul
4. Masukkan nama fungsi yang ingin anda definisikan lalu klik OK

5.10 Command Lines

Fuzzy Logic Toolbox mengizinkan kita sebagai pengguna untuk merancang dan membangun FIS langsung melalui Command Lines yang disimpan dalam sebuah M-File. Jika kita membuat file baris-baris perintah tersebut, untuk melakukan modifikasi selanjutnya lebih murah.

5.11 Variabel Struktur FIS

Struktur FIS jika dilihat melalui Command Lines dapat diasumsikan sebagai berikut jika FIS sudah disimpan dalam bentuk file fisbonus.fis maka untuk mengambil data tersebut maka kita harus mengetikkan pada MATLAB Prompt sebagai berikut


Gambar 5.12 Diagram blok isi variabel struktur FIS

Variabel a adalah variabel struktur FIS. Label-label pada sisi kiri menyatakan nama-nama field atau komponen dari variabel a yang berisi variabel struktur yang diasosiasikan dengan fisbonus.fis (Lihat gambar 1). Komponen dari struktur ini bisa diakses dengan mengetikan nama field setelah variabel a.

5.12 Fungsi - fungsi Penampil FIS

GUI Fuzzy Logic Toolbox yang dibahas ini memungkinkan kita untuk melakukan tiga hal sekaligus: merancang, memodifikasi, dan melihat FIS. Terdapat tiga fungsi MATLAB yang dikhususkan hanya untuk melihat FIS, sama halnya ketika kita membuka file yang hanya bisa dibaca atau readonly. Tiga fungsi tersebut adalah plotfisplotmf, dan gensurf. Misalkan kita telah mengambil file FIS:
    
    a=readfis('fisbonus')
 
Setelah itu beri perintah berikut:
    
    plot(a)

maka akan dihasilkan tampilan struktur FIS seperti berikut:

Gambar 5.13 Plotfis

5.13 Membangun FIS Melalui Command Lines

Tanpa GUI, Fuzzy Logic Toolbox memungkinkan kita membangun FIS dengan mudah, yaitu dengan menggunakan Command Lines atau baris-baris perintah yang bisa disimpan dalam sebuah M-file.


Gambar 5.14 gensurf

Untukk membangun sebuah FIS baru dengan Command Lines, buatlah perintah berikut:
Perintah newfis harus diberi argumen (masukan) nama FIS yang diinginkan, yang dalam hal ini fisbonus1. Keluaran newfis adalah sebuah struktur FIS. Karena jumlah input, output, dan rule belum ditentukan, maka kita lihat tanda kurung siku kosong pada komponen input, output, dan rule yang menunjukkan bahwa ketiganya adalah array kosong. Secara default newfis memilih tipe Mamdanu, operasi AND dilakukan dengan fungsi min, operasi OR dengan fungsi max, defuzzifikasi dengan fungsi centroid, implikasi dengan fungsi  min dan agregasi dengan fungsi max.

5.14 EVALUASI FIS

FIS yang telah kita bangun dengan Command Lines bisa dievaluasi atau dites dengan perintah berikut:

    evalfis ([3 8],a)

    ans =

    17.5616

Dengan argumen [3 8] berarti kita memasukkan pelayanan=3 dan makanan=8 ke dalam FIS a. Keluaran FIS adalah bonus = 17.6516

Fungsi evalfis dapat juga diberi multimasukan. Dengan memberi multimasukan maka kita akan mendapat multikeluaran. cth:

    masukan=[ ...

    3 8;

    2 9;

    5 2];

    evalfis (masukan,a)

    ans =

    17.6516

    16.0894

    10.4128

Artinya, masukan [3 8] menghasilkan keluaran bonus = 17.6516, masukan [2 9] menghasilkan keluaran bonus = 16.0894, masukan [5 2] mennghasilkam keluaran bonus = 10.4128.

5.15 MEMBANGUN FIS TIPE SUGENO

Membangun FIS tipe sugeno dengan GUI langkah-langkahnya sama dengan tipe mamdani. Pastikan memilih menu File → New FIS → Sugeno ketika pertama kali membuka GUI.

Persoalan yang akan dibahas yaitu bagaimana memodelkan hubungan sebuah input dengan sekolah output berdasarkan IF-THEN rules berikut:

    1. if input is low then output is line1

    2, if input is high then output is line2

Untuk mulai mendesain FIS tipe sugeno dengan command lines, pada MATLAB promp ketikkan:

sgn=newfis('fissgn')

sgn=

name: 'fissgn'

type: 'Mamdani'

andMethod: 'min'

orMethod: 'max'

defuzzMethod: 'centroid'

impMethod: 'min'

aggMethod: 'max'

input: []

output: []

rule: []

Pada fissgn diatas itu default memilih tipe Mamdani, untuk mengubah menjadi tipe Sugeno, ketikkan 

    sgn.type='sugeno'

Defuzzifikasi dalam FIS tipe sugeno tidak perlu memakai metode 'centroid'. Dalam tipe Sugeno, defuzzifikasi terdapat 2 tipe yaitu wtsum dan wtever

    sgn.defuzzMethod='wtever'

    sgn.impMethod='prod'

Variabel input didefenisikan dengan rentang [-5 5], mempunyai dua fungsi keanggotaan low dan high, masing-masing bertipe gaussian [4 -5] [4 5]

    sgn=addvar(sgn,'input',1,'input',[-5 5]);

    sgn=addvar(sgn,'input',1,'low','gaussmf',[4 -5]);

    sgn=addvar(sgn,'input',1,'high','gaussmf',[4 5]);

Variabel output didefenisikan dengan rentang [0 1], mempunyai dua fungsi keanggotaan garis line1 dan line2, masing-masing persamaan garis dengan parameter [1 -1] [1 1]

    sgn=addvar(sgn,'output',1,'output',[0 1]);

    sgn=addvar(sgn,'output',1,'line1','linear',[-1 -1]);

    sgn=addvar(sgn,'ouput',1,'line2','linear',[1 1]);

Untuk memasukkan IF-THEN rules yang sudah diberikan di atas ke dalam FIS sgn, ketikkan perintah berikut:

ruleList = [...

1 1 1 1

2 2 1 1];

sgn = addrule(sgn,ruleList);

Baris pertama ruleList adalah mengkodekan rule pertama

if input is low then output is line1

Baris pertama ruleList adalah mengkodekan rule pertama

if input is high then output is line2

 

Untuk menampilkan plot derajat keanggotaan dan output sebagai fungsi dari input, ketikkan:

    subplot(2,1,1), plotmf(sgn,'input',1)

    subplot(2,1,2), gensurf(sgn)

 

5.16 PERBANDINGAN FIS TIPE MAMDANI DAN SUGENO

Kelebihan FIS tipe Sugeno:

1. Efisien dalam komputasi

2. Cocok untuk pemodelan-pemodelan sistem linear, seperti PID controller

3. Cocok untuk digabung dengan teknik optimasi dan adaptif

4. Menjamin kontinuitas keluaran

5. Memungkinan dilakukan analisis matematis

Kelebihan FIS tipe Mamdani:

1. Bersfifat intuitif

2. Diterima secara luas

3. sangat cocok diberi human input

Fuzzy logic toolbox menyediakan fungsi mam2sug yang akan mengonversi FIS tipe Mamdani menjadi tipe Sugeno. Berikut diberi contoh bagaimana mongonversi FIS tipe Mamdani yang sudah dibuat sebelumnya, yaitu fisbonus, yang menjadi bertipe Sugeno:

fisbonus=readfis('fissbonus');

sgnfisbonus=mam2sug(fisbonus)

sgnfisbonus =

name: 'fisbonus'

type: 'sugeno'

andMethod: 'min'

orMethod: 'max'

defuzzMethod: 'wtever'

impMethod: 'min'

aggMethod: 'max'

input: [1x2 struct]

output: [1x1 struct]

rule: [1x3 struct]


5.17 MENGEDIT LANGSUNG DARI FILE FIS

Untuk mengedit sebuah file FIS bisa langsung mengetikkan perintah pada MATLAB

    fuzzy tipper

kemudian klik menu File → Export → To Disk lalu pilih folder untuk menyimpan. FIS tipper disimpan dengan nama file tipper.fis. Dengan menggunakan sembarang editor seperti notepad, wordpad atau matlab editor. akan terlihat isi file

[System]

Name='tipper'

Type = 'Mamdani'

version=2.0

NumInputs=2

NumOutputs=1

NumRules=3

AndMethod='min'

OrMethod='max'

ImpMethod='min'

AggMethod='max'

DefuzzMethod='centroid'


[Input1]

Name='service'

Range=[0 10]

NumMFs=3

MF1='poor':'gaussmf',[1.5 0]

MF2='good':'gaussmf',[1.5 5]

MF3='excellent':'gaussmf',[1.5 10]

 

[Input2]

Name='food'

Range=[0 10]

NumMFs=2

MF1='randcid':'trapmf',[0 0 1 3]

MF2='delicious':'trapmf',[7 9 10 10]

 

[Output1]

Name='tip'

Range=[0 30]

NumMFs=3

MF1='cheap':'trimf',[0 5 10]

MF2='average':'trimf',[10 15 20]

MF3='generous':'trimf',[20 25 30]

[Rules]

1 1, 1 (1) : 2

2 0, 2 (1) : 1

3 2, 3 (1) : 2

Tepat di bawah bagian [Rules] adalah matriks kode nomor membership function input1 (kolom pertama), input2 (kolom kedua), output1(kolom ketiga), bobot rule (kolom keempat dalam kurung), dan fuzzy logic (kolom kelima, 1 artinya AND dan 2 artinya OR). Jumlah baris sebanyak jumlah rule. Untuk contoh , baris ketiga dibaca:

IF Input1 is excellent OR Input2 is delicious THEN Output1 is generous.



1. Prosedur Kerja
  • Membaca buku fuzzy logic bab 5
  • Meringkas buku bab 5
  • Mencari video dan membuat video sendiri mengenai toolbox fuzzy logi
  • Putar video dan lakukan langkah langkah yang telah diberikan berdasarkan video dibawah
What is Fuzzy Logic Toolbox?
Video Simulasi


What is Fuzzy Logic Toolbox sini
Simulasi sini
Program matlab sini

Tidak ada komentar:

Posting Komentar