Algoritma Fuzzy Logic 4


Algoritma Fuzzy Logic adalah salah satu algoritma yang digunakan untuk mengelompokan data-data ke dalam beberapa kelompok. Bisa juga digunakan untuk menentukan peringkat dari beberapa inputan data. Contoh kasus yang akan dibahas kali ini adalah menentukan lulus tidaknya siswa.
Contoh lain mengenai algoritma ini dapat dilihat di Algoritma FIS (Fuzzy Inference System): Tipe Tsukamoto



Diasumsikan ada 4 data skor yang sudah diketahui datanya
Maka tentukan apakah skor tersebut termasuk dalam golongan lulus atau tidak
Contoh inputan:

NamaSkorSkorSkor
Andi6707
Budi5803
Dedi7405
Erdi5509

Langkah pertama adalah memasukkan data-data yang digunakan.
Contoh data adalah sebagai berikut

Dim skor(3, 2) As Double
skor(0, 0) = 6
skor(0, 1) = 70
skor(0, 2) = 7
skor(1, 0) = 5
skor(1, 1) = 80
skor(1, 2) = 3
skor(2, 0) = 7
skor(2, 1) = 40
skor(2, 2) = 5
skor(3, 0) = 5
skor(3, 1) = 50
skor(3, 2) = 9

Langkah-langkah penggunaan algoritma ini adalah

1. Tentukan Kriteria Penilaian
Nilai tersebut akan dikelompokan ke dalam beberapa golongan, misalnya 3 golongan, yaitu rendah, sedang, tinggi
Jarak untuk masing-masing golongan tersebut harus sama
Sehingga, dalam kasus ini:
kolom 1: rendah untuk nilai antara 0 – 3.33, sedang untuk nilai antara 3.33 – 6.66, tinggi untuk nilai antara 6.66 = 10
kolom 2: rendah untuk nilai antara 0 – 33.33, sedang untuk nilai antara 33.33 – 66.66, tinggi untuk nilai antara 66.66 = 100
kolom 3: rendah untuk nilai antara 0 – 3.33, sedang untuk nilai antara 3.33 – 6.66, tinggi untuk nilai antara 6.66 = 10

2. Konversi Skor menjadi Penilaian
Setelah menentukan kriteria penilaian, maka lakukan konversi skor tersebut.
Kelompokan skor inputan kedalam golongan rendah / sedang / tinggi sesuai kriteria diatas, kemudian hitung skor fuzzy nya sesuai rumus yang ditentukan
Rumus dapat dilihat langsung pada perhitungan dibawah.
Jika sebuah inputan termasuk dalam golongan rendah dan sedang, maka hitunglah skor fuzzy nya sebanyak 2 kali, yaitu untuk skor golongan rendah dan skor golongan sedang.

ReDim skorFuzzy(2, 2)

'Jika inputan skor pertama termasuk golongan rendah
If skor(i, 0) >= 0 And skor(i, 0) <= 6.66 Then
	If skor(i, 0) < 0 And skor(i, 0) > 6.66 Then
		skorFuzzy(0, 0) = 0
	ElseIf skor(i, 0) >= 0 And skor(i, 0) <= 3.33 Then
		skorFuzzy(0, 0) = skor(i, 0) / 3.33
	ElseIf skor(i, 0) >= 3.33 And skor(i, 0) <= 6.66 Then
		skorFuzzy(0, 0) = (6.66 - skor(i, 0)) / 3.33
	End If
End If

'Jika inputan skor pertama termasuk golongan sedang
If skor(i, 0) >= 3.33 And skor(i, 0) <= 10 Then
	If skor(i, 0) < 3.33 And skor(i, 0) > 10 Then
		skorFuzzy(0, 1) = 0
	ElseIf skor(i, 0) >= 3.33 And skor(i, 0) <= 6.66 Then
		skorFuzzy(0, 1) = (skor(i, 0) - 3.33) / 3.33
	ElseIf skor(i, 0) >= 6.66 And skor(i, 0) <= 10 Then
		skorFuzzy(0, 1) = (10 - skor(i, 0)) / 3.33
	End If
End If

'Jika inputan skor pertama termasuk golongan tinggi
If skor(i, 0) >= 6.66 Then
	If skor(i, 0) < 6.66 Then
		skorFuzzy(0, 2) = 0
	ElseIf skor(i, 0) >= 6.66 And skor(i, 0) <= 10 Then
		skorFuzzy(0, 2) = (skor(i, 0) - 6.66) / 3.33
	ElseIf skor(i, 0) >= 10 Then
		skorFuzzy(0, 2) = 1
	End If
End If

'Jika inputan skor kedua termasuk golongan rendah
If skor(i, 1) >= 0 And skor(i, 1) <= 66.66 Then
	If skor(i, 1) < 0 And skor(i, 1) > 66.66 Then
		skorFuzzy(1, 0) = 0
	ElseIf skor(i, 1) >= 0 And skor(i, 1) <= 33.33 Then
		skorFuzzy(1, 0) = skor(i, 1) / 33.33
	ElseIf skor(i, 1) >= 33.33 And skor(i, 1) <= 66.66 Then
		skorFuzzy(1, 0) = (66.66 - skor(i, 1)) / 33.33
	End If
End If

'Jika inputan skor kedua termasuk golongan sedang
If skor(i, 1) >= 33.33 And skor(i, 1) <= 100 Then
	If skor(i, 1) < 33.33 And skor(i, 1) > 100 Then
		skorFuzzy(1, 1) = 0
	ElseIf skor(i, 1) >= 33.33 And skor(i, 1) <= 6.666 Then
		skorFuzzy(1, 1) = (skor(i, 1) - 33.33) / 33.33
	ElseIf skor(i, 1) >= 66.66 And skor(i, 1) <= 100 Then
		skorFuzzy(1, 1) = (100 - skor(i, 1)) / 33.33
	End If
End If

'Jika inputan skor kedua termasuk golongan tinggi
If skor(i, 1) >= 66.66 Then
	If skor(i, 1) < 66.66 Then
		skorFuzzy(1, 2) = 0
	ElseIf skor(i, 1) >= 66.66 And skor(i, 1) <= 100 Then
		skorFuzzy(1, 2) = (skor(i, 1) - 66.66) / 33.33
	ElseIf skor(i, 1) >= 100 Then
		skorFuzzy(1, 2) = 1
	End If
End If

'Jika inputan skor ketiga termasuk golongan rendah
If skor(i, 2) >= 0 And skor(i, 2) <= 6.66 Then
	If skor(i, 2) < 0 And skor(i, 2) > 6.66 Then
		skorFuzzy(2, 0) = 0
	ElseIf skor(i, 2) >= 0 And skor(i, 2) <= 3.33 Then
		skorFuzzy(2, 0) = skor(i, 2) / 3.33
	ElseIf skor(i, 2) >= 3.33 And skor(i, 2) <= 6.66 Then
		skorFuzzy(2, 0) = (6.66 - skor(i, 2)) / 3.33
	End If
End If

'Jika inputan skor ketiga termasuk golongan sedang
If skor(i, 2) >= 3.33 And skor(i, 2) <= 10 Then
	If skor(i, 2) < 3.33 And skor(i, 2) > 10 Then
		skorFuzzy(2, 1) = 0
	ElseIf skor(i, 2) >= 3.33 And skor(i, 2) <= 6.66 Then
		skorFuzzy(2, 1) = (skor(i, 2) - 3.33) / 3.33
	ElseIf skor(i, 2) >= 6.66 And skor(i, 2) <= 10 Then
		skorFuzzy(2, 1) = (10 - skor(i, 2)) / 3.33
	End If
End If

'Jika inputan skor ketiga termasuk golongan tinggi
If skor(i, 2) >= 6.66 Then
	If skor(i, 2) < 6.66 Then
		skorFuzzy(2, 2) = 0
	ElseIf skor(i, 2) >= 6.66 And skor(i, 2) <= 10 Then
		skorFuzzy(2, 2) = (skor(i, 2) - 6.66) / 3.33
	ElseIf skor(i, 2) >= 10 Then
		skorFuzzy(2, 2) = 1
	End If
End If

3. Tentukan tabel Rule Base System
Rule Base System adalah tabel yang digunakan untuk menentukan skor fuzzy yang sudah dihitung diatas masuk ke dalam Rule yang mana.
Hasil output dari setiap rule dapat diganti sesuai kebutuhan
Contoh Rule Base System adalah:

[table]
Rule,Nilai1,Nilai2,Nilai3,Fuzzy Output
R1,SEDIKIT,SEDIKIT,BURUK,TIDAK LULUS
R2,SEDIKIT,SEDIKIT,CUKUP,TIDAK LULUS
R3,SEDIKIT,SEDIKIT,BAIK,TIDAK LULUS
R4,SEDIKIT,SEDANG,BURUK,TIDAK LULUS
R5,SEDIKIT,SEDANG,CUKUP,TIDAK LULUS
R6,SEDIKIT,SEDANG,BAIK,TIDAK LULUS
R7,SEDIKIT,BANYAK,BURUK,TIDAK LULUS
R8,SEDIKIT,BANYAK,CUKUP,LULUS
R9,SEDIKIT,BANYAK,BAIK,LULUS
R10,SEDANG,SEDIKIT,BURUK,TIDAK LULUS
R11,SEDANG,SEDIKIT,CUKUP,TIDAK LULUS
R12,SEDANG,SEDIKIT,BAIK,LULUS
R13,SEDANG,SEDANG,BURUK,TIDAK LULUS
R14,SEDANG,SEDANG,CUKUP,LULUS
R15,SEDANG,SEDANG,BAIK,LULUS
R16,SEDANG,BANYAK,BURUK,TIDAK LULUS
R17,SEDANG,BANYAK,CUKUP,LULUS
R18,SEDANG,BANYAK,BAIK,LULUS
R19,BANYAK,SEDIKIT,BURUK,TIDAK LULUS
R20,BANYAK,SEDIKIT,CUKUP,LULUS
R21,BANYAK,SEDIKIT,BAIK,LULUS
R22,BANYAK,SEDANG,BURUK,TIDAK LULUS
R23,BANYAK,SEDANG,CUKUP,LULUS
R24,BANYAK,SEDANG,BAIK,LULUS
R25,BANYAK,BANYAK,BURUK,TIDAK LULUS
R26,BANYAK,BANYAK,CUKUP,LULUS
R27,BANYAK,BANYAK,BAIK,LULUS
[/table]

4. Tentukan nilai diagram Fuzzy Output
Fuzzy Output digunakan untuk mengetahui batas skor manakah yang termasuk kelompok LULUS dan TIDAK LULUS
Contoh dalam kasus ini, skor 0-60 termasuk dalam TIDAK LULUS, dan skor 61-100 termasuk dalam LULUS

5. Tentukan nilai alpha predikat
Alpha predikat adalah nilai minimal dari nilai skor fuzzy yang sudah dihitung pada perhitungan sebelumnya.

If skorFuzzy(0, iKolomKriteria1) <= skorFuzzy(1, iKolomKriteria2) And skorFuzzy(0, iKolomKriteria1) <= skorFuzzy(2, iKolomKriteria3) Then
	sFuzzyAlpha(iKolomKriteria1, iKolomKriteria2, iKolomKriteria3) = skorFuzzy(0, iKolomKriteria1)
ElseIf skorFuzzy(1, iKolomKriteria2) <= skorFuzzy(0, iKolomKriteria1) And skorFuzzy(1, iKolomKriteria2) <= skorFuzzy(2, iKolomKriteria3) Then
	sFuzzyAlpha(iKolomKriteria1, iKolomKriteria2, iKolomKriteria3) = skorFuzzy(1, iKolomKriteria2)
ElseIf skorFuzzy(2, iKolomKriteria3) <= skorFuzzy(0, iKolomKriteria1) And skorFuzzy(2, iKolomKriteria3) <= skorFuzzy(1, iKolomKriteria2) Then
	sFuzzyAlpha(iKolomKriteria1, iKolomKriteria2, iKolomKriteria3) = skorFuzzy(2, iKolomKriteria3)
End If

6. Tentukan nilai Z
Z adalah konversi nilai Fuzzy Output sesuai dengan tabel Rule Base System yang telah dihitung sebelumnya
Nilai yang diambil adalah nilai maksimal dari nilai pada Diagram Fuzzy Output
Pada contoh ini, maka setiap Rule TIDAK LULUS bernilai 60, dan setiap Rule LULUS bernilai 100

If iKolomKriteria1 = 0 And iKolomKriteria2 = 0 And iKolomKriteria3 = 0 Then
	sFuzzyZ(iKolomKriteria1, iKolomKriteria2, iKolomKriteria3) = 60
ElseIf iKolomKriteria1 = 0 And iKolomKriteria2 = 0 And iKolomKriteria3 = 1 Then
	sFuzzyZ(iKolomKriteria1, iKolomKriteria2, iKolomKriteria3) = 60
ElseIf iKolomKriteria1 = 0 And iKolomKriteria2 = 0 And iKolomKriteria3 = 2 Then
	sFuzzyZ(iKolomKriteria1, iKolomKriteria2, iKolomKriteria3) = 60
ElseIf iKolomKriteria1 = 0 And iKolomKriteria2 = 1 And iKolomKriteria3 = 0 Then
	sFuzzyZ(iKolomKriteria1, iKolomKriteria2, iKolomKriteria3) = 60
ElseIf iKolomKriteria1 = 0 And iKolomKriteria2 = 1 And iKolomKriteria3 = 1 Then
	sFuzzyZ(iKolomKriteria1, iKolomKriteria2, iKolomKriteria3) = 60
ElseIf iKolomKriteria1 = 0 And iKolomKriteria2 = 1 And iKolomKriteria3 = 2 Then
	sFuzzyZ(iKolomKriteria1, iKolomKriteria2, iKolomKriteria3) = 60
ElseIf iKolomKriteria1 = 0 And iKolomKriteria2 = 2 And iKolomKriteria3 = 0 Then
	sFuzzyZ(iKolomKriteria1, iKolomKriteria2, iKolomKriteria3) = 60
ElseIf iKolomKriteria1 = 0 And iKolomKriteria2 = 2 And iKolomKriteria3 = 1 Then
	sFuzzyZ(iKolomKriteria1, iKolomKriteria2, iKolomKriteria3) = 100
ElseIf iKolomKriteria1 = 0 And iKolomKriteria2 = 2 And iKolomKriteria3 = 2 Then
	sFuzzyZ(iKolomKriteria1, iKolomKriteria2, iKolomKriteria3) = 100
ElseIf iKolomKriteria1 = 1 And iKolomKriteria2 = 0 And iKolomKriteria3 = 0 Then
	sFuzzyZ(iKolomKriteria1, iKolomKriteria2, iKolomKriteria3) = 60
ElseIf iKolomKriteria1 = 1 And iKolomKriteria2 = 0 And iKolomKriteria3 = 1 Then
	sFuzzyZ(iKolomKriteria1, iKolomKriteria2, iKolomKriteria3) = 60
ElseIf iKolomKriteria1 = 1 And iKolomKriteria2 = 0 And iKolomKriteria3 = 2 Then
	sFuzzyZ(iKolomKriteria1, iKolomKriteria2, iKolomKriteria3) = 100
ElseIf iKolomKriteria1 = 1 And iKolomKriteria2 = 1 And iKolomKriteria3 = 0 Then
	sFuzzyZ(iKolomKriteria1, iKolomKriteria2, iKolomKriteria3) = 60
ElseIf iKolomKriteria1 = 1 And iKolomKriteria2 = 1 And iKolomKriteria3 = 1 Then
	sFuzzyZ(iKolomKriteria1, iKolomKriteria2, iKolomKriteria3) = 100
ElseIf iKolomKriteria1 = 1 And iKolomKriteria2 = 1 And iKolomKriteria3 = 2 Then
	sFuzzyZ(iKolomKriteria1, iKolomKriteria2, iKolomKriteria3) = 100
ElseIf iKolomKriteria1 = 1 And iKolomKriteria2 = 2 And iKolomKriteria3 = 0 Then
	sFuzzyZ(iKolomKriteria1, iKolomKriteria2, iKolomKriteria3) = 60
ElseIf iKolomKriteria1 = 1 And iKolomKriteria2 = 2 And iKolomKriteria3 = 1 Then
	sFuzzyZ(iKolomKriteria1, iKolomKriteria2, iKolomKriteria3) = 100
ElseIf iKolomKriteria1 = 1 And iKolomKriteria2 = 2 And iKolomKriteria3 = 2 Then
	sFuzzyZ(iKolomKriteria1, iKolomKriteria2, iKolomKriteria3) = 100
ElseIf iKolomKriteria1 = 2 And iKolomKriteria2 = 0 And iKolomKriteria3 = 0 Then
	sFuzzyZ(iKolomKriteria1, iKolomKriteria2, iKolomKriteria3) = 60
ElseIf iKolomKriteria1 = 2 And iKolomKriteria2 = 0 And iKolomKriteria3 = 1 Then
	sFuzzyZ(iKolomKriteria1, iKolomKriteria2, iKolomKriteria3) = 100
ElseIf iKolomKriteria1 = 2 And iKolomKriteria2 = 0 And iKolomKriteria3 = 2 Then
	sFuzzyZ(iKolomKriteria1, iKolomKriteria2, iKolomKriteria3) = 100
ElseIf iKolomKriteria1 = 2 And iKolomKriteria2 = 1 And iKolomKriteria3 = 0 Then
	sFuzzyZ(iKolomKriteria1, iKolomKriteria2, iKolomKriteria3) = 60
ElseIf iKolomKriteria1 = 2 And iKolomKriteria2 = 1 And iKolomKriteria3 = 1 Then
	sFuzzyZ(iKolomKriteria1, iKolomKriteria2, iKolomKriteria3) = 100
ElseIf iKolomKriteria1 = 2 And iKolomKriteria2 = 1 And iKolomKriteria3 = 2 Then
	sFuzzyZ(iKolomKriteria1, iKolomKriteria2, iKolomKriteria3) = 100
ElseIf iKolomKriteria1 = 2 And iKolomKriteria2 = 2 And iKolomKriteria3 = 0 Then
	sFuzzyZ(iKolomKriteria1, iKolomKriteria2, iKolomKriteria3) = 60
ElseIf iKolomKriteria1 = 2 And iKolomKriteria2 = 2 And iKolomKriteria3 = 1 Then
	sFuzzyZ(iKolomKriteria1, iKolomKriteria2, iKolomKriteria3) = 100
ElseIf iKolomKriteria1 = 2 And iKolomKriteria2 = 2 And iKolomKriteria3 = 2 Then
	sFuzzyZ(iKolomKriteria1, iKolomKriteria2, iKolomKriteria3) = 100
End If

7. Hitung skor akhir
Skor akhir adalah jumlah dari (nilai alpha predikat * nilai Z) dibagi dengan jumlah (nilai alpha predikat)

skorAkhir(i) = iTotalAlphaZ / iTotalAlpha

Hasil akhir adalah: (klik untuk perbesar gambar)

ss2

Contoh modul / source code dalam bahasa VB (Visual Basic) dapat didownload disini:



Jika membutuhkan jasa kami dalam pembuatan program, keterangan selanjutnya dapat dilihat di Fasilitas dan Harga
Jika ada yang kurang paham dengan langkah-langkah algoritma diatas, silahkan berikan komentar Anda.
Selamat mencoba.


Tinggalkan sebuah komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

4 pemikiran di “Algoritma Fuzzy Logic

  • calvim

    Apakah rule tersebut memiliki ketentuan tersendiri atau dibuat berdasarkan preferensi kita masing2? atau ada kriteria khusus mengenai kasus tertentu? Terima kasih

    • pip Penulis

      Tabel Rule Base System yang tercatat pada poin nomor 3 adalah kombinasi dari keseluruhan nilai kriteria yang tersedia. Mengingat pada kriteria 1 terdapat 3 nilai (SEDIKIT, SEDANG, BANYAK), kriteria 2 terdapat 3 nilai (SEDIKIT, SEDANG, BANYAK), kriteria 3 terdapat 3 nilai (BAIK, CUKUP, BURUK), maka kombinasi tabel rule adalah 3 x 3 x 3 = 27 buah. Jika dalam kasus yang anda miliki hanya menggunakan 2 kriteria dimana kriteria 1 memiliki 5 nilai dan kriteria 2 memiliki 4 nilai maka kombinasi tabel rule adalah 5 x 4 = 20.

      Cara menentukan nilai pada kolom fuzzy output tentunya mengacu dari data yang telah tersedia. Jika tidak ada referensi mengenai aturan yang dipakai maka silahkan ditentukan berdasarkan preferensi anda.