BAB 5.10 - 5.17

 BAB 5

FUZZY LOGIC TOOLBOX

5.10 - 5.17

(Referensi : Buku Belajar Fuzzy Logic Menggunakan MATLAB Oleh Dr. Eng. Agus Naba)


Fuzzy Logic Toolbox merupakan sekumpulan tool yang akan membantu kita merancang sistem fuzzy untuk diaplikasikan dalam berbagai bidang, seperti automatic control, signal processing, identification system, pattern recognition, time series prediction, dan banyak lagi yang menggunakan MATLAB.

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 1 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 plotfis, plotmf, 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 2 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 3 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.

 




Download HTML ( disini )
Download contoh program ( disini )