Tujuan
Mahasiswa diharapkan dapat:
• Mahasiswa mengenal Reasoning Fuzzy bagian kedua
• Mahasiswa dapat mengetahui dan mengenal contoh studi kasus yang dapat
diselesaikan dengan metode Reasoning Fuzzy bagian kedua
• Mahasiswa mampu menerapkan metode Reasoning Fuzzy bagian kedua
menggunakan bahasa Python
Ringkasan Materi
Logika fuzzy merupakan pengembangan dari logika primitif yang hanya mengenal
keadaan, yaitu “ya” atau “tidak”. Dengan adanya logika fuzzy, dapat mengenal peubah-
peubah linguistik seperti “agak besar”, “besar”, “sangat besar”, dan sebagainya.Dengan
demikian, aplikasi logika fuzzi akan menyebabkan sistem lebih adaptif. Dalam membangun
sebuah sistem Fuzzy dikenal beberapa metode penalaran, antara lain: metode Tsukomoto,
metode Mamdani dan metode Sugeno.
Diketahui bahwa jumlah permintaan konsumen adalah 4000 botol, maka diperoleh nilai
keanggotannya adalah:
Persediaan (botol/hari)
Gambar 2. Fungsi Keanggotaan Variabel Persediaan
Dengan fungsi keanggotaan sebagai berikut:
Diketahui bahwa jumlah persediaan di gudang adalah 300 botol, maka diperoleh nilai
keanggotannya adalah:
dimana, banyaknya n ditentukan berdasarkan jumlah dari variabel input fuzzy yang
digunakan. Suatu proposisi ini digunakan untuk pembentukan keputusan atau menghasilkan
output dari proposisi yang telah ditentukan. Penentuan proposisi ini dibentuk berdasarkan
kriteria-kriteria yang telah ditentukan dengan penilaian yang sesuai dengan objek, dan
berdasarkan fakta yang diketahui. Setelah terbentuknya proposisi, selanjutnya adalah
menentukan nilai keanggotaan berdasarkan aturan fuzzy yang telah dibentuk menggunakan
fungsi implikasi Min. Pada fungsi implikasi Min, digunakan operator AND (interseksi).
Nilai keanggotaan sebagai hasil dari operasi dua himpunan atau lebih pada fungsi
implikasi Min didefinisikan sebagai berikut:
[R1] IF Permintaan Turun AND Persediaan Banyak THEN Produksi Barang Berkurang.
Gambar 4. Aplikasi Fungsi Implikasi R1
[R2] IF Permintaan Turun AND Persediaan Sedikit THEN Produksi Barang Berkurang.
[R3] IF Permintaan Naik AND Persediaan Banyak THEN Produksi Barang Bertambah.
Gambar 6. Aplikasi Fungsi Implikasi R3
[R4] IF Permintaan Naik AND Persediaan Sedikit THEN Produksi Barang Bertambah.
dengan 𝜇𝑠𝑓 (𝑥𝑖 ) menyatakan nilai keanggotaan solusi fuzzy sampai aturan ke-i, 𝜇𝑘𝑓 (𝑥𝑖 )
menyatakan nilai keanggotaan konsekuensi fuzzy aturan ke-i.
Berdasarkan ilustrasi kasus, tahap selanjutnya yaitu menentukan komposisi
aturannya.
1.4 Defuzzifikasi
Tahap terakhir dari prosedur Metode Fuzzy Mamdani adalah proses defuzzifikasi.
Proses defuzzifikasi dipergunakan untuk menafsirkan nilai keanggotaan fuzzy menjadi
keputusan tertentu atau bilangan real. Hal ini berarti mengembalikan nilai besaran fuzzy
menjadi nilai crisp (bilangan real), dan mengubah fuzzy output menjadi nilai crisp berdasarkan
fungsi keanggotaan yang telah ditentukan. Proses defuzzifikasi ini perlu dilakukan, karena
keputusan fuzzy atau output adalah tetap variabel linguistik dan variabel linguistik ini
membutuhkan untuk dikonversi ke dalam variabel crisp.
Input dari langkah defuzzifikasi adalah himpunan fuzzy yang diperoleh dari komposisi
aturan fuzzy, sedangkan output, suatu bilangan pada domain himpunan fuzzy tersebut. Oleh
karena itu, apabila diketahui suatu himpunan fuzzy dalam suatu range tertentu, maka harus
dapat diperoleh suatu nilai crisp (bilangan real) tertentu sebagai output atau hasil
keputusannya. Metode yang dipergunakan dalam proses defuzzifikasi ini adalah defuzzifikasi
dengan Metode Centroid (titik pusat). Metode ini memperhatikan kondisi setiap daerah
fuzzynya, sehingga menghasilkan hasil yang lebih akurat. Metode centroid yaitu suatu metode
dimana semua daerah fuzzy dari hasil komposisi aturan digabungkan dengan tujuan untuk
membentuk hasil yang optimal dan mengambil titik pusat daerah fuzzy. Prosedur defuzzifikasi
dengan menggunakan Metode Centroid, yaitu menentukan moment (integral dari masing-
masing fungsi keanggotaan dari komposisi aturan), menentukan luas, dan menentukan titik
pusat.
Proses dalam menentukan titik pusat daerah fuzzy dilakukan dengan menggunakan
perumusan:
dengan z* menyatakan nilai hasil defuzzifikasi /titik pusat daerah fuzzy, 𝜇(𝑧) menyatakan
nilai keanggotaan, dan ∫𝑧 𝜇(𝑧)𝑧 𝑑𝑧 menyatakan momen untuk semua daerah hasil komposisi
aturan.
Luas untuk setiap daerah hasil komposisi aturan dapat diperoleh dengan cara mencari
luas berdasarkan bentuk dari masing-masing daerah hasil komposisi aturannya, atau dapat
pula dengan menggunakan integral, yaitu ∫𝑧 𝜇(𝑧) 𝑑𝑧. Nilai dari z* merupakan nilai hasil dari
proses defuzzifikasi, nilai ini merupakan hasil dari keputusan akhir, dan disesuaikan dengan
variabel linguistik dari himpunan fuzzy yang telah ditentukan pada proses awal, yaitu
pembentukan himpunan fuzzy.
Ilustrasi Proses Defuzzifikasi:
Misalkan terdapat tiga daerah fuzzy dari hasil proses komposisi aturan, yaitu Daerah Fuzzy I,
Daerah Fuzzy II, dan Daerah Fuzzy III. Dari ketiga daerah fuzzy tersebut digabungkan dan
digunakan proses defuzzifikasi agar menghasilkan nilai dari keputusan akhir, sebagai berikut:
• Untuk Momen 2
• Untuk Momen 3
• Untuk Luas 2
• Untuk Luas 3
Jadi, jumlah botol minuman A yang harus diproduksi adalah sebanyak 4248 botol.
Praktikum
1. Percobaan 1: Penerapan Metode Fuzzy Mamdani dengan bahasa Python
Sebelum masuk kepada fungsi utama dari kode program, kita dapat membuat terlebih
dahulu beberapa fungsi yang nantinya dapat kita manfaatkan dalam program kita.
Fungsi ke-1:
Fungsi ke-2:
Fungsi ke-3:
Fungsi ke-4:
Fungsi ke-5:
Fungsi ke-6:
Fungsi ke-7:
Terdapat tiga buah variabel input untuk studi kasus yang diambil pada jobsheet kali ini.
Variabel input berupa target temperatur, temperatur sekarang dan temperatur
sebelumnya. Ketiga variabel tersebut menjadi komponen dari variabel global, yang
dimasukkan ke dalam fungsi utama dari program.
Berikut ini diberikan fungsi yang mendefinisikan aturan (rule) dari metode kita:
Setelah itu diberikan pula baris kode yang berisi beberapa fungsi yang berhubungan
dengan pengujian Fuzzy rule sebagai berikut:
Tidak ketinggalan diberikan pula kode yang digunakan sebagai fungsi defuzzifikasi
sehingga kita akan memperoleh output dengan angka yang nyata (tidak fuzzy lagi). Serta
kode yang memanggil fungsi utama dari program kita:
Ilustrasi Kasus:
Suatu perusahaan makanan kaleng akan memproduksi makanan jenis ABC. Dari data
1 bulan terakhir, permintaan terbesar mencapai 5000 kemasan/hari, dan permintaan terkecil
mencapai 1000 kemasan/hari. Persediaan barang digudang terbanyak mencapai 600
kemasan/hari, dan terkecil pernah mencapai 100 kemasan/hari. Dengan segala
keterbatasannya perusahaan sampai saat ini baru mampu memproduksi brang maksimum
7000 kemasan/hari, untuk efisiensi mesin dan SDm tiap hari diharapkan perusahaan
memproduksi paling tidak 2000 kemasan. Berapa kemasan makanan jenis ABC yang harus
diprosuksi, jika jumlah permintaan sebanyak 4000 kemasan, dan persediaan di gudang masih
300 kemasan, apabilla proses produksi perusahaan tersebut menggunakan 4 aturan fuzzy
sebagai berikut:
[R1] IF permintaan TURUN And Persediaan BANYAK, THEN Produksi Barang BERKURANG;
[R2] IF permintaan TURUN And Persediaan SEDIKIT, THEN Produksi Barang BERKURANG;
[R3] IF permintaan NAIK And Persediaan BANYAK, THEN Produksi Barang BERTAMBAH;
[R4] IF permintaan TURUN And Persediaan SEDIKIT, THEN Produksi Barang BERTAMBAH;
Solusi:
Ada 3 variable fuzzy yang akan dimodelkan, yaitu:
1. Permintaan terdiri atas 2 himpunan fuzzy, yaitu NAIK dan TURUN
µPmtTURUN [x] = {(1, x ≤ 1000), ((5000-x)/4000, 1000 ≤ x ≤ 5000), (0, x ≥ 5000)}
µPmtNAIK [x] = {(0, x ≤ 1000), ((x -1000)/4000, 1000 ≤ x ≤ 5000), (1, x ≥ 5000)}
Nilai Keanggotaan :
µPmtTURUN (4000) = (5000-4000)/4000 = 0.25
µPmtTURUN (4000) = (4000-1000)/4000 = 0.75
2. Persediaan, terdiri atas 2 himpunan fuzzy, yaitu SEDIKIT dan BANYAK
Nilai keanggotaan:
µPmtSEDIKIT[y] = {(1, y ≤ 1000), ((600 – y)/500, 100 ≤ y ≤ 600), (0, y ≥ 600)}
µPmtBANYAK [y] = {(0, y ≤ 1000), ((y-1000)/500, 100≤ y ≤ 600), (1, y ≥ 600)}
Nilai Keanggotaan :
µPmtSEDIKIT(300) = (600-300)/500 = 0.26
µPmtBANYAK (300) = (300-100)/500 = 0.4
3. Produksi barang, terdiri atas 2 himpunan fuzzy, yaitu: BERKURANG dan BERTAMBAH
Nilai keanggotaan:
µPmtBERKURANG[z] = {(1, z ≤ 2000), ((7000 – z)/5000, 2000 ≤ z≤ 7000), (0, z ≥ 7000)}
µPmtBERTAMBAH[z] = {(0, z ≤ 2000), ((z-2000)/5000, 2000≤ z ≤ 7000), (1, z ≥ 7000)}
Sekarang kita cari nilai z untuk setiap aturan dengan menggunakan fungsi MIN pada aplikasi
fungsi implikasinya:
[R1] IF permintaan TURUN And Persediaan BANYAK THEN Produksi Barang BERKURANG;
α-predikat1 = µPmtTURUN | µPmtBAYAK
α-predikat1 = min ( µPmtTURUN , µPmtBANYAK )
α-predikat1 = min (0.25; 0,4)
α-predikat1 = 0.25
lihat himpunan Produksi Barang Berkurang
(7000-z)/5000=0.25 -> z1= 5750
[R2] IF permintaan TURUN And Persediaan SEDIKIT THEN Produksi Barang BERKURANG;
α-predikat2 = µPmtTURUN | µPmtSEDIKIT
α-predikat2 = min ( µPmtTURUN , µPmtSEDIKIT)
α-predikat2 = min (0.25; 0,6)
α-predikat2 = 0.25
lihat himpunan Produksi Barang Berkurang
(7000-z)/5000=0.25 -> z2= 5750
[R3] IF permintaan NAIK And Persediaan BANYAK THEN Produksi Barang BERTAMBAH;
α-predikat3 = µPmtNAIK | µPmtBANYAK
α-predikat3 = min ( µPmtNAIK , µPmtBANYAK)
α-predikat3 = min (0.75; 0,4)
α-predikat3 = 0.4
lihat himpunan Produksi Barang Bertambah
(z-2000)/5000=0.4 -> z3= 4000
[R4] IF permintaan TURUN And Persediaan SEDIKIT THEN Produksi Barang BERTAMBAH;
α-predikat4 = µPmtTURUN | µPmtSEDIKIT
α-predikat4 = min ( µPmtTURUN , µPmtSEDIKIT )
α-predikat4 = min (0.75; 0,6)
α-predikat4 = 0.6
lihat himpunan Produksi Barang Bertambah
(z-2000)/5000=0.6 -> z4= 5000
Praktikum
2. Percobaah 2: Penerapan Metode Fuzzy Tsukamoto dengan bahasa Python
Terdapat dua buah variable input untuk studi kasus yang diambil pada jobsheet
kali ini. Variabel input berupa kualitas kecepatan (velocity) dan jarak (distance)
yang akan menentukan output berupa saran rem (brake).
Untuk dapat membuat program fuzzy dengan Python diperlukan beberapa import
library sebagai berikut:
Tahap selanjutnya adalah generate variabel global. Untuk variabel input velocity
berada pada rentang subjektif antara 0 sampai 85.5. Kemudian variable input
distance berada pada rentang subjektif antara 0 sampai dengan 90.5. sedangkan
untuk variabel output brake berada pada rentang subjektif antara 0 sampai 360.5
sesuai dengan kode berikut ini:
Terdapat beberapa rule dalam implementasi fuzzy studi kasus jobsheet ini. Rule tersebut
dideklarasikan dalam kode berikut ini:
Berdasarkan aktivasi dari setiap fungsi keanggotaan yang telah diketahui. Maka aktivasi
semua output tersebut harus digabungkan, untuk mendapatkan output sesuai dengan
angka yang nyata (tidak fuzzy lagi). Sehingga diperlukan proses Deffuzyfikasi yang
menyesuaikan dengan rule yang ada. Kode berikut digunakan untuk menampilkan hasil
serta grafik yang berhubungan dengan studi kasus ini:
Pertanyaan
1) Jelaskan dengan detil tentang kode program pada Percobaan 2 diatas. Kemudian jelaskan
pula nilai input berupa velocity dan distance, serta hasil outputnya.
2) Lakukan kembali Percobaan 2 dengan input velocity dan distance yang berbeda, serta
jelaskan pula hasil output yang diperoleh.
3) Jelaskan dengan detil tentang kode program mengenai visualisasi pada Percobaan 2 di
atas!
TUGAS
1) Selain metode Fuzzy Mamdani dan Tsukamoto, terdapat pula metode Fuzzy Sugeno.
Tugas anda adalah mencari perbedaan dari ketiga metode tersebut. Setelah itu berikan
contoh penerapan kasus yang menggunakan metode Fuzzy Sugeno dengan bahasa
Pemrograman Python. Jelaskan nilai input dan output dari contoh kasus yang anda
berikan tersebut!
Daftar Pustaka
1. http://repository.upi.edu/26232/6/S_MAT_1201755_Chapter3.pdf
2. https://logikapagi.wordpress.com/2015/11/15/27/
3. https://github.com/xxvvanda/Fuzzy-Logic-In-
Indonesian/blob/master/fuzzy%20original.py
4. https://gist.github.com/ryangmolina/e1c87509b6919ac8aaf3eceb315d3e5e
5. Using Fuzzy Logic, Toward Intelligent System, Jun Yan dkk,1993, Prentice Hall.
Fundamental of Neural Networks, Laurene Fauset, 1994, Prentice Hall.