Upload
phamdat
View
229
Download
0
Embed Size (px)
Citation preview
1
Implementasi Fuzzy Query Pada Database Untuk
Perekomendasian Beasiswa
OLEH :
NAMA : DEDDY IRWAN
NIM : 02 04020 55
DEPARTEMEN TEKNIK ELEKTRO
FAKULTAS TEKNIK
UNIVERSITAS SUMATERA UTARA
MEDAN
2008
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
2
Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa
OLEH :
NAMA : DEDDY IRWAN NIM : 02 04020 55
Tugas Akhir/ Karya Akhir ini diajukan untuk melengkapi salah satu syarat untuk memperoleh gelar Sarjana Teknik pada
DEPARTEMEN TEKNIK ELEKTRO FAKULTAS TEKNIK
UNIVERSITAS SUMATERA UTARA MEDAN
Sidang pada tanggal 24 bulan Mei tahun 2008 di depan Penguji :
1. Ir. Zahiful Bahri, M.Sc.
2. Ir. Pernantin Tarigan, M.Sc.
3. Fahmi, ST, M.Sc
: Ketua Penguji
: Anggota Penguji
: Anggota Penguji
:
:
:
Disetujui oleh :
Pembimbing Tugas Akhir
IR. T. Ahri Bahriun, M.Sc. NIP 131 456 553
Diketahui oleh : Ketua Departemen Teknik Elektro
Ir. Nasrul Abdi, MT NIP: 131 459 555
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
3
Implementasi Fuzzy Query Pada Database Untuk
Perekomendasian Beasiswa
OLEH :
NAMA : DEDDY IRWAN NIM : 02 04020 55
Tugas Akhir/ Karya Akhir ini diajukan untuk melengkapi salah satu syarat untuk memperoleh gelar Sarjana Teknik pada
DEPARTEMEN TEKNIK ELEKTRO FAKULTAS TEKNIK
UNIVERSITAS SUMATERA UTARA MEDAN
Sidang pada tanggal 26 bulan Mei tahun 2008 di depan Penguji :
1. Ir. Zahiful Bahri, M.Sc.
2. Ir. Pernantin Tarigan,
M.Sc.
3. 3. Fahmi, ST, M.Sc
: Ketua Penguji
: Anggota Penguji
: Anggota Penguji
Diketahui oleh : Ketua Departemen Teknik Elektro Ir. Nasrul Abdi, MT NIP: 131 459 555
Disetujui oleh : Pembimbing Tugas Akhir IR. T. Ahri Bahriun, M.Sc. NIP 131 456 553
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
4
ABSTRAK
Sistem database relasional yang ada sampai sekarang ini hanya mampu menangani data yang bersifat pasti (crispy), deterministik dan presisi. Padahal dalam kondisi nyata, sering sekali dibutuhkan data yang samar untuk proses pengambilan keputusan. Untuk pengambilan keputusan yang melibatkan variabel samar berdasarkan data crispy yang ada di dalam database, dapat direalisasikan dengan mengembangkan suatu aplikasi untuk menangani query yang diberikan kepada sistem database serta dengan melakukan fuzzifikasi pada data.
Pada Tugas akhir ini akan dibahas bagaimana mengimplementasikan logika fuzzy ke dalam sistem database, yaitu dengan membangun sebuah aplikasi yang melakukan proses fuzzifikasi data dan menangani query yang bernilai fuzzy. Dengan pengimplementasian sistem logika fuzzy ke dalam sistem database, query seleksi yang diberikan pada sistem database tidak akan melakukan seleksi secara tegas pada data. Tetapi akan memberikan pendekatan seleksi yang lebih menekankan pada derajat keanggotaan elemen pada himpunan yang diinginkan. Jadi walaupun tanpa mengimplementasikan sistem inferensi fuzzy (penalaran), diharapkan aplikasi ini nantinya dapat membantu dalam proses pengambilan keputusan (Decision Support System). Masalah yang diangkat dan diselesaikan adalah proses perekomendasian mahasiswa yang layak untuk mendapat beasiswa. Dimana calon mahasiswa yang akan direkomendasikan memiliki kriteria-kriteria yang bernilai fuzzy. Sedangkan data yang ada pada database bernilai pasti. Kriteria-kriteria yang dibutuhkan antara lain IPK, TOEFL, absensi dan penghasilan orang tua. Dalam pengembangan aplikasi ini dan graphical user interface-nya digunakan Java SE 6 (jdk6) dari Sun Microsystem dengan IDE NetBeans 5.5. Sedangkan untuk membangun dan manejemen databasenya menggunakan MySQL Server 5. Kata kunci : Logika Fuzzy, Fungsi Keanggotaan, Fire Strength, Database Relasional
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
5
DAFTAR ISI
ABSTRAK………………………………………………………………………...i
KATA PENGANTAR……………………………………………………………ii
DAFTAR ISI……………………………………….……………………………..iv
DAFTAR GAMBAR………………………………………………………….....vii
DAFTAR TABEL……………………………………………………………….viii
BAB I PENDAHULUAN
1.1 Latar Belakang……………............………………………….……...1
1.2 Tujuan Penulisan .…………....................…………………….……..3
1.3 Rumusan Masalah………………................…………………….…..3
1.4 Batasan Masalah…………………................………………….……4
1.5 Metodologi Penulisan……………............………………….………5
1.6 Sistematika Penulisan………………..……………………...........…7
BAB II LANDASAN TEORI………………..……………………............…...8
2.1 Logika Fuzzy ………………..……………………...........…............8
2.1.1 Himpunan Fuzzy…..……………………..........…...............9
2.1.2 Fungsi Keanggotaan.............................................................14
2.1.3 Operator Dasar Zadeh untuk Operasi Himpunan Fuzzy......18
2.2 Database Relasional..........................................................................19
2.2.1 Entity Relationship Diagram................................................21
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
6
2.2.2 Normalisasi Database...........................................................23
2.3 Fuzzifikasi Database.........................................................................24
2.3.1 Fuzzy Query pada Database.................................................27
2.3.2 Fuzzy Extension Database....................................................28
2.4 MySQL.............................................................................................29
2.5 Bahasa Java.......................................................................................30
2.6 IDE NetBeans 5.5.............................................................................31
2.7 Java Database Connectivity (JDBC) ...............................................27
BAB III PERANCANGAN DAN PEMBANGUNAN SISTEM
3.1 Perancangan Database....................................................................34
3.1.1 Database Mahasiswa...........................................................34
3.1.2 Database Temporari............................................................34
3.1.3 Database Hasil....................................................................36
3.2 Rancangan Sistem...........................................................................36
3.2.1 Data Flow Diagram.............................................................37
3.2.2 Batasan-batasan dalam Sistem............................................41
3.2.3 Proses Perhitungan Fire Strength.......................................42
3.3 Rancangan Antarmuka....................................................................43
3.3.1 Menu Utama........................................................................43
3.3.2 Seleksi Data.........................................................................46
3.4 Koneksi Database............................................................................48
3.4.1 Registrasi Driver..................................................................48
3.4.2 Kelas Driver Manager.........................................................49
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
7
3.4.3 Interface Connection...........................................................51
3.4.4 Interface Statement.............................................................51
3.4.5 Interface ResultSet..............................................................52
BAB IV UJI COBA APLIKASI DAN ANALISA
4.1 Uji Coba Fuzzifikasi......................................................................55
4.1.1 Percobaan 1........................................................................55
4.1.2 Percobaan 2........................................................................59
4.2 Analisa...........................................................................................62
4.2.1 Analisa Percobaan 1..........................................................62
4.2.2 Analisa Percobaan 2..........................................................64
BAB V PENUTUP
4.3 Kesimpulan....................................................................................67
4.4 Saran..............................................................................................68
Daftar Pustaka
Lampiran A : Listing Program Koneksi Database
Lampiran B : Listing Program Tabel Model
Lampiran C : Listing Program Fuzzifikasi
Lampiran D : Listing Program Fungsi Keanggotaan
Lampiran E : Listing Program Fire Strength
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
8
DAFTAR GAMBAR
Gambar 2.1 Himpunan MUDA, PAROBAYA, dan TUA.................................10
Gambar 2.2 Himpunan Fuzzy untuk Variabel Umur.........................................11
Gambar 2.3 Himpunan Fuzzy untuk Variabel Temperatur................................13
Gambar 2.4 Representasi Linier Naik.........…………………………….……..14
Gambar 2.5 Representasi Linier Turun.......…………………………….……..15
Gambar 2.6 Representasi Kurva Segitiga...........................................................16
Gambar 2.7 Representasi Kurva Trapesium.......................................................16
Gambar 2.8 Representasi Kurva Bahu...............................................................17
Gambar 2.9 Fungsi Keanggotaan Fuzzy ABG..................................................28
Gambar 3.1 Struktur Tabel MAHASISWA.....................……………………..34
Gambar 3.2 Sruktur Tabel Temporari................................................................35
Gambar 3.3 Sruktur Tabel Temporari1..............................................................36
Gambar 3.4 Bagan Sistem..................................................................................37
Gambar 3.5 Konteks Diagram Sistem.....................……………………...........38
Gambar 3.6 Overview Diagram Sistem..............................................................39
Gambar 3.7 Detail Diagram Sistem ..................................................................41
Gambar 3.8 Menu Utama...................................................................................44
Gambar 3.9 Frame Update data.........................................................................45
Gambar 3.10 Fuzzy Query Data...........................................................................47
Gambar 4.1 Query Seleksi Data........................................................................58
Gambar 4.2 Query Percobaan 2………….........................................................61
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
9
DAFTAR TABEL
Tabel 2.1 Contoh Database Crispy........……………………………………27
Tabel 2.2 Contoh Fuzzy Ekstension Database……………..……….............29
Tabel 3.1 Konversi Tipe Data SQL-Java…………………………………...53
Tabel 4.1 Tabel Mahasiswa...........................................................................56
Tabel 4.2 Tabel Temporari Percobaan 1 .......................................................57
Tabel 4.3 Tabel Hasil Percobaan 1................................................................58
Tabel 4.4 Tabel Temporari Percobaan 2 .......................................................60
Tabel 4.5 Tabel Hasil Percobaan 2................................................................61
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
10
BAB I
PENDAHULUAN
1.1. Latar Belakang Masalah
Sistem database yang ada sampai sekarang ini, hanya mampu menangani data
yang bersifat pasti (crisp). Begitu pula pada query yang menggunakan bahasa
Structured Query Language (SQL), pendefinisian-pendefinisian yang diberikan
hanya mampu menangani kondisi yang sifatnya juga pasti. Dengan kondisi yang
pasti berarti struktur dan parameter dari model harus terdefinisi secara tepat.
Sedangkan dalam kondisi nyata kehidupan sehari-hari, seringkali seseorang harus
berhadapan dengan kondisi yang memiliki nilai yang samar, tidak pasti, atau ambigu.
Pada kondisi yang samar berarti tidak terdapat suatu definisi yang pasti terhadap
keadaan tersebut, sedangkan kondisi ambigu berarti suatu kondisi dimana terjadi
ketidakjelasan dari beberapa alternatif yang harus diterima, yang mana yang benar
dan yang mana yang salah.
Sebagai salah satu contoh adalah ketika hendak menentukan mahasiswa yang
layak untuk direkomendasikan mendapat beasiswa. Pada proses perekomendasian
ini, tentunya ada kriteria-kriteria yang harus dipenuhi oleh si mahasiswa. Dasar
penilaian terhadap mahasiwa calon penerima beasiswa tidak hanya dinilai dari indeks
prestasinya saja, tetapi juga harus memperhatikan tingkat kehadirannya, penghasilan
orang tuanya, dan skor TOEFL yang dimilikinya. Apabila jumlah mahasiswa yang
ada relatif sedikit, maka proses perkomendasian untuk beasiswa yang ditawarkan
tidak begitu rumit, karena pegawai atau pihak yang bersangkutan hanya menganalisa
sejumlah record data. Tetapi proses ini akan sangat menyita waktu dan tenaga
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
11
apabila data mahasiswa yang harus dianalisa cukup besar, misalnya ada ratusan
bahkan sampai ribuan record. Dalam hal ini selain masalah efisiensi, maka peluang
terjadinya kesalahan akan semakin besar apabila dilakukan secara manual.
Berdasarkan permasalah tersebut, maka perlu kiranya dirancang suatu
aplikasi yang mampu menganalisa serta merekomendasikan nama-nama mahasiswa
yang layak menerima beasiswa. Agar aplikasi ini dapat berjalan dengan baik, maka
perlu didefinisikan secara baku tentang kriteria-kriteria untuk calon penerima
beasiswa. Berdasarkan kriteria-kriteria inilah nantinya aplikasi akan mengenalisa
data-data mahasiswa yang ada. Salah satu metode yang dapat digunakan untuk
aplikasi ini adalah dengan mengimplementasikan logika fuzzy.
Dengan logika fuzzy, data akan dikelompokkan ke dalam beberapa himpunan
fuzzy sesuai dengan variabel fuzzy yang akan diolah. Sifat kelekatan data pada
himpunan fuzzy ini bersifat linier atau eksponensial, tergantung dari fungsi
keanggotaan fuzzy yang dipilih. Pada dasarnya untuk memilih mahasiswa yang layak
untuk menerima suatu beasiswa dapat saja dilakukan dengan sistem logika klasik
yang diterapkan pada server-server database yang ada sekarang ini. Namun hal ini
akan menyebabkan data diolah secara tegas, sehingga mahasiswa-mahasiswa yang
memiliki kriteria yang mendekati pendefinisian tidak akan direkomendasikan.
Diharapkan dengan ditulisnya Tugas Akhir berjudul “ Implementasi Fuzzy
Query Pada Database Untuk Perekomendasian Beasiswa ”, permasalahan-
permasalahan dalam perekomendasian beasiswa untuk mahasiswa dapat dipecahkan.
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
12
1.2. Tujuan Penulisan
Adapun tujuan penulisan ini adalah untuk :
1. Menambah pengetahuan tentang penanganan database dan
interkoneksinya dengan aplikasi berbasis Java.
2. Memahami metode pengimplementasian logika fuzzy ke dalam
database (fuzzifikasi database).
3. Membuat suatu perangkat lunak yang dapat melakukan proses seleksi
dalam memilih mahasiswa yang layak direkomendasikan untuk
menerima beasiswa.
4. Memenuhi salah satu syarat untuk menyelesaikan pendidikan program
sarjana Teknik Elektro di Universitas Sumatera Utara.
1.3. Rumusan Masalah
Dalam pengembangan sistem untuk perekomendasian beasiswa ini, database
mahasiwa dibangun dengan menggunakan MySQL Server 5. Data-data yang
disimpan di dalam sistem database ini adalah data-data yang bersifat crisp, sehingga
hal pertama yang harus dilakukan adalah memfuzzifikasi data-data tersebut. Untuk
proses fuzzifikasi data dan tampilan bagi pengguna dibangun dengan menggunakan
bahasa program Java dengan acuan Java Standard Edition versi 6.0 (Mustang). Untuk
proses fuzzifikasi ada beberapa tahapan yang harus dilakukan, yaitu menentukan
fungsi keanggotaan, menentukan himpunan fuzzy, dan menentukan domain untuk
masing-masing himpunan.
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
13
MySQL dan JDK 6.0 adalah dua aplikasi yang berbeda, jadi untuk
menjembatani interkoneksi diantara kedua aplikasi ini harus mengunakan driver yang
tepat. Selain itu, tipe data pada MySQL dan Java juga berbeda, jadi harus dilakukan
konversi tipe data yang benar agar data-data yang disimpan dalam database dapat
diakses dan diproses oleh Java. Untuk memanipulasi data pada sistem database dari
aplikasi berbasis Java juga harus dilakukan dengan membuat sebuah obyek dan kelas
untuk menjalankan query dan menampung nilai.
Proses selanjutnya setelah fuzzifikasi adalah perhitungan fire strength untuk
masing-masing variabel dan himpunan fuzzy, dari proses inilah nantinya sistem akan
memberikan nilai derajat perekomendasian bagi mahasiswa untuk penerimaan
beasiswa.
1.4. Batasan Masalah
Berdasarkan kompleksitas masalah pada pengimplementasian logika fuzzy ke
dalam sistem database, maka penulis perlu membatasi masalah yang akan dibahas.
Adapun batasan-batasan masalah dalam Tugas Akhir ini adalah :
1. Query yang dilakukan tidak menangani data dari tabel yang berbeda.
2. Variabel-variabel penilaian dibatasi hanya pada besaran IPK,TOEFL,
absensi, dan gaji orang tua.
3. Ukuran database tidak terlalu besar, hanya sebatas simulasi perangkat
lunak saja.
4. Aplikasi logika fuzzy yang dirancang ini tidak memakai pembobotan
nilai pada suatu variabel atau himpunan.
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
14
1.5. Metodelogi Penulisan
Metodelogi dalam penulisan tugas akhir ini terdiri dari beberapa tahapan,
yaitu :
1. Perancangan Database
Pada tahap ini dilakukan pembangunan database yang terdiri dari 3
database, yaitu database mahasiswa, temporari, dan hasil. Database
mahasiswa berisikan data-data mahasiswa, database temporari adalah
database yang akan menyimpan nilai-nilai derajat keanggotaan masing-
masing mahasiswa untuk himpunan fuzzy yang didefinisikan
pengguna. Sedangkan database hasil adalah database yang menyimpan
nilai derajat perekomendasian hasil perhitungan fire strength dari nilai-
nilai yang ada di dalam database temporari.
2. Perancangan Sistem
Pada tahap ini dilakukan perancangan sistem yang akan dibangun,
meliputi disain user interface, fitur-fitur yang disediakan aplikasi,
penanganan koneksi dengan sistem database, dan keterbatasan sistem.
3. Fuzzifikasi Data
Pada tahapan ini aplikasi yang dibangun akan melakukan koneksi
dengan sistem database, melakukan pengaksesan data dan mengambil
data tersebut untuk difuzzifikasi. Yaitu dengan melakukan perhitungan
nilai derajat keanggotaan sesuai dengan fungsi keanggotaan dan
himpunan fuzzy yang didefinisikan pengguna. Kemudian aplikasi akan
mengembalikan nilai perhitungan derajat keanggotaan tersebut ke
dalam sistem database.
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
15
4. Perhitungan Fire Strength
Nilai derajat keanggotaan yang dikembalikan oleh aplikasi ke dalam
sistem database dikelompokkan menjadi 4 varibel fuzzy yaitu IPK,
TOEFL, ABSENSI, dan GAJI_ORTU. Kemudian nilai-nilai ini akan
dikombinasikan dan dimanipulasi dengan operator Zadeh untuk
mendapatkan nilai fire strength, yaitu nilai yang dijadikan sebagai nilai
derajat perekomendasian mahasiswa dalam penerimaan beasiswa.
Semakin tinggi nilainya, maka derajat perekomendasiannya juga
semakin besar.
5. Pengujian Sistem
Pada tahapan ini dilakukan percobaan terhadap aplikasi yang telah
dibangun, yaitu dengan melakukan dua kali percobaan. Percobaan
pertama dilakukan tanpa mengubah nilai domain himpunan serta
dengan menggunakan operator OR pada masing-masing variabel fuzzy.
Sedangkan pada percobaan kedua dilakukan dengan mengubah nilai
domain masing-masing himpunan serta melakukan operasi dengan
mengkombinasikan operator AND dan OR.
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
16
1.6. Sistematika Penulisan
BAB I : PENDAHULUAN
Bab ini berisi latar belakang, tujuan penulisan, rumusan
permasalahan, batasan masalah, metodologi penulisan, serta
sistematika penulisan.
BAB II : LANDASAN TEORI
Bab ini membahas tentang teori-teori pendukung dalam
pembuatan aplikasi ini, yaitu teori mengenai logika fuzzy,
database relasional, dan konsep tentang fuzzifikasi database.
Selain itu pada bab ini juga dipaparkan secara ringkas mengenai
tools pengembangan aplikasi, yaitu Java (JDK 6.0), MySQL
Server 5, dan IDE NetBeans 5.5.
BAB III : PERANCANGAN DAN PEMBANGUNAN APLIKASI
Bab ini membahas tentang perancangan dan pembangunan
aplikasi, mencakup perancangan database, perancangan sistem,
programming, serta GUI (Graphical User Interface ).
BAB IV : UJI COBA DAN ANALISA
Pada bab ini diuraikan mengenai uji coba pada aplikasi yang telah
dibuat serta melakukan analisa terhadap hasil yang diperoleh.
BAB V : PENUTUP
Dalam bab penutup ini, berisi kesimpulan dari hasil yang telah
dikerjakan berdasarkan uji coba dan analisa yang dilakukan.
Selain itu , juga berisi saran serta petunjuk pengembangan bagi
penyempurnaan proyek Tugas Akhir ini.
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
17
BAB II
LANDASAN TEORI
2.8 Logika Fuzzy
Sistem fuzzy dicetuskan oleh Lotfi A. Zadeh pada tahun 1960, konsep ini
pada dasarnya berhubungan dengan bagaimana manusia menangani ketidakpastian
(imprecise) dan informasi yang tidak pasti (uncertain). Zadeh menirukan bagaimana
manusia menggunakan perkiraan dan pertimbangan (approximate reasoning) dalam
hal yang berhubungan dengan ketidakpastian, ketidaktepatan, kerancuan (ambiguity),
dan ketidakjelasan (vagueness) yang dialami dalam pengambilan keputusan. Logika
fuzzy adalah superset (bagian yang melingkupi) logika bolean yang dikembangkan
untuk menangani suatu komponen atau informasi secara keseluruhan. Konsep logika
fuzzy ini dikembangkan karena beberapa alasan, yang diantaranya adalah :
1. Keanggotaan suatu elemen terhadap suatu himpunan menjadi “fuzzy”
atau “samar”. Dalam hal ini, ada elemen yang posisinya sebagai
anggota atau bukan anggota dari suatu himpunan tidak diketahui
dengan pasti.
2. Keanggotaan elemen dalam suatu himpunan pasti sangat curam dan
mempuyai batasan yang kaku.
Penilaian yang dilakukan dengan logika klasik hanya mungkinkan untuk
mengolah informasi yang benar atau salah. Logika ini tidak mampu menangani
informasi yang tidak pasti, walaupun di dalam informasi tersebut ada data yang
tersimpan. Dalam logika klasik, keanggotaan suatu elemen dalam himpunan
dipresentasikan dengan 0 bila bukan anggota dan 1 bila merupakan anggota. Jadi
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
18
himpunannya adalah {0,1}. Sedangkan pada logika fuzzy nilai kenggotaan ada pada
interval [0,1]. Jadi pada dasarnya sistem fuzzy merupakan gagasan aproksimasi yang
didasarkan pada gagasan eksak.
2.8.1 Himpunan Fuzzy
Himpunan fuzzy secara formal dapat didefinisikan seperti pada Persamaan
2.1 berikut :
}]1,0[)(,:/)({ ℜ∈∈∈= xXxxxA AA µµ ………....(2.1)
Dimana )(xAµ adalah derajat keanggotaan elemen x pada himpunan fuzzy A dengan
cakupan nilai keanggotaan antara 0 dan 1 yang merupakan anggota bilangan real.
Dimana bila )(xAµ = 0, mengindikasikan bahwa x bukan bagian dari himpunan
fuzzy A dan sebaliknya jika )(xAµ = 1, maka x adalah bagian dari himpunan fuzzy
A. Secara umum, himpunan fuzzy A dapat dianggap sebagai fungsi )(xAµ yang
mencocokkan setiap elemen dari semesta pembicaraan X dengan derajat keanggotaan
menjadi anggota himpunan A. Jika fungsi keanggotaan hanya menghasilkan nilai
keanggotaan {0,1}, maka hasilnya bukanlah fuzzy melainkan tegas (crisp).
Pada himpunan tegas (crisp) nilai keanggotaan suatu item x dalam suatu
himpunan A, yang sering ditulis dengan )(xAµ , hanya memiliki 2
kemungkinan yaitu 0 dan 1. Sebagai contoh, misalkan variabel umur dibagi menjadi
3 kategori, yaitu:
• MUDA umur < 35 tahun
• PAROBAYA 35 � umur � 55 tahun
• TUA umur � 55 tahun
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
19
Nilai keanggotaan secara grafis, himpunan MUDA, PAROBAYA, dan TUA ini
dapat dilihat pada Gambar 2.1.
Gambar 2.1 Himpunan MUDA, PAROBAYA, dan TUA.
Pada Gambar 2.1, dapat dilihat bahwa:
1. Apabila seseorang berusia 34 tahun, maka ia dikatakan MUDA
(�MUDA[34] = 1);
2. Apabila seseorang berusia 35 tahun, maka ia dikatakan TIDAK MUDA
�MUDA[35] = 0);
3. 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 sedikit saja pada
nilai elemen 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 eksistensi elemen yang ditinjau dalam himpunan
tersebut dapat ditentukan dan diukur dengan nilai derajat keanggotaannya.
Gambar 2.2 menunjukkan himpunan fuzzy untuk variabel umur.
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
20
Gambar 2.2 Himpunan Fuzzy untuk Variabel Umur
Pada Gambar 2.2, dapat dilihat bahwa:
1. 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.
2. 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 dalam himpunan crisp nilai keanggotaannya hanya ada 2 kemungkinan,
yaitu 0 atau 1. Sedangkan 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.
Terkadang kemiripan antara keanggotaan fuzzy dengan probabilitas
menimbulkan kerancuan. Keduanya memiliki nilai pada interval [0,1], namun
interpretasi nilainya sangat berbeda. Keanggotaan fuzzy memberikan suatu ukuran
terhadap pendapat atau keputusan, sedangkan probabilitas mengindikasikan proporsi
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
21
terhadap keseringan suatu hasil bernilai benar dalam jangka panjang (tinjauan).
Misalnya, jika nilai keanggotaan suatu himpunan fuzzy MUDA adalah 0,9; maka
tidak perlu dipermasalahkan berapa seringnya nilai itu diulang secara individual
untuk mengharapkan suatu hasil yang hampir pasti MUDA. Di lain pihak, nilai
probabilitas 0,9 MUDA berarti 10% dari himpunan tersebut diharapkan tidak
MUDA.
Himpunan fuzzy memiliki 2 atribut, yaitu :
1. Linguistik, yaitu penamaan suatu grup yang mewakili suatu keadaan atau
kondisi tertentu dengan menggunakan bahasa alami, seperti : MUDA,
PAROBAYA, dan TUA
2. Numeris, yaitu suatu nilai (angka) yang menunjukkan ukuran dari suatu
variabel seperti : 40, 25, 50, dan sebagainya.
Ada beberapa hal yang perlu diketahui dalam memahami sistem fuzzy, yaitu :
1. Variabel Fuzzy
Variabel fuzzy merupakan variabel yang hendak dibahas dalam suatu sistem
fuzzy. Contoh : umur, temperatur, permintaan, dan lain-lain.
2. Himpunan Fuzzy
Himpunan fuzzy merupakan suatu grup yang mewakili suatu kondisi atau
keadaan tertentu dalam suatu variabel fuzzy.
Contoh :
Variabel temperatur terbagi menjadi 5 himpunan fuzzy, yaitu : DINGIN,
SEJUK, NORMAL, HANGAT, dan PANAS. (Gambar 2.3)
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
22
Gambar 2.3 Himpunan Fuzzy pada Variabel Temperatur
3. 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 atau sebaliknya. Nilai semesta pembicaran dapat berupa
bilangan positif maupun negatif. Contoh semesta pembicaan :
• Semesta pembicaraan untuk variabel umur : [0 +�]
• Semesta pembicaraan untuk variabel temperature : [0 40]
4. Domain
Domain himpunan fuzzy adalah keseluruhan nilai yang diizinkan dan boleh
dioperasikan dalam suatu himpunan fuzzy. Seperti halnya semesta
pembicaraan, domain merupakan himpunan bilangan real yang senantiasa
naik (bertambah) secara monoton dari kiri ke kanan. Nilai domain dapat
berupa bilangan positif maupun negative. Contoh domain himpunan fuzzy:
• MUDA = [0 35]
• PAROBAYA = [35 55]
• TUA = [55 +�]
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
23
2.8.2 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. Salah satu cara yang dapat digunakan untuk mendapatkan nilai
keanggotaan adalah dengan melalui pendekatan fungsi. Ada beberapa fungsi yang
dapat digunakan.
a. Representasi Linear
Pada representasi linear, pemetaan data input digambarkan sebagai
suatu garis lurus ke derajat keanggotaannya. Bentuk ini paling sederhana dan
menjadi pilihan yang baik untuk pendekatan suatu konsep yang kurang jelas.
Ada 2 keadaan himpunan fuzzy linear, yaitu:
1. Representasi Linear Naik
Kenaikan himpunan dimulai pada nilai domain yang memiliki derajat
keanggotaan nol (0) bergerak ke kanan menuju ke nilai domain yang
memiliki derajat keanggotaan lebih tinggi (Gambar2.4).
Gambar 2.4 Representasi Linier Naik
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
24
Persamaan fungsi keanggotaannya seperti terlihat pada Persamaan 2.2
berikut ini :
��
���
≤≤−−
≤
bxajikaabax
axjikax
);/()(
;0][µ ………...(2.2)
2. Representasi Linear Turun
Representasi linear turun merupakan kebalikan dari linear naik. Garis
lurus dimulai dari nilai domain dengan derajat keanggotaan
tertinggi pada sisi kiri, kemudian bergerak menurun ke nilai domain yang
memiliki derajat keanggotaan lebih rendah (Gambar 2.5).
Gambar 2.5 Representasi Linier Turun
Persamaan fungsi keanggotaannya seperti terlihat pada Persamaan 2.3
berikut ini :
{ bxajikaabxbx ≤≤−− );/()(][µ …………….(2.3)
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
25
b. Representasi Kurva Segitiga
Kurva segitiga pada dasarnya merupakan gabungan antara 2 garis linear
seperti terlihat pada Gambar 2.6.
Gambar 2.6 Representasi Kurva Segitiga
Persamaan fungsi keanggotaannya seperti pada Persamaan 2.4 berikut ini
:��
��
�
≤≤−−≤≤−−
≥≤
cxbbcxcbxaabax
cxatauax
x);/()();/()(
;0][µ ……………(2.4)
c. Representasi Kurva Trapesium
Kurva trapesium pada dasarnya seperti bentuk segitiga, hanya saja ada
beberapa titik yang memiliki nilai keanggotaan 1 seperti terlihat pada Gambar 2.7.
Gambar 2.7 Representasi Kurva Trapesium
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
26
Persamaan fungsi keanggotaannya seperti pada Persamaan 2.5 berikut ini :
��
�
��
�
�
≤≤−−≤≤
≤≤−−
≥≤
dxccdxdcxb
bxaabax
dxatauax
x
);/()(;1
);/()(
;0
][µ …………….(2.5)
d. Representasi Kurva Bahu
Representasi fungsi keanggotaan fuzzy dengan menggunakan kurva bahu
pada dasarnya adalah gabungan dari kurva segitiga dan kurva trapesium. Daerah
yang terletak di tengah-tengah kurva bahu ini, direpresentasikan dengan fungsi
keanggotaan segitiga, pada sisi kiri dan kanannya nilai keanggotan akan naik dan
turun. Tetapi terkadang pada salah sisi dari variabel fuzzy yang ditinjau ini terdapat
nilai yang konstan, yaitu pada himpunan ekstrim kiri dan ekstrim kanan. Hal ini
dapat dilihat pada Gambar 2.8.
Gambar 2.8 Representasi Kurva Bahu
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
27
2.8.3 Operator Dasar Zadeh untuk Operasi Himpunan Fuzzy
Ada beberapa operasi yang didefinisikan secara khusus untuk
mengkombinasi dan memodifikasi himpunan fuzzy. Nilai keanggotaan sebagai
hasil dari operasi 2 himpunan sering dikenal dengan nama fire strength atau
�-predikat. Ada 3 operator dasar yang dicptakan 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. Persamaan nilai keanggotaannya terlihat pada
Persamaan 2.6 berikut ini :
�A�B = min(�A[x], �B[y]) …………(2.6)
2. 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. Persamaan nilai keanggotaannya terlihat pada
Persamaan 2.7 berikut ini :
�AUB = max(�A[x], �B[y]) …………(2.7)
3. 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. Persamaan nilai keanggotaannya terlihat pada Persamaan
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
28
2.8 berikut ini :
�A’ = 1-�A[x] ..……………(2.8)
Contoh :
Misalkan nilai keanggotaan 27 tahun pada himpunan MUDA adalah
0,6 (�MUDA [27]=0,6); dan nilai keanggotaan Rp. 2.000.000 pada himpunan
pengahasilan TINGGI adalah 0,8 (�GAJITINGGI[2 x 106 ]=0,8); maka :
1. Nilai �-predikat untuk usia MUDA dan berpenghasilan TINGGI adalah :
�MUDA�GAJITINGGI = min(�MUDA [27], �GAJITINGGI[2 x 106 ] )
= min(0,6;0,8)
= 0,6
2. Nilai �-predikat untuk usia MUDA atau berpenghasilan TINGGI adalah
:�MUDAUGAJITINGGI = max(�MUDA [27], �GAJITINGGI[2 x 106 ] )
= max(0,6;0,8)
= 0,8
3. Nilai �-predikat untuk usia TIDAK MUDA adalah :
�MUDA = 1- �MUDA [27]
= 1- 0,6
= 0,4
2.9 Database Relasional
Database adalah kumpulan data yang terstruktur. Data sendiri merupakan
fakta mengenai obyek yang dinyatakan dengan nilai (angka, deretan karakter, atau
simbol). Database bertujuan untuk mengatur data sehingga diperoleh kemudahan,
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
29
ketepatan, dan kecepatan dalam mengambil kembali data. Database dapat
didefinisikan dalam berbagai sudut pandang, diantaranya adalah seperti berikut :
1. Himpunan kelompok data yang saling berhubungan dan terorganisasi
sedemikian rupa sehingga kelak dapat dimanfaatkan dengan cepat dan
mudah.
2. Kumpulan data yang saling berhubungan, disimpan secara bersamaan
sedemikian rupa tanpa pengulangan (redudancy) untuk memenuhi
kebutuhan.
3. kumpulan file/ tabel/ arsip yang saling berhubungan serta disimpan
dalam media penyimpan elektronik.
Sistem database yang terorganisir dengan baik dan handal, merupakan
perpaduan antara data, perangkat keras (hardware), sistem operasi, database
management system (DBMS), dan user. Salah satu model database yang umum dan
sering dipakai karena kehandalan dan kelebihan-kelebihannya adalah relational
database model (model database relasional)
Konsep database relasional pertama kali diperkenalkan oleh E.F. Codd pada
tahun 1970-an dalam sebuah artikel yang ditulisnya dengan judul “Association of
Computer for Large Shared Data Banks”. Model relasional merupakan kumpulan
dari tabel yang dipakai untuk merepresentasikan relasi diantara data, dimana tabel-
tabel tersebut tersusun dengan suatu aturan logis. Di dalam konsep relasional,
database mempunyai suatu struktur yang menggambarkan keterkaitan (integritas)
diantara elemen-elemen penyusun database. Integritas data tersebut dipertahankan
oleh sebuah komponen yang dinamakan kunci (key), yang dalam implementasinya
key ini mempunyai penjabaran dan tipe lebih lanjut.
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
30
Dalam pengembangan sistem database dengan model relasional ada dua hal
yang menjadi acauan dalam pelaksanaannya, yaitu :
1. Entity Relationship Diagram (ERD)
2. Normalisasi Database
2.9.1 Entity Relationship Diagram (ERD)
Untuk memudahkan pendeskripsian relasi diantara elemen-elemen peyusun
database, cara yang sering dipakai adalah dengan menggunakan entity relationship
diagram (ERD). Dengan metode ini pengembang dapat lebih mudah dalam
merancang sistem database serta relasi diantara entity-entity penyusun database
dapat digambarkan dengan lebih jelas kepada pengguna.
Terdapat tiga notasi dasar yang bekerja pada model E-R, yaitu : entity,
relationship, dan attribute. Sebuah entity adalah sebuah benda atau obyek di dunia
nyata yang dapat dibedakan dari semua obyek lainnya. Entity set adalah sekumpulan
entity yang mempuyai tipe yang sama. Entity set dilambangkan dengan bentuk
persegi panjang. Relationship adalah hubungan diantara beberapa entity dan
dilambangkan dengan bentuk diamond (ketupat). Sedangkan attribute merupakan
istilah yang dipakai untuk menyatakan atau mengelompokkan suatu entity. Attibute
dalam ERD dilambangkan dengan bentuk elips.
Ada beberapa istilah yang harus difahami sebelum merancang database
dengan model entity relationship diagram ini, diantaranya adalah :
1. Super Key
Satu atau lebih atribut (kumpulan atribut) yang dapat membedakan
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
31
setiap baris data dalam tabel secara unik, di mana tidak mungkin terjadi
pengulangan atau nilai yang sama dibaris berikutnya.
2. Kandidat Key
Kumpulan atribut minimal yang membedakan setiap baris data dalam
tabel secara unik. Untuk bisa menjadi kandidat key, suatu atribut harus
memenuhi persyaratan sebagai berikut :
a. Untuk satu nilai hanya mengindentifiasikan satu baris dalam satu
relasi (unik).
b. Tidak memiliki subset yang juga merupakan primary key.
c. Tidak dapat bernilai null.
3. Primary Key
Nilai dari primary key harus mengidentifikasikan sebuah baris secara
unik di dalam suatu relasi. Primary key boleh terdiri dari satu atau lebih
atribut relasi dengan syarat harus memenuhi persyaratan sebagai
kandidat key.
4. Alternatif Key
Adalah kunci yang tidak ada di dunia nyata, tetapi diadakan dan
dijadikan primary key. Kunci ini dibuat ketika tidak ada satupun atribut
dalam sebuah relasi yang bisa mewakili relasi tersebut atau kandidat key
yang ada tidak efektif untuk digunakan.
5. Koposit Key
Primary key yang terdiri lebih dari satu kunci.
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
32
6. Foreign Key(FK)
Kunci ini bukan merupakan kunci dari tabel yang diacu melainkan
kunci dari tabel lain.
7. Kardinalitas Pemetaan
Kardinalitas pemetan atau rasio kardinalitas menunjukkan jumlah entity
yang dihubungkan ke satu entity lain dengan suatu relationship set
.
2.9.2 Normalisasi Database
Salah satu tofik yang cukup kompleks dalam dunia manajemen database
relasional adalah proses untuk menormalisasi tabel-tabel dalam database. Alasan
utama melakukan normalisasi adalah untuk membentuk database yang efektif,
efisien, dan handal. Untuk menghilangkan insertion anomalies, deletion anomalies,
dan update anomalies, normalisasi yang harus dilakukan minimal sampai tahapan
ketiga. Normalisasi merupakan pendekatan dalam membangun struktur logika
database relasional yang secara langsung berkaitan dengan kinerja database. Dalam
membangun struktur logika data, dapat dilakukan dengan langsung menggunakan
prinsip-prinsip normalisasi atau melakukan transformasi dari model E-R ke dalam
bentuk tabel.
Dalam perspektif normalisasi sebuah database dikatakan baik jika setiap tabel
yang membentuk database tersebut sudah dalam keadaan normal. Suatu tabel
dikatakan normal jika memenuhi kriteria sebagai berikut :
1. Jika ada dekomposisi/ penguraian tabel, maka dekomposisinya dijamin
aman (lossless-join decomposition).
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
33
2. Terpeliharanya ketergantungan fungsional (functional dependency) pada
saat perubahan data.
3. Tidak melanggar Boyce Code Normal Form (BCNF), jika tidak
memungkinkan minimal tidak melanggar sampai bentuk normal ketiga.
Tahapan-tahapan dalam melakukan normalisasi terhadap database adalah :
1. Bentuk normal pertama (1st normal form)
Sebuah tabel dikatakan 1NF jika tidak ada duplikasi baris dalam tabel
dan masing-masing cell bernilai tunggal. Kemudian semua atribut yang
ada harus bergantung pada primary key.
2. Bentuk normal kedua (2nd normal form)
Bentuk normal kedua terpenuhi jika pada sebuah tabel semua atribut
yang tidak termasuk primary key memiliki ketergantungan fungsional
terhadap primary key secara utuh, tidak ada ketergantungan parsial.
3. Bentuk normal ketiga (3rd normal form)
Sebuah tabel dikatakan memenuhi bentuk normal ketiga (3NF) jika
tidak terdapat ketergantungan transitif, dimana atribut bukan kunci tidak
boleh bergantung pada atribut lainnya.
2.10 Fuzzifikasi Database
Database relasional telah terbukti sebagai model database yang paling handal
dan dipakai pada bermacam aplikasi sistem informasi dengan sukses. Tetapi
bagaimanapun juga, sistem database relasional yang diperkenalkan oleh Codd
(1970) tidak dapat menangani data yang ambigu. Data yang ditangani harus
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
34
merupakan data yang pasti atau bernilai kosong (null). Padahal dalam realita
kehidupan sekarang ini sering kali dibutuhkan data yang samar dan melibatkan
banyak variabel yang tidak pasti sebagai acuan dalam proses pengambilan keputusan.
Sejak awal dekade 1980-an, penelitian tentang implementasi pemakaian
kaedah logika fuzzy ( kaedah fuzzy diperkenalkan oleh Zadeh pada tahun 1965) telah
dilakukan untuk pengembangan berbagai macam model database. Tujuan dari
pemakaian logika fuzzy tersebut dalam pemodelan database adalah untuk
memperbaharui kemampuan database klasik agar dapat merepresentasikan dan
memanipulasi data atau informasi yang tidak pasti dan tidak akurat (ambigu).
Ternyata penerapan logika fuzzy ini memberikan kontribusi yang sangat besar
terutama pada model data relasional atau yang sejenisnya. Perlu dicatat, bahwa
pesatnya perkembangan kemampuan komputasi telah memberikan peluang bagi
muculnya apliksai database pada CAD/CAM (Computer Aided Design/ Computer
Aided Manufacturer), multimedia, sistem informasi geografis, dan lainya.
Untuk pengambilan keputusan berdasarkan data yang ambigu, teknologi atau
aplikasi database harus diarahkan tidak hanya mampu menyimpan data mentah saja.
Tetapi lebih kepada kemampuan penanganan informasi ambigu yang integral, di
mana dimungkinkan interprestasi data ambigu menjadi bagian dari proses
pengambilan keputusan. Sebagai contoh, suatu seleksi penerimaan beasiswa
mensyaratkan bahwa yang diterima adalah pelajar yang umurnya masih “MUDA”
dan memiliki indeks prestasi yang “BAIK”. Maka untuk interprestasi pernyataan
tersebut dalam aplikasi sistem database yang ada sekarang ini tidak dapat dilakukan,
hal ini karena adanya kerancuan dalam mendefinisikan data yang dikatagori MUDA
dan klasifikasi IPK-nya BAIK.
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
35
Kelemahan dalam sistem database ini dapat diatasi dengan melakukan
fuzzifikasi database, yaitu dengan mengimplementasikan logika fuzzy kedalam
sistem database. Dengan metode ini mekanisme seleksi yang dilakukan dalam sistem
database tidak lagi dilakukan secara tegas. Tetapi akan memberikan pendekatan
seleksi yang lebih menekankan pada derajat keanggotaan suatu elemen pada
himpunan yang diinginkan. Sebagai contoh apabila pada sistem database diberikan
query sebagai berikut :
SELECT * FROM MAHASISWA WHERE IPK=BAIK
Maka yang diberikan oleh aplikasi adalah mahasiswa-mahasiswa yang memiliki nilai
derajat keanggotan pada himpunan IPK berkategori BAIK dengan rentang nilai
keangotaan antara 0 sampai 1. Jadi semakin tinggi nilai derajat keanggotaan, maka
kelekatan si mahasiswa sebagai mahasiswa dengan kategori memiliki IPK yang
BAIK akan semakin besar. Sehingga untuk beberapa mahasiswa yang masuk dalam
kategori ini akan memiliki nilai derajat keanggotaan yang berbeda-beda, dengan
pengecualian memiliki IPK yang sama. Jadi dengan memanfaatkan nilai derajat
keanggotaan elemen atau entitas terhadap suatu himpunan yang didefinisikan, maka
walaupun tanpa mengimplementasikan sistem inferensi fuzzy (penalaran), sistem ini
dapat dimanfaatkan untuk membantu dalam proses pengambilan keputusan (Decision
Support System).
Dalam perkembangannya, sistem aplikasi database yang mampu menangani
data-data ambigu telah diimplementasikan secara luas. Misalnya, pada area dimana
data-data ambigu bukan hanya hal yang sudah biasa tetapi merupakan sesuatu yang
penting. Seperti pada bidang diagnosa kesehatan, invesatasi dan kecerdasan buatan.
Salah satu hal yang menjadi perhatian utama dalam implementasi fuzzy database
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
36
adalah efisiensi. Sistem haruslah cukup cepat untuk berinteraksi dengan manusia
sebagai penggunanya. Secara umum, ada 2 cara untuk mengimplementasikan logika
fuzzy dalam database. Yaitu :
1. Fuzzy Query pada Database : Yaitu dengan menghimpun data kepada
suatu himpunan fuzzy berdasarkan nilai derajat keanggotan.
2. Fuzzy Ekstension Database : adalah dengan memasukkan informasi fuzzy
pada database.
2.10.1 Fuzzy Query pada Database
Fuzzy query database adalah membuat suatu fuzzy query terhadap database
klasik. Yaitu, dengan membuat aplikasi yang dapat menangani query dimana
dalam query tersebut terdapat variabel yang bernilai fuzzy atau dengan kata lain
query tersebut memiliki variabel linguistik. Sedangkan data pada database yang
akan diakses merupakan data yang crispy. Misalnya sebagai contoh, suatu sistem
yang akan dibangun memiliki data-data sebagai mana terlihat pada Tabel 2.1.
Tabel 2.1 : Contoh database crispy
Nama Umur Absensi Nilai
Budi 19 4 83
Ahmad 17 2 80
Dian 18 3 50
Rojak 16 1 56
Ali 19 2 65
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
37
Dari Tabel 2.1, maka grafik fungsi keanggotaan umurnya adalah seperti terlihat pada
Gambar 2.9.
Gambar 2.9 Fungsi keanggotaan Fuzzy ABG
Berdasarkan data yang ada dalam database dan fungsi keanggotaan yang ada,
maka salah satu contoh fuzzy query-nya adalah :
SELECT NAMA FROM TABLE WHERE UMUR = ‘ABG’ AND NILAI < 80
Dari query di atas, terlihat bahwa pada pernyataan WHERE terdapat variabel yang
memiliki nilai linguistik yaitu UMUR. Maka NAMA yang akan ditampilkan adalah
pelajar dengan derajat keanggotaan UMUR dari himpunan fuzzy.
2.10.2 Fuzzy Ekstension Database
Fuzzy database adalah teknik penanganan informasi fuzzy dengan
memasukkan langsung nilai lingustik ke dalam database setelah melalui proses
perhitungan nilai derajat keanggotaan. Sebagai contoh dari Tabel 2.1 setelah
perhitungan fungsi keanggotaan, nilai lingustik dimasukkan ke dalam tabel itu
sendiri. Hal ini terlihat pada Tabel 2.2.
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
38
Tabel 2.2 : Contoh Fuzzy Database
Nama Umur Absensi Nilai
Budi Dewasa 4 Tinggi
Ahmad ABG 2 Tinggi
Dian Sedang 3 Rendah
Rojak ABG 1 Rendah
Ali Dewasa 2 Rata-rata
2.11 MySQL
MySQL adalah sebuah program database server yang mampu menerima dan
mengirimkan datanya dengan cepat, multi user serta menggunakan perintah standar
SQL. MySQL memiliki dua bentuk lisensi, yaitu FreeSoftware dan Shareware.
MySQL yang biasa digunakan adalah MySQL FreeSoftware yang berada di bawah
lisensi GNU/GPL (General Public License). Sebagai database server yang free,
artinya MySQL dapat secara bebas digunakan untuk kepentingan pribadi atau usaha.
Selain sebagai server, MySQL dapat juga berperan sebagai client sehingga sering
disebut database client/ server.
Pada mulanya MySQL hanya berjalan di bawah platform Unix, tetapi pada
perkembangannya muncul beberapa distro yang mampu berjalan pada beberapa
platform yang sifatnya shareware dan corporate seperti untuk Linux dan Window.
Di dalam sistemnya, MySQL merekam semua data user dalam sebuah tabel user
yang berada pada database bernama mysql untuk penanganan hak-hak akses user.
Sebagai database server, MySQL mampu menangani beberapa aplikasi berupa
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
39
program kompiler maupun bahasa Scripting Server Site seperti PHP, Perl, CGI, dan
Java untuk mengakses data yang disimpannya.
Kelebihan yang ditawarkan oleh MySQL sebagai Relational Database
Management System (RDBMS) adalah :
1. MySQL adalah sebuah software opensource dengan kapasitas
penyimpanan data hingga berukuran terabytes.
2. MySQL merupakan database client/server yang multiusers, sehingga
sebagai server dapat terhubung ke media internet untuk eksplorasinya.
Sedangkan sebagai client dapat melakukan query untuk mengakses
database server. Selain itu dapat digunakan oleh banyak pengguna
sekaligus.
3. MySQL didukung oleh ODBC (Open Database Connectivity), artinya
databasenya dapat diakses aplikasi apasaja seperti Java, Delphi dan Visual
Basic.
2.12 Bahasa Java
Java merupakan bahasa pemrograman yang dikembangkan oleh Sun
Microsystem. Bahasa Java dirancang sedemikian rupa agar perangkat lunak yang
dibuat menggunakan bahasa Java dapat berjalan pada semua platform (platform
independence). Ini berati bahwa sekali suatu program ditulis atau aplikasi dibangun
maka dapat dijalankan pada berbagai sistem operasi sebagaimana mestinya, tanpa
perlu melakukan kompilasi ulang. Java termasuk salah satu bahasa yang menerapkan
konsep pemrograman berorientasi objek (OOP).
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
40
Untuk mengembangkan aplikasi berbasis Java, diperlukan Java Development
Kit (JDK). Saat ini JDK telah mencapai versi 2 yang dikenal dengan Java 2
Platform. Platform ini dibagi menjadi tiga kategori, yaitu :
1. Java 2 Standard Edition (J2SE). Kategori ini digunakan untuk
mengembangkan dan menjalankan aplikasi Java berbasis PC.
2. Java 2 Enterprise Edition (J2EE). Platform ini digunakan untuk
mengembangkan aplikasi java dilingkungan enterprise, dengan
fungsi-fungsi seperti Enterprise Java Beans (EJB), COBRA, Servlet,
dan Java Server Page (JSP).
3. Java 2 Micro Ediion (J2ME) J2ME digunakan untuk mengembangkan
dan menjalankan aplikasi Java berbasis handheld devices, seperti
Personal Data Assistent (PDA), PocketPC, dan HandPhone.
2.13 IDE NetBeans 5.5
NetBeans sebagai IDE yang ditujukan untuk memudahkan pemrograman Java
telah disosialisasikan dikalangan instruktur Java dari Sun Microsystem pada awal
tahun 2006. Dalam NetBeans, pemrograman yang dilakukan berbasis visual dan
event-driven seperti pada IDE lainnya seperti Borland Delphi dan Microsoft Visual
Studio. NetBeans mencakup compiler atau builder, dan debugger internal. Fitur ini
akan sangat memudahkan proses paska perancangan program karena proses
deployment dan tes dapat dilakukan dalam satu IDE. NetBeans dirancang untuk
memudahkan perancangan dan pemakaian komponen dan mendaftarkannya di dalam
palette dari IDE NetBeans. Komponen tersebut nantinya akan dapat dipakai dalam
program Java, sehingga pembuatan komponen JavaBeans menjadi sangat mudah.
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
41
Tersedia template dan wizard yang dapat dipakai langsung dengan mekanisme drag
and drop serta kerangka kode program akan dihasilkan secara auto-generete.
NetBeans juga mendukung source-control untuk penulisan program, dalam hal ini
dapat dipakai internal VCS (Version Control System) yang telah disediakan (yaitu
CVS = Concurent Versioning System), ataupun memakai VCS eksternal.
Di dalam NetBeans, semua perancangan dan pemrograman dilakukan di
dalam kerangka sebuah proyek. Proyek Netbeans merupakan sekumpulan file yang
dikelompokkan di dalam satu kesatuan. File-file ini dapat berada pada satu direktori
atau pisah, tergantung dari jenis proyeknya. Ada jenis proyek standar dan ada proyek
bebas (free-form). Proyek standar memakai skrip Ant (otomatis dibuat oleh
NetBeans), sedangkan proyek free-form memakai skrip Ant yang dapat dibuat
sendiri.
Yang dimaksud dengan skrip Ant disini adalah Jakarta Ant. Ant dibangun
oleh Apche Software Foundation (http://ant.apache.org). Ant dipakai untuk
otomatisasi tugas-tugas yang rutin dilakukan oleh developer, seperti kompilasi, tes,
debug, running, dan packaging. Di sini Ant dipakai untuk mendefinisikan proses
build dan run dari proyek. Jakarta Ant sebagai build-tool saat ini boleh dikatakan
dominan dalam lingkungan Java/ XML. Ant dibangun dengan Java sehingga
memiliki keuntungan bersifat multi-platform sedangkan skripnya ditulis dengan
dalam format XML. Untuk membangun aplikasi Java dengan NetBeans pengetahuan
tentang Ant bukalah suatu keharusan, karena telah tersedia bermacam-macam
template standar yang disajikan dalam bentuk wizard.
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
42
2.14 Java Database Connectivity (JDBC)
Pada prinsipnya sembarang server database dapat diakses oleh program Java
asalkan tersedia driver Java Database Connectivity (JDBC) yang sesuai. Dengan
bahasa Java pengaksesan terhadap database dapat dilakukan baik secara lokal
maupun remote, SQL maupun non-SQL.
Java Database Connectivity (JDBC) adalah versi ODBC yang dibuat oleh
Sun Microsystems yang sepenuhnya dibangun dengan Java API. Sehingga JDBC
memiliki sifat crossplatform-nya Java. Sedangkan ODBC dibangun dengan bahasa C
sehingga hanya dapat dijalankan pada platform yang spesifik. Dengan JDBC
database-database dari vendor seperti Oracle, Sybase, Informix, dan Interbase dapat
diakses dengan syarat ketersedian driver database. Setiap server dari vendor berbeda
memerlukan driver berbeda, sedangkan untuk vendor yang telah bekerjasama dengan
Java tersedia driver dalam JDBC API yang dapat langsung dipakai. Dengan JDBC
perintah-perintah SQL dapat dikirimkan dari Java dan dijalankan oleh Relational
Database Management Systems (RDBMS) yang bersangkutan. Kelas-kelas serta
interface JDBC API dapat diakses dari dalam paket java.sql (core API) serta
javax.sql (standard Extension API).
Sedangkan untuk pengembangan aplikasi dilakukan dalam platform Windows
dan menggunakan RDBMS MySQL, maka konektor yang dipakai sebagai driver
untuk koneksi program Java (melalui JDBC) adalah MySQL Connector/J. Biasanya
paket ini didistribusikan dalam bentuk file ZIP yang berisi source serta data biner
dalam bentuk JAR. File JAR yang diperlukan untuk mengakses sever MySQL dari
program Java umumnya memiliki nama berbentuk “mysql-connector-java-X.Y.Z-
bin.jar” dimana X.Y.Z merupakan versi dari konektor.
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
43
BAB III
PERANCANGAN DAN PEMBANGUNAN SISTEM
3.5 Perancangan Database
Database yang digunakan adalah database standar yang umum digunakan
dengan struktur database relasional. Secara keseluruhan ada 3 database yang akan
dibuat untuk tujuan dan kegunaan yang berbeda, yaitu database mahasiswa,
temporari dan hasil.
3.5.1 Database Mahasiswa
Database ini merupakan database yang merekam data-data mahasiswa yang
akan diproses. Dalam database ini tabelnya diberi nama MAHASISWA, struktur
tabelnya terlihat pada Gambar 3.1 di bawah ini dengan NIM sebagai primary key.
Gambar 3.1 Struktur Tabel MAHASISWA
3.5.2 Database Temporari
Database ini berguna untuk menyimpan hasil perhitungan nilai fungsi
keanggotaan (membership function) yang telah ditentukan. Dalam database ini
terdapat dua tabel yang masing-masing bernama TEMPORARI dan TEMPORARI1.
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
44
Tabel TEMPORARI menyimpan data berupa nilai derajat keanggotaan ( µ ) yang
bersumber dari pengolahan dengan fungsi keanggotaan dan himpunan fuzzy dari
database mahasiswa. Struktur tabelnya tampak seperti pada Gambar 3.2, kriteria
dari tabel ini adalah :
1. Tabel memiliki kolom NIM yang berelasi dengan kolom NIM pada tabel asal
sebagai primary key.
2. Kolom selain kolom NIM, NAMA, dan STATUS merupakan kolom yang
berisi nilai keanggotaan ( µ ).
���������
�� ���
���
�����
����� �
��������
�����������
������
Gambar 3.2 Struktur Tabel TEMPORARI
Tabel yang kedua adalah tabel TEMPORARI1, di dalam tabel ini terdapat
kolom DK yang merekam nilai derajat keanggotaan ( µ ) hasil dari operasi himpunan
dari kolom DK_IPK dan DK_TOEFL dari TEMPORARI. Sedangkan kolom DK1
merekam nilai derajat keanggotan ( µ ) dari operasi himpunan antara kolom
DK_ABSENSI dan kolom DK_GAJI_ORTU. Kemudian untuk mendapat nilai
derajat keanggotaan final yang nantinya dijadikan sebagai nilai derajat
perkomendasian, didapat dengan melakukan operasi himpunan antara DK dan DK1
dan disimpan di dalam kolom DK_HASIL. Struktur tabel ini tampak pada Gambar
3.3.
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
45
Gambar 3.3 Struktur Tabel TEMPORARI1
3.5.3 Database Hasil
Database ini akan menyimpan hasil dari seluruh proses yang dilakukan oleh
sistem, nama tabel pada database ini adalah HASIL. Dalam tabel ini terdapat NIM
mahasiswa yang direkomendasikan beserta nilai derajat perekomendasian yang
merupakan hasil dari perhitungan fire strength. Dari tabel ini pengguna dapat melihat
mahasiswa-mahasiswa yang direkomendasikan berdasarkan kriteria yang telah
dimasukkan. Tabel HASIL hanya terdiri dari 3 kolom, yaitu kolom NIM sebagai
primary key, kolom NAMA, dan kolom DERAJAT_PEREKOMENDASIAN.
3.6 Rancangan Sistem
Secara umum sistem yang akan dibuat adalah seperti terlihat pada Gambar
3.4, dimana database yang berisi data-data mahasiswa akan dibaca oleh sistem,
kemudian setelah ditentukan fungsi keanggotaan dan himpunan fuzzy-nya sistem
akan menghitung nilai derajat keanggotaan data. Mekanisme pembacaan datanya
dilakukan dengan mengirimkan query dari aplikasi Java ke server MySQL. Data
yang telah dibaca kemudian diolah berdasarkan pendefinisikan fungsi keanggotaan
dan query data untuk mendapatkan nilai fire strength-nya. Setelah proses tersebut,
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
46
data hasil akan ditampil oleh aplikasi Java dalam bentuk tabel hasil dan dikirimkan
kembali ke server database membentuk tabel hasil.
Gambar 3.4 Bagan Sistem
3.6.1 Data Flow Diagram
1. Konteks Diagram
Konteks diagram sistem adalah seperti terlihat pada Gambar 3.5, Dari
konteks diagram terlihat bahwa ada dua entitas luar yang berhubungan dengan sistem
ini, yaitu : Mahasiswa dan Pengguna. Dari mahasiswa akan diperoleh data-data
mahasiswa. Sedangkan pengguna yang menjalankan sistem dapat menentukan
sendiri klasifikasi dari mahasiswa yang akan direkomendasikan, yaitu dengan cara :
1. Memasukkan variabel fuzzy yang dibutuhkan
2. Mendefinisikan himpunan fuzzy dari masing-masing variabel fuzzy
3. Menentukan fungsi keanggotaan dari masing-masing himpunan fuzzy
Kemudian untuk mendapatkan mahasiswa yang direkomendasikan, pengguna dapat
memasukkan query yang telah ada pada user interface. Hasil yang diterima oleh
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
47
pengguna adalah tabel yang berisi data mahasiswa yang direkomendasikan
berdasarkan variabel fuzzy, himpunan fuzzy, fungsi keanggotaan, dan query yang
dimasukkan oleh pengguna.
Gambar 3.5 Konteks Diagram Sistem
2. Overview Diagram
Overview diagram menunjukkan gambaran proses yang terajadi dalam sistem
secara garis besar. Seperti terlihat pada Gambar 3.6. Dari overview diagram tersebut
terlihat ada 2 proses yang terjadi, yaitu :
1. Proses Inisialisasi
Pada tahapan ini dilakukan inisialisasi hal-hal yang dibutuhkan oleh sistem.
Dalam proses ini pengguna harus melakukan hal-hal sebagai berikut :
a. Menentukan field (kolom) sebagai sumber data dimana fuzzifikasi
database dilakukan. Hal ini diperlukan karena dalam sistem ini terdapat
batasan yang salah satunya adalah variabel-variabel fuzzy yang akan
fuzzifikasi harus berada pada satu tabel asal yang sama.
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
48
b. Pendefinisian fungsi keanggotaan himpunan fuzzy. Hal ini bertujuan
untuk menentukan tipe pemetaan titik-titik input data ke dalam nilai
keanggotaan (derajat keanggotaan).
c. Mendefinisikan himpunan fuzzy untuk data-data yang akan
difazzifikasi, dalam hal ini pengguna dapat menentukan sendiri
himpunannya.
�����������
������ �!���"#!!�
$�%&��!�������
!#!�%!
'!���
(!
Gambar 3.6 Overview Diagram Sistem
2. Proses Fuzzifikasi
Untuk proses fuzzifikasi keterlibatan pengguna masih diperlukan, yaitu untuk
memasukkan fuzzy query yang nantinya akan dipakai untuk seleksi data. Untuk lebih
detail-nya maka proses fuzzifikasi akan ditampilakan seperti yang terlihat pada
Gambar 3.7 dan untuk pemrogramannya dapat dilihat pada Lampiran C.
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
49
Dalam proses fuzzifikasi ada beberapa tahapan yang dilakukan, yaitu :
a. Proses perhitungan derajat keanggotaan. Pada proses ini dilakukan
perhitungan nilai derajat keanggotaan ( µ ) untuk masing-masing
himpunan fuzzy yang ada dalam sistem. Perhitungan nilai ini
berdasarkan tipe fungsi keanggotaan yang sebelumnya telah
didefinisikan oleh pengguna. Data yang akan dihitung nilai
keanggotaannya diklasifikasikan menurut atribut himpunan fuzzy.
Kemudian hasilnya akan disimpan dalam tabel TEMPORARI yang ada
dalam database temporari sesuai dengan atribut masing-masing kolom
yang diproses. Kode program perhitungan nilai derajat keanggotaan ini
dapat dilihat pada lampiran D.
b. Proses perhitungan nilai fire strength. Nilai fire strength menunjukkan
seberapa besar rekomendasi yang diberikan oleh sistem (fire strength
ini memiliki nilai yang berkisar antara 0-1). Nilai 1 menunjukkan
rekomendasi penuh, jadi semakin mendekati 1 maka tingkat
perekomendasiaan seorang mahasiswa akan semakin tingggi. Namun
apabila fire strength mendekati 0, maka mahasiswa tersebut semakin
tidak direkomendasikan. Perhitungan fire strength ini membutuhkan
data DK ( µ ) dan variabel linguistik dari query yang ada. Selama
perhitungan fire strength data hasil akan disimpan langsung pada tabel
HASIL di database hasil. Untuk penjelasan tentang perhitungan fire
strength ini dapat dilihat pada subbab yang akan secara khusus
membahas proses perhitungan fire strength. Kode program perhitungan
nilai fire strength ini dapat dilihat pada lampiran E.
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
50
c. Proses menampilkan tabel hasil. Proses ini adalah proses yang terakhir
dari rangkaian proses yang dilakukan oleh sistem. Proses ini akan
menampilkan tabel hasil yang berisi nilai rekomendasi untuk masing-
masing mahasiswa berdasarkan perhitungan perhitungan fire strength.
Gambar 3.7 Detail Diagram Sistem
3.6.2 Batasan-batasan dalam Sistem
Batasan-batasan yang ada dalam sistem ini, antara lain adalah :
1. Derajat keanggotaan disimpan pada kolom (field) dengan atribut umum,
sehingga atribut tidak mendefinisikan kategori himpunan dari suatu variabel.
2. Fungsi keanggotaan yang tersedia hanya kurva bahu.
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
51
3. Himpunan fuzzy untuk masing-masing variabel fuzzy tidak dinamis, sehingga
pengguna tidak dapat menentukan batasan sesuai dengan keinginannya tanpa
mengubah sintaks program Java.
4. Query yang dapat dilakukan hanya dengan statement SELECT.
5. Variabel fuzzy diasumsikan setara dalam perhitungan fire strength.
3.6.3 Proses Perhitungan Fire Strength
Operator yang bisa digunakan untuk menghitung fire strength dalam sistem
ini ada dua yaitu AND dan OR. Dalam pengerjaannya sistem akan mengambil
operand dan operator sesuai dengan urutan mulai dari yang pertama di sebelah kiri
sampai pada yang terakhir disebelah kanan. Sebagai contoh adalah statement
linguistic berikut ini :
SELECT * FROM TEMPORARI WHERE IPK = ‘BAIK’ AND TOEFL =
KURANG’ OR ABSENSI = ‘BAIK’
Maka urutan pengerjaan yang akan dilakukan oleh sistem adalah :
1. Pertama kali sistem akan mengambil nilai keanggotaan dari variabel
fuzzy IPK dengan himpunan fuzzy baik dan variabel fuzzy TOEFL
dengan himpunan fuzzy kurang yang telah ada pada tabel
TEMPORARI. Kemudian melakukan operasi dengan operator AND.
Karena operator AND maka yang diambil adalah nilai minimal dari
kedua nilai derajat keanggotaan tersebut., kemudian hasilnya akan
disimpan dalam tabel TEMP1.
2. Langkah selanjutnya, hasil dari operasi yang pertama tadi misalnya
diberi nama Temp1. Maka selanjutnya sistem akan mengambil nilai
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
52
sementara yang ada pada tabel TEMP1 ini dan melakukan perhitungan
fire strength dengan operand (ABSENSI = ‘BAIK’ ) dengan operator
selanjutnya (OR) lalu disimpan di tabel TEMP2.
3. Ketika statement-nya sudah habis, berarti nilai yang dimasukkan ke
tabel TEMP2 adalah hasilnya. Maka selanjutnya data tersebut
dimasukkan ke tabel HASIL pada database hasil.
3.7 Rancangan Antarmuka
Pembuatan antarmuka atau Graphical User Interface (GUI) serta
pemrograman untuk aplikasi ini menggunakan Java Standard Edition, JDK versi 1.6
(internal-version 1.6, code-name Mustang). Sedangkan sebagai IDE dalam
pengembangan ini digunakan Netbeans 5.5 yang memiliki fitur Matisse GUI-
Builder.
3.7.1 Menu Utama
Frame menu utama merupakan tampilan yang disediakan untuk melakukan
semua proses yang berhubungan dengan fuzzifikasi dan fuzzy query dalam sistem
ini. Dalam frame menu utama seperti terlihat pada Gambar 3.8, terdapat empat
tabbedpane yang masing- masing untuk field IPK, TOEFL, ABSENSI, dan GAJI
ORANG TUA. Pada tabbedpane ini pengguna harus menentukan fungsi
keanggotaan yang akan dipakai dengan memilih fungsi pada combobox Fungsi
Keanggotaan dan menentukan himpunan fuzzy untuk masing-masing field dengan
mengambil pilihan pada combobox Himpunan.
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
53
Gambar 3.8 Menu Utama
Dari frame menu utama ini pengguna dapat melakukan beberapa fungsi yang
disediakan oleh aplikasi, yakni dengan menekan button-button yang tersedia. Berikut
adalah penjelasan mengenai fungsi-fungsi tersebut :
1. Button Database
Button ini digunakan untuk melihat database mahasiswa, yaitu database
yang dijadikan sumber data untuk difuzzifikasi dalam aplikasi ini
2. Button Update Data
Dengan menekan Button Update data maka akan mucul frame dengan
tampilan seperti terlihat pada Gambar 3.9. Di dalam frame ini tersedia
fungsi untuk mencari data dengan query berupa NIM mahasiswa.
Apabila data yang dicari tidak ada dan bila pengguna hendak
menambahkan data baru, maka pengguna dapat langsung
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
54
mengisikannya sesuai dengan field yang ada serta menyimpannya. Dari
frame ini pengguna dapat juga melakukan penghapusan data.
Gambar 3.9 Frame Update Data
3. Button Fuzzifikasi
Button Fuzzifikasi dipakai untuk mengolah data berdasarkan fungsi
keanggotaan dan himpunan pada masing-masing field dari database
MAHASISWA. Hasil dari fuzzifikasi ini nantinya akan disimpan di
dalam database bernama TEMPORARI yang berisi nilai-nilai derajat
kenggotaan.
4. Button Temp
Button ini digunakan untuk melihat tabel Temporari, yaitu tabel yang
berisi nama-nama mahasiwa beserta nilai derajat keanggotaannya pada
masing-masing himpunan fuzzy.
5. Button Clear Temp
Button ini digunakan untuk memberisihkan tabel Temporari, sesuai
dengan kemampuan sistem bahwa jika hendak melakukan proses
fuzzifikasi selanjutnya (yang kedua kali atau pengulangan proses).
Maka tabel temporari harus dibersihkan terlebih dahulu, jika hal ini
tidak dilakukan oleh pengguna maka akan menyebabkan sistem error.
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
55
6. Button Query Seleksi
Button ini digunakan untuk melakukan proses perhitungan fire strength
data-data yang ada di dalam tabel Temporari.
7. Button Hasil
Button ini digunakan untuk melihat database hasil, yaitu tabel berisikan
daftar mahasiswa yang direkomendasikan untuk mendapat beasiswa
8. Button Clear Hasil
Button ini digunakan untuk memberisihkan tabel Hasil, jika hendak
melakukan proses seleksi selanjutnya (yang kedua kali atau
pengulangan proses). Maka tabel Hasil harus dibersihkan terlebih
dahulu, jika hal ini tidak dilakukan oleh pengguna maka akan
menyebabkan sistem error.
9. Check Button Status
Check Button digunakan untuk mengekspresikan nilai false atau true
untuk status apakah mahasiswa sudah atau belum menerima beasiswa.
3.7.2 Seleksi Data
Button Query Seleksi yang digunakan untuk seleksi data dan menghitung
nilai fire strength, bila ditekan sekaligus akan menyimpan hasilnya ke dalam
database HASIL. Tetapi sebelumya pengguna harus menentukan operator-oprator
Zadeh untuk perhitungan fire strength pada combox operator yang tersedia. Menu
untuk seleksi data ini tampak seperti pada Gambar 3.10.
Dalam proses seleksi ini himpunan fuzzy yang dioperasikan dibagi menjadi
dua kelompok.. Operator 1 akan melakukan operasi pada kelompok pertama, yaitu
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
56
antara nilai derajat keanggotaan pada himpunan fuzzy untuk variabel IPK dengan
nilai derajat keanggotaan pada himpunan fuzzy untuk variabel TOEFL. Operator 3
digunakan untuk melakukan perhitungan fire strength antara variabel ABSENSI
dengan variabel GAJI ORTU untuk nilai derajat keanggotaanya pada himpunan yang
didefinisikan untuk masing-masing variabel tersebut. Sedangkan operator 2 adalah
operator yang akan melakukan proses perhitungan fire strength diantara kedua
kelompok ini. Jadi dalam penggunaan aplikasi ini, proses pemilihan operator harus
dimulai dengan memilih operator 1 atau operator 2 terlebih dahulu dengan
mengakhirkan pemilihan untuk operator 2. Jika hal tidak dilakukan sesuai dengan
urutan tersebut, maka aplikasi akan memberikan nilai yang tidak sesuai dengan
query.
Untuk check button Status, apabila pengguna memberikan nilai false. Maka
sistem atau aplikasi akan mencari mahasiswa yang belum pernah menerima beasiswa
sebelumnya. Tetapi apabila check button ini ditekan oleh pengguna atau diberikan
nilai true, maka dalam proses seleksi data dari tabel Temporari sistem akan
mengambil mahasiswa yang sudah pernah menerima beasiswa sebelumnya.
Gambar 3.10 Fuzzy Query Data
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
57
3.8 Koneksi Database
Untuk mengakses database yang pertamakali harus dilakukan adalah meng-
install driver dan kemudian membuat koneksi ke server database. Setelah koneksi
terbangun maka perintah-perintah SQL (query) untuk membangun, mengakses dan
manajemen database dapat dilakukan dari aplikasi berbasis Java, untuk lebih rinci
tentang coding koneksi antara server database dan Java dapat dilihat pada Lampiran
A, pada lampiran ini tercakup seluruh proses dari awal sampai akhir koneksi serta
bagaimana konversi data dilakukan sehingga aplikasi yang dirancang dapat berfungsi
sesuai dengan harapan
. Pada prinsipnya pemrograman database yang dilakukan dari aplikasi
berbasis Java melibatkan unsur-unsur sebagai berikut :
1. Loading dan setting driber JDBC.
2. Mendirikan koneksi database
3. Membuat obyek SQL-statement.
4. Mengeksekusi SQL-statement.
5. Menerima result-set sebagai data hasil eksekusi SQL--statement.
6. Menampilkan data result-set.
7. Menutup koneksi.
3.8.1 Registrasi Driver
Dalam IDE NetBeans yang dipakai dalam pengembangan aplikasi ini,
terdapat Database Explorer. Dengan memakai explorer ini, dapat dilakukan
beberapa hal yaitu seperti melihat dan mengubah koneksi yang ada, baik yang
berjalan maupun yang tidak berjalan. Memilih dan menambah driver database yang
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
58
baru. Serta menjalankan perintah-perintah SQL terhadap server database. Dengan
cara ini maka database, tabel, view dab manajemen database dapat dilakukan. Tetapi
terlebih dahulu harus dilakukan registerasi driver ke kelas JDBC (Java Database
Connectivity) untuk server database yang belum terdaftar. Apabila driver telah
tersedia di dalam JDBC API maka koneksi server databasenya sudah dapat langsung
dilakukan tanpa harus mendaftarkannya.
Di dalam sistem fuzzifikasi ini, konektor MySQL Connector/J dipakai
sebagai driver bagi koneksi program Java (melalui JDBC) ke MySQL. Di dalam IDE
NetBeans, untuk mendaftarkan driver ini dilakukan dengan langkah-langkah sebagai
berikut :
1. Dalam jendela Runtime, klik kanan di atas node Drivers dan kemudian
jalankan menu kontekstual Add Driver sehingga dialog Add JDBC
Driver terbuka.
2. Klik tombol Add dan tentukan lokasi dari file connector (JAR) berada.
3. Setelah dipilih, klik tombol Find dan kemudian pilih Driver Class
org.gjt.mm.mysql.Driver lalu tekon tombol OK.
Setelah proses tersebut dilaksanakan maka pada menu Runtime di dalam
node Driver-nya akan ditambahkan node baru yang bernama
jdbc:mysql://localhost:3306[root on Default schema].
3.8.2 Kelas DriverManager
Kelas java.sql.DriverManager dipakai untuk loading dan mengatur driver
JDBC, serta untuk mendirikan koneksi ke database. Untuk load terhadap driver
dilakukan dengan memakai method Class.forName(). Sedangkan untuk mendirikan
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
59
koneksi, dipakai method getConnection(), dua bentuk dari method ini adalah sebagai
berikut :
• connection getConnection(String url)
• connection getConnection (String url, String user, String pwd)
Parameter url (uniform resource locator) yang dipakai untuk menunjukkan lokasi
database. Bentuk umumnya adalah JDBC:subprotocol:subname. Sedangkan user dan
pwd adalah nama pemakai (user-ID) dan password. Berikut ini adalah penggalan
listing program yang dipakai untuk koneksi ke database yang bernama mahasiswa :
Connection con = null; Statement stmt = null; public Database() { try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/mahasiswa", "root", "elektro"); stmt = con.createStatement(); } catch (SQLException e){ System.err.println("ErrorSQl: " + e.getMessage()); }
Dari listing diatas, pertama kali program akan loading driver MySQL dengan
memakai method class.forName(). Kemudian koneksi database akan dilakukan oleh
DriverManager dengan memakai getConnection(). Dalam URL yang dipakai sebagai
subprotokol adalah mysql, localhost yang secara default memiliki IP 127.0.0.1
dinyatakan sebagai lokasi dari server MySQL (http//localhost). Nomor port 3306
merupakan nomor port default dari server MySQL. Database yang diakses bernama
mahasiswa, user ID-nya adalah root dengan password elektro.
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
60
3.8.3 Interface Connection
Ketika DriverManager membentuk koneksi dengan memakai
getConnection(), maka method ini akan mengembalikan obyek Connection. Interface
java.sql.Connection dipakai untuk membentuk koneksi (session) ke database serta
mengatur hubungan tersebut, seperti commit, rollback atau menyiapkan (prepare)
SQL-statement.
Keneksi yang telah dibuat pada akhirnya harus ditutup dengan memakai
close(). Berikut adalah penggalan programnya :
private void formWindowClosing(java.awt.event.WindowEvent evt) { if (stmt != null){ try{ stmt.close(); } catch(SQLException e) { System.err.println("Error SQL: " + e.getMessage()); } } if (con!= null){ try{ con.close(); } catch(SQLException e){ System.err.println("Error SQL: " + e.getMessage()); } } }
3.8.4 Interface Statement
Inteface java.sql.statement dipakai untuk menangani dan mengeksekusi SQL-
statement yang dikirimkan dari Aplikasi ke server database. Statemant dapat dibuat
dari obyek Connection dengan memakai method Connection.createStatement().
Statement natinya akan dieksekusi di dalam method getResultData(). Berikut ini
adalah listing program method getResultData() dan closeResultSet() :
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
61
public ResultSet getResultData(){ ResultSet rs = null; try { rs = stmt.executeQuery("select * from mahasiswa"); } catch(SQLException e){ System.err.println("Error SQL: " + e.getMessage()); } return rs; } public void closeResultSet(ResultSet rs){ if(rs !=null){ try{ rs.close(); } catch(SQLException e){ System.err.println("Error SQL: " + e.getMessage()); } } }
Dalam method getResultData(), obyek Statement dieksekusi oleh method
executeQuery(). Dalam hal ini SQL-statement yang dieksekusi adalah SELECT *
FROM mahasiswa, yang artinya meminta (query) seluruh kolom (“ *” ) dari tabel
mahasiswa dan hasilnya berupa ResultSet. Sedangkan method closeResultSet() adalah
method yang dipakai untuk menutup obyek ResultSet.
3.8.5 Interface ResultSet
Result-set merupakan data tabel yang ada di dalam database. Jika SQL-
statement tertentu dikirimkan ke server database untuk membaca record maka
hasilnya berupa result-set, yaitu baris-baris data hasil dari eksekusi query SQL
tersebut. Interface java.sql.ResultSet berfungsi untuk mengontrol letak kursor yang
menunjukkan baris (record) yang sedang aktif di dalam tebel database. Untuk
begerak ke baris berikutnya dipakai method next(). Untuk bergerak ke baris
sebelumynya dipakai method previous(). Sedangkan methode first() dan last()
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
62
dipakai untuk menuju baris pertama dan baris terakhir dari result-set. Untuk lebih
jelasnya, kode programnya dapat dilihat pada Lampiran B.
Interface ini juga berisi beberapa method yang berawalan get, seperti
getNumeric(), getDecimal(), getDate(), getDouble(), dan sebagainya. Method-method
ini dipakai untuk konversi dari tipe data SQL-based ke tipe data Java karena tipe data
antara SQL dan Java berbeda. Dalam SQL, tipe data lebih condong pada loossely-
typed sedangkan dalam Java strongly-typed. Berikut ini adalah daftar pemetaan tipe
data SQL – Java :
Tabel 3.1 Konversi tipe data SQL-Java
Tipe Data SQL Tipe Data Java
NUMERIC java.sql.Numeric
CHAR String
DECIMAL java.sql.Numeric
VARCHAR String
TYNIINT byte
LONGVARCHAR String
SMALLINT short
DATE java.sql.Date
INTEGER int
TIME java.sql.Date
BIGINT long
BINARY byte[]
REAL float
VARBINARY byte[]
FLOAT float
LANGVARBINARY byte[]
DOUBLE double
BIT boolean
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
63
Berikut ini adalah penggalan program yang memakai
interface.java.sql.ResultSet :
public DatabaseKastemisasi(ResultSet rs) { ResultSets = new ArrayList<String[]>(); try { while(rs.next()){ String[] row = { rs.getString("NIM"), rs.getString("NAMA"), rs.getString("IPK"), rs.getString("TOEFL"), rs.getString("ABSENSI"), rs.getString("GAJI_ORTU"), rs.getString("STATUS"), }; ResultSets.add(row); } } catch(Exception e){ System.out.println("Exception in deddy1model"); } } public Object getValueAt(int rowindex, int columnindex){ String[] row = ResultSets.get(rowindex); return row[columnindex]; } public int getRowCount(){ return ResultSets.size(); } public int getColumnCount(){ return colnum; } public String getColumnName(int param){ return colNames[param]; }
Dari penggalan program di atas, obyek Statement yang mengeksekusi
perintah SQL menghasilkan ResultSet, yaitu dengan memakai method
executeQuery(). Setelah obyek ResultSet didapatkan, barulah data dapat ditampilkan
atau diproses dengan memakai method-method lain yang ada.
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
64
BAB IV
UJI COBA APLIKASI DAN ANALISA
4.5 Uji Coba Fuzzifikasi
Untuk menjalankan sistem fuzzifikasi database dengan menggunkan metode
fuzzy query database ini, pengguna tinggal menjalankan program yang telah ter-
install. Dengan aplikasi ini pengguna tidak perlu login ke server database sebelum
menjalankan aplikasi, karena mekanisme login dan manajemen data secara sederhana
telah tersedia di dalam aplikasi. Tetapi walaupun begitu harus diperhatikan bahwa
server database yang dalam hal ini adalah MySQL server harus dalam keadaan aktif.
4.5.1 Percobaan 1
Pada percobaan 1 ini, aplikasi dijalankan sesuai dengan urutan proses yang
ada dengan tidak mengubah nilai default untuk masing-masing variabel fuzzy. Hasil
yang diharapkan adalah mahasiswa yang direkomendasikan berdasarkan kriteria
yang sudah ditetapkan sistem dengan query yang diberikan pengguna. Dalam
percobaan ini data yang digunakan adalah berasal dari database mahasiswa deangan
nama tabel MAHASISWA. Seperti terlihat pada Tabel 4.1.
Kemudian pada tabbed IPK didefinisikan bahwa fungsi keanggotaan dari IPK
adalah fungsi kurva dengan himpunan fuzzy istimewa. Pada saat pendefinisian ini
dilakukan sistem akan menampilkan pada pengguna nilai semesta pembicaan yang
dimungkinkan bagi domain IPK dan secara default juga sistem akan memberikan
nilai untuk batas bawah, nilai tengah, dan batas atas himpunan serta query seleksi
data untuk variabel IPK. Bagi pengguna yang ingin menentukan sendiri batas bawah,
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
65
nilai tengah, dan batas atas himpunan dapat secara langsung mengedit nilai yang
diberikan sistem. Tetapi harus sesuai dengan semesta pembicaraan bagi variabel
fuzzy yang diproses. Sedangkan untuk query seleksi pengguna tidak dapat
mengubahnya setelah pendefinisian variabel. Query ini berfungsi sebagai
pendefinisian tentang sifat fuzzy data pada variabel yang ditetapkan.
Tabel 4.1 Tabel Mahasiswa
Setelah selesai dengan variabel IPK, maka himpunan untuk variabel TOEFL
juga didefinisikan, yaitu dengan memilih fungsi keanggotaan kurva bahu dan
himpunan fuzzy baik. Sama seperti pada pendefinisian untuk IPK, secara default
sistem akan memberikan nilai untuk domain dan batas bawah, nilai tengah, batas atas
domain serta query seleksi. Demikian juga untuk variabel ABSENSI pendefinisian
juga dilakukan dengan memilih himpunan tertinggi yang ditawarkan di dalam field
Himpunan. Sedangkan untuk variabel GAJI_ORTU dilakukan sebaliknya. Yaitu
dengan memilih himpunan terendah yang ditawarkan aplikasi. Dengan
pendefinisiaan seperti ini, diharapkan sistem akan merekomendasikan mahasiswa
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
66
dengan nilai IPK istimewa, TOEFL istimewa, ABSENSI baik, dan GAJI_ORTU
rendah, serta belum menerima beasiswa.
Setelah proses pendefiniian selesai, maka button fuzzifikasi ditekan untuk
menghitung nilai derajat keanggotaan untuk setiap record pada database sesuai
variabel fuzzy masing-masing untuk himpunan fuzzy yang telah ditetapkan.
Kemudian setelah perhitungan nilai derajat keanggotan untuk masing-masing
variabel selesai, maka tabel temporari telah merekam hasil perhitungan tersebut.
Seperti terlihat pada Tabel 4.2.
Tabel 4.2 Tabel Temporari Percobaan 1
Tahapan selanjutnya adalah melakukan query untuk meyeleksi mahasiswa
yang direkomendasikan untuk mendapat beasiswa. Pada tahapan ini pengguna harus
memilih jenis operasi himpunan yang ada pada panel query seleksi. Operator yang
disediakan untuk operasi ini hanya ada dua, yaitu operator OR dan AND. Dalam
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
67
sistem ini untuk memasukkan operatornya harus dimulai dengan memasukan
operator pertama atau kedua terlebih dahulu dengan mengakhirkan operator kedua.
Pada Gambar 4.1 tampak bagaimana operasi query pada percobaan pertama ini.
Gambar 4.1 Query Seleksi Data
Setelah operator untuk masing-masing himpunan fuzzy ditentukan, maka
untuk memprosesnya dan agar data kirimkan ke tabel HASIL pada database hasil,
pengguna harus menekan tombol Query Seleksi. Sedangkan untuk melihat hasilnya
pengguna tinggal menekan tombol Hasil. Hasil dari percobaan 1 ini dapat dilihat
pada Tabel 4.3.
Tabel 4.3 Tabel Hasil Percobaan 1
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
68
4.5.2 Percobaan 2
Percobaan 2 ini dilakukan dengan cara yang sama dengan percobaan 1, tetapi
pada percobaan ini nilai-nilai untuk batas bawah, nilai tengah, nilai batas atas untuk
setiap variabel fuzzy akan diubah. Artinya sistem tidak akan membaca nilai default
yang telah diberika pada saat pemrograman, melainkan nilai yang diberikan
pengguna. Sebelum percobaan 2 dijalankan, tabel hasil dan tabel temporari harus
dibersihkan terlebih dahulu. Hal ini dilakukan dengan menekan tombol yang tersedia
untuk fungsi tersebut pada menu utama. Setelah tabel dibersihkan maka percobaan 2
dapat dilakukan. Dalam percobaan 2 ini dilakukan pengaturan nilai sebagai berikut :
a. Variabel IPK
1. Himpunan fuzzy yang dipilih adalah Baik
2. Nilai batas bawah = 3,4
3. Nilai tengah = 3,5
4. Nilai batas atas = 3,6
b. Variabel TOEFL
1. Himpunan fuzzy yang dipilih adalah Baik
2. Nilai batas bawah = 450
3. Nilai tengah = 500
4. Nilai batas atas = 550
c. Variabel ABSENSI
1. Himpunan fuzzy yang dipilih adalah Cukup
2. Nilai batas bawah = 75
3. Nilai tengah = 80
4. Nilai batas atas = 85
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
69
d. Variabel GAJI_ORTU
1. Himpunan fuzzy yang dipilih adalah Rendah
2. Nilai batas bawah = 2
3. Nilai tengah = 2.5
4. Nilai batas atas = 3
Setelah varibel-variabel fuzzy didefinisikan, maka proses fuzzifikasi dilakukan dan
dari proses ini dihasilkan data temporari sebagai mana terlihat pada Tabel 4.4.
Tabel 4.4 Tabel Temporari Percobaan 2
Tahapan selanjutnya adalah dengan memasukkan operator untuk query data
dari tabel Temporari ke tabel Hasil. Pada percobaan 2 ini akan dicoba dengan
memasukkan operator yang bervariasi. Yaitu :
1. Operator 1 = OR
2. Operator 3 = AND
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
70
3. Operator 2 = OR
Pada percobaan 2 ini yang diharapkan oleh pengguna adalah derajat
perekomendasian dengan kriteria mahasiswa seperti pada Gambar 4.2.
Gambar 4.1 Query Percobaan 2
Dari keseluruhan proses pada percobaan 2 ini, maka didapat hasil seperti
pada Tabel 4.6
Tabel 4.5 Tabel Hasil Percobaan 2
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
71
4.6 Analisa
Setelah percobaan 1 dan percobaan 2 dilakukan dan hasilnya berupa derajat
perkomendasian untuk calon mahasiswa penerima beasiswa berhasil didapatkan,
sehingga seorang mahasiswa calon penerima beasiswa dapat direkomendasikan
berdasarkan nilai derajat perekomendasian yang dihasilkan oleh aplikasi ini.
4.6.1 Analisa Percobaan 1
Pada percobaan 1, query yang diberikan kepada sistem adalah :
SELECT FROM mahasiswa WHERE (IPK=Istimewa OR TOEFL=Istimewa)
OR (ABSENSI=Baik OR GAJI_ORTU=Rendah)
Berdasarkan query tersebut, maka sistem akan memproses data yang ada pada tabel
TEMPORARI dengan tahapan sebagai berikut :
1. Nilai derajat keanggotaan pada kolom IPK (Istimewa) dioperasikan
dengan nilai derajat keanggotaan TOEFL (Istimewa). Karena nilai
derajat keanggotaan yang diambil sebagai hasil dari operator OR adalah
nilai yang terbesar, maka sistem akan mengambil nilai tersebut dan
memasukkannya ke dalam tabel TEMPORARI1 kolom DK.
2. Sama halnya seperti pada himpunan ABSENSI Baik dan GAJI_ORTU
Rendah dengan operator OR, maka nilai maksimal dari kedua himpunan
ini akan disimpan pada tabel TEMPORARI1 tetapi pada kolom DK1.
3. Pada tahapan selanjutnya, sistem telah memegang nilai derajat
keanggotaan untuk himpunan IPK Istimewa dan TOEFL Istimewa pada
kolom DK. Sedangkan nilai derajat keanggotaan untuk himpunan
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
72
ABSENSI Baik dan GAJI_ORTU Rendah dipegang oleh sistem untuk
masing-masing record pada kolom DK1.
4. Setelah nilai derajat keanggotaan pada kolom DK dan DK1 telah
terdefinisi, maka sistem melanjutkan pada tahapan selajutnya, yaitu
mengoperasikan nilai pada kolom DK dan DK1 dengan operator OR
serta menyimpan nilainya pada tabel TEMPORARI1 kolom
DK_HASIL.
5. Hasil akhir pada kolom DK_HASIL inilah yang dijadikan sebagai nilai
derajat perekomendasiaan yang diberikan oleh aplikasi.
Sebagai contoh, mahasiswa dengan NIM 020402087 memiliki data IPK =
3.14, TOEFL = 357, ABSENSI = 76, dan GAJI_ORTU = 2.7. Maka dari data
tersebut diperoleh nilai derajat keanggotaan untuk masing-masing variabel fuzzy
sebagai berikut :
1. Derajat keanggotaan IPK-nya pada himpunan Istimewa = 0.
2. Derajat keanggotaan TOEFL-nya pada himpunan Istimewa = 0.
3. Derajat keanggotaan ABSENSI-nya pada himpunan Absensi Baik = 0.
4. Derajat keanggotaan GAJI_ORTU-nya pada himpunan Rendah = 0.299.
Maka pada tahapan operasi kedua untuk mahasiswa ini diperoleh data sebagai
berikut :
1. Derajat keanggotaannya untuk himpunan IPK Istimewa dan TOEFL
Istimewa = 0 (DK).
�IPK U TOEFL = max (�IPK[0], �T0EFL[0])
= 0
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
73
2. Derajat keanggotaannya untuk himpunan ABSENSI Baik dan
GAJI_ORTU Rendah = 0 (DK1).
�ABSENSI U GAJI_ORTU = max (�ABSENSI[0], �GAJI_ORTU[0.299])
= 0.299
Sehingga derajat perekomendasian yang diberikan oleh sistem untuk
mahasiswa ini adalah :
�DK U DK1 = max (�DK[0], �DK1[0.299])
= 0.299
4.6.2 Analisa Percobaan 2
Pada percobaan 2, query yang diberikan kepada sistem adalah :
SELECT FROM mahasiswa WHERE (IPK=Baik OR TOEFL=Baik) OR
(ABSENSI=Cukup AND GAJI_ORTU=Sedang)
Berdasarkan query tersebut, maka sistem akan memproses data yang ada pada tabel
TEMPORARI dengan tahapan sebagai berikut :
1. Nilai derajat keanggotaan pada kolom IPK (Baik) dioperasikan dengan
nilai derajat keanggotaan TOEFL (Baik). Karena nilai derajat
keanggotaan yang diambil sebagai hasil dari operator OR adalah nilai
yang terbesar, maka sistem akan mengambil nilai tersebut dan
memasukkannya ke dalam tabel TEMPORARI1 kolom DK.
2. Sedangkan pada himpunan ABSENSI Cukup dan GAJI_ORTU Sedang
dengan operator AND, maka nilai terkecil dari kedua himpunan ini
yang diambil sebagai nilai derajat keanggotaannya, kemudian disimpan
di tabel TEMPORARI1 pada kolom DK1.
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
74
3. Pada tahapan selanjutnya, sistem telah memegang nilai derajat
keanggotaan untuk himpunan IPK Baik dan TOEFL Baik pada kolom
DK. Sedangkan nilai derajat keanggotaan untuk himpunan ABSENSI
Cukup dan GAJI_ORTU Sedang dipegang oleh sistem untuk masing-
masing record pada kolom DK1.
4. Setelah nilai derajat keanggotaan pada kolom DK dan DK1 telah
terdefinisi, maka sistem melanjutkan pada tahapan selajutnya, yaitu
mengoperasikan nilai pada kolom DK dan DK1 dengan operator OR
serta menyimpan nilainya pada tabel TEMPORARI1 kolom
DK_HASIL.
5. Hasil akhir pada kolom DK_HASIL inilah yang dijadikan sebagai nilai
derajat perekomendasiaan yang diberikan oleh aplikasi.
Sebagai contoh untuk diamati secara khusus, diambil dari percobaan 2 ini
adalah seorang mahasiswa yang memiliki NIM 020402087 memiliki data berupa
nilai IPK = 3.14, nilai TOEFL = 357, persentase ABSENSI = 76, dan jumlah
GAJI_ORTU = 2.7. Maka dari data tersebut diperoleh nilai derajat keanggotaan
untuk masing-masing variabel fuzzy sebagai berikut :
1. Derajat keanggotaan IPK-nya pada himpunan Baik = 0.
2. Derajat keanggotaan TOEFL-nya pada himpunan Baik = 0.
3. Derajat keanggotaan ABSENSI-nya pada himpunan Cukup = 0.2.
4. Derajat keanggotaan GAJI_ORTU-nya pada himpunan Sedang = 0.59.
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
75
Maka pada tahapan operasi kedua untuk mahasiswa ini, mekanisme
perhitungan fire strength yang dilakukan oleh aplikasi adalah seperti yang
dipaparkan di bawah :
1. Derajat keanggotaannya untuk himpunan IPK Istimewa dan TOEFL
Istimewa = 0 (DK).
�IPK U TOEFL = max (�IPK[0], �T0EFL[0])
= 0
2. Derajat keanggotaannya untuk himpunan ABSENSI Baik dan
GAJI_ORTU Rendah = 0 (DK1).
�ABSENSI � GAJI_ORTU = min (�CUKUP[0.2], �SEDANG[0.599])
= 0,2
Sehingga derajat perekomendasian yang diberikan oleh aplikasi melalui
proses perhitungan fire strength untuk mahasiswa ini adalah :
�DK U DK1 = max (�DK[0], �DK1[0.2])
= 0.2
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
76
BAB V
PENUTUP
4.7 Kesimpulan
Dari pengerjaan proyek Tugas Akhir ini dapat ditarik beberapa kesimpulan,
antara lain adalah :
1. Aplikasi berbasis Java dapat mengakses dan memanipulasi database
yang dibangun dengan MySQL server setelah dilakukan koneksi dengan
driver, konfigurasi, serta konversi tipe data yang tepat diantara
keduanya.
2. Seleksi berdasarkan sistem logika klasik yang tegas dan curam oleh
sistem database, dapat diubah menjadi seleksi yang menekankan pada
nilai derajat keanggotaan pada himpunan yang diacu.
3. Derajat perekomendasian yang diberikan oleh sistem ini hanya berasal
dari perhitungan nilai fire strength masing-masing variabel tanpa
menggunakan sistem inferensi fuzzy, tetapi walaupun demikian aplikasi
ini dapat dimanfaatkan untuk mendukung proses pengambilan
keputusan.
4. Pengguna harus mengetahui karakteristik dari operator-operator
himpunan fuzzy dalam menggunakan aplikasi ini. Karena dengan
memahami kerakteristik tersebut pengguna dapat memberikan
penekanan pada variabel fuzzy tertentu.
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
77
4.8 Saran
1. Diharapkan untuk pengembangan lebih lanjut, sistem atau aplikasi ini
dapat menangani data dari tabel-tabel yang berelasi. Sehingga database
yang dibangun tidak perlu terpisah dan berdiri sendiri.
2. Untuk pengambilan keputusan yang lebih baik lagi diharapkan dapat
menggunakan metode kombinasi (hybrid). Yaitu antara metode fuzzy
dengan metode artificial intelligence yang lainnya. Misalnya jaringan
syaraf tiruan.
3. Dalam pengembangan lebih lanjut, diharapkan varibel-variabel fuzzy
yang diolah memiliki pembobotan yang dinamis. Sehingga aplikasi dapat
menentukan variabel yang menjadi prioritas dalam pengambilan derajat
perekomendasian. Misalnya untuk beasiswa prestasi, keputusan yang
diambil lebih ditekankan pada prestasi akademik dan untuk beasiswa
kurang mampu, lebih ditekankan pada kondisi ekonomi calon penerima
beasiswa.
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
78
Daftar Pustaka
1. Sri Kusumadewi, 2003, “ Artificial Intelligence” , Graha Ilmu, Yogyakarta.
2. Thomas Sri Widodo, 2005, “ Sistem Neuro Fuzzy” , Graha Ilmu, Yogyakarta.
3. Yuniar Supardi, 2006, “ Java dan MySQL” , Elex Media Komputindo, Jakarata
4. Setiyo Cahyono, 2006, “ Pemrogramn Database dengan MySQL dan Java” ,
Informatika, Bandung.
5. Sri Hartati Wijono, B. Herry Suharto, Matius Soesilo Wijono, 2007,
“ Pemrograman GUI Swing Java dengan NetBeans 5” , Andi Yogyakarta.
6. Willem Siler, James J, Buckley, 2005, “ Fuzzy Expert System And Fuzzy
Reasoning” , John Wiley & Sons, Chichester, England.
7. J. Harris, 2006, “ Fuzzy Logic Application in Engineering Science” , Springer,
Dordrecht, Netherlands.
8. Timothy, J.Ross, 2004, “ Fuzzy Logic With Engineering Applications” , John
Wiley & Sons, Chichester, England.
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
79
Lampiran A Listing Porgram Koneksi Database /* * Database.java * * Created on March 26, 2008, 11:39 PM */ import java.sql.*; /** * * @author deddy */ public class Database extends javax.swing.JFrame { Connection con = null; Statement stmt = null; /** Creates new form Database */ public Database() { try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/beasiswa", "root", "elektro"); stmt = con.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } initComponents(); } public ResultSet getResultData(){ ResultSet rs = null; try { rs = stmt.executeQuery("select * from mahasiswa"); } catch(SQLException e){ System.err.println("Error SQL: " + e.getMessage()); } return rs; } public void closeResultSet(ResultSet rs){ if(rs !=null){ try{ rs.close(); } catch(SQLException e){ System.err.println("Error SQL: " + e.getMessage()); } } } /** This method is called from within the constructor to
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
80
* initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ // <editor-fold defaultstate="collapsed" desc=" Generated Code "> private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane(); jTable1 = new javax.swing.JTable(); ButtonOk = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { formWindowClosing(evt); } }); ResultSet rs = getResultData(); jTable1.setModel(new DatabaseKastemisasi(rs)); closeResultSet(rs); jScrollPane1.setViewportView(jTable1); ButtonOk.setText("OK"); ButtonOk.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { ButtonOkActionPerformed(evt); } }); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 375, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(ButtonOk)) .addContainerGap(15, Short.MAX_VALUE)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 201, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(ButtonOk) .addContainerGap(13, Short.MAX_VALUE)) ); pack(); }// </editor-fold> private void ButtonOkActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: setVisible(false); } private void formWindowClosing(java.awt.event.WindowEvent evt) {
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
81
// TODO add your handling code here: if (stmt != null){ try{ stmt.close(); } catch(SQLException e) { System.err.println("Error SQL: " + e.getMessage()); } } if (con!= null){ try{ con.close(); } catch(SQLException e){ System.err.println("Error SQL: " + e.getMessage()); } } } /** * @param args the command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new Database().setVisible(true); } }); } // Variables declaration - do not modify private javax.swing.JButton ButtonOk; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTable jTable1; // End of variables declaration }
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
82
Lampiran B Listing Porgram Tabel Model /* * DatabaseKastemisasi.java * Created on March 26, 2008, 11:45 PM * To change this template, choose Tools | Template Manager * and open the template in the editor. */ import javax.swing.table.AbstractTableModel; import java.sql.*; import java.util.ArrayList; public class DatabaseKastemisasi extends AbstractTableModel{ private int colnum = 7; private int rownum; private String[] colNames = {"NIM", "NAMA", "IPK","TOEFL","ABSENSI","GAJI_ORTU","STATUS",}; private ArrayList<String[]> ResultSets; /** Creates a new instance of DatabaseKastemisasi */ public DatabaseKastemisasi(ResultSet rs) { ResultSets = new ArrayList<String[]>(); try { while(rs.next()){ String[] row = { rs.getString("NIM"), rs.getString("NAMA"), rs.getString("IPK"), rs.getString("TOEFL"), rs.getString("ABSENSI"), rs.getString("GAJI_ORTU"), rs.getString("STATUS"), }; ResultSets.add(row); } } catch(Exception e){ System.out.println("Exception in deddy1model"); } } public Object getValueAt(int rowindex, int columnindex){ String[] row = ResultSets.get(rowindex); return row[columnindex]; } public int getRowCount(){ return ResultSets.size(); } public int getColumnCount(){ return colnum; } public String getColumnName(int param){ return colNames[param]; } }
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
83
Lampiran C Listing Porgram Fuzzifikasi IPK private void FuzzifikasiButtonActionPerformed(java.awt.event.ActionEvent evt) { // Menghitung fuzzy IPK String s = ComboBoxHimpunanIpk.getSelectedItem().toString(); if (s.equals("Buruk")){ String med1 = FieldAIpk.getText(); String med2 = FieldBIpk.getText(); String max = FieldCIpk.getText(); double a = Double.parseDouble(med1); double b = Double.parseDouble(med2); double c = Double.parseDouble(max); try{ try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/beasiswa", "root", "elektro"); stmt = con.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String sql="SELECT * FROM mahasiswa"; ResultSet rs = stmt.executeQuery(sql); while(rs.next()){ String ipk = rs.getString("IPK"); String nim = rs.getString("NIM"); String nama = rs.getString("NAMA"); String status = rs.getString("STATUS"); double x = Double.parseDouble(ipk); if ( x <= a || x >=c){ double h = Buruk1(a,b,c,x); String hs =String.valueOf(h); Connection con1 = null; Statement stmt1 = null; try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con1 = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt1 = con1.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage());
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
84
} String sql1="INSERT INTO temporari (NIM,NAMA,DK_IPK,STATUS) VALUE('"+nim+"','"+nama+"','"+hs+"','"+status+"');"; stmt1.executeUpdate(sql1); stmt1.close(); con1.close(); // JOptionPane.showMessageDialog(this,"Data telah tersimpan"); } else if ( a<=x && x<=b ){ double h = Buruk2(a,b,c,x); String hs =String.valueOf(h); Connection con1 = null; Statement stmt1 = null; try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con1 = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt1 = con1.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String sql1="INSERT INTO temporari (NIM,NAMA,DK_IPK,STATUS) VALUE('"+nim+"','"+nama+"','"+hs+"','"+status+"');"; stmt1.executeUpdate(sql1); stmt1.close(); con1.close(); } else if ( x>=b ){ double h = Buruk3(a,b,c,x); String hs =String.valueOf(h); Connection con1 = null; Statement stmt1 = null; try { Class.forName("org.gjt.mm.mysql.Driver"); catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); try { con1 = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt1 = con1.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String sql1="INSERT INTO temporari (NIM,NAMA,DK_IPK,STATUS) VALUE('"+nim+"','"+nama+"','"+hs+"','"+status+"');"; stmt1.executeUpdate(sql1); stmt1.close();
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
85
con1.close(); } } stmt.close(); con.close(); } catch(Exception e){System.out.println(e);} }else if(s.equals("Kurang")){ String min = FieldAIpk.getText(); String med = FieldBIpk.getText(); String max = FieldCIpk.getText(); double a = Double.parseDouble(min); double b = Double.parseDouble(med); double c = Double.parseDouble(max); try{ try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/beasiswa", "root", "elektro"); stmt = con.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String sql="SELECT * FROM mahasiswa"; ResultSet rs = stmt.executeQuery(sql); while(rs.next()){ String ipk = rs.getString("IPK"); String nim = rs.getString("NIM"); String nama = rs.getString("NAMA"); String status = rs.getString("STATUS"); double x = Double.parseDouble(ipk); if ( x <= a || x >= c ){ double h = Segitiga1(a,b,c,x); String hs =String.valueOf(h); Connection con1 = null; Statement stmt1 = null; try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con1 = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt1 = con1.createStatement(); }
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
86
catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String sql1="INSERT INTO temporari (NIM,NAMA,DK_IPK,STATUS) VALUE('"+nim+"','"+nama+"','"+hs+"','"+status+"');"; stmt1.executeUpdate(sql1); stmt1.close(); con1.close(); } else if ( a<=x && x<=b ) { double h = Segitiga2(a,b,c,x); String hs =String.valueOf(h); Connection con1 = null; Statement stmt1 = null; try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con1 = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt1 = con1.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String sql1="INSERT INTO temporari (NIM,NAMA,DK_IPK,STATUS) VALUE('"+nim+"','"+nama+"','"+hs+"','"+status+"');"; stmt1.executeUpdate(sql1); stmt1.close(); con1.close(); } else if( b<=x && x<=c ){ double h = Segitiga3(a,b,c,x); String hs =String.valueOf(h); Connection con1 = null; Statement stmt1 = null; try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con1 = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt1 = con1.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String sql1="INSERT INTO temporari (NIM,NAMA,DK_IPK,STATUS) VALUE('"+nim+"','"+nama+"','"+hs+"','"+status+"');"; stmt1.executeUpdate(sql1);
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
87
stmt1.close(); con1.close(); } } stmt.close(); con.close(); } catch(Exception e){System.out.println(e);} }else if(s.equals("Sedang")){ String min = FieldAIpk.getText(); String med = FieldBIpk.getText(); String max = FieldCIpk.getText(); double a = Double.parseDouble(min); double b = Double.parseDouble(med); double c = Double.parseDouble(max); try{ try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/beasiswa", "root", "elektro"); stmt = con.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String sql="SELECT * FROM mahasiswa"; ResultSet rs = stmt.executeQuery(sql); while(rs.next()){ String ipk = rs.getString("IPK"); String nim = rs.getString("NIM"); String nama = rs.getString("NAMA"); String status = rs.getString("STATUS"); double x = Double.parseDouble(ipk); if ( x <= a || x >= c ){ double h = Segitiga1(a,b,c,x); String hs =String.valueOf(h); Connection con1 = null; Statement stmt1 = null; try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con1 = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt1 = con1.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage());
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
88
} String sql1="INSERT INTO temporari (NIM,NAMA,DK_IPK,STATUS) VALUE('"+nim+"','"+nama+"','"+hs+"','"+status+"');"; stmt1.executeUpdate(sql1); stmt1.close(); con1.close(); } else if ( a<=x && x<=b ) { double h = Segitiga2(a,b,c,x); String hs =String.valueOf(h); Connection con1 = null; Statement stmt1 = null; try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con1 = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt1 = con1.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String sql1="INSERT INTO temporari (NIM,NAMA,DK_IPK,STATUS) VALUE('"+nim+"','"+nama+"','"+hs+"','"+status+"');"; stmt1.executeUpdate(sql1); stmt1.close(); con1.close(); } else if( b<=x && x<=c ){ double h = Segitiga3(a,b,c,x); String hs =String.valueOf(h); Connection con1 = null; Statement stmt1 = null; try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con1 = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt1 = con1.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String sql1="INSERT INTO temporari (NIM,NAMA,DK_IPK,STATUS) VALUE('"+nim+"','"+nama+"','"+hs+"','"+status+"');"; stmt1.executeUpdate(sql1); stmt1.close(); con1.close(); } }
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
89
stmt.close(); con.close(); } catch(Exception e){System.out.println(e);} } else if(s.equals("Baik")){ String min = FieldAIpk.getText(); String med = FieldBIpk.getText(); String max = FieldCIpk.getText(); double a = Double.parseDouble(min); double b = Double.parseDouble(med); double c = Double.parseDouble(max); try{ try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/beasiswa", "root", "elektro"); stmt = con.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String sql="SELECT * FROM mahasiswa"; ResultSet rs = stmt.executeQuery(sql); while(rs.next()){ String ipk = rs.getString("IPK"); String nim = rs.getString("NIM"); String nama = rs.getString("NAMA"); String status = rs.getString("STATUS"); double x = Double.parseDouble(ipk); if ( x <= a || x >= c ){ double h = Segitiga1(a,b,c,x); String hs =String.valueOf(h); Connection con1 = null; Statement stmt1 = null; try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con1 = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt1 = con1.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String sql1="INSERT INTO temporari (NIM,NAMA,DK_IPK,STATUS) VALUE('"+nim+"','"+nama+"','"+hs+"','"+status+"');";
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
90
stmt1.executeUpdate(sql1); stmt1.close(); con1.close(); } else if ( a<=x && x<=b ) { double h = Segitiga2(a,b,c,x); String hs =String.valueOf(h); Connection con1 = null; Statement stmt1 = null; try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con1 = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt1 = con1.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String sql1="INSERT INTO temporari (NIM,NAMA,DK_IPK,STATUS) VALUE('"+nim+"','"+nama+"','"+hs+"','"+status+"');"; stmt1.executeUpdate(sql1); stmt1.close(); con1.close(); } else if( b<=x && x<=c ){ double h = Segitiga3(a,b,c,x); String hs =String.valueOf(h); Connection con1 = null; Statement stmt1 = null; try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con1 = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt1 = con1.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String sql1="INSERT INTO temporari (NIM,NAMA,DK_IPK,STATUS) VALUE('"+nim+"','"+nama+"','"+hs+"','"+status+"');"; stmt1.executeUpdate(sql1); stmt1.close(); con1.close(); } } stmt.close(); con.close();
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
91
} catch(Exception e){System.out.println(e);} } else if(s.equals("Istimewa")){ String min = FieldAIpk.getText(); String med1 = FieldBIpk.getText(); String med2 = FieldCIpk.getText(); double a = Double.parseDouble(min); double b = Double.parseDouble(med1); double c = Double.parseDouble(med2); try{ try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/beasiswa", "root", "elektro"); stmt = con.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String sql="SELECT * FROM mahasiswa"; ResultSet rs = stmt.executeQuery(sql); while(rs.next()){ String ipk = rs.getString("IPK"); String nim = rs.getString("NIM"); String nama = rs.getString("NAMA"); String status = rs.getString("STATUS"); double x = Double.parseDouble(ipk); if ( x <= a || x >= c ){ double h = Istimewa1(a,b,c,x); String hs =String.valueOf(h); Connection con1 = null; Statement stmt1 = null; try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con1 = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt1 = con1.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String sql1="INSERT INTO temporari (NIM,NAMA,DK_IPK,STATUS) VALUE('"+nim+"','"+nama+"','"+hs+"','"+status+"');"; stmt1.executeUpdate(sql1); stmt1.close(); con1.close();
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
92
} else if ( a<=x && x<=b ) { double h = Istimewa2(a,b,c,x); String hs =String.valueOf(h); Connection con1 = null; Statement stmt1 = null; try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con1 = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt1 = con1.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String sql1="INSERT INTO temporari (NIM,NAMA,DK_IPK,STATUS) VALUE('"+nim+"','"+nama+"','"+hs+"','"+status+"');"; stmt1.executeUpdate(sql1); stmt1.close(); con1.close(); } else if( b<=x && x<=c ){ double h = Istimewa3(a,b,c,x); String hs =String.valueOf(h); Connection con1 = null; Statement stmt1 = null; try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con1 = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt1 = con1.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String sql1="INSERT INTO temporari (NIM,NAMA,DK_IPK,STATUS) VALUE('"+nim+"','"+nama+"','"+hs+"','"+status+"');"; stmt1.executeUpdate(sql1); stmt1.close(); con1.close(); } } stmt.close(); con.close(); } catch(Exception e){System.out.println(e);} }
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
93
Lampiran D Listing Porgram Fungsi Keanggotaan public double Segitiga1(double a, double b, double c, double x){ return 0; }; public double Segitiga2(double a, double b, double c,double x){ return (x-a)/(b-a); }; public double Segitiga3(double a, double b, double c, double x){ return (c-x)/(c-b); }; public double Buruk1(double a, double b, double c, double x){ return 0; }; public double Buruk2(double a, double b, double c, double x){ return 1; }; public double Buruk3(double a, double b, double c, double x){ return (c-x)/(c-b); }; public double Istimewa1(double a, double b, double c, double x){ return 0; }; public double Istimewa2(double a, double b, double c, double x){ return (x-a)/(b-a); }; public double Istimewa3(double a, double b, double c, double x){ return 1; };
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
94
Lampiran E Listing Porgram Perhitungan Fire Strength private void OperatorKeduaActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: // DK dan DK1 javax.swing.JComboBox jcb = ( javax.swing.JComboBox) evt.getSource(); String s2 = (String) jcb.getSelectedItem().toString(); if (s2.equals("OR")){ try{ try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt = con.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String sql="SELECT NIM,DK,DK1 FROM temporari1"; ResultSet rs = stmt.executeQuery(sql); while(rs.next()){ String nim = rs.getString("NIM"); //String nama = rs.getString("NAMA"); String dk = rs.getString("DK"); String dk1 = rs.getString("DK1"); double a = Double.parseDouble(dk); double b = Double.parseDouble(dk1); if ( a >= b){ Connection con1 = null; Statement stmt1 = null; try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con1 = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt1 = con1.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String dk2 =String.valueOf(a); String sql4="UPDATE temporari1 SET DK_HASIL = '"+dk2+"' WHERE NIM = '"+nim+"';"; stmt1.executeUpdate(sql4);
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
95
stmt1.close(); con1.close(); } else if ( b >= a ){ Connection con1 = null; Statement stmt1 = null; try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con1 = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt1 = con1.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String dk2 =String.valueOf(b); String sql5="UPDATE temporari1 SET DK_HASIL = '"+dk2+"' WHERE NIM = '"+nim+"';"; stmt1.executeUpdate(sql5); stmt1.close(); con1.close(); } } stmt.close(); con.close(); } catch(Exception e){System.out.println(e);} } else if (s2.equals("AND")){ try{ try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt = con.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String sql="SELECT NIM,DK,DK1 FROM temporari1"; ResultSet rs = stmt.executeQuery(sql); while(rs.next()){ String nim = rs.getString("NIM"); String dk = rs.getString("DK"); String dk1 = rs.getString("DK1"); double a = Double.parseDouble(dk); double b = Double.parseDouble(dk1); if ( a <= b){
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009
96
Connection con1 = null; Statement stmt1 = null; try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con1 = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt1 = con1.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String dk2 =String.valueOf(a); String sql6="UPDATE temporari1 SET DK_HASIL = '"+dk2+"' WHERE NIM = '"+nim+"';"; stmt1.executeUpdate(sql6); stmt1.close(); con1.close(); } else if ( b <= a ){ Connection con1 = null; Statement stmt1 = null; try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e){ System.err.println("Error loading driver:" + e.getMessage()); } try { con1 = DriverManager.getConnection( "jdbc:mysql://localhost:3306/temporari", "root", "elektro"); stmt1 = con1.createStatement(); } catch (SQLException e){ System.err.println("Error SQl: " + e.getMessage()); } String dk2 =String.valueOf(b); String sql7="UPDATE temporari1 SET DK_HASIL = '"+dk2+"' WHERE NIM = '"+nim+"';"; stmt1.executeUpdate(sql7); stmt1.close(); con1.close(); } } stmt.close(); con.close(); } catch(Exception e){System.out.println(e);} } }
Deddy Irwan : Implementasi Fuzzy Query Pada Database Untuk Perekomendasian Beasiswa, 2008. USU Repository © 2009