1. FUZZY LOGIC
A. Definisi Fuzzy Logic
Fuzzy logic pertama kali dikenalkan kepada publik oleh Lotfi Zadeh, seorang profesor
di University of California di Berkeley. Fuzzy logic digunakan untuk menyatakan hukum
operasional dari suatu sistem dengan ungkapan bahasa, bukan dengan persamaan matematis.
Banyak sistem yang terlalu kompleks untuk dimodelkan secara akurat, meskipun
dengan persamaan matematis yang kompleks. Dalam kasus seperti itu, ungkapan bahasa yang
digunakan dalam Fuzzy logic dapat membantu mendefinisikan karakteristik operasional
sistem dengan lebih baik.
Ungkapan bahasa untuk karakteristik sistem biasanya dinyatakan dalam bentuk
implikasi logika, misalnya aturan Jika – Maka. Pada teori himpunan klasik yang disebut
juga dengan himpunan crisp (himpunan tegas) hanya dikenal dua kemungkinan dalam fungsi
keanggotaannya, yaitu kemungkinan termasuk keanggotaan himpunan (logika 1) atau
kemungkinan berada di luar keanggotaannya (logika 0). Namun dalam teori himpunan fuzzy
tidak hanya memiliki dua kemungkinan dalam menentukan sifat keanggotaannya tetapi
memiliki derajat kenaggotaan yang nilainya antara 0 dan 1. fungsi yang menetapkan nilai ini
dinamakan fungsi keanggotaan yang disertakan dalam himpunan fuzzy.
2. B. Aplikasi Logika Fuzzy dalam kehidupan sehari-hari
1. Logika Fuzzy untuk Sistem Pengaturan Suhu Ruangan
Untuk menentukan suhu dalam suatu ruangan, kita dapat menentukannya
menggunakan Logika Fuzzy. Aturan dalam kontrol, mudah didefinisikan menggunakan kata-
kata misalkan :
- jika suhu dalam suatu ruangan dingin maka naikkan suhu penghangat.
- jika suhu dalam suatu ruangan panas maka naikkan suhu pendingin.
2. Logika Fuzzy untuk Sistem Pengaturan Lampu Lalulintas
Logika fuzzy dalam pengaturan lampu lalulintas amat diperlukan untuk memperlancar
arus lalulintas. Dengan adanya system yang bekerja secara otomatis diharapkan angka
kecelakaan yang disebabkan oleh masalah lampu lalulintas dapat berkurang. Selain itu
dengan adanya lampu lalulintas yang otomatis tentu saja akan mengurangi tugas polisi
lalulintas, sehingga mereka bisa mengerjakan hal-hal lain yang belum teratasi.
Sedangkan sebagai dasar pengendalian dari sistem yang dijalankan, digunakan
algoritma logika fuzzy. Untuk memudahkan pengendalian lampu lalulintas, ada beberapa
istilah yang digunakan dalam pengendaliannya antara lain :
Untuk kepadatan jumlah kendaraan adalah :
- Tidak Padat (TP),
- Kurang Padat (KP),
- Cukup Padat (CP),
- Padat (P) dan
- Sangat Padat (SP).
Sedangkan untuk lama nyala lampu adalah :
- Cepat (C),
- Agak Cepat (AC),
- Sedang (S),
- Agak Lama (AL) dan
- Lama (L).
3. Jelas istilah-istilah tersebut dapat menimbulkan makna ganda (ambiguity) dalam
pengertiannya. Logika Fuzzy dapat mengubah makna ganda tersebut ke dalam model
matematis sehingga dapat diproses lebih lanjut untuk dapat diterapkan dalam sistem kendali.
Untuk menyelesaikan masalah tersebut digunakan teori himpunan Fuzzy, logika bahasa
dapat diwakili oleh sebuah daerah yang mempunyai jangkauan tertentu yang menunjukkan
derajat keanggotaannya (fungsi keanggotaan). Untuk kasus disini, sebut saja derajat
keanggotaan itu adalah u(x) untuk x adalah jumlah kendaraan.
C. Contoh Program Fuzzy Logic
Pemrograman dengan bahasa Assembly
Setelah kita menemukan rumus untuk normalisasi dan denormalisasi, maka program
assembly dapat dibuat. Jika kita ingin membuat suatu fuzzy system untuk aplikasi yang lain,
tidak perlu harus sama dengan program yang telah ada, tetapi yang perlu diketahui sebelum
membuat suatu fuzzy sistem adalah bagaimana cara untuk menormalisasikan input dan
mendenormalisasikan output-nya sebelum data dapat diolah. Hal ini dilakukan agar nilai-nilai
tersebut dapat diterima oleh DT-51 PetraFuz.
Routine fuzzify dari PetraFuz terletak di alamat 0900h, untuk menjalankannya kitaa
harus menggunakan perintah LCALL 0900h. Berikut ini adalah contoh format yang
digunakan dalam menggunakan DT-51 PetraFuz.
Fuzzify EQU 0900H
Current_ins EQU 0BH
Cog_Outs EQU 0DH
Keterangan:
- Fuzzify : Routine PetraFuz
- Current_ins : Crisp Input PetraFuz
- Cog_Outs : Crisp Output PetraFuz
Jika kita mau memakai internal RAM maka kita harus memakai dengan alamat minimal
063H. Karena 08H – 62H digunakan oleh routine PetraFuz Engine.
Contoh program perhitungan error:
MOV A, SP ; memasukkan nilai SP (kecepatan yang diminta)
MOV R0, PV ; memasukkan nilai PV (kecepatan sekarang)
SUBB A, R0
MOV ERROR, A
Contoh program perhitungan dError:
MOV A, ERROR ; Error(n)
MOV R0, ERROR-1 ; Error(n-1)
SUBB A, R0
MOV DERROR, A
Di dalam aplikasi ini yang dinormalisasikan adalah hasil dari Error dan dErrror (bukan Error
dan dError), setelah itu baru dimasukkan sebagai input ke DT-51 PetraFuz. Nilai Error yang
sesungguhnya harus disimpan ke dalam suatu register, karena Error yang belum dinormalisasi
akan digunakan dalam perhitungan denormalisasi yaitu untuk nilai Error(n-1).
4. Contoh program untuk memasukkan data Error dan dError ke dalam DT-51 PetraFuz, setelah
itu memanggil prosedur Fuzzify dan melihat hasilnya di register accumulator.
MOV CURRENT_INS,ERROR
MOV CURRENT_INS+1,DERROR
LCALL FUZIFY
MOV A,COG_OUTS
Hasil dari register accumulator di atas adalah nilai crisp output dan nilai tersebut harus
didenormalisasikan. Contoh di atas bukanlah contoh program secara khusus melainkan
contoh program secara garis besar. Hal ini dikarenakan tidak adanya program untuk
normalisasi dan denormalisasi. Sebelum nilai crisp input dimasukkan ke dalam DT-51
PetraFuz, nilainya harus dinormalisasikan terlebih dahulu. Nilai crisp output yang telah
diperoleh di register accumulator pada contoh di atas juga belum didenormalisasikan.
Di dalam pembuatan suatu program assembly, kalau bisa hindari pembuatan program
aritmatika yang cukup kompleks, misalnya perkalian atau pembagian 16 x 16 bit. Hal ini
dilakukan agar proses fuzzifikasi tidak memakan banyak waktu.
Ini adalah contoh pemrograman aplikasi pengaturan kecepatan motor DC dengan sistem
Fuzzy.
Proses kerjanya adalah sebagai berikut:
1. Pertama kali dilakukan proses inisialisasi de KITS SPC DC Motor dan komunikasi serial.
2. Terima data serial dari PC dan tunggu sampai karakter J dikirimkan. Lalu ambil nilai SP
Low Byte.
3. Terima data serial lagi dari PC dan tunggu sampai karakter K dikirimkan, lalu ambil nilai
SP High Byte.
4. Setelah itu baca nilai RPM sekarang dan kirimkan ke PC.
5. Hitung nilai Error dan dError, tetapi jangan lupa untuk menormalisasikan nilai tersebut.
6. Setelah normalisasi dilakukan maka masukkan kedua nilai yaitu Error dan dError ke dalam
DT-51 PetraFuz.
7. Panggil prosedur fuzzify, lalu ambil hasilnya.
8. Setelah hasil didapatkan, maka hasil itu harus didenormalisasi sehingga akan muncul nilai
crisp output yang sebenarnya.
9. Nilai crisp output kita masukkan sebagai nilai PWM untuk mengatur putaran motor DC
tersebut. Ulangi langkah 4 - 9 sampai nilai RPM yang dinginkan tercapai.