Bab II Teori Penunjang
BAB II TEORI PENUNJANG 2.1 LOGIKA FUZZY Titik awal dari konsep modern mengenai ketidakpastian adalah paper yang dibuat oleh Lofti A Zadeh, dimana Zadeh memperkenalkan teori yang memiliki obyek-obyek dari himpunan fuzzy yang memiliki batasan yang tidak presisi dan keanggotaan dalam himpunan fuzzy, dan bukan dalam bentuk logika benar (true) atau salah (false), tapi dinyatakan dalam derajat (degree). Konsep seperti ini disebut dengan fuzziness dan teorinya dinamakan Fuzzy Set Theory[1]. Fuzziness dapat didefinisikan sebagai logika kabur berkenaan dengan semantik dari suatu kejadian, fenomena atau pernyataan itu sendiri. Seringkali ditemui dalam pernyataan yang dibuat oleh seseorang, evaluasi dan suatu pengambilan keputusan. Sebagai contoh: 1. Manajer pergudangan mengatakan pada manajer produksi seberapa banyak persediaan barang pada akhir minggu ini, kemudian manajer produksi akan menetapkan jumlah barang yang harus diproduksi esok hari. 2. Pelayan restoran memberikan pelayanan terhadap tamu, kemudian tamu akan memberikan tip yang sesuai atas baik tidaknya pelayanan yang diberikan. 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-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. 5
Bab II Teori Penunjang
2.1.1 Perbedaan Himpunan Fuzzy dengan Himpunan Pasti (crisp) Pada himpunan pasti (crisp) nilai keanggotaan suatu item x dalam suatu himpunan A, yang sering ditulis dengan A [x ] , memiliki 2 kemungkinan, yaitu: Satu (1), yang berarti bahwa suatu item menjadi anggota dalam suatu himpunan, atau Nol (0), yang berarti bahwa suatu item tidak menjadi anggota suatu himpunan. Contoh : Misalkan variabel umur dibagi menjadi 3 kategori, yaitu: MUDA umur > 35 tahun PAROBAYA 35 umur 55 tahun TUA umur 55 tahun Nilai keanggotaan secara grafis, himpunan MUDA, PAROBAYA, dan TUA ini dapat dilihat pada gambar 2.1. MUDA
1
TUA
1
[ ] 0
PAROBAY
1
[ ] 3
[ ]
0
3
Umur
5
0
Umur
5 Umur
Gambar 2.1 Himpunan MUDA, PAROBAYA dan TUA Pada Gambar 2.1, dapat dijelaskan bahwa: Apabila seseorang berusia 34 tahun, maka ia dikatakan MUDA ( MUDA [34] = 1); Apabila seseorang berusia 35 tahun, maka ia dikatakan TIDAK MUDA ( MUDA [35] = 0); Apabila seseorang berusia 35 tahun kurang 1 hari, maka ia dikatakan TIDAK PAROBAYA ( PAROBAYA [35 th – 1 hari] = 0). Berdasarkan contoh diatas bisa dikatakan pemakaian himpunan crisp untuk menyatakan umur sangat tidak adil, adanya perubahan
6
Bab II Teori Penunjang
sedikit saja pada suatu nilai mengakibatkan perbedaan kategori yang cukup signifikan. Himpunan fuzzy digunakan untuk mengantisipasi hal tersebut. Seseorang dapat masuk dalam 2 himpunan yang berbeda, MUDA dan PAROBAYA, PAROBAYA dan TUA, dsb. Seberapa besar eksistensinya dalam himpunan tersebut dapat dilihat pada nilai keanggotaan-nya. Gambar 2.2 menunjukkan himpunan fuzzy untuk variable umur. MUDA
PAROBAYA
25 30
35 40 45 50 55
TUA
1
x 0,5 0,25 0
65
Umur
Gambar 2.2 Himpunan fuzzy untuk variabel umur Pada Gambar 2.2, dapat dilihat bahwa: Seseorang yang berumur 40 tahun, termasuk dalam himpunan MUDA dengan MUDA[40]=0,25; namun dia juga termasuk dalam himpunan PAROBAYA dengan PAROBAYA[40]=0,5. Seseorang yang berumur 50 tahun, termasuk dalam himpunan MUDA dengan TUA[40]=0,25; namun dia juga termasuk dalam himpunan PAROBAYA dengan PAROBAYA[50]=0,5. Kalau pada himpunan crisp, nilai keanggotaan hanya ada 2 kemungkinan, yaitu 0 atau 1, pada himpunan fuzzy nilai keanggotaan terletak pada rentang 0 sampai 1. Apabila x memiliki nilai keanggotaan fuzzy A[ x ]=0 berarti x tidak menjadi anggota himpunan A, demikian pula apabila x memiliki nilai keanggotaan fuzzy A[ x ]=1 berarti x menjadi anggota penuh pada himpunan A.
7
Bab II Teori Penunjang
2.1.2 Beberapa Hal yang Perlu Diketahui dalam Sistem Fuzzy Ada beberapa hal yang perlu diletahui dalam memahami sistem fuzzy, yaitu: a. Variabel Fuzzy Variabel fuzzy merupakan variabel yang hendak dibahas dalam suatu sistem fuzzy. Contoh: umur, temperatur, permintaan, dsb. b. Himpunan Fuzzy Himpunan fuzzy merupakan suatu grup yang mewakili suatu kondisi atau keadaan tertentu dalam suatu variabel fuzzy. Contoh: Variabel umur, terbagi menjadi 3 himpunan fuzzy, yaitu: MUDA, PAROBAYA, dan TUA.
c.
d.
Himpunan fuzzy memiliki 2 atribut, yaitu: 1. Linguistik, yaitu penamaan grup yang mewakili suatu keadaan atau kondisi tertentu dengan menggunakan bahasa alami, seperti: MUDA, PAROBAYA, TUA. 2. Numeris, yaitu suatu nilai (angka) yang menunjukkan ukuran dari suatu variabel seperti: 40, 25, 50, dsb. Semesta Pembicaraan Semesta pembicaraan adalah keseluruhan nilai yang diperbolehkan untuk dioperasikan dalam suatu variabel fuzzy. Semesta pembicaraan merupakan himpunan bilangan real yang senantiasa naik (bertambah) secara monoton dari kiri ke kanan. Nilai semesta pembicaraan dapat berupa bilangan positif maupun negatif. Adakalanya nilai semesta pembicaraan ini tidak dibatasi batas atasnya Contoh: Semesta pembicaraan untuk variabel umur: [0, + ]. Semesta pembicaraan untuk variabel temperatur: [0, 40]. Domain Domain himpunan fuzzy adalah keseluruhan nilai yang diijinkan dalam semesta pembicaraan dan boleh dioperasikan dalam suatu himpunan fuzzy. Seperti halnya dengan semesta pembicaraan, domain merupakan himpunan bilangan real yang senantiasa naik (bertambah) secara monoton dari kiri ke kanan. Nilai domain dapat berupa bilangan positif maupun negatif. Contoh domain himpunan fuzzy: • MUDA = [0, 45] • PAROBAYA = [35, 55] 8
Bab II Teori Penunjang
2.1.3 Fungsi Keanggotaan Fungsi keanggotaan (membership function) adalah suatu kurva yang menunjukkan pemetaan titik-titik input data ke dalam nilai keanggotaannya (sering juga disebut dengan derajat keanggotaan) yang memiliki interval antara 0 sampai 1[1]. Salah satu cara yang dapat digunakan untuk mendapatkan nilai keanggotaan adalah dengan melalui pendekatan fungsi. Ada beberapa fungsi yang dapat digunakan: a. Representasi Kurva Segitiga Kurva segitiga pada dasarnya merupakan gabungan antara 2 garis linear seperti terlihat pada Gambar 2.6.
1 Derajat Keanggotaan
[x ] 0 a
b
c
Domain
Gambar 2.3 Representasi Kurva Segitiga Fungsi keanggotaan:
0; [x ] = ( x a ) /(b a) (c x ) /(c b) b.
x a atau x c a xb bxc
Representasi Kurva Bentuk Bahu Daerah yang terletak di tengah-tengah suatu variable yang direpresentasikan dalam bentuk segitiga, pada sisi kanan dan kirinya akan naik dan turun (misalkan: DINGIN bergerak ke SEJUK bergerak ke HANGAT dan bergerak ke PANAS). Tetapi terkadang salah satu sisi dari variabel tersebut tidak mengalami perubahan. Sebagai contoh, apabila telah mencapai kondisi PANAS, kenaikan temperatur akan tetap berada pada kondisi 9
Bab II Teori Penunjang
PANAS. Himpunan fuzzy ’bahu’, bukan segitiga, digunakan untuk mengakhiri variabel suatu daerah fuzzy. Bahu kiri bergerak dari benar ke salah, sebaliknya bahu kanan bergerak dari salah ke benar. Gambar 5 menunjukkan variable TEMPERATUR dengan daerah bahunya.
Bahu kiri
DINGIN
Bahu kanan
SEJUK
NORMAL
HANGAT
PANAS
30
35
1 0 Derajat Keanggotaan
x 0 15
20 15
25
Temperatur
Gambar 2.4 Daerah ‘bahu’ pada variabel Temperatur 2.1.4 Operator Dasar Zadeh untuk Operasi Himpunan Fuzzy Seperti halnya himpunan konvensional, ada beberapa operasi yang didefinisikan secara khusus untuk mengkombinasi dan memodifikasi himpunan fuzzy. Nilai keanggotaan sebagai hasil dari operasi 2 himpunan sering dikenal dengan fire strength atau predikat. Ada 3 operator dasar yang diciptakan oleh Zadeh, yaitu : 1. Operator AND Operator ini berhubungan dengan operasi interseksi pada himpunan. -predikat sebagai hasil operasi dengan operator AND diperoleh dengan mengambil nilai keanggotaan terkecil antar elemen pada himpunan-himpunan yang bersangkutan.
A B
= min ( A [ x], B [ y] )
10
40 15
Bab II Teori Penunjang
2.
3.
Operator OR Operator ini berhubungan dengan operasi union pada himpunan. -predikat sebagai hasil operasi dengan operator OR diperoleh dengan mengambil nilai keanggotaan terbesar antar elemen pada himpunan-himpunan yang bersangkutan. A B = max ( A [ x], B [ y] ) Operator NOT Operator ini berhubungan dengan operasi komplemen pada himpunan. -predikat sebagai hasil operasi dengan operator NOT diperoleh dengan mengurangkan nilai keanggotaan elemen pada himpunan yang bersangkutan dari 1. A ' = 1 A [ x]
Misalkan nilai keanggotaan 27 tahun pada himpunan muda adalah 0,6 ( MUDA [27] = 0,6); dan nilai keanggotaan Rp 2.000.000,6
pada himpunan penghasilan tinggi adalah 0,8 ( GAJITINGGI [ 2 10 ] = 0,8). Nilai -predikat untuk usia muda dan gaji tinggi adalah : MUDAGAJITINGGI = min (
MUDA [ 27], GAJITINGGI [ 2 10 6 ] )
= min (0,6 ; 0,8) = 0,6 Nilai -predikat untuk usia muda atau gaji tinggi adalah : MUDAGAJITINGGI = max
MUDA [ 27], GAJITINGGI [ 2 10 6 ] )
Nilai
= max (0,6 ; 0,8) = 0,8 -predikat untuk usia tidak muda adalah :
MUDA' [27]
= 1 - MUDA [27] = 1 – 0,6 = 0,4
11
(
Bab II Teori Penunjang
2.2 FUZZY DATABASE MODEL TAHANI Berdasarkan buku panduan fuzzy database yang di susun oleh Sri Kusumadewi dan Hari Purnomo, telah dijelaskan bahwa database adalah kumpulan dari data yang saling berhubungan satu dengan yang lainnya, tersimpan di perangkat keras komputer dan digunakan perangkat lunak untuk memanipulasinya. Database system adalah suatu sistem informasi yang mengintegrasikan kumpulan data yang saling berhubungan satu dengan lainnya dan membuatnya tersedia untuk beberapa aplikasi dalam suatu organisasi[2]. Sebagian besar database 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 tabel 2.1.
NIP 01 02 03 04 05 06 07 08 09 10
Nama Lia Iwan Sari Andi Budi Amir Rian Kiki Alda Yoga
Tabel 2.1 Data Mentah Karyawan Tgl Lahir Th Masuk 03-06-1972 1996 23-09-1954 1985 12-12-1966 1988 06-03-1965 1998 04-12-1960 1990 18-11-1963 1989 28-05-1965 1997 09-07-1971 2001 14-08-1967 1999 17-09-1977 2000
Gaji/bln(Rp) 750.000 1.500.000 1.255.000 1.040.000 950.000 1.600.000 1.250.000 550.000 735.000 860.000
Kemudian dari tabel dt_karyawan, kita olah menjadi suatu tabel temporer untuk menghitung umur karyawan dan masa kerjanya.Tabel tersebut kita beri nama dengan tabel karyawan(Tabel 2.2)
12
Bab II Teori Penunjang
NIP 01 02 03 04 05 06 07 08 09 10
Nama Lia Iwan Sari Andi Budi Amir Rian Kiki Alda Yoga
Tabel 2.2 Karyawan Umur(th)* Masa Kerja(th)* 30 6 48 17 36 14 37 4 42 12 39 13 37 5 32 1 35 3 25 2
Gaji/bln(Rp) 750.000 1.500.000 1.255.000 1.040.000 950.000 1.600.000 1.250.000 550.000 735.000 860.000
*Misal sekarang tahun 2002
Dengan menggunakan database standar, kita dapat mencari datadata 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 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 tentang nama-nama karyawan yang masa kerjanya kurang dari atau sama dengan 5 tahun tetapi gajinya lebih dari 1 juta rupiah, maka kita bisa ciptakan suatu query:
13
Bab II Teori Penunjang
SELECT Nama FROM Karyawan WHERE (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 bisa menggunakan fuzzy database. Selama ini sudah ada penelitian tentang fuzzy database. Salah satu diantaranya adalah model Tahani. Fuzzy database model Tahani masih tetap menggunakan relasi standar, hanya saja model ini menggunakan teori himpunan fuzzy untuk mendapatkan informasi query-nya. Misalkan kita mengkategorikan usia karyawan di atas ke dalam himpunan : MUDA, PAROBAYA, dan TUA (Gambar 2.5)
MUDA
PAROBAYA
TUA
1
x
0
30 35 40 45 50 Umur (tahun)
Gambar 2.5 Fungsi keanggotaan untuk variabel usia
14
Bab II Teori Penunjang
Fungsi keanggotaan: x 30 1; 40 x µ MURAH [x] = ; 30 x 40 10 x 40 0; 0; x 35 atau x 50 µ SEDANG [x] = x 35 ; 35 x 45 10 50 x 5 ; 45 x 50
x 40 0; x 40 µ MAHAL [x] = ; 40 x 50 10 x 50 1;
Tabel 2.3 menunjukkan tabel karyawan berdasarkan umur dengan derajat keanggotaannya pada setiap himpunan.
NIP
Nama
01 02 03 04 05 06 07 08 09 10
Lia Iwan Sari Andi Budi Amir Rian Kiki Alda Yoga
Tabel 2.3 Karyawan berdasarkan umur Umur Derajat Keanggotaan ([x]) MUDA PAROBAYA TUA 30 1 0 0 48 0 0,4 0,8 36 0,4 0,1 0 37 0,3 0,2 0 42 0 0,7 0,2 39 0,1 0,4 0 37 0,3 0,2 0 32 0,8 0 0 35 0,5 0 0 25 1 0 0
15
Bab II Teori Penunjang
Variabel Masa Kerja bisa dikategorikan dalam himpunan : BARU, dan LAMA(Gambar 2.6)
BARU
LAMA
1
y 0,5 0,25 0
5
10
15
25
Masa Kerja (tahun)
Gambar 2.6 Fungsi keanggotaan untuk variabel Masa Kerja Fungsi keanggotaan: y 30 1; 15 y µ MURAH [y] = ; 5 y 15 10 y 15 0; y 10 0; y 10 µ LAMA [y] = ; 10 y 25 15 y 25 1;
Tabel 4.4 menunjukkan tabel karyawan berdasarkan masa kerja dengan derajat keanggotaannya pada setiap himpunan.
16
Bab II Teori Penunjang
Tabel 2.4 Karyawan berdasarkan masa kerja Nama Masa Kerja Derajat Keanggotaan ([y]) BARU LAMA Lia 6 0,9 0 Iwan 17 0 0,467 Sari 14 0,1 0,267 Andi 4 1 0 Budi 12 0,3 0,133 Amir 13 0,2 0,200 Rian 5 1 0 Kiki 1 1 0 Alda 3 1 0 Yoga 2 1 0
NIP 01 02 03 04 05 06 07 08 09 10
Variabel Gaji bisa dikerjakan dalam himpunan: RENDAH, SEDANG, dan TINGGI.(Gambar 2.7)
RENDAH
SEDANG
TINGGI
1
z 0,5 0,25 0
300
500
800 1000
1500
2000
Gaji (x 1000 Rp/bl)
Gambar 2.7 Fungsi keanggotaan untuk variabel Gaji
17
Bab II Teori Penunjang
Fungsi keanggotaan: z 300 1; 800 z µ MURAH [z] = ; 300 z 800 500 z 800 0; 0; z 500 atau z 1500 µ SEDANG [z] = z 500 ; 500 z 1000 500 1500 z 500 ; 1000 z 1500
z 1000 0; z 1000 µ MAHAL [z] = ; 1000 z 2000 1000 z 2000 1;
Tabel 2.5 menunjukkan tabel karyawan berdasarkan gaji dengan derajat keanggotaannya pada setiap himpunan.
NIP
Nama
01 02 03 04 05 06 07 08 09 10
Lia Iwan Sari Andi Budi Amir Rian Kiki Alda Yoga
Tabel 2.5 Karyawan berdasarkan gaji Gaji/bl Derajat Keanggotaan ([z]) RENDAH SEDANG TINGGI 750.000 0,1 0,50 0 1.500.000 0 0,49 0,255 1.255.000 0 0 0,500 1.040.000 0 0,92 0,040 950.000 0 0,90 0 1.600.000 0 0 0,600 1.250.000 0 0,50 0,250 550.000 0,5 0 0 735.000 0,13 0 0 860.000 0 0 0
18
Bab II Teori Penunjang
Ada beberapa query yang bisa diberikan, misalkan: Query 1: Siapa sajakah karyawan yang masih muda tapi memiliki gaji tinggi? SELECT Nama FROM Karyawan WHERE (Umur=”MUDA”) and (Gaji = “TINGGI”) Tabel 2.6 menunjukkan hasil query1, yaitu nama-nama karyawan yang masih muda tapi memiliki gaji yang tinggi.
NIP
03 07 06 04 01 02 05 08 09 10
Nama
Sari Rian Amir Andi Lia Iwan Budi Kiki Alda Yoga
Tabel 2.6 Hasil query1 Umur Gaji
36 37 39 37 30 48 42 32 35 25
1.500.000 1.250.000 1.600.000 1.040.000 750.000 1.255.000 950.000 550.000 735.000 860.000
Derajat Keanggotaan
MUDA
TINGGI
0,4 0,3 0,1 0,3 1 0 0 0,8 0,5 1
0,5 0,25 0,6 0,04 0 0,255 0 0 0 0
MUDA & TINGGI 0,4 0,25 0,1 0,04 0 0 0 0 0 0
Query 2: Siapa sajakah karyawan yang parobaya dan gaji sedang, atau karyawan yang parobaya tapi masa kerjanya sudah lama? SELECT Nama FROM Karyawan WHERE (Umur=”PAROBAYA”) and [(Gaji = “SEDANG”) atau (Masa kerja=”LAMA”)]
19
Bab II Teori Penunjang
Tabel 2.7 menunjukkan hasil query1, yaitu nama-nama karyawan yang parobaya dan gaji sedang, atau karyawan yang parobaya tapi masa kerjanya sudah lama.
NIP
05 02 04 06 07 03 01 08 09 10
Nama
Budi Iwan Andi Amir Rian Sari Lia Kiki Alda Yoga
Tabel 2.7 Hasil query2 Derajat Keanggotaan SEDANG
LAMA
0,9 0,49 0,92 0 0,5 0 0,5 0 0 0
0,133 0,467 0 0,2 0 0,267 0 0 0 0
20
SEDANG atau LAMA 0,9 0,49 0,92 0,2 0,5 0,267 0,5 0 0 0
PAROBAYA 0,7 0,4 0,2 0,4 0,2 0,1 0 0 0 0
PAROBAYA &(SEDANG atau LAMA) 0,7 0,4 0,2 0,2 0,2 0,1 0 0 0 0