Penerapan Metode Fuzzy Tsukamoto Untuk Sistem Kontrol Frekuensi Putar Kipas Angin
Table of Contents
Logika fuzzy bila dibandingkan dengan logika konvensional, kemampuannya dalam proses penalaran secara bahasa menjadi kelebihan tersendiri. Ditambah pula kelebihannya dalam perancangannya yang tidak memerlukan persamaan matematik yang rumit, mampu memodelkan fungsi non linear bahkan dapat mengaplikasikan pengalaman-pengalaman para pakar secara langsung tanpa harus melalui proses pelatihan.
Pada logika fuzzy, sistem inferensi (penalaran) yang paling populer ada tiga macam, yaitu metode Tsukamoto, Sugeno dan Mamdani. Kali ini, saya tidak berpanjang lebar untuk membahas teori-teori logika fuzzy beserta sistem inferensinya. Sangat banyak, artikel atau bahkan jurnal-jurnal yang membahas teori fuzzy, teman-teman bisa belajar teori fuzzy dari sana. Saya lebih tertarik untuk langsung mengimplementasikan logika fuzzy dan salah satu sistem inferensinya ke dalam satu studi kasus. Baik implementasi secara manual (perhitungan matematis) maupun diterapkan langsung ke dalam salah satu bahasa pemrograman.
Saya berencana untuk memberikan contoh implementasi logika fuzzy beserta semua sistem inferensinya (Tsukamoto, Sugeno dan Mamdani) dalam studi kasus yang berbeda. Namun saat ini, implementasi logika fuzzy saya arahkan langsung ke sistem inferensi metode tsukamoto. Untuk metode sugeno dan mamdani, akan saya bahas di studi kasus yang lain.
Contoh studi kasus untuk implementasi metode fuzzy tsukamoto adalah sistem kontrol untuk menentukan frekuensi putar sebuah kipas angin. Sistem kontrol ini menggunakan dua masukan, yaitu kecepatan putar kipas dan suhu, dan menghasilkan keluaran berupa frekuensi kipas angin. Demi memperjelas permasalahan studi kasus, berikut penjelasan lebih detail :
Untuk mengatur frekuensi putar kipas angin secara otomatis digunakan sistem kontrol yang dapat mengkontrol sumber frekuensi putar kipas angin. Sistem kontrol ini dipengaruhi oleh tiga variabel, yaitu kecepatan putar kipas angin, suhu ruangan, dan sumber frekuensi putar kipas angin. Berdasarkan data spesifikasi dari pabrik, kecepatan putar kipas angin terkecil adalah 1000 rpm (rotation per minute) dan terbesar adalah 5000 rpm, kemampuan sensor suhu rungan berada dalam interval 100 kelvin hingga 600 kelvin, sedangkan sumber frekuensi putar kipas angin hanya mampu menyediakan frekuensi sebesar 2000 hz hingga7000 hz. Apabila sistem kontrol ruangan menggunakan 4 rule berikut :
[R1] IF kecepatan LAMBAT dan suhu TINGGI then frekuensi KECIL
[R2] IF kecepatan LAMBAT dan suhu RENDAH then frekuensi KECIL
[R3] IF kecepatan CEPAT dan suhu TINGGI then frekuensi BESAR
[R4] IF kecepatan CEPAT dan suhu RENDAH then frekuensi BESAR
Berapakah sumber frekuensi putar yang dihasilkan sistem kontrol bila saat itu sensor suhu menunjukkan angka 300 kelvin, sedangkan kipas angin berputar dengan kecepatan 4000 rpm?
Dalam memecahkan solusi studi kasus menggunakan model fuzzy tsukamoto, urutan langkah yang akan ditempuh adalah :
Variabel kecepatan terdiri atas 2 himpunan fuzzy, yaitu LAMBAT dan CEPAT. Fuzzifikasi kecepatan adalah untuk mencari derajat keanggotaan himpunan LAMBAT dan CEPAT berdasarkan masukan kecepatan sebesar 4000 rpm. derajat keanggotaan kecepatan disimbolkan dengan miu[x].
Variabel suhu terdiri atas 2 himpunan fuzzy, yaitu RENDAH dan TINGGI. Fuzzifikasi suhu adalah untuk mencari derajat keanggotaan himpunan RENDAH dan TINGGI berdasarkan masukan suhu sebesar 300 kelvin. derajat keanggotaan suhu disimbolkan dengan miu[y].
Pada logika fuzzy, sistem inferensi (penalaran) yang paling populer ada tiga macam, yaitu metode Tsukamoto, Sugeno dan Mamdani. Kali ini, saya tidak berpanjang lebar untuk membahas teori-teori logika fuzzy beserta sistem inferensinya. Sangat banyak, artikel atau bahkan jurnal-jurnal yang membahas teori fuzzy, teman-teman bisa belajar teori fuzzy dari sana. Saya lebih tertarik untuk langsung mengimplementasikan logika fuzzy dan salah satu sistem inferensinya ke dalam satu studi kasus. Baik implementasi secara manual (perhitungan matematis) maupun diterapkan langsung ke dalam salah satu bahasa pemrograman.
Saya berencana untuk memberikan contoh implementasi logika fuzzy beserta semua sistem inferensinya (Tsukamoto, Sugeno dan Mamdani) dalam studi kasus yang berbeda. Namun saat ini, implementasi logika fuzzy saya arahkan langsung ke sistem inferensi metode tsukamoto. Untuk metode sugeno dan mamdani, akan saya bahas di studi kasus yang lain.
Contoh studi kasus untuk implementasi metode fuzzy tsukamoto adalah sistem kontrol untuk menentukan frekuensi putar sebuah kipas angin. Sistem kontrol ini menggunakan dua masukan, yaitu kecepatan putar kipas dan suhu, dan menghasilkan keluaran berupa frekuensi kipas angin. Demi memperjelas permasalahan studi kasus, berikut penjelasan lebih detail :
Untuk mengatur frekuensi putar kipas angin secara otomatis digunakan sistem kontrol yang dapat mengkontrol sumber frekuensi putar kipas angin. Sistem kontrol ini dipengaruhi oleh tiga variabel, yaitu kecepatan putar kipas angin, suhu ruangan, dan sumber frekuensi putar kipas angin. Berdasarkan data spesifikasi dari pabrik, kecepatan putar kipas angin terkecil adalah 1000 rpm (rotation per minute) dan terbesar adalah 5000 rpm, kemampuan sensor suhu rungan berada dalam interval 100 kelvin hingga 600 kelvin, sedangkan sumber frekuensi putar kipas angin hanya mampu menyediakan frekuensi sebesar 2000 hz hingga7000 hz. Apabila sistem kontrol ruangan menggunakan 4 rule berikut :
[R1] IF kecepatan LAMBAT dan suhu TINGGI then frekuensi KECIL
[R2] IF kecepatan LAMBAT dan suhu RENDAH then frekuensi KECIL
[R3] IF kecepatan CEPAT dan suhu TINGGI then frekuensi BESAR
[R4] IF kecepatan CEPAT dan suhu RENDAH then frekuensi BESAR
Berapakah sumber frekuensi putar yang dihasilkan sistem kontrol bila saat itu sensor suhu menunjukkan angka 300 kelvin, sedangkan kipas angin berputar dengan kecepatan 4000 rpm?
Dalam memecahkan solusi studi kasus menggunakan model fuzzy tsukamoto, urutan langkah yang akan ditempuh adalah :
- Fuzzifikasi
- Inferensi Tsukamoto
- Defuzzifikasi
Mari, kita hitung secara matematis sesuai dengan urutan langkah tersebut :
TAHAP 1 : FUZZIFIKASI
Fuzzifikasi adalah proses untuk merubah nilai crips menjadi nilai fuzzy. Nilai fuzzy berupa himpunan fuzzy yang masing-masing akan memiliki derajat keanggotaan dengan rentang antara 0 hingga 1. Sebagaimana yang dijelaskan dalam studi kasus, variabel yang digunakan ada tiga macam, dua variabel sebagai input (kecepatan kipas dan suhu) dan satu variabel sebagai output, yaitu frekuensi. Masing-masing variabel memiliki himpunan fuzzy-nya :
- Variabel Kecepatan = {LAMBAT, CEPAT} dengan domain 1000 - 5000
- Variabel Suhu = {RENDAH, TINGGI} dengan domain 100-600
- Variabel Frekuensi = {KECIL, BESAR} dengan domain 2000-7000
Fuzzifikasi Variabel Kecepatan
Gambar 1 Fungsi Keangotaan Variabel Kecepatan |
Variabel kecepatan terdiri atas 2 himpunan fuzzy, yaitu LAMBAT dan CEPAT. Fuzzifikasi kecepatan adalah untuk mencari derajat keanggotaan himpunan LAMBAT dan CEPAT berdasarkan masukan kecepatan sebesar 4000 rpm. derajat keanggotaan kecepatan disimbolkan dengan miu[x].
Maka, derajat keanggotaan untuk kecepatan 4000 rpm, adalah :
miuLAMBAT[4000] = (5000-4000)/4000 = 0,25
miuCEPAT[4000] = (4000-1000)4000 = 0,75
Fuzzifikasi Veriabel Suhu Gambar 2 Fungsi Keanggotaan Variabel Suhu |
Variabel suhu terdiri atas 2 himpunan fuzzy, yaitu RENDAH dan TINGGI. Fuzzifikasi suhu adalah untuk mencari derajat keanggotaan himpunan RENDAH dan TINGGI berdasarkan masukan suhu sebesar 300 kelvin. derajat keanggotaan suhu disimbolkan dengan miu[y].
Maka, derajat keanggotaan untuk suhu 300 kelvin, adalah :
miuRENDAH[300] = (600-300)/500 = 0,6
miuTINGGI[300] = (300-100)/500 = 0,4
Gambar 3 Fungsi Keanggotaan Variabel Frekuensi |
Variabel frekuensi terdiri atas dua himpunan, yaitu KECIL dan BESAR, dengan domain pada interval 2000-7000. Domain tersebut berguna dalam proses perhitungan nilai z, pada saat proses inferensi tsukamoto. nilai z pada metode tsukamoto, diperoleh dengan cara :
z = zmax - a_predikat(zmax - zmin) ;
TAHAP 2 : INFERENSI TSUKAMOTO
Pada mesin inferensi, kita terapkan fungsi MIN untuk setiap aturan pada aplikasi fungsi implikasinya. Sehingga penerapan fungsi MIN dilakukan sebanyak 4 kali, sesuai dengan banyaknya aturan fuzzy-nya (rulebase) .
[R1] IF kecepatan LAMBAT dan suhu TINGGI then frekuensi KECIL
a_predikat1 = min(miuLAMBAT[4000], miuTINGGI[300])
a_predikat1 = min(0,25 ; 0,4)
a_predikat1 = 0,25
z1 = zmax - a_predikat1 (zmax-zmin)
z1 = 7000 - 0,25(7000-2000)
z1 = 5750 rpm
[R2] IF kecepatan LAMBAT dan suhu RENDAH then frekuensi KECIL
a_predikat2 = min(miuLAMBAT[4000], miuRENDAH[300])
a_predikat2 = min(0,25 ; 0,6)
a_predikat2 = 0,25
z2 = zmax - a_predikat2(zmax-zmin)
z2 = 7000 - 0,25(7000-2000)
z2 = 5750 rpm
[R3] IF kecepatan CEPAT dan suhu TINGGI then frekuensi BESAR
a_predikat3 = min(miuCEPAT[4000], miuTINGGI[300])
a_predikat3 = min(0,75 ; 0,4)
a_predikat3 = 0,4
z3 = zmin - a_predikat3(zmin-zmax)
z3 = 2000 - 0,4(2000-7000)
z3 = 4000 rpm
[R4] IF kecepatan CEPAT dan suhu RENDAH then frekuensi BESAR
a_predikat4 = min(miuCEPAT[4000], miuRENDAH[300])
a_predikat4 = min(0,75 ; 0,6)
a_predikat4 = 0,6
z4 = zmin - a_predikat4(zmin-zmax)
z4 = 2000 - 0,6(2000-7000)
z4 = 5000 rpm
TAHAP 3 : DEFUZZIFIKASI
Nilai tegas z dicari menggunakan rata-rata terbobot, yaitu :
Jadi dapat disimpulkan, melalui hasil defuzzifikasi ini diketahui bahwa suhu 300 kelvin dan kecepatan 4000 rpm akan menghasilkan sumber frekuensi putar kipas angin sebesar 4983,33 Hz.
Sesuai yang saya janjikan, saya tidak hanya menghitung secara matematis (manual), namun juga mengimplementasikan studi kasus secara langsung dalam bentuk pemrograman, yang dalam hal ini saya menggunakan pemrograman java. Program saya buat dalam bentuk console maupun berbasis interface. Tentunya, program dibuat berdasarkan patokan studi kasus.
Berikut ini kode sumber program
Sesuai yang saya janjikan, saya tidak hanya menghitung secara matematis (manual), namun juga mengimplementasikan studi kasus secara langsung dalam bentuk pemrograman, yang dalam hal ini saya menggunakan pemrograman java. Program saya buat dalam bentuk console maupun berbasis interface. Tentunya, program dibuat berdasarkan patokan studi kasus.
Berikut ini kode sumber program
/** * * @author CHARIS */ public class FuzzyTsukamoto { private double kecepatanLambat; private double kecepatanCepat; private double suhuRendah; private double suhuTinggi; private double a_predikat1, a_predikat2, a_predikat3, a_predikat4; private double z1, z2, z3, z4; public double zTotal,z,a_pred_z ; public void fuzzifikasiKecepatan(double kecepatan) { if (kecepatan <= 1000) { kecepatanLambat = 1; kecepatanCepat = 0; } else if (kecepatan >= 1000 && kecepatan <= 5000) { kecepatanLambat = (5000 - kecepatan) / (5000 - 1000); kecepatanCepat = (kecepatan - 1000) / (5000 - 1000); } else { kecepatanLambat = 0; kecepatanCepat = 1; } System.out.println("derajat keanggotaan kecepatan cepat : " + kecepatanCepat); System.out.println("derajat keanggotaan kecepatan lambat : " + kecepatanLambat); } public void fuzzifikasiSuhu(double suhu) { if (suhu <= 100) { suhuRendah = 1; suhuTinggi = 0; } else if (suhu >= 100 && suhu <= 600) { suhuRendah = (600 - suhu) / (600 - 100); suhuTinggi = (suhu - 100) / (600 - 100); } else { suhuRendah = 0; suhuTinggi = 1; } System.out.println("derajat keanggotaan suhu rendah : " + suhuRendah); System.out.println("derajat keanggotaan suhu tinggi : " + suhuTinggi); } public void mesinInferensiTsukamoto() { { // IF kecepatan LAMBAT dan suhu TINGGI then Frekuensi KECIL a_predikat1 = Math.min(kecepatanLambat, suhuTinggi); z1 = 7000 - a_predikat1 * (7000 - 2000); System.out.println("a predikat 1 : " + a_predikat1 + " | " + "z1 : " + z1); // IF kecepatan LAMBAT dan suhu RENDAH then Frekuensi KECIL a_predikat2 = Math.min(kecepatanLambat, suhuRendah); z2 = 7000 - a_predikat2 * (7000 - 2000); System.out.println("a predikat 2 : " + a_predikat2 + " | " + "z2 : " + z2); // IF kecepatan CEPAT dan suhu TINGGI then Frekuensi BESAR a_predikat3 = Math.min(kecepatanCepat, suhuTinggi); z3 = 2000 - a_predikat3 * (2000 - 7000); System.out.println("a predikat 3 : " + a_predikat3+ " | " + "z3 : " + z3); // IF kecepatan CEPAT dan suhu RENDAH then Frekuensi BESAR a_predikat4 = Math.min(kecepatanCepat, suhuRendah); z4 = 2000 - a_predikat4 * (2000 - 7000); System.out.println("a predikat 4 : " + a_predikat4 + " | " + "z4 : " + z4); } } public void defuzzifikasi(){ a_pred_z = (a_predikat1*z1)+(a_predikat2*z2)+(a_predikat3*z3)+(a_predikat4*z4) ; z = a_predikat1+a_predikat2+a_predikat3+a_predikat4 ; zTotal = a_pred_z/z ; System.out.println("Output Fuzzy berupa Frekuensi Kipas : "+zTotal + " Hz"); } public static void main(String[] args) { FuzzyTsukamoto fs = new FuzzyTsukamoto(); double kec = 4000 ; double suhu = 300 ; System.out.println("========== INPUT FUZZY =========="); System.out.println("Kecepatan : " + kec + " rpm"); System.out.println("Suhu : " + suhu + " kelvin"); System.out.println("========== FUZZIFIKASI KECEPATAN =========="); fs.fuzzifikasiKecepatan(kec); System.out.println("========== FUZZIFIKASI SUHU =========="); fs.fuzzifikasiSuhu(suhu); System.out.println("========== INFERENSI TSUKAMOTO =========="); fs.mesinInferensiTsukamoto(); System.out.println("========== DEFUZZIFIKASI TSUKAMOTO =========="); fs.defuzzifikasi() ; } }
Berikut hasil keluaran program secara console, dengan hasil akhir yang sama persis dengan perhitungan manual :
Gambar 4 Program secara konsole |
Sedangkan, berikut ini hasil keluaran program berbasis GUI, dengan hasil akhir yang juga sama persis dengan perhitungan manual :
Gambar 5 Program secara GUI |
Demikianlah, penjelasan ringkas mengenai penerapan metode fuzzy tsukamoto berdasarkan contoh perhitungan manual, maupun contoh pemrograman. Bagi teman-teman yang ingin bertanya atau terdapat hal-hal yang belum mengerti dari penjelasan diatas bisa kontak saya secara langsung melalui email, whatApp atau melalui komentar di blog ini. Terima kasih
Bagi teman-teman yang ingin mencoba program GUI implementasi fuzzy tsukamoto untuk sistem kontrol diatas, silakan kontak saya via WA saja. Terima kasih.
Lebih detail, silakan lihat juga demo programnya di channel resmi youtube Informatika Kita
Referensi
- Sutojo, T, dkk. 2011. Kecerdasan Buatan. Yogyakarta : Andi
- ________________ . Logika Fuzzy Metode Tsukamoto. http://www.metode-algoritma.com/. Diakses pada tanggal 28 Agustus 2016
Thengkiu
saya mau tanya2 tentang masalah ini dong.. soalnya skripsi saya tentang fuzzy tsukamoto
tqyu mas :)