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 2 Plotfis
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.