PENDAHULUAN
Logika Fuzzy merupakan suatu logika yang memiliki nilai kekaburan atau kesamaran
(fuzzyness) antara benar atau salah. Dalam logika klasik dinyatakan bahwa segala hal dapat
diekspresikan dalam istilah binary (0 atau 1, hitam atau putih, ya atau tidak), sedangkan
logika fuzzy memungkinkan nilai keanggotaan antara 0 dan 1, tingkat keabuan dan juga
hitam dan putih, dan dalam bentuk linguistik, konsep tidak pasti seperti "sedikit", "lumayan"
dan "sangat". Logika ini berhubungan dengan himpunan fuzzy dan teori kemungkinan.
Logika fuzzy ini diperkenalkan oleh Dr. Lotfi Zadeh dari Universitas California, Berkeley
pada 1965. Logika fuzzy dapat digunakan dalam bidang teori kontrol, teori keputusan, dan
beberapa bagian dalam managemen sains. Selain itu, kelebihan dari logika fuzzy adalah
kemampuan dalam proses penalaran secara bahasa (linguistic reasoning), sehingga dalam
perancangannya tidak memerlukan persamaan matematik dari objek yang dikendalikan. Adapun
salah satu contoh aplikasi logika fuzzy dalam kehidupan sehari-hari adalah Pada tahun 1990
pertama kali dibuat mesin cuci dengan logika fuzzy di Jepang (Matsushita Electric Industrial
Company). Sistem fuzzy digunakan untuk menentukan putaran yang tepat secara otomatis
berdasarkan jenis dan banyaknya kotoran serta jumlah yang akan dicuci. Input yang digunakan
adalah: seberapa kotor, jenis kotoran, dan banyaknya yang dicuci. Mesin ini menggunakan sensor
optik , mengeluarkan cahaya ke air dan mengukur bagaimana cahaya tersebut sampai ke ujung
lainnya. Makin kotor, maka sinar yang sampai makin redup. Disamping itu, sistem juga dapat
menentukan jenis kotoran (daki atau minyak).
Adapun pembatasan masalah dalam penulisan tugas ini adalah hanya pada variabel,
keterbatasan dan kekonvekan pada himpunan fuzzy dimensi satu.
1.4 Tujuan Penulisan
BAB II
PEMBAHASAN
Sebelumnya munculnya Teori logika fuzzy (fuzzy logic) dikenal sebuah logika tegas
(crisp Logic) yang memiliki nilai benar atau salah secara tegas. Saat logika klasik
menyatakan bahwa segala hal dapat diekspresikan dalam istilah biner (0 atau 1, hitam atau
putih, ya atau tidak), Logika Fuzzy memungkinkan nilai keanggotaan antara 0 dan 1, tingkat
keabuan dan juga hitam dan putih, dan dalam bentuk linguistik, konsep tidak pasti seperti
"sedikit", "lumayan", dan "sangat". Logika ini berhubungan dengan set fuzzy dan teori
kemungkinan. Logika fuzzy diperkenalkan oleh Dr. Lotfi Zadeh dari Universitas California,
Berkeley pada 1965 atas usulan dalam papernya yang monumental Fuzzy Set. Dalam paper
tersebut dipaparkan ide dasar fuzzy set yang meliputi inclusion, union, intersection,
complement, relation dan convexity. Lotfi Zadeh mengatakan Integrasi Logika Fuzzy
kedalam sistem informasi dan rekayasa proses adalah menghasilkan aplikasi seperti sistem
kontrol, alat alat rumah tangga, dan sistem pengambil keputusan yang lebih fleksibel, mantap,
dan canggih dibandingkan dengan sistem konvensional. Dalam hal ini kami dapat
mengatakan bahwa logika fuzzy memimpin dalam pengembangan kecerdasan mesin yang
lebih tinggi ( machine Intelligency Quotient / MIQ ) Produk produk berikut telah
menggunakan logika fuzzy dalam alat alat rumah tangga seperti mesin cuci, video dan
kamera refleksi lensa tunggal, pendingin ruangan, oven microwave, dan banyak sistem
diagnosa mandiri.. Logika fuzzy telah diterapkan pada berbagai bidang, dari teori kontrol
untuk kecerdasan buatan. Logika fuzzy telah diteliti sejak tahun 1920-an, sebagai nilai yang
tak terbatas terutama logika oleh Lukasiewicz dan Tarski.
Jepang adalah negara pertama yang memanfaatkan logika fuzzy untuk aplikasi praktis.
Aplikasi penting pertama adalah di kereta kecepatan tinggi di Sendai, di mana logika fuzzy
mampu meningkatkan ekonomi, kenyamanan, dan ketepatan perjalanan. Hal ini juga telah
digunakan dalam pengakuan simbol tertulis di komputer mini sony; bantuan pesawat
helikopter; mengendalikan sistem kereta bawah tanah dalam rangka meningkatkan
kenyamanan berkendara, ketepatan menghentikan, dan ekonomi kekuasaan; konsumsi hemat
energi untuk ponsel otomatis; kontrol tunggal tombol untuk mesin cuci; kontrol motor
otomatis untuk pembersih vakum dengan pengakuan kondisi permukaan dan tingkat
kekotoran; dan sistem prediksi untuk pengakuan awal dari gempa bumi melalui Institut
Seismologi Biro Metrologi, Jepang
Logika fuzzy dan logika probabilitas secara matematis sama - keduanya mempunyai nilai
kebenaran yang berkisar antara 0 dan 1 - namun secara konsep berbeda. Logika fuzzy
berbicara mengenai "derajat kebenaran", sedangkan logika probabilitas mengenai
"probabilitas, kecenderungan". Karena kedua hal itu berbeda, logika fuzzy dan logika
probabilitas mempunyai contoh penerapan dalam dunia nyata yang berbeda. Logika klasik
hanya mengizinkan proposisi memiliki nilai kebenaran atau kesalahan. Gagasan 1 + 1 = 2
adalah kebenaran mutlak, kekal dan matematika. Namun, terdapat proposisi tertentu dengan
jawaban variabel, seperti meminta sebagian orang untuk mengidentifikasi warna. Gagasan
kebenaran tidak jatuh di tengah jalan, tapi lebih pada sarana yang mewakili dan penalaran
lebih pengetahuan parsial ketika diberikan, dengan menggabungkan semua hasil yang
mungkin menjadi spektrum dimensi.
Dua derajat kebenaran dan probabilitas berkisar antara 0 dan 1 dan karenanya mungkin
tampak serupa pada awalnya. Sebagai contoh, satu segelas 100 ml mengandung 30 ml air.
Kemudian dapat mempertimbangkan dua konsep: kosong dan penuh. Arti dari masing-
masing dapat direpresentasikan oleh himpunan fuzzy tertentu. Maka salah satu mungkin
mendefinisikan kaca sebagai 0,7 kosong dan 0,3 penuh. Perhatikan bahwa konsep
kekosongan akan subjektif dengan demikian akan tergantung pada pengamat atau desainer.
Desainer lain mungkin, sama baiknya, merancang fungsi keanggotaan set di mana kaca akan
dianggap penuh untuk semua nilai 50 ml. Sangat penting untuk menyadari bahwa logika
fuzzy menggunakan derajat kebenaran sebagai model matematika dari fenomena
ketidakjelasan sementara probabilitas adalah model matematika dari ketidaktahuan.
Sebuah dasar aplikasi mungkin memiliki berbagai ciri sub-rentang variabel kontinu.
Misalnya, pengukuran suhu untuk rem anti-lock mungkin memiliki beberapa fungsi
keanggotaan terpisah, rentang suhu tertentu yang diperlukan untuk mengendalikan rem benar.
Setiap fungsi nilai suhu yang sama untuk nilai kebenaran dalam jangkauan 0-1. Nilai
kebenaran ini kemudian dapat digunakan untuk menentukan bagaimana rem harus dikontrol.
Dalam gambar ini, arti dari ekspresi dingin, hangat, dan panas yang diwakili oleh fungsi
pemetaan skala suhu. Sebuah titik pada skala yang memiliki tiga "nilai kebenaran" - satu
untuk masing-masing dari tiga fungsi. Garis vertikal pada gambar mewakili suhu tertentu
bahwa tiga anak panah (nilai kebenaran) gauge. Karena panah merah poin ke nol, suhu ini
dapat ditafsirkan sebagai "tidak panas". Panah orange (menunjukkan 0.2) dapat
menggambarkannya sebagai "sedikit hangat" dan panah biru (menunjukkan 0,8) "cukup
dingin". Dalam logika matematika, ada beberapa sistem formal "fuzzy logic"; kebanyakan
disebut t-norma logika fuzzy.
Contoh:
Ada beberapa alasan mengapa orang menggunakan logika fuzzy, antara lain:
1. Konsep logika fuzzy mudah dimengerti. Konsep matematis yang mendasari penalaran
fuzzy sangat sederhana dan mudah dimengerti.
2. Logika fuzzy sangat fleksibel.
3. Logika fuzzy memiliki toleransi terhadap data-data yang tidak tepat.
4. Logika fuzzy mampu memodelkan fungsi-fungsi nonlinear yang sangat kompleks.
5. Logika fuzzy dapat membangun dan mengaplikasikan pengalaman para pakar secara
langsung tanpa harus melalui proses pelatihan.
6. Logika fuzzy dapat bekerjasama dengan teknik-teknik kendali secara konvensional.
7. Logika fuzzy didasarkan pada bahasa alami.
Sementara itu, dalam pengaplikasiannya, logika fuzzy juga memiliki beberapa kelebihan,
antara lain sebagai berikut.
1. Daya gunanya dianggap lebih baik daripada teknik kendali yang pernah ada.
2. Pengendali fuzzy terkenal karena keandalannya.
3. Mudah diperbaiki.
4. Pengendali fuzzy memberikan pengendalian yang sangat baik dibandingkan teknik
lain
5. Usaha dan dana yang dibutuhkan kecil.
Selain itu, logika fuzzy juga memiliki kekurangan, terutama dalam penerapannya.
Kekurangan kekurangan tersebut antara lain:
1. Para enjiner dan ilmuwan generasi sebelumnya dan sekarang banyak yang tidak
mengenal teori kendali fuzzy, meskipun secara teknik praktis mereka memiliki
pengalaman untuk menggunakan teknologi dan perkakas kontrol yang sudah ada.
2. Belum banyak terdapat kursus/balai pendidikan dan buku-buku teks yang menjangkau
setiap tingkat pendidikan (undergraduate, postgraduate, dan on site training)
3. Hingga kini belum ada pengetahuan sistematik yang baku dan seragam tentang
metodologi pemecahan problema kendali menggunakan pengendali fuzzy.
4. Belum adanya metode umum untuk mengembangkan dan implementasi pengendali
fuzzy.
1. Pada tahun 1990 pertama kali dibuat mesin cuci dengan logika fuzzy di Jepang
(Matsushita Electric Industrial Company). Sistem fuzzy digunakan untuk menentukan
putaran yang tepat secara otomatis berdasarkan jenis dan banyaknya kotoran serta jumlah
yang akan dicuci. Input yang digunakan adalah: seberapa kotor, jenis kotoran, dan
banyaknya yang dicuci. Mesin ini menggunakan sensor optik , mengeluarkan cahaya ke
air dan mengukur bagaimana cahaya tersebut sampai ke ujung lainnya. Makin kotor,
maka sinar yang sampai makin redup. Disamping itu, sistem juga dapat menentukan jenis
kotoran (daki atau minyak).
2. Transmisi otomatis pada mobil. Mobil Nissan telah menggunakan sistem fuzzy pada
transmisi otomatis, dan mampu menghemat bensin 12 17%.
3. Kereta bawah tanah Sendai mengontrol pemberhentian otomatis pada area tertentu.
4. Ilmu kedokteran dan biologi, seperti sistem diagnosis yang didasarkan pada logika fuzzy,
penelitian kanker, manipulasi peralatan prostetik yang didasarkan pada logika fuzzy, dll.
5. Manajemen dan pengambilan keputusan, seperti manajemen basis data yang didasarkan
pada logika fuzzy, tata letak pabrik yang didasarkan pada logika fuzzy, sistem pembuat
keputusan di militer yang didasarkan pada logika fuzzy, pembuatan games yang
didasarkan pada logika fuzzy, dll.
6. Ekonomi, seperti pemodelan fuzzy pada sistem pemasaran yang kompleks,dll.
7. Klasifikasi dan pencocokan pola.
8. Psikologi, seperti logika fuzzy untuk menganalisis kelakuan masyarakat, pencegahan dan
investigasi kriminal, dll.
9. Ilmu-ilmu sosial, terutam untuk pemodelan informasi yang tidak pasti.
10. Ilmu lingkungan, seperti kendali kualitas air, prediksi cuaca, dll.
11. Teknik, seperti perancangan jaringan komputer, prediksi adanya gempa bumi, dll.
12. Riset operasi, seperti penjadwalan dan pemodelan, pengalokasian, dll.
13. Peningkatan kepercayaan, seperti kegagalan diagnosis, inspeksi dan monitoring
produksi.
14. sebagai alat bantu pengambil keputusan seperti proses pembuatan program fuzzy logic
dalam bahasa pemrograman Java yang diaplikasikan untuk menentukan Jumlah Produk
yang dihasilkan berdasarkan kondisi Suhu, Kebisingan dan Pencahayaan.
2.5 Perbedaan Fuzzy Logic (logika Fuzzy) dengan Crisp Logic (Logika Tegas)
logika tegas memiliki nilai tidak = 0.0 dan ya = 1.0, sedangkan logika fuzzy memiliki
nilai antara 0.0 hingga 1.0. Secara grafik perbedaan antara logika tegas dan logika fuzzy
ditunjukkan oleh gambar di bawah ini :
Didalam Gambar 1 Crisp Logic, apabila X lebih dari atau sama dengan 10 baru
dikatakan benar yaitu bernilai Y=1 , sebaliknya nilai X yang kurang dari 10 adalah salah
yaitu Y=0, maka angka 9 atau 8 atau 7 dan seterusnya dalah dikatakan salah.
Didalam Gambar 2 Fuzzy Logic, apabila nilai X=9, atau 8 atau 7 atau antara nilai 0 dan
10 adalah dikatakan ada benarnya dan ada juga salahnya.
Linguistik : nama suatu kelompok yang mewakili suatu keadaan tertentu dengan
menggunakan bahasa alami, misalnya DINGIN, SEJUK, PANAS, dsb.
Numeris : suatu nilai yang menunjukkan ukuran dari suatu variabel, misalnya 10, 35, 40
dsb.
Contoh :
a. Variabel umur, terbagi menjadi 3 himpunan fuzzy, yaitu: MUDA, PAROBAYA, dan
TUA.
b. Variabel temperatur, terbagi menjadi 5 himpunan fuzzy, yaitu: DINGIN, SEJUK,
NORMAL, HANGAT, dan PANAS.
Gambar 3. Himpunan Fuzzy Untuk variabel Umur
Dalam fuzzy logic variabel yang bersifat kabur tersebut direpresentasikan sebagai sebuah
himpunan yang anggotanya adalah suatu nilai crisp dan derajat keanggotaannya (membership
function) dalam himpunan tersebut
Fuzzifikasi: merupakan proses untuk mendapatkan derajat keanggotaan dari sebuah nilai
numerik masukan (crisp)
Penalaran: proses untuk mendapatkan aksi keluaran dari suatu kondisi input dengan
mengikuti aturan-aturan (IF-THEN Rules) yang telah ditetapkan yang disebut sebagai
inference/reasoning.
Defuzzifikasi: proses untuk merubah hasil penalaran yang berupa derajat keanggotaan
keluaran menjadi variabel numerik kembali.
Mari kita mempertimbangkan sistem pendingin udara dengan 5-level sistem logika
fuzzy. Sistem ini menyesuaikan suhu AC dengan membandingkan suhu kamar dan nilai suhu
target.
Algoritma:
Membuat satu set aturan dalam basis pengetahuan dalam bentuk struktur IF-THEN-ELSE
Sr No Kondisi Tindakan
1 IF temperature=(Cold OR Very_Cold) AND Panas
target=Warm THEN
2 IF temperature=(Hot OR Very_Hot) AND Dingin
target=Warm THEN
3 IF (temperature=Warm) AND (target=Warm) Tidak ada perubahan
THEN
a. Fuzzyfikasi adalah pemetaan nilai input yang merupakan nilai tegas ke dalam fungsi
keanggotaan himpunan fuzzy, untuk kemudian diolah di dalam mesin penalaran.
fuzzyfikasi : x (x)
b. Defuzzyfikasi merupakan kebalikan dari fuzzyfikasi, yaitu pemetaan dari himpunan fuzzy
ke himpunan tegas.Input dari proses defuzzyfikasi adalah suatu himpunan fuzzy yang
diperoleh dari komposisi aturan-aturan fuzzy. Hasil dari defuzzyfikasi ini merupakan
output dari sistem kendali logika fuzzy.
Defuzzyfikasi dideskripsikan sebagai
Z* = defuzzyfier (Z)
dengan
Z = hasil penalaran fuzzy
Z* = keluaran kendali logika fuzzy
deffuzyfier = fungsi defuzzyfikasi
Metode defuzzyfikasi antara lain:
1. Metode Maximum
Metode ini juga dikenal dengan metode puncak, yang nilai keluarannya dibatasi oleh fungsi
c(z*)>c 1 (z).
2. Metode titik tengah
Metode titik tengah juga disebut metode pusat area. Metode ini lazim dipakai dalam proses
defuzzyfikasi. Keluaran dari metode ini adalah titik tengah dari hasil proses penalaran.
3. Metode rata-rata
Metode ini digunakan untuk fungsi keanggotaan keluaran yang simetris. Keluaran dari
metode ini adalah nilai rata-rata dari hasil proses penalaran.
4. Metode penjumlahan titik tengah
Keluaran dari metode ini adalah penjumlahan titik tengah dari hasil proses penalaran.
5. Metode titik tengah area terbesar
Dalam metode ini, keluarannya adalah titik pusat dari area terbesar yang ada.
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.
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).
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.
BAB III
PENUTUP
3.1 Kesimpulan
3.1 Saran
DAFTAR PUSTAKA
[1] Rinaldi Munir, Matematika Diskrit Dalam Fuzzy Logic, Penerbit Informatika, 2005
[2] Jannus Maurits Nainggolan, Logika Fuzzy (Fuzzy Logic) : Teori dan Penerapan Pada
Sistem Daya (Kajian Pengaruh Induksi Medan Magnet)
[3] Kusumadewi,Sri.Purnomo,Hari.,Aplikasi Logika Fuzzy untuk Pendukung
Keputusan.Yogyakarta: GRAHA ILMU,2004
[4] Kusumadewi, Sri., Hartati, S., Harjoko, A., dan Wardoyo, R. Fuzzy Multi-Attribute
Decision Making (FUZZY MADM). Yogyakarta: Graha Ilmu, 2006.
Pengertian Kecerdasan Buatan
Derajat Kebenaran
Variabel Linguistik
Kecerdasan buatan atau kecerdasan yang ditambahkan kepada suatu sistem yang bisa diatur
dalam konteks ilmiah atau Intelegensi Artifisial (bahasa Inggris: Artificial Intelligence atau
hanya disingkat AI) didefinisikan sebagai kecerdasan entitas ilmiah. Sistem seperti ini
umumnya dianggap komputer. Kecerdasan diciptakan dan dimasukkan ke dalam suatu mesin
(komputer) agar dapat melakukan pekerjaan seperti yang dapat dilakukan manusia. Beberapa
macam bidang yang menggunakan kecerdasan buatan antara lain sistem pakar, permainan
komputer (games), logika fuzzy, jaringan syaraf tiruan dan robotika.
Jepang adalah negara pertama yang memanfaatkan logika fuzzy untuk aplikasi praktis.
Aplikasi penting pertama adalah di kereta kecepatan tinggi di Sendai, di mana logika fuzzy
mampu meningkatkan ekonomi, kenyamanan, dan ketepatan perjalanan. Hal ini juga telah
digunakan dalam pengakuan simbol tertulis di komputer mini sony; bantuan pesawat
helikopter; mengendalikan sistem kereta bawah tanah dalam rangka meningkatkan
kenyamanan berkendara, ketepatan menghentikan, dan ekonomi kekuasaan; konsumsi hemat
energi untuk ponsel otomatis; kontrol tunggal tombol untuk mesin cuci; kontrol motor
otomatis untuk pembersih vakum dengan pengakuan kondisi permukaan dan tingkat
kekotoran; dan sistem prediksi untuk pengakuan awal dari gempa bumi melalui Institut
Seismologi Biro Metrologi, Jepang
Derajat kebenaran
Logika fuzzy dan logika probabilitas secara matematis sama - keduanya mempunyai nilai
kebenaran yang berkisar antara 0 dan 1 - namun secara konsep berbeda. Logika fuzzy
berbicara mengenai "derajat kebenaran", sedangkan logika probabilitas mengenai
"probabilitas, kecenderungan". Karena kedua hal itu berbeda, logika fuzzy dan logika
probabilitas mempunyai contoh penerapan dalam dunia nyata yang berbeda.
Logika klasik hanya mengizinkan proposisi memiliki nilai kebenaran atau kesalahan.
Gagasan 1 + 1 = 2 adalah kebenaran mutlak, kekal dan matematika. Namun, terdapat
proposisi tertentu dengan jawaban variabel, seperti meminta sebagian orang untuk
mengidentifikasi warna. Gagasan kebenaran tidak jatuh di tengah jalan, tapi lebih pada sarana
yang mewakili dan penalaran lebih pengetahuan parsial ketika diberikan, dengan
menggabungkan semua hasil yang mungkin menjadi spektrum dimensi.
dua derajat kebenaran dan probabilitas berkisar antara 0 dan 1 dan karenanya mungkin
tampak serupa pada awalnya. Sebagai contoh, satu segelas 100 ml mengandung 30 ml air.
Kemudian dapat mempertimbangkan dua konsep: kosong dan penuh. Arti dari masing-
masing dapat direpresentasikan oleh himpunan fuzzy tertentu. Maka salah satu mungkin
mendefinisikan kaca sebagai 0,7 kosong dan 0,3 penuh. Perhatikan bahwa konsep
kekosongan akan subjektif dengan demikian akan tergantung pada pengamat atau desainer.
Desainer lain mungkin, sama baiknya, merancang fungsi keanggotaan set di mana kaca akan
dianggap penuh untuk semua nilai 50 ml. Sangat penting untuk menyadari bahwa logika
fuzzy menggunakan derajat kebenaran sebagai model matematika dari fenomena
ketidakjelasan sementara probabilitas adalah model matematika dari ketidaktahuan.
Sebuah dasar aplikasi mungkin memiliki berbagai ciri sub-rentang variabel kontinu.
Misalnya, pengukuran suhu untuk rem anti-lock mungkin memiliki beberapa fungsi
keanggotaan terpisah, rentang suhu tertentu yang diperlukan untuk mengendalikan rem benar.
Setiap fungsi nilai suhu yang sama untuk nilai kebenaran dalam jangkauan 0-1. Nilai
kebenaran ini kemudian dapat digunakan untuk menentukan bagaimana rem harus dikontrol.
Dalam gambar ini, arti dari ekspresi dingin, hangat, dan panas yang diwakili oleh fungsi
pemetaan skala suhu. Sebuah titik pada skala yang memiliki tiga "nilai kebenaran" - satu
untuk masing-masing dari tiga fungsi. Garis vertikal pada gambar mewakili suhu tertentu
bahwa tiga anak panah (nilai kebenaran) gauge. Karena panah merah poin ke nol, suhu ini
dapat ditafsirkan sebagai "tidak panas". Panah orange (menunjukkan 0.2) dapat
menggambarkannya sebagai "sedikit hangat" dan panah biru (menunjukkan 0,8) "cukup
dingin". Dalam logika matematika, ada beberapa sistem formal "fuzzy logic"; kebanyakan
disebut t-norma logika fuzzy.
variabel linguistik
variabel dalam matematika biasanya mengambil nilai-nilai numerik, dalam aplikasi logika
fuzzy, non-numerik sering digunakan untuk memfasilitasi aturan dan fakta.
Sebuah variabel linguistik seperti usia mungkin memiliki nilai seperti muda atau tua. Namun,
kegunaan besar variabel linguistik bahwa dapat dimodifikasi dengan membatasi linguistik
yang diterapkan untuk hal utama. pembatas nilai linguistik dapat dikaitkan dengan fungsi-
fungsi tertentu. Untuk memperluas Fuzzy logic dengan menambahkan kuantitas universal dan
eksistensial dengan cara serupa yaitu logika predikat dibuat dari logika proposisional.
Contoh:
Ada beberapa alasan mengapa orang menggunakan logika fuzzy, antara lain:
8. Konsep logika fuzzy mudah dimengerti. Konsep matematis yang mendasari penalaran
fuzzy sangat sederhana dan mudah dimengerti.
9. Logika fuzzy sangat fleksibel.
10. Logika fuzzy memiliki toleransi terhadap data-data yang tidak tepat.
11. Logika fuzzy mampu memodelkan fungsi-fungsi nonlinear yang sangat kompleks.
12. Logika fuzzy dapat membangun dan mengaplikasikan pengalaman para pakar secara
langsung tanpa harus melalui proses pelatihan.
13. Logika fuzzy dapat bekerjasama dengan teknik-teknik kendali secara konvensional.
14. Logika fuzzy didasarkan pada bahasa alami.
15. Pada tahun 1990 pertama kali dibuat mesin cuci dengan logika fuzzy di Jepang
(Matsushita Electric Industrial Company). Sistem fuzzy digunakan untuk menentukan
putaran yang tepat secara otomatis berdasarkan jenis dan banyaknya kotoran serta jumlah
yang akan dicuci. Input yang digunakan adalah: seberapa kotor, jenis kotoran, dan
banyaknya yang dicuci. Mesin ini menggunakan sensor optik , mengeluarkan cahaya ke
air dan mengukur bagaimana cahaya tersebut sampai ke ujung lainnya. Makin kotor,
maka sinar yang sampai makin redup. Disamping itu, sistem juga dapat menentukan jenis
kotoran (daki atau minyak).
16. Transmisi otomatis pada mobil. Mobil Nissan telah menggunakan sistem fuzzy pada
transmisi otomatis, dan mampu menghemat bensin 12 17%.
17. Kereta bawah tanah Sendai mengontrol pemberhentian otomatis pada area tertentu.
18. Ilmu kedokteran dan biologi, seperti sistem diagnosis yang didasarkan pada logika fuzzy,
penelitian kanker, manipulasi peralatan prostetik yang didasarkan pada logika fuzzy, dll.
19. Manajemen dan pengambilan keputusan, seperti manajemen basis data yang didasarkan
pada logika fuzzy, tata letak pabrik yang didasarkan pada logika fuzzy, sistem pembuat
keputusan di militer yang didasarkan pada logika fuzzy, pembuatan games yang
didasarkan pada logika fuzzy, dll.
20. Ekonomi, seperti pemodelan fuzzy pada sistem pemasaran yang kompleks,dll.
21. Klasifikasi dan pencocokan pola.
22. Psikologi, seperti logika fuzzy untuk menganalisis kelakuan masyarakat, pencegahan dan
investigasi kriminal, dll.
23. Ilmu-ilmu sosial, terutam untuk pemodelan informasi yang tidak pasti.
24. Ilmu lingkungan, seperti kendali kualitas air, prediksi cuaca, dll.
25. Teknik, seperti perancangan jaringan komputer, prediksi adanya gempa bumi, dll.
26. Riset operasi, seperti penjadwalan dan pemodelan, pengalokasian, dll.
27. Peningkatan kepercayaan, seperti kegagalan diagnosis, inspeksi dan monitoring
produksi.
28. sebagai alat bantu pengambil keputusan seperti proses pembuatan program fuzzy logic
dalam bahasa pemrograman Java yang diaplikasikan untuk menentukan Jumlah Produk
yang dihasilkan berdasarkan kondisi Suhu, Kebisingan dan Pencahayaan. Implementasi
bahasa pemrograman Java untuk pembentukan fungsi keanggotaan, proses penalaran
fuzzy metode Sugeno, proses fuzzifikasi dan defuzzifikasi. Program diuji terhadap suatu
kondisi Suhu, Kebisingan dan Pencahayaan tertentu untuk mengetahui hasilnya.
Perbedaan Fuzzy Logic (logika Fuzzy) dengan Crisp Logic (Logika Tegas)
logika tegas memiliki nilai tidak = 0.0 dan ya = 1.0, sedangkan logika fuzzy memiliki nilai
antara 0.0 hingga 1.0. Secara grafik perbedaan antara logika tegas dan logika fuzzy
ditunjukkan oleh gambar di bawah ini :
Didalam Gambar 1 Crisp Logic, apabila X lebih dari atau sama dengan 10 baru dikatakan
benar yaitu bernilai Y=1 , sebaliknya nilai X yang kurang dari 10 adalah salah yaitu Y=0,
maka angka 9 atau 8 atau 7 dan seterusnya dalah dikatakan salah.
Didalam Gambar 2 Fuzzy Logic, apabila nilai X=9, atau 8 atau 7 atau antara nilai 0 dan 10
adalah dikatakan ada benarnya dan ada juga salahnya.
Linguistik : yaitu nama suatu kelompok yang mewakili suatu keadaan tertentu dengan
menggunakan bahasa alami, misalnya DINGIN, SEJUK, PANAS, dsb.
Numeris : yaitu suatu nilai yang menunjukkan ukuran dari suatu variabel, misalnya 10, 35,
40 dsb.
Contoh :
a. Variabel umur, terbagi menjadi 3 himpunan fuzzy, yaitu: MUDA, PAROBAYA, dan TUA.
Dalam fuzzy logic variabel yang bersifat kabur tersebut direpresentasikan sebagai sebuah
himpunan yang anggotanya adalah suatu nilai crisp dan derajat keanggotaannya (membership
function) dalam himpunan tersebut
Proses-proses dalam fuzzy logic adalah fuzzifikasi, penalaran (reasoning), dan defuzzifikasi:
Fuzzifikasi: merupakan proses untuk mendapatkan derajat keanggotaan dari sebuah nilai
numerik masukan (crisp)
Penalaran: proses untuk mendapatkan aksi keluaran dari suatu kondisi input dengan
mengikuti aturan-aturan (IF-THEN Rules) yang telah ditetapkan yang disebut sebagai
inference/reasoning.
Defuzzifikasi: proses untuk merubah hasil penalaran yang berupa derajat keanggotaan
keluaran menjadi variabel numerik kembali.
Database Fuzzy
Mari kita mempertimbangkan sistem pendingin udara dengan 5-level sistem logika fuzzy.
Sistem ini menyesuaikan suhu AC dengan membandingkan suhu kamar dan nilai suhu target.
Algoritma:
Membuat satu set aturan dalam basis pengetahuan dalam bentuk struktur IF-THEN-ELSE
Sr No Kondisi Tindakan
1 IF temperature=(Cold OR Very_Cold) AND Panas
target=Warm THEN
2 IF temperature=(Hot OR Very_Hot) AND Dingin
target=Warm THEN
3 IF (temperature=Warm) AND (target=Warm) Tidak ada perubahan
THEN
double [] rata_rata_product;
Produk(){
rata_rata_product = new double[27];
rata_rata_product[0] = 148.00;
rata_rata_product[1] = 150.90;
rata_rata_product[2] = 146.50;
rata_rata_product[3] = 143.10;
rata_rata_product[4] = 146.53;
rata_rata_product[5] = 142.73;
rata_rata_product[6] = 136.73;
rata_rata_product[7] = 140.77;
rata_rata_product[8] = 135.97;
rata_rata_product[9] = 149.73;
rata_rata_product[10] = 153.27;
rata_rata_product[11] = 152.13;
rata_rata_product[12] = 148.00;
rata_rata_product[13] = 150.63;
rata_rata_product[14] = 147.63;
rata_rata_product[15] = 141.47;
rata_rata_product[16] = 145.67;
rata_rata_product[17] = 140.20;
rata_rata_product[18] = 142.10;
rata_rata_product[19] = 146.53;
rata_rata_product[20] = 142.17;
rata_rata_product[21] = 138.70;
rata_rata_product[22] = 141.40;
rata_rata_product[23] = 138.30;
rata_rata_product[24] = 133.33;
rata_rata_product[25] = 138.53;
rata_rata_product[26] = 133.77;
}
}
Seperti yang telah dijelaskan sebelumnya bahwa ada 3 variabel yang berpengaruh yaitu Suhu,
Kebisingan dan Pencahayaan. Fungsi keanggotaan yang digunakan adalah segitiga. Yang
pertama adalah variabel Suhu yang fungsi keanggotaannya ditunjukkan pada Gambar 2 dan
implementasi programnya adalah class Suhu yang ditunjukkan pada Listing program 2. Ada 3
kondisi Suhu yaitu Rendah, Normal, dan Tinggi.
[SUHU]
[SUHU (oC)]
Gambar 2. Fungsi keanggotaan variabel Suhu
[KEBISINGAN]
[KEBISINGAN (dB)]
Gambar 3. Fungsi keanggotaan variabel Kebisingan
class Kebisingan{
public double data_kebisingan;
private double tenang(){
if((data_kebisingan>=35)&&(data_kebisingan<=55)){
return (data_kebisingan - 35.0) / 20.0;
}
else if((data_kebisingan>=55)&&(data_kebisingan<=75)){
return (75.0 - data_kebisingan) / 20.0;
}
else{
return 0;
}
}
private double agakbising(){
if((data_kebisingan>=55)&&(data_kebisingan<=75)){
return (data_kebisingan - 55.0) / 20.0;
}
else if((data_kebisingan>=75)&&(data_kebisingan<=90)){
return (90.0 - data_kebisingan) / 15.0;
}
else{
return 0;
}
}
private double bising(){
if((data_kebisingan>=75)&&(data_kebisingan<=90)){
return (data_kebisingan - 75.0) / 15.0;
}
else if((data_kebisingan>=90)&&(data_kebisingan<=105)){
return (105.0 - data_kebisingan) / 15.0;
}
else{
return 0;
}
}
}
class Pencahayaan{
public double data_pencahayaan;
private double redup(){
if((data_pencahayaan>=0)&&(data_pencahayaan<=150)){
return (data_pencahayaan / 15.0);
}
else if((data_pencahayaan>=150)&&(data_pencahayaan<=300)){
return (300.0 - data_pencahayaan) / 150.0;
}
else{
return 0;
}
}
private double agakterang(){
if((data_pencahayaan>=150)&&(data_pencahayaan<=300)){
return ((data_pencahayaan - 150.0) / 150.0);
}
else if((data_pencahayaan>=300)&&(data_pencahayaan<=500)){
return (500.0 - data_pencahayaan) / 200.0;
}
else{
return 0;
}
}
private double terang(){
if((data_pencahayaan>=300)&&(data_pencahayaan<=500)){
return ((data_pencahayaan - 300.0) / 200.0);
}
else if((data_pencahayaan>=500)&&(data_pencahayaan<=700)){
return (700.0 - data_pencahayaan) / 200.0;
}
else{
return 0;
}
}
}
Untuk menghitung derajat keanggotaan dari suatu nilai crisp Suhu, Kebisingan dan Pencahayaan yang
disimpan dalam variabel yang bernama kondisi_suhu, kondisi_kebisingan,
kondisi_pencahayaan dibuatlah fungsi untuk memanggil kelas Suhu, Kebisingan dan
Pencahayaan dan memanggil prosedur untuk menghitung derajat keanggotaan dalam kelas tersebut,
yang diimplemetasikan dalam program sebagai prosedur Compute_membership() yang ditunjukkan
pada Listing program 5.
private void Compute_Membership(){
suhu.data_suhu = kondisi_suhu;
u_suhu_rendah = suhu.rendah();
u_suhu_normal = suhu.normal();
u_suhu_tinggi = suhu.tinggi();
kebisingan.data_kebisingan = kondisi_kebisingan;
u_kebisingan_tenang = kebisingan.tenang();
u_kebisingan_agakbising = kebisingan.agakbising();
u_kebisingan_bising = kebisingan.bising();
pencahayaan.data_pencahayaan = kondisi_pencahayaan;
u_pencahayaan_redup = pencahayaan.redup();
u_pencahayaan_agakterang = pencahayaan.agakterang();
u_pencahayaan_terang = pencahayaan.terang();
}
Listing program 5. Implementasi fungsi untuk menghitung nilai derajat keanggotaan
dari suatu nilai crisp
Model fuzzy yang digunakan dalam bahasan ini adalah metode Sugeno, oleh karena itu output sistem
adalah berupa konstanta yaitu Rata-rata jumlah produk. Ada 27 aturan yang telah dibuat yang
diimplementasikan dalam program sebagai prosedur Apply_rule() dan listing programnya
ditunjukkan pada Listing program 6.
Aturan:
[1] IF Suhu RENDAH and Kebisingan TENANG and Pencahayaan REDUP THEN Rata-rata Jumlah
Produk = 148.0
[2] IF Suhu RENDAH and Kebisingan TENANG and Pencahayaan AGAK TERANG THEN Rata-
rata Jumlah Produk = 150.9
[3] IF Suhu RENDAH and Kebisingan TENANG and Pencahayaan TERANG THEN Rata-rata
Jumlah Produk = 146.5
[4] IF Suhu RENDAH and Kebisingan AGAK BISING and Pencahayaan REDUP THEN Rata-rata
Jumlah Produk = 143.1
[5] IF Suhu RENDAH and Kebisingan AGAK BISING and Pencahayaan AGAK TERANG THEN
Rata-rata Jumlah Produk = 146.53
[6] IF Suhu RENDAH and Kebisingan AGAK BISING and Pencahayaan TERANG THEN Rata-rata
Jumlah Produk = 142.73
[7] IF Suhu RENDAH and Kebisingan BISING and Pencahayaan REDUP THEN Rata-rata Jumlah
Produk = 136.73
[8] IF Suhu RENDAH and Kebisingan BISING and Pencahayaan AGAK TERANG THEN Rata-rata
Jumlah Produk = 140.77
[9] IF Suhu RENDAH and Kebisingan BISING and Pencahayaan TERANG THEN Rata-rata Jumlah
Produk = 135.97
[10] IF Suhu NORMAL and Kebisingan TENANG and Pencahayaan REDUP THEN Rata-rata
Jumlah Produk = 149.73
[11] IF Suhu NORMAL and Kebisingan TENANG and Pencahayaan AGAK TERANG THEN Rata-
rata Jumlah Produk = 153.27
[12] IF Suhu NORMAL and Kebisingan TENANG and Pencahayaan TERANG THEN Rata-rata
Jumlah Produk = 152.13
[13] IF Suhu NORMAL and Kebisingan AGAK BISING and Pencahayaan REDUP THEN Rata-rata
Jumlah Produk = 148
[14] IF Suhu NORMAL and Kebisingan AGAK BISING and Pencahayaan AGAK TERANG THEN
Rata-rata Jumlah Produk = 150.63
[15] IF Suhu NORMAL and Kebisingan AGAK BISING and Pencahayaan TERANG THEN Rata-
rata Jumlah Produk = 147.63
[16] IF Suhu NORMAL and Kebisingan BISING and Pencahayaan REDUP THEN Rata-rata Jumlah
Produk = 141.47
[17] IF Suhu NORMAL and Kebisingan BISING and Pencahayaan AGAK TERANG THEN Rata-
rata Jumlah Produk = 145.67
[18] IF Suhu NORMAL and Kebisingan BISING and Pencahayaan AGAK TERANG THEN Rata-
rata Jumlah Produk = 140.2
[19] IF Suhu TINGGI and Kebisingan TENANG and Pencahayaan REDUP THEN Rata-rata Jumlah
Produk = 142.10
[20] IF Suhu TINGGI and Kebisingan TENANG and Pencahayaan AGAK TERANG THEN Rata-rata
Jumlah Produk = 146.53
[21] IF Suhu TINGGI and Kebisingan TENANG and Pencahayaan TERANG THEN Rata-rata
Jumlah Produk = 142.17
[22] IF Suhu TINGGI and Kebisingan AGAK BISING and Pencahayaan REDUP THEN Rata-rata
Jumlah Produk = 138.7
[23] IF Suhu TINGGI and Kebisingan AGAK BISING and Pencahayaan AGAK TERANG THEN
Rata-rata Jumlah Produk = 141.4
[24] IF Suhu TINGGI and Kebisingan AGAK BISING and Pencahayaan TERANG THEN Rata-rata
Jumlah Produk = 138.3
[25] IF Suhu TINGGI and Kebisingan BISING and Pencahayaan REDUP THEN Rata-rata Jumlah
Produk = 133.33
[26] IF Suhu TINGGI and Kebisingan BISING and Pencahayaan AGAK TERANG THEN Rata-rata
Jumlah Produk = 138.33
[27] IF Suhu TINGGI and Kebisingan BISING and Pencahayaan TERANG THEN Rata-rata Jumlah
Produk = 133.77
//IF Suhu RENDAH and Kebisingan TENANG and Pencahayaan REDUP THEN Rata-rata product = 148.00;
output_rule[0] = Find_Min(u_suhu_rendah, u_kebisingan_tenang, u_pencahayaan_redup);
u_output[0] = produk.rata_rata_product[0];
//IF Suhu RENDAH and Kebisingan TENANG and Pencahayaan AGAKTERANG THEN Rata-rata product = 150.90;
output_rule[1]=Find_Min(u_suhu_rendah,u_kebisingan_tenang,u_pencahayaan_agakterang)
;
u_output[1] = produk.rata_rata_product[1];
//IF Suhu RENDAH and Kebisingan TENANG and Pencahayaan TERANG THEN Rata-rata product = 146.50;
output_rule[2] = Find_Min(u_suhu_rendah, u_kebisingan_tenang,
u_pencahayaan_terang);
u_output[2] = produk.rata_rata_product[2];
//IF Suhu RENDAH and Kebisingan AGAKBISING and Pencahayaan REDUP THEN Rata-rata product = 143.10;
output_rule[3]=Find_Min(u_suhu_rendah, u_kebisingan_agakbising,
u_pencahayaan_redup);
u_output[3] = produk.rata_rata_product[3];
//IF Suhu RENDAH and Kebisingan AGAKBISING and Pencahayaan AGAKTERANG THEN Rata-rata product = 146.53;
output_rule[4]=Find_Min(u_suhu_rendah,u_kebisingan_agakbising,u_pencahayaan_agakter
ang);
u_output[4] = produk.rata_rata_product[4];
//IF Suhu RENDAH and Kebisingan AGAKBISING and Pencahayaan TERANG THEN Rata-rata product = 142.73;
output_rule[5] = Find_Min(u_suhu_rendah, u_kebisingan_agakbising,
u_pencahayaan_terang);
u_output[5] = produk.rata_rata_product[5];
//IF Suhu RENDAH and Kebisingan BISING and Pencahayaan REDUP THEN Rata-rata product = 136.73;
output_rule[6] = Find_Min(u_suhu_rendah, u_kebisingan_bising, u_pencahayaan_redup);
u_output[6] = produk.rata_rata_product[6];
//IF Suhu RENDAH and Kebisingan BISING and Pencahayaan AGAKTERANG THEN Rata-rata product = 140.77;
output_rule[7] = Find_Min(u_suhu_rendah, u_kebisingan_bising,
u_pencahayaan_agakterang);
u_output[7] = produk.rata_rata_product[7];
//IF Suhu RENDAH and Kebisingan BISING and Pencahayaan TERANG THEN Rata-rata product = 135.97;
output_rule[8] = Find_Min(u_suhu_rendah, u_kebisingan_bising,
u_pencahayaan_terang);
u_output[8] = produk.rata_rata_product[8];
//IF Suhu NORMAL and Kebisingan TENANG and Pencahayaan REDUP THEN Rata-rata product = 149.73;
output_rule[9] = Find_Min(u_suhu_normal, u_kebisingan_tenang, u_pencahayaan_redup);
u_output[9] = produk.rata_rata_product[9];
//IF Suhu NORMAL and Kebisingan TENANG and Pencahayaan AGAKTERANG THEN Rata-rata product = 153.27;
output_rule[10]=Find_Min(u_suhu_normal,
u_kebisingan_tenang,u_pencahayaan_agakterang);
u_output[10] = produk.rata_rata_product[10];
//IF Suhu NORMAL and Kebisingan TENANG and Pencahayaan TERANG THEN Rata-rata product = 152.13;
output_rule[11] = Find_Min(u_suhu_normal, u_kebisingan_tenang,
u_pencahayaan_terang);
u_output[11] = produk.rata_rata_product[11];
//IF Suhu NORMAL and Kebisingan AGAKBISING and Pencahayaan REDUP THEN Rata-rata product = 148.00;
output_rule[12]=Find_Min(u_suhu_normal, u_kebisingan_agakbising,
u_pencahayaan_redup);
u_output[12] = produk.rata_rata_product[12];
//IF Suhu NORMAL and Kebisingan AGAKBISING and Pencahayaan AGAKTERANG THEN Rata-rata product = 150.63;
output_rule[13] = Find_Min(u_suhu_normal, u_kebisingan_agakbising,
u_pencahayaan_agakterang);
u_output[13] = produk.rata_rata_product[13];
//IF Suhu NORMAL and Kebisingan AGAKBISING and Pencahayaan TERANG THEN Rata-rata product = 147.63;
output_rule[14]=Find_Min(u_suhu_normal,u_kebisingan_agakbising,
u_pencahayaan_terang);
u_output[14] = produk.rata_rata_product[14];
//IF Suhu NORMAL and Kebisingan BISING and Pencahayaan REDUP THEN Rata-rata product = 141.47;
output_rule[15] = Find_Min(u_suhu_normal, u_kebisingan_bising,
u_pencahayaan_redup);
u_output[15] = produk.rata_rata_product[15];
//IF Suhu NORMAL and Kebisingan BISING and Pencahayaan AGAKTERANG THEN Rata-rata product = 145.67;
output_rule[16]=Find_Min(u_suhu_normal,u_kebisingan_bising,
u_pencahayaan_agakterang);
u_output[16] = produk.rata_rata_product[16];
//IF Suhu NORMAL and Kebisingan BISING and Pencahayaan TERANG THEN Rata-rata product = 140.20;
output_rule[17] = Find_Min(u_suhu_normal, u_kebisingan_bising,
u_pencahayaan_terang);
u_output[17] = produk.rata_rata_product[17];
//IF Suhu TINGGI and Kebisingan TENANG and Pencahayaan REDUP THEN Rata-rata product = 142.10;
output_rule[18] = Find_Min(u_suhu_tinggi, u_kebisingan_tenang,
u_pencahayaan_redup);
u_output[18] = produk.rata_rata_product[18];
//IF Suhu TINGGI and Kebisingan TENANG and Pencahayaan AGAKTERANG THEN Rata-rata product = 146.53;
output_rule[19]=Find_Min(u_suhu_tinggi, u_kebisingan_tenang,
u_pencahayaan_agakterang);
u_output[19] = produk.rata_rata_product[19];
//IF Suhu TINGGI and Kebisingan TENANG and Pencahayaan TERANG THEN Rata-rata product = 142.17;
output_rule[20] = Find_Min(u_suhu_tinggi, u_kebisingan_tenang,
u_pencahayaan_terang);
u_output[20] = produk.rata_rata_product[20];
//IF Suhu TINGGI and Kebisingan AGAKBISING and Pencahayaan REDUP THEN Rata-rata product = 138.70;
output_rule[21]= Find_Min(u_suhu_tinggi, u_kebisingan_agakbising,
u_pencahayaan_redup);
u_output[21] = produk.rata_rata_product[21];
//IF Suhu TINGGI and Kebisingan AGAKBISING and Pencahayaan AGAKTERANG THEN Rata-rata product = 141.40;
output_rule[22] = Find_Min(u_suhu_tinggi, u_kebisingan_agakbising,
u_pencahayaan_agakterang);
u_output[22] = produk.rata_rata_product[22];
//IF Suhu TINGGI and Kebisingan AGAKBISING and Pencahayaan TERANG THEN Rata-rata product = 138.30;
output_rule[23]=Find_Min(u_suhu_tinggi, u_kebisingan_agakbising,
u_pencahayaan_terang);
u_output[23] = produk.rata_rata_product[23];
//IF Suhu TINGGI and Kebisingan BISING and Pencahayaan REDUP THEN Rata-rata product = 133.33;
output_rule[24] = Find_Min(u_suhu_tinggi, u_kebisingan_bising,
u_pencahayaan_redup);
u_output[24] = produk.rata_rata_product[24];
//IF Suhu TINGGI and Kebisingan BISING and Pencahayaan AGAKTERANG THEN Rata-rata product = 138.33;
output_rule[25]=Find_Min(u_suhu_tinggi, u_kebisingan_bising,
u_pencahayaan_agakterang);
u_output[25] = produk.rata_rata_product[25];
/IF Suhu TINGGI and Kebisingan BISING and Pencahayaan TERANG THEN Rata-rata product = 133.77;
output_rule[26] = Find_Min(u_suhu_tinggi, u_kebisingan_bising,
u_pencahayaan_terang);
u_output[26] = produk.rata_rata_product[26];
Implementasi aturan AND dalam program adalah dengan mendapatkan nilai minimum dari derajat
keanggotaan Suhu, Kebisingan dan Pencahayaan. Untuk itu dibuatlah prosedur Find_Min() yang
fungsinya untuk mendapatkan nilai minimum dalam suatu array seperti ditunjukkan pada Listing
program 7.
private double Find_Min(double a, double b, double c){
double result;
list.add(a);
list.add(b);
list.add(c);
result = Collections.min(list);
return result;
Untuk mendapatkan nilai keluaran atau keputusan dari fuzzy digunakan metode weighted average
yang persamaannya adalah sebagai berikut:
Dimana nilai n adalah sama dengan jumlah aturan yaitu 27. Persamaan tersebut diatas dalam program
diimplementasikan dalam prosedur Compute_Output() yang ditunjukkan pada Listing program 8.
private void Compute_Output(){
double z = 0;
double temp1 = 0;
double temp2 = 0;
for(int i=0;i<27;i++){
temp2 += output_rule[i];
z = temp1 / temp2;
Compute_Membership();
Apply_Rule();
Compute_Output();
Untuk mengetahui hasil program fuzzy yang telah dibuat maka diuji dengan suatu nilai crisp tertentu.
Sebagai contoh dalam kasus ini kondisi suhu = 25 oC, kebisingan = 86 dB dan tingkat pencahayaan =
350 lux, maka akan didapatkan hasil output program fuzzy adalah jumlah produk sama dengan 148.
Prosedur untuk memasukkan nilai crisp dan memanggil program fuzzy ditunjukkan pada Listing 10.
public static void main(String[] args){
projectfuzzy.kondisi_suhu = 22;
System.out.println("Suhu:" + projectfuzzy.kondisi_suhu);
projectfuzzy.kondisi_kebisingan = 55;
System.out.println("Kebisingan:" + projectfuzzy.kondisi_kebisingan);
projectfuzzy.kondisi_pencahayaan = 150;
System.out.println("Pencahayaan:" + projectfuzzy.kondisi_pencahayaan);
projectfuzzy.RunFuzzy();
Listing 10. Contoh penerapan program fuzzy dengan suatu nilai crisp
Kesimpulan
Program fuzzy yang telah diimplementasikan dalam bahasa pemrograman Java dapat digunakan
sebagai alat bantu untuk menentukan jumlah produk yang dihasilkan berdasarkan kondisi Suhu,
Kebisingan dan Pencahayaan tertentu.
BASIS DATA FUZZY
Sebagian besar basis data standar diklasifikasikan berdasarkan bagaimana data
tersebut dipandang oleh user. Misalkan kita memiliki data karyawan yang
tersimpan pada tabel DT_KARYAWAN dengan field NIP, nama, tgl lahir, th masuk,
dan gaji per bulan seperti pada Tabel 1.
Tabel 7.1 Data mentah karyawan.
NIP Nama Tgl Lahir Th. Masuk Gaji/bl (Rp)
01 Lia 03-06-1972 1996 750.000
02 Iwan 23-09-1954 1985 1.500.000
03 Sari 12-12-1966 1988 1.255.000
04 Andi 06-03-1965 1998 1.040.000
05 Budi 04-12-1960 1990 950.000
06 Amir 18-11-1963 1989 1.600.000
07 Rian 28-05-1965 1997 1.250.000
08 Kiki 09-07-1971 2001 550.000
09 Alda 14-08-1967 1999 735.000
10 Yoga 17-09-1977 2000 860.000
Kemudian dari tabel DT_KARYAWAN, kita oleh menjadi suatu tabel temporer
untuk menghitung umur karyawan dan masa kerjanya. Tabel tersebut kita beri
nama dengan tabel KARYAWAN (Tabel 7.2)
Tabel 7.2 Data karywan setelah diolah.
NIP Nama Umur (th) Masa Kerja (th)* Gaji/bl
01 Lia 30 6 750.000
02 Iwan 48 17 1.500.000
03 Sari 36 14 1.255.000
04 Andi 37 4 1.040.000
05 Budi 42 12 950.000
06 Amir 39 13 1.600.000
*Misal sekarang tahun 2002
Dengan menggunakan basisdata standar, kita dapat mencari data-data karyawan
dengan spesifikasi tertentu dengan menggunakan query. Misal kita ingin
mendapatkan informasi tentang nama-nama karyawan yang usianya kurang dari
35 tahun, maka kita bisa ciptakan suatu query:
SELECT NAMA
FROM KARYAWAN
WHERE (Umur < 35)
sehingga muncul nama-nama Lia, Kiki, dan Yoga. Apabila kita ingin mendapatkan
informasi tentang nama-nama karyawan yang gajinya lebih dari 1 juta rupiah,
maka kita bisa ciptakan suatu query:
SELECT NAMA
FROM KARYAWAN
WHERE (Gaji > 1000000)
sehingga muncul nama-nama Iwan, Sari, Andi, Amir, dan Rian. Apabila kita ingin
mendapatkan unformasi tentang nama-nama karyawan yang yang masa kerjanya
kurang dari atau sama dengan 5 tahun tetapi gajinya sudah lebih dari 1 juta
rupiah, maka kita bisa ciptakan suatu query:
SELECT NAMA
FROM KARYAWAN
WHERE (MasaKerja <= 5) and (Gaji > 1000000)
sehingga muncul nama-nama Andi dan Rian.
Pada kenyataannya, seseorang kadang membutuhkan informasi dari data-data
yang bersifat ambiguous. Apabila hal ini terjadi, maka kita menggunakan
basisdata fuzzy. Selama ini, sudah ada beberapa penelitian tentang basisdata
fuzzy. Salah satu diantaranya adalah model Tahani. Basisdata fuzzy model Tahani
masih tetap menggunakan relasi standar, hanya saja model ini menggunakan
teori himpunan fuzzy untuk mendapatkan informasi pada query-nya.
Misalkan kita mengkategorikan usia karyawan diatas ke dalam himpunan: MUDA,
PAROBAYA, dan TUA (Gambar 7.43)
Fungsi keanggotaan:
0; 40
; 30 40
10
40
1; 30
[]
x
x
x
x
x MUDA
; 45 50
5
50
; 35 45
10
35
0; 35 50
[]
x
x
x
x
x atau x
x PAROBAYA
1; 50
; 40 50
10
40
0; 40
[]
x
x
x
x
x TUA
Tabel 7.3 menunjukkan tabel karyawan berdasarkan umur dengan derajat
keanggotannya pada setiap himpunan.
NIP Nama Umur
MUDA PAROBAYA TUA
01 Lia 30 1 0 0
02 Iwan 48 0 0,4 0,8
03 Sari 36 0,4 0,1 0
04 Andi 37 0,3 0,2 0
05 Budi 42 0 0,7 0,2
06 Amir 39 0,1 0,4 0
07 Rian 37 0,3 0,2 0
08 Kiki 32 0,8 0 0
09 Alda 35 0,5 0 0
10 Yoga 25 1 0 0
Variabel Masa Kerja bisa dikategorikan dalam himpunan: BARU dan LAMA
(Gambar 7.44)
Fungsi keanggotaan:
0; 15
; 5 15
10
15
1; 5
[]
y
y
y
y
y BARU
1; 25
; 10 25
15
10
0; 10
[]
y
y
y
y
y LAMA
Tabel 7.4 menunjukkan tabel karyawan berdasarkan umur dengan derajat
keanggotannya pada setiap himpunan.
Tabel 7.4 KARYAWAN berdasarkan Masa Kerja.
Derajat Keanggotaan ( [y])
NIP Nama Masa Kerja
BARU LAMA
01 Lia 6 0,9 0
02 Iwan 17 0 0,467
03 Sari 14 0,1 0,267
04 Andi 4 1 0
05 Budi 12 0,3 0,133
06 Amir 13 0,2 0,200
07 Rian 5 1 0
08 Kiki 1 1 0
09 Alda 3 1 0
10 Yoga 2 1 0
Variabel Gaji bisa dikategorikan dalam himpunan: RENDAH, SEDANG, dan TINGGI
(Gambar 7.45).
Fungsi Keanggotaan:
0; 800
; 300 800
500
800
1; 300
[]
z
z
z
z
z RENDAH
1; 2000
; 1000 2000
1000
1000
0; 1000
[]
z
z
z
z
z TINGGI
Tabel 7.5 menunjukkan tabel karyawan berdasarkan umur dengan derajat
keanggotannya pada setiap himpunan.
Tabel 7.5 Karyawan berdasar gaji.
Derajat Keanggotaan ( [z])
NIP Nama Gaji / bl
RENDAH SEDANG TINGGI
01 Lia 750.000 0,1 0,50 0
02 Iwan 1.255.000 0 0,49 0,255
03 Sari 1.500.000 0 0 0,500
04 Andi 1.040.000 0 0,92 0,040
05 Budi 950.000 0 0,90 0
06 Amir 1.600.000 0 0 0,600
07 Rian 1.250.000 0 0,50 0,250
08 Kiki 550.000 0,5 0 0
09 Alda 735.000 0,13 0 0
10 Yoga 860.000 0 0 0