Fuzzy Inference System

117

Fuzzy Logic

Menurut Sri Kusuma Dewi, logika fuzzy merupakan salah satu komponen pembentuk Soft Computing. Dasar logika fuzzy adalah teori himpunan fuzzy. Pada teori himpunan fuzzy, peranan derajat keanggotaan sebagai penentu keberadaan elemen dalam suatu himpunan sangatlah penting. Nilai keanggotaan atau derajat keanggotaan atau membership function menjadi ciri utama dari penalaran dengan logika fuzzy tersebut (Kusumadewi S, Purnomo H, 2010).

Fuzzy logic merupakan penigkatan dari penerapan logika boolean, pada aljabar boolean yang hanya mengenal notasi 1 dan 0.Fuzzy logic memungkinkan keanggotaan bernilai antara 0 sampai dengan 1. Oleh sebab itu bisa dikatakan bahwa sebuah kondisi bisa bernilai sebagian benar dan sebagian salah pada saat bersamaan. Ada beberapa alasan mengapa orang menggunakan fuzzy logic, antara lain :

1.Konsep fuzzy logic mudah dimengerti. Konsep matematis yang mendasari penalaran fuzzysangat sederhana dan mudah dimengerti.

2.Fuzzy logic sangat fleksibel.

3.Fuzzy logic memiliki toleransi terhadap data-data yang tidak tepat.

4.Fuzzy logic mampu memodelkan fungsi-fungsi non-linear yang sangat kompleks.

5.Fuzzy logic dapat membangun dan mengaplikasikan pengalaman-pengalaman para pakar secara langsung tanpa harus melalui proses pelatihan.

6.Fuzzy logic dapat bekerjasama dengan teknik-teknik kendali secara konvensional.

7.Fuzzy logic didasarkan pada bahasa alami.

Sistem Inferensi Fuzzy (Fuzzy Inference System)

Sistem inferensi fuzzy (FIS) adalah sebuah sistem pengambilan keputusan yang didasarkan pada teori fuzzy, aturan fuzzyif-then dan logika fuzzy. Struktur dasar sistem inferensi fuzzy terdiri atas (Kuncahyo B, Ginardi R, Arieshanti I, 2012):

1.Sebuah basis aturan yang berisi aturan fuzzyif-then.

2.Basis data yang mendefinisikan fungsi keanggotaan himpunan fuzzy.

3.Unit pengambilan keputusan yang menyatakan operasi inferensi atau aturan-aturan yang ada.

4.Fuzzifikasi yang mentransformasikan masukan klasik (crisp) ke derajat tertentu sesuai dengan fungsi keanggotaan.

5.Defuzzifikasi yang mentransformasikan hasil inferensi fuzzy ke dalam bentuk crisp.

Sistem inferensi fuzzy (Fuzzy Inference System) pada dasarnya mendefinisikan pemetaan nonlinear dari vektor data inputmenjadi skalar output. Proses pemetaan melibatkan input/output fungsi keanggotaan, operator-operator fuzzy, aturan fuzzy if-then, agregasi dari himpunan output dan defuzzification (Hartono, 2010).

Download Fuzzy Inference Systems PHP

Saya menemukan FIS yang cukup bagus yang dishare Rizal Ardhi Rahmadani di https://github.com/reyzeal/fuzzy

berikut contoh penggunaannya :

use Reyzeal\Fuzzy;

$fuzzy = new Fuzzy(“Penerimaan SNMPTN”,”Tsukamoto”);

$fuzzy->input()-> addCategory(‘Alumni’)
-> addMembership(‘Sedikit’,”trapmf”,[0,0,40,1])
-> addMembership(‘Banyak’,”trapmf”,[40,60,1,1]);

$fuzzy->input()-> addCategory(‘UN’)
-> addMembership(‘Rendah’,”trapmf”,[0,0,30,50])
-> addMembership(‘Sedang’,”trapmf”,[40,60,70,90])
-> addMembership(‘Tinggi’,”trapmf”,[75,85,1,1]);

$fuzzy->output()-> addCategory(‘Diterima’)
-> addMembership(‘Sedikit’,”trapmf”,[0,0,10,20])
-> addMembership(‘Sedang’,”trapmf”,[10,40,50,60])
-> addMembership(‘Banyak’,”trapmf”,[50,80,1,1]);

$fuzzy->rules()-> add(‘Alumni_Sedikit AND UN_Rendah’) -> then(‘Diterima_Sedikit’);
$fuzzy->rules()-> add(‘Alumni_Sedikit AND UN_Tinggi’) -> then(‘Diterima_Sedang’);
$fuzzy->rules()-> add(‘Alumni_Banyak AND UN_Tinggi’) -> then(‘Diterima_Banyak’);

print_r($fuzzy -> calc([‘Alumni’ => 90,’UN’ => 80]));

Tetapi code awal hanya dapat digunakan untuk logika if xxxx and xxxx then zzzz
untuk keperluan tiga kondisi semisal if aaaa and bbbb and cccc then xxxxx maka kita perlu modifikasi kode awal.

use Reyzeal\Fuzzy;

$fuzzy = new Fuzzy(“Kualitas_Layanan”,”Tsukamoto”);

$fuzzy->input()-> addCategory(‘Persepsi’)
-> addMembership(‘STP’,”limf”,[1,2])
-> addMembership(‘TP’,”trimf”,[1,2,3])
-> addMembership(‘CP’,”trimf”,[2,3,4])
-> addMembership(‘P’,”trimf”,[3,4,5])
-> addMembership(‘SP’,”rimf”,[4,5]);

$fuzzy->input()-> addCategory(‘Minimum’)
-> addMembership(‘STP’,”limf”,[1,2])
-> addMembership(‘TP’,”trimf”,[1,2,3])
-> addMembership(‘CP’,”trimf”,[2,3,4])
-> addMembership(‘P’,”trimf”,[3,4,5])
-> addMembership(‘SP’,”rimf”,[4,5]);

$fuzzy->input()-> addCategory(‘Ideal’)
-> addMembership(‘STP’,”limf”,[1,2])
-> addMembership(‘TP’,”trimf”,[1,2,3])
-> addMembership(‘CP’,”trimf”,[2,3,4])
-> addMembership(‘P’,”trimf”,[3,4,5])
-> addMembership(‘SP’,”rimf”,[4,5]);

$fuzzy->output()-> addCategory(‘Kualitas’)
-> addMembership(‘STP’,”limf”,[1,2])
-> addMembership(‘TP’,”trimf”,[1,2,3])
-> addMembership(‘CP’,”trimf”,[2,3,4])
-> addMembership(‘P’,”trimf”,[3,4,5])
-> addMembership(‘SP’,”rimf”,[4,5]);

$fuzzy->rules()
-> add(‘Persepsi_STP AND Minimum_STP AND Ideal_STP’)
-> then(‘Kualitas_STP’);
$fuzzy->rules()
-> add(‘Persepsi_TP AND Minimum_TP AND Ideal_TP’)
-> then(‘Kualitas_TP’);
$fuzzy->rules()
-> add(‘Persepsi_CP AND Minimum_CP AND Ideal_CP’)
-> then(‘Kualitas_CP’);
$fuzzy->rules()
-> add(‘Persepsi_P AND Minimum_P AND Ideal_P’)
-> then(‘Kualitas_P’);
$fuzzy->rules()
-> add(‘Persepsi_SP AND Minimum_SP AND Ideal_SP’)
-> then(‘Kualitas_SP’);
$fuzzy->rules()
-> add(‘Persepsi_STP AND Minimum_STP AND Ideal_STP’)
-> then(‘Kualitas_STP’);
$fuzzy->rules()
-> add(‘Persepsi_TP AND Minimum_STP AND Ideal_STP’)
-> then(‘Kualitas_TP’);
$fuzzy->rules()
-> add(‘Persepsi_STP AND Minimum_TP AND Ideal_STP’)
-> then(‘Kualitas_TP’);
$fuzzy->rules()
-> add(‘Persepsi_TP AND Minimum_CP AND Ideal_CP’)
-> then(‘Kualitas_TP’);
$fuzzy->rules()
-> add(‘Persepsi_CP AND Minimum_TP AND Ideal_CP’)
-> then(‘Kualitas_CP’);
$fuzzy->rules()
-> add(‘Persepsi_CP AND Minimum_CP AND Ideal_TP’)
-> then(‘Kualitas_CP’);
$fuzzy->rules()
-> add(‘Persepsi_CP AND Minimum_P AND Ideal_P’)
-> then(‘Kualitas_CP’);
$fuzzy->rules()
-> add(‘Persepsi_P AND Minimum_CP AND Ideal_P’)
-> then(‘Kualitas_P’);
$fuzzy->rules()
-> add(‘Persepsi_P AND Minimum_P AND Ideal_CP’)
-> then(‘Kualitas_P’);
$fuzzy->rules()
-> add(‘Persepsi_P AND Minimum_SP AND Ideal_SP’)
-> then(‘Kualitas_P’);
$fuzzy->rules()
-> add(‘Persepsi_SP AND Minimum_P AND Ideal_SP’)
-> then(‘Kualitas_SP’);
$fuzzy->rules()
-> add(‘Persepsi_SP AND Minimum_SP AND Ideal_P’)
-> then(‘Kualitas_SP’);
$fuzzy->rules()
-> add(‘Persepsi_P AND Minimum_CP AND Ideal_CP’)
-> then(‘Kualitas_P’);
$fuzzy->rules()
-> add(‘Persepsi_CP AND Minimum_CP AND Ideal_P’)
-> then(‘Kualitas_CP’);
$fuzzy->rules()
-> add(‘Persepsi_CP AND Minimum_P AND Ideal_CP’)
-> then(‘Kualitas_CP’);
$fuzzy->rules()
-> add(‘Persepsi_P AND Minimum_TP AND Ideal_P’)
-> then(‘Kualitas_P’);
$fuzzy->rules()
-> add(‘Persepsi_P AND Minimum_SP AND Ideal_P’)
-> then(‘Kualitas_P’);
$fuzzy->rules()
-> add(‘Persepsi_P AND Minimum_P AND Ideal_SP’)
-> then(‘Kualitas_P’);
$fuzzy->rules()
-> add(‘Persepsi_STP AND Minimum_P AND Ideal_P’)
-> then(‘Kualitas_STP’);
$fuzzy->rules()
-> add(‘Persepsi_TP AND Minimum_P AND Ideal_P’)
-> then(‘Kualitas_TP’);

$z = $fuzzy -> calc([
‘Persepsi’ => 3.67,
‘Minimum’ => 2.20,
‘Ideal’ => 3.40
]);

SILAKAN KALO MEMBUTUHKAN HASIL MODIFIKASI FUZZY INFERENCE SISTEMS ATAU FUZZY INFERENCE ENGINE REYZEAL BISA MENGHUBUNGI ADMIN.

100%
Its Work
  • Coding