Contoh Perhitungan Fuzzy Tahani untuk Pemilihan Sepeda Motor (Langkah demi Langkah)

Pengantar

Metode Fuzzy Tahani adalah salah satu penerapan logika fuzzy pada basis data untuk melakukan pencarian atau pemberian rekomendasi berdasarkan kriteria yang sifatnya tidak pasti (samar), misalnya "harga murah", "kapasitas mesin sedang", atau "irit bensin". Berbeda dengan basis data biasa yang hanya mengenal jawaban benar/salah (1 atau 0), Fuzzy Tahani memberikan derajat keanggotaan antara 0 sampai 1, sehingga data yang "agak murah" atau "hampir sedang" tetap bisa diukur dan dibandingkan.

Artikel ini akan membahas langkah demi langkah cara menghitung Fuzzy Tahani secara manual, mulai dari menentukan variabel, menentukan kurva keanggotaan, menghitung derajat keanggotaan, sampai menghasilkan rekomendasi akhir. Studi kasus yang digunakan adalah pemilihan sepeda motor, karena kasus ini cukup umum ditemui dan mudah dibayangkan oleh pembaca.

Artikel ini ditulis untuk pembaca umum yang baru belajar logika fuzzy. Jika Anda sudah familier dengan istilah "derajat keanggotaan" atau "fire strength", Anda bisa langsung melompat ke bagian Langkah 3.

Studi Kasus: Pemilihan Sepeda Motor

Misalkan ada sebuah sistem rekomendasi yang membantu calon pembeli memilih sepeda motor berdasarkan dua kriteria:

  • Harga (dalam Rupiah)
  • Kapasitas Mesin (dalam cc)

Berikut data 3 unit sepeda motor yang akan kita jadikan contoh perhitungan:

NoNama MotorHarga (Rp)Kapasitas Mesin (cc)
1Motor A16.000.000125
2Motor B21.000.000155
3Motor C13.000.000110

Pembeli ingin mencari motor dengan kriteria "Harga Murah" DAN "Kapasitas Mesin Kecil". Mari kita selesaikan dengan metode Fuzzy Tahani.


Langkah 1: Menentukan Variabel dan Himpunan Fuzzy

Langkah pertama adalah menentukan variabel fuzzy apa saja yang dipakai, lalu menentukan himpunan (label) linguistik untuk masing-masing variabel, diurutkan dari nilai rendah ke tinggi.

VariabelHimpunan (urut dari rendah ke tinggi)
HargaMurah → Sedang → Mahal
Kapasitas MesinKecil → Sedang → Besar

Karena tiap variabel memiliki 3 himpunan, otomatis akan terbentuk 1 kurva linear turun (himpunan pertama), 1 kurva segitiga (himpunan tengah), dan 1 kurva linear naik (himpunan terakhir) — sesuai kaidah yang akan dijelaskan pada langkah berikutnya.


Langkah 2: Menentukan Fungsi Keanggotaan (Kurva)

Setelah himpunan ditentukan, kita tentukan domain (rentang angka) untuk setiap himpunan, biasanya berdasarkan data historis atau kesepakatan pakar. Jenis kurva yang dipakai mengikuti posisi himpunan tersebut dalam urutannya:

Kurva Linear Turun

Dipakai untuk himpunan dengan nilai paling rendah (misalnya "Murah", "Kecil"). Semakin besar nilai x, semakin kecil derajat keanggotaannya.

μ(x) = 1                jika x ≤ b
μ(x) = (c − x) / (c − b)   jika b < x < c
μ(x) = 0                jika x ≥ c
Kenapa memakai b dan c, bukan a? Pada kurva linear turun biasanya ada 3 titik batas (bawah = a, tengah = b, atas = c), tapi rumus keanggotaannya hanya membutuhkan 2 titik: titik saat keanggotaan mulai bernilai 1 (b) dan titik saat keanggotaan menjadi 0 (c). Titik "batas bawah" (a) biasanya hanya dipakai sebagai referensi visual/domain minimum, bukan bagian dari rumus.

Kurva Segitiga

Dipakai untuk himpunan di tengah (misalnya "Sedang"). Kurva ini naik dulu lalu turun, karena punya batas jelas di kiri dan kanan.

μ(x) = 0                jika x ≤ a atau x ≥ c
μ(x) = (x − a) / (b − a)   jika a < x ≤ b
μ(x) = (c − x) / (c − b)   jika b < x < c

Kurva Linear Naik

Dipakai untuk himpunan dengan nilai paling tinggi (misalnya "Mahal", "Besar"). Kebalikan dari linear turun — semakin besar nilai x, semakin besar derajat keanggotaannya.

μ(x) = 0                jika x ≤ a
μ(x) = (x − a) / (b − a)   jika a < x < b
μ(x) = 1                jika x ≥ b

Berikut domain yang kita tentukan untuk studi kasus ini:

VariabelHimpunanFungsiBatas BawahBatas TengahBatas Atas
Harga (Rp)MurahLinear Turun10.000.00014.000.00018.000.000
SedangSegitiga14.000.00019.000.00024.000.000
MahalLinear Naik20.000.00026.000.00032.000.000
Kapasitas Mesin (cc)KecilLinear Turun100115130
SedangSegitiga115150185
BesarLinear Naik150200250
0.00 0.25 0.50 0.75 1.00 10jt 14jt 18jt 19jt 22jt 26jt 30jt Domain Harga (Rupiah) μ(x) Murah (Linear Turun) Sedang (Segitiga) Mahal (Linear Naik)

Gambar 1. Kurva keanggotaan variabel Harga (Murah, Sedang, Mahal)

0.00 0.25 0.50 0.75 1.00 100 115 130 150 185 200 250 Domain Kapasitas Mesin (cc) μ(x) Kecil (Linear Turun) Sedang (Segitiga) Besar (Linear Naik)

Gambar 2. Kurva keanggotaan variabel Kapasitas Mesin (Kecil, Sedang, Besar)

Perhatikan bahwa domain antar himpunan yang bersebelahan boleh bertumpang tindih (overlap) — misalnya batas atas "Murah" (18.000.000) sama dengan batas bawah "Sedang" (14.000.000–24.000.000). Ini normal dan justru menjadi ciri khas himpunan fuzzy, bukan kesalahan.

Langkah 3: Fuzzifikasi (Menghitung Derajat Keanggotaan)

Sekarang kita hitung derajat keanggotaan setiap motor untuk tiap himpunan, menggunakan rumus dan domain yang sudah ditentukan.

Motor A — Harga Rp16.000.000

Nilai ini berada di antara batas tengah (14.000.000) dan batas atas (18.000.000) himpunan "Murah", sehingga memakai rumus linear turun bagian tengah:

μMurah(16.000.000) = (18.000.000 − 16.000.000) / (18.000.000 − 14.000.000)
μMurah(16.000.000) = 2.000.000 / 4.000.000 = 0,50

Untuk himpunan "Sedang" (segitiga), nilai 16.000.000 berada di sisi naik (antara batas bawah 14.000.000 dan batas tengah 19.000.000):

μSedang(16.000.000) = (16.000.000 − 14.000.000) / (19.000.000 − 14.000.000)
μSedang(16.000.000) = 2.000.000 / 5.000.000 = 0,40

Untuk himpunan "Mahal" (linear naik), nilai 16.000.000 masih di bawah batas bawah (20.000.000), sehingga μMahal = 0.

0.00 0.25 0.50 0.75 1.00 10jt 14jt 18jt 19jt 22jt 26jt 30jt Domain Harga (Rupiah) μ(x) Murah (Linear Turun) Sedang (Segitiga) Mahal (Linear Naik) Motor A Motor B Motor C

Gambar 3. Posisi harga Motor A, B, dan C pada kurva keanggotaan Harga — titik pada garis putus-putus menunjukkan nilai μ di setiap himpunan

Motor A — Kapasitas Mesin 125 cc

μKecil(125) = (130 − 125) / (130 − 115) = 5 / 15 = 0,33
μSedang(125) = (125 − 115) / (150 − 115) = 10 / 35 = 0,29
μBesar(125) = 0  (karena 125 masih di bawah batas bawah 150)
0.00 0.25 0.50 0.75 1.00 100 115 130 150 185 200 250 Domain Kapasitas Mesin (cc) μ(x) Kecil (Linear Turun) Sedang (Segitiga) Besar (Linear Naik) Motor A Motor B Motor C

Gambar 4. Posisi kapasitas mesin Motor A, B, dan C pada kurva keanggotaan Kapasitas Mesin

Dengan cara yang sama, berikut hasil fuzzifikasi untuk ketiga motor:

MotorHargaKapasitas Mesin
MurahSedangMahalKecilSedangBesar
Motor A0,500,4000,330,290
Motor B00,600,1700,860,10
Motor C1,00001,0000
Motor C memiliki harga 13.000.000 (di bawah batas tengah "Murah" 14.000.000) dan kapasitas 110 cc (di bawah batas tengah "Kecil" 115), sehingga langsung mendapat derajat keanggotaan penuh (1,00) pada kedua himpunan tersebut — ini sesuai definisi kurva linear turun yang bernilai 1 untuk x ≤ batas tengah.

Langkah 4: Membentuk Query dan Menghitung Fire Strength

Setelah semua derajat keanggotaan didapat, langkah berikutnya adalah membentuk query (kriteria pencarian) dan menghitung fire strength (nilai akhir hasil kombinasi). Ingat kembali kriteria pembeli:

"Cari motor dengan Harga MURAH DAN Kapasitas Mesin KECIL"

Karena operatornya adalah AND, maka fire strength dihitung menggunakan fungsi MIN (nilai minimum) dari kedua derajat keanggotaan yang relevan:

Fire Strength = MIN( μMurah , μKecil )
MotorμMurahμKecilFire Strength (MIN)
Motor A0,500,330,33
Motor B000
Motor C1,001,001,00
Kesalahan yang sering terjadi: menukar operator AND dengan MAX. Ingat, AND selalu memakai MIN (nilai paling kecil menentukan hasil, karena kedua syarat harus terpenuhi), sedangkan OR memakai MAX (nilai paling besar cukup untuk memenuhi salah satu syarat).

Sebagai perbandingan, jika kriteria pembeli diganti menjadi "Harga MURAH ATAU Kapasitas Mesin KECIL" (operator OR), maka perhitungannya memakai MAX:

Fire Strength = MAX( μMurah , μKecil )
MotorμMurahμKecilFire Strength (MAX)
Motor A0,500,330,50
Motor B000
Motor C1,001,001,00

Langkah 5: Menentukan Rekomendasi

Langkah terakhir adalah mengurutkan motor berdasarkan nilai fire strength dari yang tertinggi ke terendah. Motor dengan nilai tertinggi adalah motor yang paling sesuai dengan kriteria yang diminta.

PeringkatMotorFire Strength (AND)
1Motor C1,00
2Motor A0,33
3Motor B0
Rekomendasi akhir: Motor C adalah pilihan yang paling sesuai dengan kriteria "Harga Murah DAN Kapasitas Mesin Kecil", karena memiliki fire strength tertinggi (1,00). Motor B tidak direkomendasikan sama sekali karena fire strength-nya 0 (tidak memenuhi salah satu kriteria sama sekali).

Kesimpulan

Perhitungan manual metode Fuzzy Tahani pada dasarnya mengikuti 5 langkah besar:

  1. Menentukan variabel dan himpunan fuzzy yang dibutuhkan.
  2. Menentukan fungsi keanggotaan (kurva turun/segitiga/naik) berdasarkan posisi himpunan dan domain angkanya.
  3. Melakukan fuzzifikasi, yaitu menghitung derajat keanggotaan tiap data untuk setiap himpunan.
  4. Membentuk query dan menghitung fire strength menggunakan MIN (untuk AND) atau MAX (untuk OR).
  5. Mengurutkan hasil fire strength untuk menentukan rekomendasi akhir.

Studi kasus pemilihan sepeda motor di atas hanya menggunakan 2 variabel agar mudah dipahami. Pada sistem yang lebih lengkap, biasanya ditambahkan variabel lain seperti konsumsi bensin, kapasitas tangki, atau merek, dengan cara perhitungan yang sama persis.


Referensi

Posting Komentar