universitas muhammadiyah yogyakarta 2009

advertisement
1
TUGAS AKHIR
IMPLEMENTASI FUZZY QUERY PADA DATABASE
PEREKOMENDASIAN PENERIMAAN PEGAWAI
Disusun Oleh:
YAHYA ERDIPASA
2001 012 0056
JURUSAN TEKNIK ELEKTRO
FAKULTAS TEKNIK
UNIVERSITAS MUHAMMADIYAH YOGYAKARTA
2009
2
TUGAS AKHIR
IMPLEMENTASI FUZZY QUERY PADA DATABASE
PEREKOMENDASIAN PENERIMAAN PEGAWAI
Diajukan sebagai salah satu syarat mendapatkan gelar Sarjana Teknik
Program S-1 pada Fakultas Teknik Jurusan Teknik Elektro
Universitas Muhammadiyah Yogyakarta.
Disusun oleh :
YAHYA ERDIPASA
2001 012 0056
JURUSAN TEKNIK ELEKTRO
FAKULTAS TEKNIK
UNIVERSITAS MUHAMMADIYAH YOGYAKARTA
2009
3
HALAMAN PENGESAHAN I
TUGAS AKHIR
IMPLEMENTASI FUZZY QUERY PADA DATABASE
PEREKOMENDASIAN PENERIMAAN PEGAWAI
Disusun oleh :
YAHYA ERDIPASA
2001 012 0056
Telah diperiksa dan disetujui :
Dosen Pembimbing Utama
Dosen Pembimbing Muda
(Ir. Tony K. Hariadi, M.T.)
(Rahmat A. Al Hasibi, S.T.)
4
HALAMAN PENGESAHAN II
IMPLEMENTASI FUZZY QUERY PADA DATABASE
PEREKOMENDASIAN PENERIMAAN PEGAWAI
Skripsi ini telah dipertahankan dan disahkan di depan dewan penguji
pada tanggal 05 Januari 2009
Dosen Penguji :
Ir. Tony K. Hariadi, M.T.
(Ketua Penguji / Pembimbing Utama)
(...........................................)
tanggal :
Rahmat A. Al Hasibi, S.T.
(Penguji Anggota / Pembimbing Muda)
(...........................................)
tanggal :
Haris Setyawan, S.T.
(Penguji Anggota)
(...........................................)
tanggal :
Helman Muhammad, S.T., M.T.
(Penguji Anggota)
(...........................................)
tanggal :
Menyetujui,
Ketua Jurusan Teknik Elektro
Universitas Muhammadiyah Yogyakarta
( Ir. Slamet Suripto )
5
HALAMAN PERNYATAAN
Semua yang tertulis dalam naskah skripsi ini adalah benar-benar
merupakan hasil karya saya sendiri dan atau bukan menjiplak hasil karya orang
lain, kecuali yang secara tertulis dijadikan acuan dalam penulisan naskah ini dan
disebutkan dalam daftar pustaka. Apabila dikemudian hari terbukti pernyataan ini
tidak benar, maka saya siap menerima sangsi dari Universitas Muhammadiyah
Yogyakarta sesuai dengan peraturan yang berlaku.
Yogyakarta, 17 Januari 2009
Yang Menyatakan
Yahya Erdipasa
6
HALAMAN PERSEMBAHAN
Kupersembahkan Skripsi ini untuk
•
Allah SWT yang telah memberikan keimanan, keikhlasan, kesabaran serta telah
membukakan pintu ilmu pengetahuan kepada hamba-Nya.
• Nabi Muhammad SAW... terima kasih untukmu ya Rasulullah, Manusia terbaik
yang pernah ada di Dunia, pembawa Cahaya dan penghilang Kegelapan bagi seluruh
umat manusia. Maafkanlah ya Rasulullah jika belum bisa menjalankan sunnahMu
sepenuhnya.
•
Orang tuaku, adikku terima kasih atas Kasih sayang yang diberikan, kesabaran dan
doa kalian membuatku bisa bersyukur. Aku bangga dan bersyukur bisa HIDUP
diantara kalian.
•
Siang dan Malam. Terima kasih telah setia menemaniku selama 24 tahun.
Seluruh-saudara seimanku... Teruslah berjuang untuk ISLAM karena mundur adalah
•
sebuah Penghianatan
Almamaterku Jurusan Teknik Elektro, Fakultas Teknik Universitas Muhammadiyah
•
Yogyakarta
•
Kepada orang-orang yang dengan ikhlas memberikan kasih sayang dan kebaikannya
kepada ku selama ini.
Semoga menjadi kenangan yang indah dan tak terlupakan.
Amien Ya Rabbal ‘Aalamien.........
7
HALAMAN MOTTO
Setiap Manusia dilahirkan orisinil (dalam keadaan fitrah),
jangan
jangan mati sebagai salinan (stereotype)!
(stereotype)!
(Adaptasi dari John L. Mason)
8
KATA PENGANTAR
Assalaa
Assalaamu’alaikum Wr. Wb.
Alhamdulillah, puji syukur penulis panjatkan kehadirat Allah SWT yang
telah memberikan kenikmatan berupa nikmat hidup, nikmat iman, nikmat Islam,
nikmat akal, serta nikmat-nikmat lainnya yang tak pernah terbatas kepada penulis
sehingga penulis dapat menyelesaikan laporan skripsi berjudul “Implementasi
Fuzzy Query Pada Database Perekomendasian Penerimaan Pegawai” ini dengan
baik.
Laporan Skripsi ini diselesaikan guna memenuhi persyaratan mendapatkan
gelar Strata 1 (S1) yang telah ditetapkan oleh Fakultas Teknik Elektro Universitas
Muhammadiyah Yogyakarta.
Penulis menyadari terselesaikannya laporan ini tidak terlepas dari
dukungan, bantuan, bimbingan, serta saran-saran yang berharga dari semua pihak.
Oleh karena itu dengan tulus hati penulis ingin mengucapkan terimakasih kepada :
1.
Ir. Tony K. Hariadi, M.T. selaku Dekan Fakultas Teknik Universitas
Muhammadiyah Yogyakarta dan selaku Dosen Pembimbing Utama yang
telah memberikan kemampuan terbaiknya dalam membimbing dan
mengarahkan selama pelaksanakan penelitian sampai penulis menyelesaikan
skripsi ini.
9
2.
Ir. Slamet Suripto selaku Ketua Jurusan Teknik Elektro Universitas
Muhammadiyah Yogyakarta.
3.
Slamet Riyadi, S.T. selaku Dosen Pembimbing Akademik yang telah
membantu penulis dalam merencanakan target studi perkuliahan.
4.
Rahmat A. Al Hasibi, S.T. selaku Dosen Pembimbing Muda yang telah
memberikan kemampuan terbaiknya dalam membimbing dan mengarahkan
selama pelaksanakan penelitian sampai penulis menyelesaikan skripsi ini.
5.
Haris Setyawan, S.T. dan Helman Muhammad, S.T., M.T. selaku dosen
penguji, terimakasih atas kritik, saran serta spirit yang telah diberikan saat
pendadaran.
6.
Semua Dosen Jurusan Teknik Elektro Universitas Muhammadiyah
Yogyakarta yang telah menjadi tempat bertukar fikiran dan informasi
banyak hal tentang dunia keelektroan.
7.
Karyawan
Tata Usaha (TU) Jurusan Teknik Elektro Universitas
Muhammadiyah Yogyakarta yang telah membantu kelancaran administrasi.
8.
Seluruh staf biro, karyawan perpustakaan, dan bank rujukan Universitas
Muhammadiyah Yogyakarta.
9.
Kedua orang tuaku terutama untuk alm. papah yang telah mengorbankan
segalanya demi anakmu tercinta. Maafkan bila anakmu ini belum bisa
berbakti sepenuhnya. Mamah maafin anakmu ya yang sering membuat
mamah kecewa baik secara sengaja maupun tidak.
10
10. Adikku Irra, tetap semangat dan rajin belajar, mudah-mudahan apa yang
kamu cita-citakan bisa tercapai. Amin. Kuliahnya jangan lama-lama ya?
Jangan tiru Abangmu ini.
11. Keluarga baruku pa Muksidi beserta anak-anaknya maafkan klo dirasa sikap
saya selama ini di nilai kurang akrab dengan kalian, bukannya apa-apa,
soalnya pulang ke Cerbon aja klo pas lebaran tok.
12. Sahabat-sahabatku Elliana, S.PdI. kapan baby mu lahir? Dah berapa bulan
usia kandunganmu sekarang? Topik dan Abie buruan susul gue, masa
pengen jadi mahasiswa terus-terusan, dr. Efi selamet ya sekarang dah jadi
dokter beneran, tetaplah berpihak kepada rakyat kecil.
13. Teman-teman seperjuangan di Ikatan Mahasiswa Muhammadiyah Cabang
A. R. Fakhruddin periode 2004/2005, Immawan Fauzi SIP., Immawan
Nurdin S.H., Immawati Rita S.P., Immawan Hijrah, Immawan Tanto SIP,
Immawan Mujib S.E., Immawati Ning S.PdI., Immawan Heri, Immawan
Alwi SIP, Immawan Izal, Immawan Herman S.T., Immawati Ai S.PdI.,
kemana kalian semua, koq ‘ga da kabar ya?
14. Teman-teman seperjuangan di Korps Instruktur Ikatan Mahasiswa
Muhammadiyah Cabang A. R. Fakhruddin angkatan pertama makasih dah
mau memfasilitasi kami di setiap pelatihan, angkatan kedua yang dah samasama berjuang guna kemajuan perkaderan IMM di cabang kita, angkatan
ketiga dan keempat maafin ya klo ada kesalahan dalam memfasilitasi
pelatihan kalian.
11
15. Teman-teman
seperjuangan
di
Ikatan
Mahasiswa
Muhammadiyah
Kordinator Komisariat UMY periode 2003/2004 Immawan kang Iman SIP,
Immawan Kak Romi SIP, Immawati Iis S.E., Immawan Okta SIP.,
Immawan Saptio S.P., Immawati Erlia S.Kep. gimana klo kita nostalgia lagi
ke Bali kayanya enak nich.
16. Teman-teman
seperjuangan
di
Ikatan
Mahasiswa
Muhammadiyah
Komisariat Fakultas Teknik UMY periode 2003/2003 Immawan Alzi dan
Febri kapan lulus dab! Dang ketuekan, Reno n Salman gimana
kabarmu?Ipul, S.T. makasih dah mau memuji skaligus mengkritik aku.
Makasih dah bersama-sama mengibarkan kembali panji IMM di Fakultas
Teknik. Semoga perjuangan kita semua mendapat balasan yang selayaknya
disisi Tuhan.
17. Immawan dan Immawati di seluruh Indonesia maafin klo saya pernah
berbuat salah baik yang sengaja maupun yang tidak dalam aktifitas
pertemuan kita.
18. Temen-temen seperjuangan di Keluarga Mahasiswa Teknik Eleketro
Universitas Muhammadiyah Yogyakarta periode 2002 - 2003. Dah pada jadi
S.T. semua blom, heheheheh......
19. Teman-teman seperjuangan di PKO Muhammadiyah makasih dah
menjadikan saya partner kerja yang baik bagi kalian.
12
20. Alm. Pak Yasir, Pa Bambang Wahyu, terima kasih atas sharing infonya
tentang kepemanduan training. Buat pak Sugeng terima kasih rumahnya dah
mo dijadiin basecamp instruktur.
21. Tio, Deka, Parman, Sobar S.Ei terima kasih atas pinjeman notebooknya, klo
ga ada kalian aku ga kan dapet bahan-bahan buat tugas akhir kayaknya.
22. Semua temen-temen elektro angkatan 2001 kelas A, B, dan paralel malam
juga 2002 ke atas. Lanjutkan perjuangan, semoga sukses menyertai kita
semua, Amin. Novriandi S.T. makasih atas masukan-masukannya selama
ini, Arif “The Bill” Marsudi terima kasih dah bantu2 nyiapin peralatan
pendadaran (mbok cepet pendadaran biar gentian aku yang nyiapin alat2
mu, piss). Muh. Yamin S.T. kapan mo lulus S2 klo betah di kampung
23. Kost Boyz ( Ibu Kost, Bapak Kost, Alvan “Ahmad” gimana TA mu, mbok
ya di garap jangan main zoo tycon ma CS mulu, Deka “Decca” ntar kmu
ngisi di acara wisudaku ya, Ferdi “Autis” klo nyanyi jangan keras-keras
donk soalnya suaramu kan pas-pasan, Wanto “Robusta” masa cuma bisa
nerbitin satu judul buku, piye jal, Yudis “Anugroz” jangan nge game aja
yang digedein ya, Tio gimana FM nya klo dah jago bilang ya?, Koko
katanya mo nyusul? Apa bareng alvan aja?) keep the spirit n jaga
kekompakan ... Thanks n Love u all.
24. Eks Kost Boyz (Feri, Adit Tea, Agung) jangan lupa sama kostan ya? Adit,
Ari, Mia tetaplah jadi wanita yang perkasa.
13
25. Temen-temen di Hyem Magazine, maafin klo beberapa minggu ini saya ga
bisa bantu ngereview, maklum lagi getol ngerjain TA.
26. Temen-temen Jarimulia, CD driver printerku balikin dong, kan acaranya dah
selesai. Oh ya, sekalian aku minta dokumentasi acarnya donk.
27. Innanaz S.T. makasih ya dah mo jadi temen sharing tentang delphi, Wawan
“Cilacap” S.T. gimana dah dapet kerja blom? Klo blom jangan nge game aja
bro.
28. Semua pihak yang telah membantu baik secara langsung maupun tidak
lansung dalam penulisan laporan ini.
Semoga amal dan kebaikan yang telah diberikan kepada penulis mendapat
balasan yang setimpal, dan semoga laporan ini dapat bermanfaat bagi kita semua,
Amin.
Yogyakarta, 17 Januari 2009
PENULIS
14
DAFTAR ISI
HALAMAN PEGESAHAN I............................................................................
iii
HALAMAN PENGESAHAN II........................................................................
iv
HALAMAN PERNYATAAN...........................................................................
v
HALAMAN PERSEMBAHAN........................................................................
vi
HALAMAN MOTTO........................................................................................
vii
KATA PENGENTAR........................................................................................
viii
DAFTAR ISI.......................................................................................................
xiv
DAFTAR GAMBAR..........................................................................................
xvii
DAFTAR TABEL...............................................................................................
xx
BAB I.
BAB II.
PENDAHULUAN............................................................................
1
A. Latar Belakang Masalah................................................................
1
B. Rumusan Masalah.........................................................................
3
C. Tujuan...........................................................................................
3
D. Kontribusi......................................................................................
4
TINJAUAN PUSTAKA...................................................................
5
A. Logika Fuzzy.................................................................................
5
1. Pendahuluan.............................................................................
5
2. Perbedaan Himpunan Fuzzy Dengan Himpunan Pasti
(Crisp)...........................................................................................
7
3. Beberapa Hal yang Perlu Diketahui Dalam Sistem Fuzzy..........
9
15
4. Fungsi Keanggotaan....................................................................
11
5. Operator Dasar Zadeh untuk Operasi Himpunan Fuzzy.............
19
B. Database...........................................................................................
20
1. Pengertian Database..................................................................
20
2. Database Relasional..................................................................
21
3. Structured Query Language (SQL).............................................
22
C. Teknik untuk Mengimplementasikan Fuzziness ke Dalam
Database............................................................................................
26
1. Fuzzy Query Database...............................................................
26
2. Fuzzy Database..........................................................................
30
BAB III. METODOLOGI...............................................................................
37
A. Prosedur Perancangan...................................................................
37
B. Analisa Kebutuhan........................................................................
37
C. Spesifikasi.....................................................................................
39
D. Perancangan Database dan Sistem...............................................
40
1. Perancangan Database.............................................................
40
2. Perancangan Sistem..................................................................
44
3. Proses Penghitungan Firestrength............................................
51
4. Pembuatan Graphical User Interface (GUI)............................
53
E. Verifikasi......................................................................................
68
F. Validasi.........................................................................................
68
16
BAB IV.
IMPLEMENTASI DAN PENGUJIAN........................................
70
A. Perangkat Lunak................................................................................
70
1. Implementasi Perangkat Lunak....................................................
70
2. Analisa Penghitungan Fungsi Keanggotaan Fuzzy.....................
80
3. Analisa Penghitungan Firestrength..........................................
88
4. Perbandingan Hasil Penghitungan Sistem Lama Dengan
BAB V.
Sistem Baru..............................................................................
91
KESIMPULAN DAN DISKUSI......................................................
95
A. Kesimpulan...................................................................................
95
B. Diskusi..........................................................................................
95
DAFTAR PUSTAKA.........................................................................................
LAMPIRAN........................................................................................................
17
DAFTAR GAMBAR
Gambar 2.1 Himpunan Muda, Parobaya, dan Tua................................................
7
Gambar 2.2 Himpunan Fuzzy untuk Variabel Umur.............................................
8
Gambar 2.3 Representasi Linear Naik...................................................................
12
Gambar 2.4 Representasi Linear Turun.................................................................
13
Gambar 2.5 Representasi Kurva Segitiga...............................................................
13
Gambar 2.6 Representasi Kurva Trapesium............................................................
14
Gambar 2.7 Representasi Kurva Bahu.....................................................................
15
Gambar 2.8 Karakteristik Fungsi Kurva S-Pertumbuhan......................................
16
Gambar 2.9 Karakteristik Fungsi Kurva S-Penyusutan...........................................
17
Gambar 2.10 Karakteristik Fungsional Kurva π.......................................................
18
Gambar 2.11 Karakteristik Fungsional Kurva β.......................................................
18
Gambar 2.12 Karakteristik Fungsional Kurva Gauss...............................................
19
Gambar 2.13 Pengolahan Data Menjadi Informasi...................................................
21
Gambar 3.1 Prosedur Perancangan......................................................................
37
Gambar 3.2 Perancangan Database.....................................................................
43
Gambar 3.3 Perancangan Sistem..........................................................................
44
Gambar 3.4 Diagram Konteks Sistem..................................................................
45
Gambar 3.5 Diagram Peninjauan.........................................................................
46
Gambar 3.6 Detail Diagram Level 1, Proses 2.....................................................
48
Gambar 3.7 Detail Diagram Level 1, Proses 3.....................................................
49
18
Gambar 3.8 Tampilan Menu Utama.........................................................................
54
Gambar 3.9 Tampilan dari Tab Data Pelamar..........................................................
55
Gambar 3.10 Tampilan Frame Data Pelamar Tambah Data....................................
56
Gambar 3.11 Tampilan Frame Data Pelamar Edit Data...........................................
57
Gambar 3.12 Tampilan Frame Data Pelamar Hapus Data.......................................
58
Gambar 3.13 Tampilan dari Tab Jenis Tes..............................................................
59
Gambar 3.14 Tampilan Frame Tambah Jenis Tes...................................................
60
Gambar 3.15 Tampilan Frame Edit Jenis Tes..........................................................
61
Gambar 3.16 Tampilan Frame Hapus Jenis Tes......................................................
62
Gambar 3.17 Tampilan Frame Tambah Kriteria......................................................
63
Gambar 3.18 Tampilan Frame Edit Kriteria.............................................................
64
Gambar 3.19 Tampilan Frame Hapus Kriteria.........................................................
65
Gambar 3.20 Tampilan Frame Ok Pada Tab Input Nilai.........................................
66
Gambar 3.21 Tampilan Frame Hasil Nilai...............................................................
67
Gambar 3.22 Tampilan Frame Seleksi Pelamar.......................................................
68
Gambar 4.1 Tabel Data Pelamar...............................................................................
70
Gambar 4.4 Variabel, Himpunan, Fungsi Keanggotaan, Serta Nilai Domain
untuk Kriteria Tes Kopetensi.................................................................................
71
Gambar 4.5 Variabel, Himpunan, Fungsi Keanggotaan, Serta Nilai Domain
untuk Kriteria Tes Wawancara..............................................................................
72
Gambar 4.6 Variabel, Himpunan, Fungsi Keanggotaan, Serta Nilai Domain
untuk Kriteria Tes Kremlin Cukup........................................................................
73
19
Gambar 4.7 Variabel, Himpunan, Fungsi Keanggotaan, Serta Nilai Domain
untuk Kriteria Tes Kremlin Baik...........................................................................
73
Gambar 4.8 Variabel, Himpunan, Fungsi Keanggotaan, Serta Nilai Domain
untuk Kriteria Tes Kremlin Topskor......................................................................
74
Gambar 4.9 Variabel, Himpunan, Fungsi Keanggotaan, Serta Nilai Domain
untuk Kriteria Magang...........................................................................................
75
Gambar 4.10 Tabel Input Nilai..............................................................................
76
Gambar 4.13 Tabel Hasil.......................................................................................
77
Gambar 4.16 Frame Seleksi Pelamar....................................................................
79
Gambar 4.17. Diagram Alir Cara Kerja Sistem.....................................................
80
Gambar 4.18 Hasil Seleksi Dengan Mengubah Kategori Kremlin Menjadi
Topskor...................................................................................................................
94
20
DAFTAR TABEL
Tabel 2.1 Tabel Biodata Karyawan......................................................................
32
Tabel 3.1 Tabel Pelamar........................................................................................ 40
Tabel 3.2 Tabel Jenistes........................................................................................ 41
Tabel 3.3 Tabel Kriteria........................................................................................ 41
Tabel 3.4 Tabel Nilai............................................................................................. 42
Tabel 3.5 Tabel Result..........................................................................................
42
Tabel 4.1 Tabel 25 Teratas Hasil Pembobotan Nilai............................................ 92
21
BAB I
PENDAHULUAN
A. Latar Belakang Masalah
Pada proses untuk menentukan atau mencari pegawai yang layak
untuk mengisi posisi yang tersedia, tentunya setiap perusahaan memiliki
kriteria-kriteria tertentu untuk menyaring mereka, salah satunya adalah
dengan tahapan-tahapan tes yang diselenggarakan oleh perusahaan tersebut.
Dalam kenyataannya sering kita jumpai perusahaan membuka kesempatan
kerja untuk mengisi bermacam-macam posisi yang mereka butuhkan dalam
satu periode penerimaan.
P.T. BAT Indonesia Tbk. Cirebon merupakan salah satu dari sekian
banyak perusahaan nasional yang berkedudukan di kota Cirebon yang
diminati oleh para pencari kerja untuk dapat bergabung di perusahaan
tersebut. Hal ini cukup beralasan karena perusahaan yang bergerak di bidang
industri rokok khususnya rokok putih ini setiap periodenya memberikan
kesempatan kerja khususnya kepada putra daerah yang memiliki prestasi
untuk ditempatkan pada perusahaan dan anak perusahaannya di samping upah
yang diberikan terbilang tinggi dibandingkan perusahaan-perusahaan lain
yang ada di kota Cirebon dan sekitarnya. Berdasarkan pengamatan yang
dilakukan oleh pihak HRD P.T. BAT Indonesia Tbk. setiap tahunnya ada
sekitar 70-an pelamar kerja yang mencoba mencari peruntungan di
22
perusahaan
tersebut,
padahal
perusahaan
setiap
tahunnya
hanya
membutuhkan sekitar 5 sampai 10 orang tenaga baru.
Mengingat banyaknya antusiasme para pencari kerja, juga kebutuhan
perusahaan atas sumber daya manusia yang berkualitas, maka diperlukan
suatu sistem penseleksian bagi pegawai baru agar nantinya perusahaan dapat
menemukan dan menempatkan mereka pada posisi yang semestinya. Salah
satunya adalah dengan membuat sebuah sistem database yang dapat
mengerjakan proses penseleksian para pelamar kerja agar dapat ditemukan
orang yang tepat untuk ditempatkan pada posisi tertentu dengan kriteriakriteria tes dan persyaratan lainnya yang telah ditetapkan.
Database yang ada pada perusahaan saat ini adalah database yang
hanya memuat data biografi pelamar kerja beserta data-data hasil tes yang
diselenggarakan oleh perusahaan. Permasalahan yang timbul adalah ketika
pihak HRD harus menentukan siapa saja dari mereka yang dinyatakan layak
untuk mengisi posisi yang tersedia dengan merujuk pada hasil tes yang terdiri
dari beberapa parameter tes yang telah distandardkan oleh perusahaan.
Ambil contoh perusahaan membutuhkan lima orang untuk menempati
posisi sebagai electrician dengan beberapa tes serta persyaratan yang harus
dipenuhi (tes kompetensi, tes wawancara, tes kreaplin, serta magang),
kemudian HRD melakukan proses penseleksian sesuai dengan kriteria yang
telah ditentukan perusahaan (tes kompetensi baik, tes wawancara baik, tes
kreaplin cukup, serta nilai magang baik). Kesulitan akan timbul ketika pihak
23
HRD harus mencari orang-orang yang memenuhi kriteria yang di maksud,
padahal database yang ada hanya memuat nilai hasil tes yang merupakan data
bersifat data pasti (crisp) yang hanya memiliki dua keadaan: lulus dan tidak,
sedangkan data kriteria yang diinginkan merupakan data yang terdiri dari
beberapa parameter keadaan seperti lulus dengan nilai sangat baik, baik serta
cukup. Oleh karena itu, untuk menangani kriteria-kriteria yang memiliki nilai
data yang tidak pasti atau samar, dapat menggunakan logika fuzzy sebagai
solusi pemecahannya.
Pada proses mencari pelamar kerja yang dapat direkomendasikan
mengisi posisi yang tersedia, logika fuzzy dimasukkan kedalam query.
B. Rumusan Masalah
Permasalahan yang di bahas dalam tugas akhir ini adalah sebagai
berikut:
1. Bagaimana memasukkan logika fuzzy kedalam query.
2. Bagaimana menentukan seberapa layak seorang pelamar kerja untuk dapat
direkomendasikan mengisi posisi yang tersedia berdasarkan kriteriakriteria yang dimasukkan.
C. Tujuan
Tujuan dari tugas akhir ini adalah menerapkan logika fuzzy dalam
query untuk melakukan proses penseleksian dalam memilih pelamar kerja
yang layak direkomendasikan untuk mengisi posisi yang tersedia.
24
D. Kontribusi
Database yang di buat diharapkan dapat mempermudah kerja bagian
Human and Resource Department (HRD) khususnya dalam menentukan
siapa saja para pelamar kerja yang dapat mengisi posisi yang tersedia di
dalam sebuah perusahaan atau institusi.
25
BAB II
TINJAUAN PUSTAKA
A. Logika Fuzzy
1. Pendahuluan
Titik awal dari konsep modern mengenai ketidakpastian (fuzzy)
adalah makalah yang di buat oleh Lofti A. Zadeh, di mana Zadeh
memperkenalkan teori yang memiliki obyek-obyek dari himpunan fuzzy
yang memiliki batasan yang tidak presisi dan keanggotaan dalam himpunan
fuzzy dan bukan dalam bentuk logika benar (true) atau salah (false), tetapi
dinyatakan dalam derajat (degree). Konsep seperti ini di sebut dengan
Fuzziness dan teorinya dinamakan Fuzzy Set Theory.
Logika fuzzy (Fuzziness) dapat didefinisikan sebagai logika kabur
berkenaan dengan semantik dari suatu kejadian, fenomena, atau pernyataan
itu sendiri. Seringkali fenomena tersebut ditemukan dalam pernyataan yang
di buat oleh seseorang, evaluasi, dan pengambilan suatu keputusan. Sebagai
contoh:
a. Manajer pergudangan mengatakan pada manajer produksi seberapa
banyak persediaan barang pada akhir minggu ini, kemudian manajer
produksi ingin menetapkan jumlah barang yang harus di produksi esok
hari.
26
b. Pelayan restoran memberikan pelayanan terhadap tamu, kemudian tamu
ingin memberikan tip yang sesuai atas baik tidaknya pelayanan yang
diberikan.
c. Anda mengatakan pada saya seberapa sejuk ruangan yang anda inginkan,
saya ingin mengatur putaran kipas yang ada pada ruangan ini.
Ada beberapa alasan mengapa orang menggunakan logika fuzzy,
diantaranya:
a. Konsep logika fuzzy mudah dimengerti. Konsep matematis yang
mendasari penalaran fuzzy sangat sederhana dan mudah dimengerti.
b. Logika fuzzy sangat fleksibel.
c. Logika fuzzy memiliki toleransi terhadap data-data yang tidak tepat.
d. Logika fuzzy mampu memodelkan fungsi-fungsi nonlinear yang sangat
kompleks.
e. Logika fuzzy dapat membangun dan mengaplikasikan pengalamanpengalaman para pakar secara langsung tanpa harus melalui proses
pelatihan.
f. Logika fuzzy dapat bekerjasama dengan teknik-teknik kendali secara
konvensional.
g. Logika fuzzy didasarkan pada bahasa alami.
27
2. Perbedaan Himpunan Fuzzy Dengan Himpunan Pasti (Crisp)
Pada himpunan pasti, nilai keanggotaan suatu item x dalam suatu
himpunan A, yang sering ditulis dengan µA[x], memiliki dua kemungkinan,
yaitu:
a. Satu (1), yang berarti bahwa suatu item menjadi anggota dalam suatu
himpunan, atau
b. Nol (0), yang berarti bahwa suatu item tidak menjadi anggota suatu
himpunan.
Contoh :
Misalkan variabel umur dibagi menjadi tiga kategori, yaitu:
Muda
umur < 35 tahun
Parobaya
35 ≤ umur ≤ 55 tahun
Tua
umur ≥ 55 tahun
Nilai keanggotaan secara grafis, himpunan Muda, Parobaya, dan Tua
dapat di lihat pada gambar 2.1.
1
Muda
1
µ[x]
0
0
Parobaya
1
µ[x]
35
0
0
Tua
µ[x]
35
55
0
0
55
Gambar 2.1 Himpunan Muda, Parobaya, dan Tua
Pada gambar 2.1 dapat dijelaskan bahwa:
a. Apabila seseorang berusia 34 tahun, maka ia dikatakan Muda (µMuda[34] =
1),
28
b. Apabila seseorang berusia 35 tahun, maka ia dikatakan Tidak Muda
(µMuda[35] = 0),
c. Apabila seseorang berusia 35 tahun kurang 1 hari, maka ia dikatakan Tidak
Parobaya (µParobaya[35 th - 1 hari] = 0).
Berdasarkan contoh di atas bisa dikatakan pemakaian himpunan
pasti untuk menyatakan umur sangat tidak adil, adanya perubahan sedikit
saja pada suatu nilai mengakibatkan perbedaan kategori yang cukup
signifikan.
Himpunan fuzzy digunakan untuk mengantisipasi hal tersebut.
Seseorang dapat masuk dalam dua himpunan yang berbeda: Muda dan
Parobaya,
Parobaya
dan
Tua,
dan
sebagainya.
Seberapa
besar
eksistensinya dalam himpunan tersebut dapat di lihat pada nilai derajat
keanggotaannya. Gambar 2.2 menunjukkan himpunan fuzzy untuk variabel
umur.
Muda
Parobaya
Tua
µ[x]
0,5
0,25
0
25
35
40
45
50
55
65
Umur (th)
Gambar 2.2 Himpunan Fuzzy untuk Variabel Umur
Pada gambar 2.2 dapat di lihat bahwa:
a. Seseorang yang berumur 40 tahun, termasuk dalam himpunan Muda
dengan µMuda[40] = 0,25; namun dia juga termasuk dalam himpunan
29
Parobaya dengan µParobaya[40] = 0,5.
b. Seseorang yang berumur 50 tahun, termasuk dalam himpunan Tua
dengan µTua[50] = 0,25; namun dia juga termasuk dalam himpunan
Parobaya dengan µParobaya[50] = 0,5.
Jika pada himpunan pasti nilai keanggotaan hanya ada dua
kemungkinan, yaitu 0 atau 1, pada himpunan fuzzy nilai keanggotaan terletak
pada rentang 0 sampai dengan 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.
3. Beberapa Hal yang Perlu Diketahui Dalam Sistem Fuzzy
Ada beberapa hal yang perlu diketahui dalam memahami sistem
fuzzy, yaitu:
a. Variabel Fuzzy
Variabel fuzzy merupakan variabel yang hendak di bahas dalam
suatu sistem fuzzy, contoh: umur, temperatur, permintaan, dan sebagainya.
b. Himpunan Fuzzy
Himpunan fuzzy merupakan suatu grup yang mewakili suatu
kondisi atau keadaan tertentu dalam suatu variabel fuzzy. Contoh untuk
beberapa himpunan fuzzy:
• Variabel umur, terbagi menjadi tiga himpunan fuzzy, yaitu: Muda,
Parobaya, dan Tua.
30
• Variabel temperatur, terbagi menjadi lima himpunan fuzzy, yaitu:
Dingin, Sejuk, Normal, Hangat, dan Panas.
Himpunan fuzzy memiliki dua atribut, yaitu:
1) Linguistik, yaitu penamaan grup yang mewakili suatu keadaan atau
kondisi tertentu dengan menggunakan bahasa alami, seperti Dingin,
Sejuk, Normal, Hangat, Panas, dan sebagainya.
2) Numeris, yaitu suatu nilai (angka) yang menunjukkan ukuran dari suatu
variabel, seperti 40, 25, 50, dan sebagainya.
c. Semesta Pembicaraan
Semesta
pembicaraan
adalah
keseluruhan
nilai
yang
diperbolehkan untuk dioperasikan dalam suatu variabel fuzzy. Semesta
pembicaraan merupakan himpunan bilangan nyata (real) yang senantiasa
bergerak naik (bertambah) secara monoton dari kiri ke kanan. Nilai
semesta pembicaraan dapat berupa bilangan positif maupun bilangan
negatif. Adakalanya nilai semesta pembicaraan ini tidak dibatasi batas
atasnya. Contoh:
• Semesta pembicaraan untuk variabel umur: [0 +∞].
• Semesta pembicaraan untuk variabel temperatur: [0 40].
d. Domain
Domain himpunan fuzzy adalah keseluruhan nilai yang diijinkan
dalam semesta pembicaraan dan boleh dioperasikan dalam suatu
himpunan fuzzy. Seperti halnya dengan semesta pembicaraan, domain
31
merupakan himpunan bilangan nyata yang senantiasa bergerak naik
(bertambah) secara monoton dari kiri ke kanan. Nilai domain dapat
berupa bilangan positif maupun negatif. Contoh domain himpunan fuzzy
untuk temperatur:
• Dingin
= [0,
20]
• Sejuk
= [15, 25]
• Normal
= [20, 30]
• Hangat
= [25, 35]
• Panas
= [30, 40]
4. Fungsi Keanggotaan
Fungsi keanggotaan (membership function) adalah suatu kurva yang
menunjukkan
pemetaan
titik-titik
masukkan
data
kedalam
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 diantaranya adalah:
a. Representasi Linear
Pada representasi linear, pemetaan masukkan kedalam derajat
keanggotaannya digambarkan sebagai suatu garis lurus. Bentuk ini paling
sederhana dan menjadi pilihan yang baik untuk mendekati suatu konsep
yang kurang jelas. Ada dua keadaan himpunan fuzzy fungsi linear.
32
1) Representasi Linear Naik
Kenaikan himpunan dimulai pada nilai domain yang
memiliki derajat keanggotaan nol bergerak ke kanan menuju ke nilai
domain yang memiliki derajat keanggotaan lebih tinggi (gambar
2.3).
1
derajat
keanggotaan
µ[x]
0
a
b
domain
Gambar 2.3 Representasi Linear Naik
Fungsi keanggotaan:
0;
µ[x] =
(x - a)/(b - a);
1;
x≤a
a<x<b
x≥b
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.4).
33
1
derajat
keanggotaan
µ[x]
0 a
b
domain
Gambar 2.4 Representasi Linear Turun
Fungsi keanggotaan:
1;
(b - x)/(b - a);
µ[x] =
0;
x≤
a<x<b
x≥b
b. Representasi Kurva Segitiga
Kurva segitiga pada dasarnya merupakan gabungan antara dua
garis linear seperti terlihat pada gambar 2.5.
1
derajat
keanggotaan
µ[x]
0
a
b
c
domain
Gambar 2.5 Representasi Kurva Segitiga
Fungsi keanggotaan:
0;
(x – a)/(b – a);
µ[x] =
(c – x)/(c – b);
1;
x ≤ a atau x ≥ c
a<x≤b
b<x<c
x=b
34
c. Representasi Kurva Travesium
Kurva Travesium pada dasarnya sama seperti bentuk segitiga,
hanya saja ada beberapa titik yang memiliki nilai keanggotaan satu.
1
derajat
keanggotaan
µ[x]
0
a
b
c
d
domain
Gambar 2.6 Representasi Kurva Trapesium
Fungsi Keanggotaan:
0;
(x – a)/(b – a);
µ[x] =
1;
(d – x)/(d – c);
x ≤ a atau x ≥ d
a<x<b
b≤x≤c
c<x<d
d. Representasi Kurva Bentuk Bahu
Kurva bentuk bahu merupakan jenis kurva dengan keadaan daerah
yang terletak di tengah-tengah suatu variabel yang direpresentasikan dalam
bentuk segitiga, pada sisi kanan dan kirinya akan naik dan turun (misalkan:
Muda bergerak ke Parobaya kemudian bergerak ke Tua). Akan tetapi,
dalam kondisi tertentu, sisi-sisi dari variabel tersebut tidak mengalami
perubahan. Sebagai contoh, apabila telah mencapai kondisi Tua, kenaikan
variabel umur akan tetap pada kondisi Tua. Himpunan fuzzy “bahu”
digunakan untuk mengakhiri variabel suatu daerah fuzzy. Bahu kiri
bergerak dari benar ke salah, demikian juga bahu kanan, bergerak dari salah
ke benar. Gambar 2.7 menunjukkan representasi kurva bentuk bahu.
35
Bahu Kiri
Bahu Kanan
1
0
a
d
b
e
c
Gambar 2.7 Representasi Kurva Bahu
Fungsi keanggotaan representasi kurva bahu merupakan perpaduan
antara fungsi keanggotaan representasi linier dengan representasi segitiga
sehingga rumus fungsi keanggotaanya mengikuti rumus fungsi keduanya.
Fungsi ini sering digunakan karena dapat mendefinisikan beberapa
himpunan fuzzy dalam satu waktu serta sederhana dalam proses
penghitungannya.
e. Representasi Kurva S
Kurva S memiliki nilai kenaikan atau penurunan yang tidak linear.
Ada dua representasi kurva S, yaitu kurva S-Pertumbuhan dan kurva SPenyusutan. Kurva S didefinisikan dengan menggunakan tiga parameter,
yaitu: nilai keanggotaan nol (α), nilai keanggotaan lengkap (γ), dan titik
infleksi atau crossover (β), yaitu titik yang memiliki domain 50%
benar. Fungsi ini baik digunakan untuk pendefinisian himpunan fuzzy
tunggal.
36
1) Representasi Kurva S-Pertumbuhan
Kurva S-Pertumbuhan bergerak dari sisi paling kiri dengan
nilai keanggotaan nol menuju sisi paling kanan dengan nilai
keanggotaan satu. Fungsi keanggotaannya bertumpu pada 50%
nilai derajat keanggotaannya yang sering di sebut dengan titik
infleksi (gambar 2.8).
1
µ[x]
0,5
0
α
β
γ
domain
Gambar 2.8 Karakteristik Fungsi Kurva S-Pertumbuhan
Fungsi keanggotaan kurva S-Pertumbuhan:
0;
2((x - α)/(γ - α))²;
µ(x;α,β,γ) =
1 - 2((γ - x)/(γ - α))²;
1;
x≤α
α<x≤β
β<x<γ
x≥γ
2) Representasi Kurva S-Penyusutan
Kurva S-Penyusutan merupakan kebalikan dari Kurva SPertumbuhan. Nilai keanggotaannya bergerak dari sisi kiri dengan nilai
keanggotaan satu menuju sisi kanan dengan nilai keanggotaan nol.
Seperti yang terlihat pada gambar 2.9.
37
1
µ[x]
0,5
0
α
β
domain
γ
Gambar 2.9 Karakteristik Fungsi Kurva S-Penyusutan
Fungsi keanggotaan kurva S-Penyusutan:
1;
1 - 2((x - α)/(γ - α))²;
µ(x; α, β, γ) =
2((γ - x)/(γ - α))²;
0;
x≤α
α<x≤β
β<x<γ
x≥γ
f. Representasi Kurva Bentuk Lonceng (Bell Curve)
Untuk merepresentasikan himpunan fuzzy biasanya digunakan
kurva bentuk lonceng. Kurva bentuk lonceng terbagi atas tiga kelas, yaitu:
Kurva Phi (π), Beta (β), dan Gauss. Perbedaan ketiga kurva ini terletak
pada gradiennya.
1) Kurva Phi (π)
Kurva-π berbentuk lonceng dengan derajat keangotaan satu
terletak pada pusat dengan domain (γ) dan lebar kurva (β). Seperti
yang terlihat pada gambar 2.10.
38
Pusat (γ)
1
Titik
infleksi
µ[x]
0.5
0
Ri
lebar (β)
Domain
Rj
Gambar 2.10 Karakteristik Fungsional Kurva π
Fungsi keanggotaan:
S[x; γ – β, γ – β/2, γ]
π(x,β,γ) = 1 – S[x; γ, γ + β/2, γ + β]
x≤γ
x>γ
2) Kurva Beta (β)
Seperti halnya Kurva π, kurva beta juga berbentuk lonceng
namun lebih rapat. Kurva ini didefinisikan dengan dua parameter, yaitu
nilai pada domain yang menunjukkan pusat kurva (γ) dan setengah
lebar kurva (β). Seperti yang terlihat pada gambar 2.11.
Pusat (γ)
1
Titik infleksi
(γ – β)
Titik infleksi
(γ + β)
0,5
µ[x]
0
Ri
domain
Rj
Gambar 2.11 Karakteristik Fungsional Kurva β
Fungsi keanggotaan:
β(x; γ, β) = 1/1 + [x – γ/β]2
39
Salah satu perbedaan yang mencolok yang dimiliki oleh kurva
beta terhadap kurva-π adalah fungsi keanggotaannya akan mendekati
nol hanya jika nilai β sangat besar.
3) Kurva Gauss
Kurva Gauss menggunakan γ untuk menunjukkan nilai
domain pada pusat kurva dan k yang menunjukkan lebar kurva.
Seperti yang terlihat pada gambar 2.12.
Pusat (γ)
1
µ[x]
0,5
0
Ri
lebar (k)
Rj
Domain
Gambar 2.12 Karakteristik Fungsional Kurva Gauss
Fungsi keanggotaan:
G(x; k, γ) = e – k(γ – x)2
5. Operator Dasar Zadeh untuk Operasi Himpunan Fuzzy
Seperti halnya himpunan konvensional, ada beberapa operasi yang
didefinisikan secara khusus untuk mengkombinasi dan memodifikasi
himpunan fuzzy. Nilai keanggotaan sebagai hasil dari operasi dua himpunan
atau lebih sering di kenal dengan nama firestrength atau α-predikat. Ada
tiga operator dasar yang diciptakan oleh Zadeh, yaitu:
40
a. Operator And
Operator ini berhubungan dengan operasi interseksi pada
himpunan α-predikat sebagai hasil operasi dengan operator And diperoleh
dengan mengambil nilai keanggotaan terkecil antar elemen pada
himpunan-himpunan yang bersangkutan.
µA∩B = Min(µA[x], µB[y])
b. 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 himpunanhimpunan yang bersangkutan.
µAUB = Max(µA[x], µB[y])
c. Operator Not
Operator ini berhubungan dengan operasi komplemen pada
himpunan. α-predikat sebagai hasil operasi dengan operator Not diperoleh
dengan mengurangi nilai keanggotaan elemen pada himpunan yang
bersangkutan dari satu.
µA’ = 1 - µA[x]
B. Database
4. Pengertian Database
Dalam arti khusus database adalah sekumpulan informasi yang di
atur agar mudah di cari. Sedangkan dalam arti umum database adalah
41
sekumpulan data yang di proses dengan bantuan komputer yang
memungkinkan data dapat di akses dengan mudah dan tepat, yang dapat
digambarkan sebagai aktivitas dari satu atau lebih organisasi yang berelasi.
Sebagaimana kita ketahui, manajemen modern sekarang ini telah
mengikutsertakan informasi sebagai sumber daya penting yang setara
dengan sumber daya manusia, uang, mesin, dan meterial. Informasi adalah
suatu bentuk penyajian data yang melalui mekanisme pemrosesan serta
berguna bagi pihak tertentu misalnya manajer. Bagi pihak manajer
informasi merupakan bahan acuan bagi pengambilan keputusan.
Data
Proses
Informasi
Gambar 2.13 Pengolahan Data Menjadi Informasi
5. Database Relasional
Prinsip dari model relasional pertama kali dikenalkan oleh Dr. E. F.
Codd pada bulan Juni 1970 pada tulisan makalahnya yang berjudul ”A
Relational Model of Data for Large Shared Data Banks”. Pada makalah
tersebut Dr. E. F. Codd mengusulkan model relasional untuk sistem database.
Model relasional lebih popular daripada tipe model database lain
seperti hirarki dan network karena kesederhanaannya. Relational Database
Management System (RDBMS) menjadi sangat populer karena mudah
digunakan dan strukturnya bersifat fleksibel. Komponen dari model
relasional adalah:
42
a. Kumpulan obyek atau relasi yang menyimpan data,
b. Kumpulan operator yang dapat digunakan pada relasi untuk menghasilkan
relasi yang lain,
c. Integritas data untuk akurasi dan konsistensi.
Database relasional menggunakan relasi atau tabel dua dimensi
untuk menyimpan informasi. Sebagai contoh akan di simpan informasi
tentang pegawai dalam suatu perusahaan, maka pada database relasional di
buat beberapa tabel untuk menyimpan kumpulan informasi tentang pegawai
seperti tabel pegawai, tabel departemen, dan tabel gaji.
6. Structured Query Language (SQL)
SQL adalah bahasa standard untuk melakukan query pada database.
SQL independent terhadap arsitektur database sehingga bisa digunakan
pada database apa saja.
Sebuah query adalah sebuah ekspresi bahasa yang menggambarkan
data yang ingin didapatkan kembali dari sebuah database. Dalam
hubungannya dengan optimasi query, seringkali diasumsikan bahwa queryquery tersebut dinyatakan dalam sebuah dasar-dasar isi dan sekumpulan
cara orientasi yang memberikan optimizer pilihan-pilihan di antara
prosedur-prosedur alternatif evaluasi.
Query dapat digunakan pada beberapa keadaan, kebanyakan aplikasi
nyatanya adalah permintaan-permintaan secara langsung dari pengguna
(user) yang memerlukan informasi tentang bentuk maupun isi dari database.
43
Apabila permintaan pengguna terbatas pada sekumpulan query-query
standard, maka query-query tersebut dapat dioptimisasi secara manual oleh
pemrograman prosedur-prosedur pencarian gabungan dan membatasi
masukan dari pengguna pada sebuah ukuran menu.
Tetapi bagaimanapun juga, sebuah sistem optimisasi query otomatis
menjadi penting apabila query-query
khusus dinyatakan dengan
menggunakan bahasa query yang digunakan secara umum seperti SQL.
SQL adalah bahasa pemrograman yang digunakan untuk akses ke
database. SQL di buat oleh perusahaan IBM sekitar tahun 1970,
bersamaan dengan diperkenalkannya konsep relational Database. Setelah
mengalami banyak perkembangan, pada masa kini SQL sudah menjadi
bahasa yang lazim digunakan dalam dunia database. Bahasa SQL dapat
digolongkan bahasa generasi keempat yang tidak berupa bahasa yang
berstruktur dan beraturan seperti C dan Pascal (golongan bahasa generasi
ketiga). Oleh karena itu, bahasa SQL mudah dipelajari.
Pernyataan (statement) SQL dapat digolongkan atas tiga golongan
yaitu:
a. Data Definition Language (DDL) yang mendefinisikan struktur suatu
data. Perintah-perintah SQL yang termasuk DDL antara lain :
1) Create = untuk membuat tabel dengan sintaksnya sebagai berikut :
CREATE TABLE [Pemakai.] Nama
Tabel(
{nama kolom pertama TipeData [default]
[constraint kolom] constraint tabel) [,(nama
kolom kedua TipeData [default] [constraint
kolom] constraint tabel}]... .);
44
2) Alter = untuk mengubah (modify) tabel yang telah dibuat, seperti :
a) Menambah kolom baru,
b) Mengubah ukuran kolom,
c) Mengubah aturan-aturan yang berlaku untuk suatu kolom.
Sintaks yang dapat dipakai adalah:
ALTER TABLE [Pemakai.] Nama Tabel {[ADD
{Nama Kolom | [CONSTRAINT Nama Constraint]
Constraint
Tabel}[,
Nama
Kolom
|[CONSTRAINT Nama Constraint] Constraint
Tabel }]…)][MODIFY (Nama Kolom [, Nama
Kolom]….)][DROP Nama Constra int]}[ENABLE
Nama Constraint | DISABLE Nama Constraint];
3) Drop = untuk menghapus suatu tabel. Sintaks yang dapat dipakai
adalah:
DROP
TABLE
[Pemakai.]Nama
[CASCADE CONSTRAINTS];
Tabel
b. Data Manipulation Language (DML) yang dapat mencari (query) dan
mengubah (modify) suatu tabel. Perintah-perintah SQL yang termasuk
DML antara lain:
1) Select = untuk membaca (query) isi tabel. Sintaks yang dapat
digunakan adalah sebagai berikut:
SELECT [ ALL | DISTINCT {* | [Pemakai..]Nama
Tabel.* | Ekspresi [Alias [, Ekspresi [Alias] ]..} FROM
[Pemakai.]Nama
Table
[@Nama
Database]
[Alias]...[WHERE Kondisi][CONNECT BY Kondisi
[START WITH Kondisi]][GROUP BY Ekspresi [,
Ekspresi]... .] [HAVING Kondisi][(UNION [ALL] |
INTERSECT MINUS)SELECT …] [ORDER BY
{EKspresi | Posisi} [ASC }| DESC]…[, {Expresi |
Posisi} [ASC | DESC]]]…[FOR UPDATE [OF
[[Pemakai.]{Nama Tabel | Nama View}.]Nama Kolom
[, [[Pemakai.]{Nama Tabel | Nama View}.]]…]
NOWAIT];
45
2) Insert = untuk memasukkan data ke tabel. Sintaks yang dapat
digunakan adalah sebagai berikut:
INSERT INTO [Pemakai.]Nama Tabel[@nama
Database]
[(Nama
Kolom
[Nama
Kolom]…)]VALUE [Ekspresi]...) | Query...);
3) Update = untuk mengubah isi tabel. Sintaks yang dapat digunakan
adalah sebagai berikut:
UPDATE [Pemakai.]Nama Tabel SET {Nama
Kolom = Ekspresi [Nama Kolom = Ekspresi].. .|
(Nama Kolom [,Nama Kolom]..) = ( Subquery) |
[WHERE Kondisi];
4) Delete = untuk menghapus isi tabel. Sintaks yang dapat digunakan
adalah sebagai berikut :
DELETE
FROM
[Pemakai.]Nama
Table[@Nama Database] [WHERE Kondisi];
c. Data Control Language (DCL) adalah yang mengatur hak-hak
(privilege) untuk seorang pemakai database. Semua bahasa pemrograman
mempunyai aturan gramatikal. Beberapa aturan yang perlu diperhatikan
pada saat menulis bahasa SQL adalah :
1) Semua pernyataan SQL di tutup dengan tanda titik-koma (;).
2) Perintah SQL dapat di tulis dalam satu baris atau di pisah-pisah dalam
beberapa baris agar mudah di baca.
3) SQL tidak membedakan huruf besar atau kecil (not case sensitive)
untuk penulisan perintah-perintah SQL (seperti Create, Alter, Select),
nama tabel, dan nama kolom.
46
4) Isi dari tabel peka terhadap huruf besar atau kecil (case sensitive),
tergantung bagaimana isi tabel dimasukkan. Hal ini penting dijadikan
perhatian ketika membuat pernyataan query SQL dalam mencari isi
tabel.
5) Pernyataan SQL harus di tulis menurut sintaks tertentu.
6) Pernyataan SQL dapat diberikan baris komentar untuk dokumentasi
serta menjelaskan maksud dari pemrograman.
C. Teknik untuk Mengimplementasikan Fuzziness ke Dalam Database
Pada umumnya, ada dua metode untuk memasukkan fuzziness
kedalam database, yaitu:
1. Fuzzy Query Database
Fuzzy query database adalah membuat sebuah fuzzy query terhadap
database klasik. Artinya, kita membuat sebuah aplikasi yang dapat
menangani sebuah query di mana dalam query tersebut terdapat variabelvariabel yang bernilai fuzzy atau dengan kata lain query tersebut memiliki
variabel-variabel linguistik. Sedangkan data pada database yang akan di
akses merupakan data yang pasti.
Ada beberapa pendekatan yang dapat dijadikan rujukan untuk
menyelesaikan persoalan fuzzy query database. Pendekatan-pendekatan itu
adalah:
47
a. Model Chang
Shi Kuo Chang mengajukan konsep kerangka database yang
mengijinkan pengguna untuk menetapkan isi dan arti dari sebuah
koleksi data. Kerangka database ini nantinya digunakan sebagai suatu
dasar ilmu semantik yang mendukung fuzzy query. Metodologi yang
diusulkan dapat memproses fuzzy query adalah:
Query: get supplierName; goods equal 'Tv'.
Query ini adalah “fuzzy”’ karena tidak menyediakan cukup
keterangan pada DBMS (tidak ada lintasan akses yang ditetapkan).
Terjemahan dari fuzzy query kedalam sebuah query lengkap
dirumuskan sebagai sebuah masalah untuk mengkonversi sebuah
penetapan grafik query secara parsial ke dalam sebuah penetapan
secara menyeluruh. Sebuah query penuh untuk query di atas
mengambil bentuk:
Query: get supply.supplierName; stock.goods equal 'Tv'.
Dalam makalah Chang, istilah “fuzzy” mengacu pada
keterangan penentuan secara tidak menyeluruh pada query, seperti itu
kekurangan dari lintasan akses. Ini harus di catat bahwa teori logika
fuzzy tidak dipergunakan dengan tegas di dalam merumuskan
metodologi. Alhasil, model ini kurang kuat, sepertinya kurang pantas
dalam menangani fuzzy query yang melibatkan data fuzzy yang samarsamar dan rancu.
48
b. Model Wong
Eugene Wong mengajukan sebuah kerangka untuk menangani
keterangan tidak menyeluruh dalam DBMS nonfuzzy. Terkadang,
sehubungan dengan keterangan tidak menyeluruh atau tidak tepat pada
DBMS, sebuah database tidak dapat menyediakan jawaban untuk
beberapa query. Dalam keadaan di mana ketidaktepatan sehubungan
dengan merekam kesalahan, data usang, skala tidak cocok, atau
kesalahan
pengukuran,
Wong
menyarankan
penggunaan
dari
pendekatan data statistik untuk mendekati hasil, kecuali jawabanjawaban yang penuh arti. Ini di catat bahwa model Wong
berlandaskan teori dari probabilitas dan statistik lebih dari teori
himpunan fuzzy. Sebagai data fuzzy, secara keseluruhan, posibilistik
dibandingkan posibilistik alami, model ini seperti model Chang, tidak
berhasil menangani dengan baik fuzzy query yang melibatkan data
fuzzy.
c. Model Tahani
Valiollah Tahani mengembangkan sebuah kerangka konseptual
tingkat tinggi untuk memproses fuzzy query pada sebuah ruang
lingkup database konvensional nonfuzzy. Diusulkan kerangka sistem
perolehan kembali fuzzy, penggunaan pendekatan dari perancangan
perolehan kembali asosiasi. Di bawah perancangan ini, sebuah fuzzy
query digantikan oleh asosiasi arti dirinya kemudian pencocokan
49
operasi dilakukan untuk membandingkan fuzzy mulai dari akurasi
data hingga memperoleh sebuah jawaban. Model ini dianggap model
yang paling baik untuk menjawab persoalan fuzzy query database
karena model ini menggunakan teori himpunan fuzzy untuk
mendapatkan informasi pada query-nya.
Misalkan dalam sebuah database karyawan di buat kategorikategori sebagai berikut:
1) Usia karyawan dikategorikan ke dalam himpunan fuzzy menjadi
Muda, Parobaya, dan Tua.
2) Gaji karyawan dikategorikan ke dalam himpunan fuzzy menjadi
Rendah, Sedang, dan Tinggi.
3) Masa kerja karyawan dikategorikan ke dalam himpunan fuzzy
menjadi Baru dan Lama.
Dari pendefinisian himpunan fuzzy di atas kita dapat membuat
beberapa query, misalnya siapa saja karyawan yang masih muda serta
memiliki gaji tinggi? Query-nya adalah:
Select nama from karyawan where (Usia = “Muda”) and (Gaji =
“Tinggi”).
Maka pada database yang telah dibuat akan muncul siapasiapa saja karyawan yang masih muda dan mendapat gaji tinggi.
50
d. Model Kacprzyk
Janusz Kacprzyk menyajikan sebuah sistem fuzzy query yang
di kenal dengan Fquery III. Melalui Fquery III, tambahan data Dbase
III (sebuah nonfuzzy mikro komersial berbasis komputer RDBS)
dapat di bedah menggunakan fuzzy query. Fquery III didasari pada
kerangka dengan teori logika fuzzy.
2. Fuzzy Database
Fuzzy database adalah teknik untuk memasukkan informasi fuzzy ke
dalam database. Maksudnya adalah kita memasukkan informasi-informasi
yang memiliki nilai fuzzy kedalam database.
Ada beberapa pendekatan yang dapat dijadikan rujukan untuk
menyelesaikan persoalan fuzzy query database. Pendekatan-pendekatan itu
adalah:
a. Model Buckles
Model Buckles adalah salah satu model versi paling awal dari
Fuzzy Relational DataBase System (FRDBS) dengan menggabungkan
teori himpunan fuzzy dan Relational DataBase System (RDBS). Billy
P. Buckles merumuskan sebuah kerangka teoritis yang kokoh dari
persamaan mendasar FRDBS yang mana memiliki persyaratan
sebagai berikut:
1) Model ini mengijinkan komponen-komponen tuple nonatomik,
51
2) Model ini memerlukan hubungan persamaan untuk masingmasing domain data agar supaya memelihara persyaratan penting
dari RDBS klasik,
3) Model ini menerima ambang batas yang didefinisikan pengguna
dari penerimaan selama evaluasi query,
4) Model ini hanya mendukung sebuah kelas spesifik angka fuzzy
tetapi tidak mendukung distribusi kemungkinan jenis data (untuk
perbandingan, lihat model yang disediakan oleh Umano).
b.
Model Shenoi
Sujeet Shenoi generalisasikan persamaan berdasar model.
Senoi mengamati bahwa pemeliharaan dari persyaratan RDBS klasik
juga dapat dilakukan dengan cara membatasi komponen-komponen
fuzzy tuples menjadi subset-subset yang tidak kosong dari kesamaan
kelas-kelas dari pembagian domain. Sejak pendapat kesamaan kelaskelas lebih umum dibandingkan pendapat dari hubungan persamaan,
sebuah kesamaan model dari FRDBS, dimana sebuah generalisasi dari
model dasar persamaan telah diajukan.
c. Model Umano
Pendekatan berbeda yang lain pada penyajian dan manipulasi
dengan data fuzzy diajukan oleh Umano yang mengembangkan
Kebebasan-0, sebuah FRDBS. Tidak seperti model Buckles dan
Shenoi yang mana batas-batas data fuzzy pada angka fuzzy spesifik,
52
Kebebasan-0 mengikuti distribusi kemungkinan keduanya dan angka
fuzzy. Walaupun demikian, Kebebasan-0 lebih kuat dalam kaitannya
dengan struktur data fuzzy ini, ini kekurangan kerangka database
formal yang mana ditemukan pada model Buckles. Kebebasan-0
menggunakan sebuah bahasa program terlekat pada Fortran untuk
manipulasi data fuzzy.
Misalkan terdapat tabel karyawan seperti terlihat pada tabel 2.1
berikut.
Tabel 2.1 Tabel Biodata Karyawan
Nama
Umur (th)
Nama Anak
Farrel
35
Maya
Fitri
33
-
Aldo
Muda
Tidak Tahu
Kaila
Tidak Tahu
Ningrum
Mozza
56
{Nisa,Ana}p
Misyka
{50,51}p
Undefined
Pada record pertama, tidak ada data yang ambiguous. Farrel
berusia 35 tahun dan memiliki seorang anak yang bernama Maya.
Pada record kedua juga tidak ada data yang ambiguous. Fitri berusia
33 tahun dan belum mempunyai anak.
Pada record ketiga, Aldo tidak diketahui berapa umurnya
tetapi dia masih muda. Umur Aldo diekspresikan dengan distribusi
53
posibilitas Muda, misalkan Muda merupakan himpunan dengan
distribusi posibilitas sebagai berikut:
Muda = {0,3/15; 0,6/17; 0,8/22; 1/25; 0,8/30; 0,7/33; 0,6/35;
0,2/40}
Aldo memiliki anak tetapi kita tidak mengetahui siapa nama
anaknya. Nama anaknya Aldo diekspresikan dengan distribusi
posibilitas tidak tahu yang berarti siapapun mungkin (nilai posibilitas
= 1).
Pada record keempat kita tidak mengetahui berapa umur Kaila.
Umur Kaila diekspresikan dengan distribusi posibilitas tidak tahu
yang berarti berapapun mungkin. Kaila memiliki anak yang bernama
Ningrum.
Pada record kelima, Mozza diketahui berumur 56 tahun.
Mozza memiliki seorang anak yang belum jelas siapa namanya,
apakah Nisa atau Ana. Nama anak Mozza diekspresikan dengan
distribusi posibilitas {Nisa,Ana}p yang artinya Nisa atau Ana.
Misalkan distribusi posibilitas yang diberikan adalah:
Nama Anak = {0,8/Nisa; 0,5/Ana}
Ini berarti bahwa anak Mozza bernama Nisa memiliki nilai
posibilitas lebih besar dibandingkan dengan nilai posibilitas Ana.
54
Pada record keenam, umur Misyka diketahui 50 atau 51 tahun.
Umur Misyka diekspresikan dengan distribusi posibilitas {50,51}p,
misalkan distribusi posibilitas yang diberikan adalah:
Umur = {0,8/50; 0,4/51}
Ini berarti bahwa umur Misyka 50 tahun memiliki nilai
posibilitas lebih besar dibandingkan dengan nilai posibilitas 51 tahun.
Kita tidak tahu apakah Misyka memiliki anak atau tidak. Nama anak
Misyka diekspresikan dengan distribusi posibilitas undefined, tidak
jelas apakah Misyka memiliki anak atau tidak (nilai posibilitas = 0).
Apabila diberikan query siapa saja karyawan yang usianya
lebih dari 36 tahun? Maka yang termasuk kedalam kategori tersebut
adalah Aldo, Kaila, Mozza dan Misyka.
Aldo termasuk dalam kategori ini karena Aldo termasuk dalam
kategori Muda di mana usia 40 tahun (> 36 tahun) menjadi anggota
himpunan Muda meskipun nilai posibilitasnya 0,2. Kaila termasuk
dalam kategori ini karena kita tidak mengetahui umur Kaila sehingga
berapapun umur yang di minta, Kaila tetap masuk (nilai posibilitas =
1). Mozza jelas termasuk dalam kategori ini sebab umur Mozza 56
tahun. Misyka juga termasuk dalam kategori ini sebab baik 50 tahun
maupun 51 tahun keduanya lebih dari 36 tahun.
55
d. Model Zemankova
Maria Zemankova juga mengembangkan sebuah FRDBS yang
dapat menangani teori fuzzy keduanya serta data distribusi
kemungkinan. RIM, sebuah RDBS nonfuzzy konvensional, di pilih
sebagai
sebuah
tempat
dalam
menerapkan
FRDBS.
Vektor
menunjukkan jenis dukungan oleh RIM yang biasanya mewakili data
fuzzy. Tambahan di buat pada RIM struktur data RDBS sehingga
komponen tuple tidak dibatasi pada nilai atomik. Pengembangan
FRDBS dapat menangani fuzzy query.
Secara umum, FRDBS menunjukkan keuntungan-keuntungan
utama yang mengikuti melalui model RDBS konvensional.
1) Model ini mengijinkan sebuah cara yang lebih alami dari
penanganan data karena data fuzzy lebih kompatibel dengan
pikiran dan pengamatan manusia,
2) Penggunaan dengan teori himpunan fuzzy dan teori distribusi
kemungkinan menyediakan sebuah pondasi matematika formal
untuk penyajian sistematis dan manipulasi dari data pasti dan data
fuzzy,
3) Model ini menyediakan sebuah lingkungan database untuk
menangani keduanya (data pasti dan data fuzzy).
Bagaimanapun, dalam model ini, tidak diragukan bahwa
RDBS adalah kunci kerangka database pada penanganan data fuzzy.
56
Bagaimanapun, seperti generasi terdahulu dari teknologi database,
RDBS dikembangkan untuk pengolahan data konvensional yang
melibatkan struktur data pasti dan data atomik, dengan demikian ini
tidak sesuai untuk aplikasi-aplikasi yang memerlukan penghitungan
intensif dan struktur data kompleks seperti data himpunan fuzzy.
57
BAB III
METODOLOGI
G. Prosedur Perancangan
Prosedur perancangan yang di maksud adalah tata cara pencapaian
target perancangan sebagaimana tertulis dalam tujuan penelitian. Prosedur
perancangan ini ditunjukkan dalam gambar 3.1.
Target:
Tujuan perancangan
Analisis Kebutuhan
Spesifikasi
Desain
Gagal
Verifikasi
Berhasil
Validasi
Finalisasi
Gambar 3.1 Prosedur Perancangan
H. Analisa Kebutuhan
Sistem yang akan di bangun merupakan sistem database fuzzy.
Karena model yang digunakan adalah Model Tahani, maka relasi yang ada
58
dalam database masih bersifat standard, dengan penekanan fuzzy pada
beberapa field dalam tabel-tabel yang ada pada database tersebut.
1. Kebutuhan Masukkan
Kebutuhan masukkan sistem digolongkan menjadi dua, yaitu
masukkan fuzzy dan masukkan nonfuzzy.
a. Masukkan fuzzy terdiri dari:
1) Data-data pelamar kerja yang menyangkut: tes kompetensi, tes
wawancara, tes kreaplin, dan magang.
2) Untuk fungsi S-pertumbuhan, nilai keanggotaan nol = α, nilai titik
infleksi = β, dan nilai keanggotaan lengkap = γ. Untuk fungsi
keanggotaan bahu merupakan perpaduan antara fungsi linier naik
dan turun serta fungsi segitiga (nilai batas bawah fungsi linier
turun = a, nilai batas atas fungsi linier turun = b, nilai batas bawah
fungsi segitiga = c, nilai tengah fungsi segitiga = d, nilai batas
atas fungsi segitiga = e, nilai batas bawah fungsi linier naik = f
dan nilai batas atas fungsi linier naik = g) berlaku untuk variabelvariabel pada bagian (1).
b. Masukkan nonfuzzy terdiri dari data-data pelamar kerja yang
menyangkut ada tidaknya pengalaman kerja.
2. Kebutuhan Keluaran
Keluaran sistem berupa rekomendasi pelamar kerja yang sesuai
dengan kriteria yang diinginkan oleh perusahaan atau instansi terkait.
59
3. Menggunakan Delphi sebagai GUI
Delphi digunakan sebagai antar muka (Graphical User Interface)
agar pengguna tidak mengalami kesulitan dalam memasukkan dan
memproses data sehingga dapat menghindari terjadinya kesalahan.
I.
Spesifikasi
Secara umum perangkat lunak yang di bangun mempunyai spesifikasi
sebagai berikut:
1. Memiliki Database yang dapat memuat data-data para pelamar kerja, jenis
dan kriteria tes, nilai hasil tes, serta predeksi pelamar kerja yang akan di
terima.
2. Menggunakan sistem berbasis GUI yaitu Delphi 7.0 tidak berbasis web.
3. Menggunakan Mysql sebagai perangkat lunak penyimpan database tidak
menggunakan client server.
4. Dapat digunakan pada komputer dengan spesifikasi minimum sebagai
berikut:
a. Desktop PC atau Notebook dengan prosessor 800 Mhz.
b. HDD 750 MB.
c. Memory RAM 256 MB.
d. VGA/SVGA 16 MB dengan resolusi (1024 x 768).
e. Sistem operasi Microsoft Windows XP Professional.
60
J.
Perancangan Database dan Sistem
Dengan spesifikasi di atas maka komponen-komponen yang
dibutuhkan untuk membangun perangkat lunak ini adalah:
1. Perancangan Database
Database yang digunakan adalah database standard yang sudah
umum digunakan dengan struktur database yang memiliki relasional antar
tabel. Secara keseluruhan kita membuat sebuah database yang di beri nama
database fuzzy. Karena pada penelitian ini menggunakan database model
Tahani, maka query yang akan di dapat dari proses seleksi menggunakan
teori himpunan fuzzy. Ada enam tabel yang digunakan dalam penyelesaian
tugas akhir ini dengan tujuan dan kegunaan yang berbeda-beda.
Penjelasannya adalah sebagai berikut:
a. Struktur Tabel
1)
Tabel Pelamar
Tabel pelamar ini digunakan untuk menyimpan data-data
tentang biodata para pelamar kerja. Struktur tabel pelamar kerja
dapat di lihat pada tabel 3.1.
Tabel 3.1 Tabel Pelamar
Nama Field
idpelamar*
kode
nama
alamat
tempatlahir
tgllahir
Tipe Data
Lebar
Integer
Varchar
Varchar
Varchar
Varchar
Date
11
8
32
64
16
-
Keterangan
Auto increment
No. urut pelamar
Nama pelamar
Alamat pelamar
Kota kelahiran pelamar
Tanggal lahir pelamar
61
usia
Real
*) Kunci Primer
2)
-
Usia pelamar
Tabel Jenis Tes
Tabel jenistes ini digunakan untuk menyimpan data-data
tentang jenis-jenis tes yang diadakan untuk menyaring para
pelamar kerja oleh suatu institusi atau perusahaan. Struktur tabel
pelamar dapat di lihat pada tabel 3.2.
Tabel 3.2 Tabel Jenis Tes
Nama Field
Tipe Data
idjenistes* Integer
nama
Varchar
*) Kunci Primer
3)
Lebar
Keterangan
11
16
Auto increment
Nama jenis tes
Tabel Kriteria dari Jenis Tes
Tabel kriteria ini digunakan untuk menyimpan data-data
tentang derajat keanggotaan suatu jenis tes tertentu pada himpunan
fuzzy tertentu serta menyimpan data-data domain dari himpunan
fuzzy. Struktur tabel pelamar dapat di lihat pada tabel 3.3.
Tabel 3.3 Tabel Kriteria
Nama
Field
idkriteria*
nama
idjenistes
kurva
Tipe Data
Lebar
Integer
Varchar
Integer
Varchar
11
16
11
16
a
b
c
d
Float
Float
Float
Float
-
Keterangan
Auto increment
Nama kriteria tes
Kode dari jenis tes
Nama fungsi dari derajat
keanggotaan fuzzy
Batas dari himpunan fuzzy
Batas dari himpunan fuzzy
Batas dari himpunan fuzzy
Batas dari himpunan fuzzy
62
*) Kunci Primer
4)
Tabel Nilai
Tabel nilai ini digunakan untuk menyimpan data-data
tentang nilai-nilai tes yang di ambil dari hasil tes yang telah
dilakukan oleh perusahaan atau institusi. Struktur tabel pelamar
dapat di lihat pada tabel 3.4.
Tabel 3.4 Tabel Nilai
Nama Field
Type Data
idnilai*
idpelamar
Integer
Integer
11
11
idjenistes
Integer
11
nilai
Float
*) Kunci Primer
5)
Lebar
Keterangan
Auto increment
Kode dari nama
pelamar
Kode dari jenis
tes
Nilai
-
Tabel Hasil (Result)
Tabel result ini digunakan untuk menyimpan data-data
tentang hasil dari penghitungan nilai keanggotaan dari fungsi
keanggotaan yang telah ditentukan. Struktur tabel pelamar dapat di
lihat pada tabel 3.5.
Tabel 3.5 Tabel Result
Nama Field
Type Data
Lebar
idresult*
idpelamar
Integer
Integer
11
11
idkriteria
Integer
11
nilai
Float
-
Keterangan
Auto increment
Kode dari nama
pelamar
Kode dari kriteria
tes
Nilai
63
*) Kunci Primer
6)
Tabel Temporary
Tabel sTemp digunakan untuk menyimpan data secara
temporary. Tabel ini memuat field-field yang berisi data-data
sementara yang dihasilkan selama proses penghitungan dalam sistem
ini berlangsung. Data-data yang merupakan hasil dari penghitungan
firestrength antara dua kriteria atau lebih. Untuk lebih jelasnya
tentang kegunaan dari tabel ini akan di bahas pada perancangan
sistem.
config
PK
PK
nonfuzzy
idpelamar*
kode
nama
alamat
tempatlahir
tgllahir
nonfuzzy
nilai
PK
jenistes
pelamar
idnilai*
idpelamar
idjenistes
nilai
PK
kriteria
PK
idjenistes*
nama
result
PK
idresult*
idpelamar
Idkriteria
nilai
idkriteria*
nama
idjenistes
kurva
a
b
c
d
sTemp
PK
Gambar 3.2 Perancangan Database
idresult*
idpelamar
Idkriteria
Temp f1
Temp f2
........
Fire strength temp
Temp nf1
........
64
2. Perancangan Sistem
Secara umum sistem yang akan di buat adalah seperti gambar 3.3
berikut ini:
Masukkan:
database
Pelamar kerja
Tentukan
fungsi
keanggotaan
Ambil
data yang
diperlukan
Olah data
dan hitung
firestrength
Keluaran:
hasil
rekomendasi
Gambar 3.3 Perancangan Sistem
a. Diagram Arus Data
Penggunaan diagram arus data di sini bertujuan untuk
memudahkan dalam melihat arus data dalam sebuah sistem.
1)
Diagram Konteks
Konteks diagram seperti terlihat pada Gambar 3.4.
65
Definisi variabel fuzzy
Definisi himpunan fuzzy
Pengguna
Definisi fungsi keanggotaan
Database tabel dan field nilai
Sistem
Query
Pelamar Kerja direkomendasi
Data Pelamar Kerja
Pelamar Kerja
Gambar 3.4 Diagram Konteks Sistem
Dari konteks diagram diatas terlihat ada dua entitas luar
yang berhubungan dengan sistem ini, yaitu: Pelamar Kerja dan
Pengguna. Dari pelamar kerja akan diperoleh data-data pelamar
kerja sedangkan pengguna adalah orang yang menjalankan
program ini.
Pengguna dapat menentukan sendiri klasifikasi dari
pelamar kerja yang akan direkomendasikan, yaitu dengan cara
memasukkan:
a) Variabel fuzzy yang dibutuhkan,
b) Himpunan fuzzy dari masing-masing variabel fuzzy,
c) Fungsi keanggotaan dari masing-masing himpunan fuzzy,
Setelah itu, untuk mendapatkan pelamar kerja yang
direkomendasikan, pengguna dapat memasukkan query yang telah
ada pada user interface.
66
Hasil yang di terima oleh pengguna adalah berupa tabel
yang berisi data pelamar kerja yang direkomendasikan berdasarkan
variabel fuzzy, himpunan fuzzy, fungsi keanggotaan, dan query yang
dimasukkan oleh pengguna.
2)
Diagram Peninjauan
Diagram peninjauan menunjukkan gambaran proses yang
ada dalam sistem secara garis besar. Seperti yang terlihat pada
gambar 3.5.
Pelamar
Kerja
Data Pelamar Kerja
1.1
Masukk
an dan
ubah
data
Data Pelamar Kerja
Tabel
Pelamar
Kerja
Data Pelamar Kerja
1.3
Fuzzy
Query
Data Hasil
Tabel Hasil
Data Nilai
Query
Pengguna
Data Temporary
Fungsi
Tabel Nilai
Pengguna
Tabel
Temporary
Pelamar Kerja Dirokemendasi
Tabel
Kriteria
Tabel
Jeinis Tes
Himpunan
fuzzy
Variabel
fuzzy
1.2
Inisialisai
hal yang
dibutuhkan
Data Kriteria
Data Jenis Tes
Definisi variabel
Definisi himpunan fuzzy
Database tabel dan field
Definisi fungsi
Pengguna
Pengguna
Pengguna
Gambar 3.5 Diagram Peninjauan
Pengguna
67
Dari diagram peninjauan di atas terlihat ada tiga proses,
yaitu: proses masukkan dan ubah data, proses inisialisasi hal-hal
yang dibutuhkan, serta proses fuzzy query.
a) Proses Masukkan dan Ubah Data.
Pada proses ini pengguna dapat memasukan data para pelamar
kerja atau mengubah data para pelamar kerja yang ada dalam
database.
b) Proses Inisialisasi Hal-hal yang Dibutuhkan.
Pada proses ini pengguna harus memasukkan hal-hal yang
dibutuhkan oleh sistem sebelum melakukan fuzzy query seperti
variabel fuzzy, himpunan fuzzy, fungsi keanggotaan, dan
database (nama database, tabel, dan field) nilai. Untuk
kebutuhan sistem yang terakhir ini digunakan sebagai atribut
pada variabel fuzzy yang berhubungan dengan dari mana asal
data yang akan di cari nilai keanggotaannya.
c) Proses fuzzy query
Pada proses ini terjadi penghitungan nilai derajat keanggotaan
(µ), penganalisaan query dan penghitungan firestrength.
3)
Detail Diagram
a) Level 1, Proses 2
Pada detail diagram ini akan ditampilkan proses lebih
detail dari proses 2. Seperti terlihat pada Gambar 3.6.
68
Pengguna
1.2.2
Pendefinisian
himpunan
fuzzy
Definisi fungsi
keanggotaan
Definisi himpunan fuzzy
Himpunan
fuzzy
Variabel fuzzy
Pengguna
Definisi variabel fuzzy
1.2.1
Pendefinisia
n variabel
fuzzy
1.2.3
Pendefinisian
fungsi
keanggotaan
Variabel fuzzy
Pengguna
Fungsi keanggotaan
Himpunan fuzzy
Fuzzy query
Fuzzy query
Fuzzy query
Gambar 3.6 Detail Diagram Level 1, Proses 2
Dari Gambar 3.6 diatas terlihat ada tiga proses, yaitu:
i. Pendefinisian variabel fuzzy. Pengguna dapat menentukan
variabel fuzzy yang diperlukan dalam proses.
ii. Pendefinisian himpunan fuzzy. Selain membutuhkan variabel
fuzzy, proses juga membutuhkan himpunan fuzzy. Oleh
karena itu pengguna dapat menentukan sendiri himpunan
fuzzy pada masing-masing variabel fuzzy yang akan
dimasukkan ke dalam proses.
iii. Pendefinisian
fungsi
keanggotan.
Pengguna
dapat
menentukan sendiri fungsi keanggotaan pada masing-masing
himpunan fuzzy. Pendefinisian fungsi keanggotaan ini juga
mencangkup semesta pembicaraan dan domain pada masingmasing himpunan fuzzy.
69
b) Level 1, Proses 3
Pada detail diagram ini akan ditampilkan proses lebih
menyeluruh dari proses 3. Seperti terlihat pada Gambar 3.7.
Masukkan nilai tes
Pengguna
Inisialisasi hal yang
dibutuhkan
Inisialisasi hal yang
dibutuhkan
Tabel
Nilai
1.3.3
Penghitungan
derajat
keanggotaan
Inisialisasi hal yang
dibutuhkan
1.3.1
Menyimpan
nilai hasil tes
Data hasil tes
Data hasil tes
Data nilai tes
1.3.4
Penghitungan
nilai fire
strength
Data
temporary
Tabel
temporary
Variabel
linguistik
1.3.2
Ambil
statement
dari sintaks
1.3.5
Menampilkan
tabel
Query
Tabel
hasil
Data
temporary
Pelamar kerja
terrekomendasi
Pengguna
Pengguna
Gambar 3.7 Detail Diagram Level 1, Proses 3
Pada proses 3 terdapat lima proses:
i. Mengisi Database Tabel dan Field Nilai
Nama database, tabel dan field nilai ditentukan oleh
pengguna. Proses ini diperlukan sebagai data masukkan dari
hasil-hasil tes yang telah di lalui oleh para pelamar kerja yang
kemudian nilai tersebut akan di olah sesuai dengan atribut
dari variabel fuzzy yang telah ditentukan, variabel-variabel
70
yang akan di-fuzzy query-kan harus berada pada satu tabel
yang sama.
ii. Penghitungan Derajat Keanggotaan
Proses ini menghitung nilai derajat keanggotaan dari masingmasing himpunan fuzzy yang ada dalam variabel fuzzy yang
telah ditentukan oleh pengguna. Penghitungan nilai derajat
keanggotaan juga di dapat dari fungsi keanggotaan yang telah
ditentukan oleh pengguna.
Data yang akan di hitung nilai keanggotaannya adalah
berdasarkan atribut dari nama database, tabel dan field yang
ada pada tabel hasil kemudian hasilnya akan ditampilkan oleh
tabel sTemp.
iii. Ambil Statement dari sintaks “where”
Proses ini adalah proses untuk mengambil variabel linguistik
yang ada pada query dan pada sistem ini variabel linguistik
terletak pada sintaks “where”.
iv. Penghitungan Nilai Firestrength
Firestrength menunjukkan seberapa besar rekomendasi yang
diberikan oleh sistem (firestrength memiliki nilai kisaran
antara 0 – 1). Nilai satu menunjukkan nilai rekomendasi
penuh, semakin mendekati nol maka pelamar kerja tersebut
semakin tidak direkomendasi. Penghitungan firestrength ini
71
membutuhkan data dari tabel hasil dan variabel linguistik dari
query yang ada.
Selama melakukan proses penghitungan firestrength, data
sementara akan di simpan dalam tabel temporary dan setelah
penghitungan selesai, hasil akhir dari penghitungan juga akan
di simpan dalam tabel temporary.
v. Menampilkan tabel temporary
Proses ini merupakan proses yang terakhir dari rangkaian
proses dalam sistem ini. Proses ini akan menampilkan tabel
temporary yang berisi nilai rekomendasi untuk masingmasing pelamar kerja. Proses ini sangat sederhana karena
hanya
mengambil
data
dari
tabel
temporary
dan
menampilkannya pada GUI.
3. Proses Penghitungan Firestrength
Operator yang bisa digunakan untuk menghitung firestrength hanya
ada dua yaitu AND dan OR. Karena dalam query dapat memiliki variabel
linguistik yang banyak pada sintaks where-nya, maka dibutuhkan suatu
metode agar sistem tahu operand dan operator mana yang harus
dikerjakan lebih dahulu. Oleh karena itu, dalam sistem ini akan
menggunakan metode Infix pada statement variabel linguistiknya. Sebagai
contoh diberikan statement linguistik berikut:
72
Where Tes Kompetensi = ”lulus” and Tes Wawancara = “lulus”
or Kreaplin = “baik”
Urutan pengerjaan yang seharusnya dilakukan adalah:
Where Tes
Kompetensi= “lulus”
and
Pertama
Tes Wawancara
= “lulus”
Kedua
or Kreaplin = “baik”
a. Pertama, sistem akan mengambil fungsi keanggotaan dari variabel
fuzzy tes kompetensi dengan himpunan fuzzy lulus dan variabel fuzzy
tes wawancara dengan himpunan fuzzy lulus yang telah ada pada tabel
temporary. Kemudian melakukan operasi dengan operator and, karena
operatornya and maka data yang diambil adalah nilai minimal dari
kedua nilai keanggotaan tersebut. Setelah itu hasilnya di simpan pada
tabel temporary.
b. Kedua, sistem kemudian mengambil nilai sementara yang ada pada
tabel temporary tadi untuk dilakukan operasi penghitungan firestrength
dengan operand dan operator berikutnya. Hasilnya akan kembali di
simpan dalam tabel temporary. Begitu seterusnya. Setelah seluruh
variabel di eksekusi kemudian hasilnya dioperasikan dengan variabel
nonfuzzy.
73
c. Karena statement sudah habis, berarti nilai terakhir yang dimasukkan ke
dalam tabel temporary adalah hasilnya. Contoh:
Statement where pada query adalah:
where tes kompetensi = lulus and tes wawancara = lulus or
kreaplin = baik and magang = baik
Sehingga penghitungan firestrength-nya adalah:
Firestrength = Max(Min(teskompetensi_lulus,
teswawancara_lulus), Min(kreaplin_baik, magang_baik,))
4. Pembuatan Graphical User Interface (GUI)
Pembuatan Graphical User Interface (GUI) dan program dalam
sistem ini menggunakan Delphi v7.0 sebagai bahasa pemrograman. Secara
sederhana user interface yang ada sebagai berikut:
a. Menu Utama
Frame menu utama merupakan tampilan yang disediakan untuk
melakukan semua proses yang berhubungan dengan fuzzy query dalam
sistem ini. Pada frame ini terdapat tabbedpane di mana masingmasing tab berisi tools sesuai dengan fungsinya (gambar 3.8).
74
Gambar 3.8 Tampilan Menu Utama
1) Tab Data Pelamar
Tab data pelamar ini merupakan tab untuk mengisikan datadata para pelamar kerja seperti nama, alamat, tempat lahir, tanggal
lahir, usia, dan pengalaman kerja. Pada tab ini terdapat beberapa
tombol, yaitu:
75
Gambar 3.9 Tampilan dari Tab Data Pelamar
a) Tombol tambah
Tombol ini digunakan untuk menambah data-data yang
masuk dari para pelamar kerja. Jika tombol ini di tekan maka tabel
data pelamar kerja akan menambah baris kosong untuk kemudian
baris tersebut di isi dengan data yang diinginkan.
76
Gambar 3.10 Tampilan Frame Data Pelamar Tambah Data
b) Tombol Edit
Tombol ini digunakan untuk mengubah data-data yang
keliru dari para pelamar kerja yang telah dimasukkan sebelumnya,
misalnya salah ketik nama, alamat dan lain sebagainya. Dari
gambar diatas terlihat jika tombol tersebut di tekan maka akan
muncul frame ubah pada jendela berikutnya kemudian pengguna
dapat merubah data yang di anggap keliru sesuai dengan apa yang
ingin diluruskan.
77
Gambar 3.11 Tampilan Frame Data Pelamar Edit Data
c) Tombol hapus
Tombol ini digunakan untuk menghapus data-data yang
telah dimasukkan kedalam tabel pelamar kerja. Jika tombol ini di
tekan maka data yang telah dimasukkan akan di hapus dengan
terlebih dahulu muncul tab konfirmasi sebelum menghapus data
tersebut. Hal ini diperlukan untuk menghindari terjadinya kesalahan
hapus sehingga ketika ingin mengurungkan untuk menghapus data
tersebut data masih bisa diselamatkan.
78
Gambar 3.12 Tampilan Frame Data Pelamar Hapus Data
2) Tab Jenis Tes
Tab jenis tes ini merupakan tab untuk melakukan inisialisasi
awal seperti membuat variabel fuzzy (tampilan sebelah kiri),
himpunan fuzzy, fungsi keanggotaan, dan domain (tampilan sebelah
kanan). Pada tab ini terdapat beberapa tombol, yaitu:
79
Gambar 3.13 Tampilan dari Tab Jenis Tes
a) Tombol Tambah Jenis Tes (Variabel Fuzzy)
Tombol ini digunakan untuk menambah jenis tes (variabel
fuzzy) pada sistem. Jika tombol ini di tekan maka akan tampil
menu untuk menambah jenis tes. Tampilan untuk menambah
jenis tes terlihat seperti pada gambar 3.14.
80
Gambar 3.14 Tampilan Frame Tambah Jenis Tes
b) Tombol Edit Jenis Tes
Tombol ini digunakan untuk mengubah jenis tes (variabel
fuzzy) pada sistem. Jika tombol ini di tekan maka akan tampil
menu untuk mengubah jenis tes.
81
Gambar 3.15 Tampilan Frame Edit Jenis Tes
c) Tombol Hapus Jenis Tes
Tombol ini digunakan untuk menghapus jenis tes (variabel
fuzzy) pada sistem. Jika tombol ini di tekan maka akan tampil
menu untuk menghapus jenis tes. Tampilan untuk menghapus
jenis tes terlihat seperti pada gambar 3.16.
82
Gambar 3.16 Tampilan Frame Hapus Jenis Tes
d) Tombol Tambah Kriteria (Himpunan Fuzzy)
Tombol
ini
digunakan
untuk
menambah
kriteria
(himpunan fuzzy) pada sistem. Jika tombol ini di tekan maka
akan tampil menu untuk menambah kriteria (himpunan fuzzy),
kurva
(fungsi
keanggotaan),
serta
batas-batas
(domain).
Tampilan untuk batas-batas menyesuaikan, tergantung fungsi
keanggotaan yang di pilih. Tampilan untuk menambah kriteria
terlihat seperti pada gambar 3.17.
83
Gambar 3.17 Tampilan Frame Tambah Kriteria.
e) Tombol Edit Kriteria
Tombol ini digunakan untuk mengubah kriteria (himpunan
fuzzy) pada sistem. Jika tombol ini di tekan maka akan tampil
menu untuk mengubah kriteria (himpunan fuzzy), kurva (fungsi
keanggotaan) serta batas-batas (domain). Tampilan untuk batasbatas menyesuaikan, tergantung fungsi keanggotaan yang di
pilih. Tampilan untuk mengubah kriteria terlihat seperti pada
gambar 3.18.
84
Gambar 3.18 Tampilan Frame Edit Kriteria
f)
Tombol Hapus Kriteria
Tombol ini digunakan untuk menghapus kriteria (himpunan
fuzzy) pada sistem. Jika tombol ini di tekan maka akan tampil
menu untuk menghapus kriteria (himpunan fuzzy), kurva (fungsi
keanggotaan) serta batas-batas (domain). Tampilan untuk
menghapus kriteria terlihat seperti pada gambar 3.19.
85
Gambar 3.19 Tampilan Frame Hapus Kriteria
3) Tab Input Nilai
Tab input nilai ini merupakan tab untuk memasukkan nilainilai dari berbagai macam tes yang telah di lalui oleh para pelamar
kerja, misalnya: tes kompetensi, tes wawancara, beberapa macam
psikotes, test TOEFL, dan lain-lain. Pada tab ini terdapat dua tombol,
yaitu tombol Ok untuk menyimpan nilai yang kemudian akan di
taruh pada tabel hasil dan tombol batal untuk membatalkan proses
penyimpanan nilai. Apabila tombol Ok di tekan maka akan muncul
frame dialog untuk mengkonfirmasi jadi atau tidaknya data di
simpan pada tabel hasil. Untuk lebih jelasnya dapat di lihat pada
86
gambar 3.20.
Gambar 3.20 Tampilan Frame Ok Pada Tab Input Nilai
4) Tab Hasil Nilai
Tab hasil nilai ini merupakan tab untuk menampilkan nilainilai dari berbagai macam tes yang telah di lalui oleh para pelamar
kerja, misalnya: tes kompetensi, tes wawancara, beberapa macam
psikotes, test TOEFL, dan lain-lain. Tampilan untuk tab hasil nilai
terlihat seperti pada gambar 3.21.
87
Dalam tab ini terdapat tombol seleksi
Gambar 3.21 Tampilan Frame Hasil Nilai
Pada frame ini terdapat tombol seleksi yang apabila tombol ini
di tekan akan tampil menu seleksi pelamar yang didalamnya terdapat
proses query serta penghitungan firestrength yang akhirnya akan
memunculkan seberapa besar para pelamar kerja dapat di terima
(memiliki kriteria) untuk mengisi posisi yang ditawarkan.
88
Gambar 3.22 Tampilan Frame Seleksi Pelamar
K. Verifikasi
Proses verifikasi perangkat lunak dilakukan berdasarkan pemasangan
perangkat lunak pendukung seperti database server serta MySQL editor
kedalam komputer agar database yang ada pada perangkat lunak utama dapat
di akses di komputer. Apabila perangkat lunak utama masih belum bisa di
akses, maka dilakukan pengecekkan baik terhadap perangkat lunak
pendukung maupun terhadap configuration setting yang ada pada perangkat
lunak utamanya.
L. Validasi
Pengujian validasi perangkat lunak ini dilakukan dengan cara
melakukan proses pengamatan atau pemantauan terhadap kinerja orang-orang
yang di anggap lulus oleh sistem serta menguji kinerja orang-orang tersebut
dengan kasus yang di buat oleh pihak HRD sehingga pihak HRD dapat
memastikan apakah orang-orang itu benar-benar memiliki kemampuan sesuai
89
dengan apa yang telah di analisa oleh sistem. Waktu pengujian bisa dilakukan
dengan memanfaatkan masa kontrak karyawan atau sekurang-kurangnya tiga
bulan masa kerja. Dari proses pengujian serta pengamatan tersebut
diharapkan akan terjadi kesesuaian antara hasil penghitungan sistem
perangkat lunak dengan keadaan sebenarnya sehingga pada akhirnya
perangkat lunak ini dapat dipertanggung jawabkan serta dapat dijadikan
rujukan dalam setiap proses penseleksian pegawai baru di kemudian hari.
90
BAB IV
IMPLEMENTASI DAN PENGUJIAN
A. Perangkat Lunak
5. Implementasi Perangkat Lunak
Pada percobaan ini akan di uji jalannya aplikasi sesuai dengan urutan
proses yang telah di rancang dan hasil yang diharapkan adalah data para
pelamar kerja yang terokemendasi berdasarkan kriteria-kriteria yang telah
ditetapkan oleh pengguna. Pada pengujian kali ini data yang di ambil adalah
data para pelamar kerja yang ingin mengisi posisi sebagai electrician dan
datanya dapat di lihat pada gambar 4.1 berikut.
Gambar 4.1 Tabel Data Pelamar
91
Kemudian pengguna menentukan variabel fuzzy yang diperoleh dari
kriteria-kriteria yang akan di ambil untuk menseleksi para pelamar kerja.
Kriteria-kriteria tersebut berupa persyaratan serta jenis-jenis tes yang harus di
lalui dalam sebuah proses penerimaan karyawan baru untuk posisi
electrician yang terdiri dari:
a. Tes Kompetensi
Dari kriteria tes kompetensi ini kemudin di buat kategori “baik”
untuk dijadikan sebagai himpunan fuzzy, fungsi keanggotaan SPertumbuhan di buat untuk memenuhi kategori tes kompetensi serta di
buat nilai domainnya dengan nilai terendah 60 dan tertinggi 100.
Gambar 4.2 Variabel, Himpunan, Fungsi Keanggotaan, Serta Nilai
Domain untuk Kriteria Tes Kompetensi
92
b. Tes Wawancara
Himpunan fuzzy dari variabel fuzzy tes wawancara adalah
“baik”, fungsi keanggotaan yang di pakai adalah fungsi keanggotaan SPertumbuhan dan nilai domai untuk tes wawancara adalah 60 sampai
dengan 100.
Gambar 4.3 Variabel, Himpunan, Fungsi Keanggotaan, Serta Nilai
Domain untuk Kriteria Tes Wawancara
c. Tes Kreaplin
Himpunan fuzzy untuk tes kreaplin adalah “cukup”, “baik” dan
“topskor”.
Fungsi keanggotaan yang di
pakai adalah fungsi
keanggotaan bahu dan nilai domai untuk tes kreaplin dari tiap-tiap
kategori adalah cukup 5 – 8, baik 7 – 11, dan top skor 10 - 14.
93
Gambar 4.4 Variabel, Himpunan, Fungsi Keanggotaan, Serta Nilai
Domain untuk Kriteria Tes Kreaplin Cukup
Gambar 4.5 Variabel, Himpunan, Fungsi Keanggotaan, Serta Nilai
Domain untuk Kriteria Tes Kreaplin Baik
94
Gambar 4.6 Variabel, Himpunan, Fungsi Keanggotaan, Serta Nilai
Domain untuk Kriteria Tes Kreaplin Topskor
d. Magang
Himpunan fuzzy untuk magang adalah “baik”, fungsi
keanggotaan yang di pakai adalah fungsi keanggotaan S-Pertumbuhan
dan nilai domai untuk magang adalah 60 sampai dengan 100.
95
Gambar 4.7 Variabel, Himpunan, Fungsi Keanggotaan, Serta Nilai
Domain untuk Kriteria Magang
Setelah variabel, himpunan, fungsi keanggotaan serta domain dari
logika fuzzy di buat langkah selanjutnya adalah memasukkan semuan nilai
hasil ujian yang telah distandardkan sebelumnya ke dalam tabel nilai tes
dan hasilnya akan terlihat seperti gambar 4.8 berikut ini.
96
Gambar 4.8 Tabel Input Nilai (Data 34 Nilai Teratas)
Setelah semua nilai hasil tes dimasukkan, langkah selanjutnya
adalah menyimpan nilai tersebut dan hasilnya dapat dilihat pada tabel hasil.
Jika terjadi kekeliruan dalam memasukkan data, pengguna dapat langsung
mengubahnya dengan cara mengklik data pada kolom tabel yang datanya
keliru kemudian mengubahnya dengan cara memasukkan langsung data
baru pada kolom tabel tersebut sebelum tab input ini di tutup. Karena tabel
nilai ini merupakan tabel temporary maka data-data yang dimasukkan akan
hilang dengan sendirinya ketika pengguna menekan tombol OK atau
pengguna menutup jendela tab input nilai. Jadi, pastikan pengguna
memasukkan data dengan benar sebelum menekan tombol Ok atau sebelum
97
menutup tab input nilai.
Gambar 4.9 Tabel Hasil (Data 30 Nilai Teratas)
Dari tabel hasil ini pengguna dapat memulai proses penseleksian
pelamar kerja yang akan direkomendasikan untuk mengisi posisi
electrician dengan menekan tombol seleksi yang terletak pada pojok kiri
bawah dari layout tabel hasil dengan menggunakan mouse. Ketika tombol
seleksi di tekan maka akan muncul frame seleksi.
Di dalam frame ini pada kolom sisi kanan atas memuat semua
variabel serta himpunan fuzzy yang telah di buat sebelumnya sedangkan
pada kolom sisi kiri atas digunakan untuk menyaring kategori yang telah
kita tentukan sebagai proses peng-query-an. Selain itu pada frame ini juga
terdapat kolom untuk variabel nonfuzzy yang datanya di ambil dari tabel
98
data pelamar. Variabel nonfuzzy ini berfungsi untuk mengakomodasi
kriteria yang cukup hanya di lihat dengan kategori ya dan tidak.
Misalkan standard yang ditetapkan oleh pengguna untuk posisi
electrician adalah tes kompetensi baik, tes wawancara baik, tes kreaplin
baik, magang baik, serta pengalaman kerja tidak diutamakan, maka
pengguna dapat menyaringnya dengan menekan tombol panah warna hijau
dengan sebelumnya menekan kursor mouse pada kolom variabel serta
himpunan fuzzy yang diinginkan, dilanjutkan dengan penyaringan kategori
pada variabel nonfuzzy. Setelah proses peng-query-an dilakukan hal
berikutnya yang harus dilakukan adalah menekan tombol cari pelamar
sesuai dengan filter dan hasil dari pencarian tersebut dapat di lihat pada
tabel yang terdapat di kolom bawah dari frame seleksi.
99
Gambar 4.10 Frame Seleksi Pelamar
Tabel pada frame seleksi merupakan tabel temporary maka data itu
akan hilang dengan sendirinya ketika pengguna menekan tombol OK atau
menutup jendela tab seleksi pelamar atau membuat filter seleksi baru. Jadi,
pastikan pengguna telah mendokumentasikan data tersebut atau jika sudah
terlanjur maka ulangi tahap penseleksiannya. Untuk memudahkan
pemahaman urutan kerja dari perangkat lunak ini, dapat dilihat pada
diagram alir pada gambar 4.11.
100
............
Mulai
Input Nilai
Data pelamar
Masukkan
dan
simpan nilai-nilai tes
Masukkan Data Pelamar
Hasil Nilai
Tambah/edit/
hapus data?
Ya
Seleksi
Tidak
Jenis tes
Tentukan jenis dan kriteria
yang ingin di seleksi
(proses peng-query-an)
Masukkan jenis dan kriteria tes
Eksekusi query
yang telah di buat
Tambah/edit/hap
us jenis dan
kriteria tes?
Ya
Tampilan
Hasil seleksi
Tidak
............
Selesai
Gambar 4.11 Diagram Alir Cara Kerja Sistem
6. Analisa Penghitungan Fungsi Keanggotaan Fuzzy
Dari penjelasan pembahasan sebelumnya, nilai yang tersaji pada tabel
seleksi pelamar di dapat dari proses penghitungan data yang bersumber dari
tabel hasil. Nilai-nilai tersebut merupakan hasil penghitungan dari tiap-tiap
variabel, himpunan, serta fungsi keanggotaan yang telah ditentukan
101
sebelumnya. Adapun penjelasan lebih lengkapnya dapat di lihat pada
pembahasan berikut ini.
a. Tes Kompetensi
Pada kolom tes kompetensi, nilai himpunan “lulus” merupakan
nilai yang di dapat dari penghitungan logika fuzzy dengan menggunakan
fungsi keanggotaan S-Pertumbuhan. Sebagai contoh penghitungan dapat
di ambil beberapa sampel data dari para pelamar kerja berikut ini.
1) Umar Hadi Waluyo
Nilai tes kompetensi = 77, batas bawah (α) = 60, batas atas (γ) = 100.
Maka nilai fungsi keanggotaan untuk himpunan “lulus” pada variabel
tes kompetensi bagi Umar Hadi Waluyo adalah:
µLulus[77] = 2((x – α)/(γ – α))2
= 2((77 – 60)/(100 – 60))2
= 2((17)/(40))2
= 2(0,425)2
= 2(0,180625)
= 0,36125
2) Arif Setiyawan
Nilai tes kompetensi = 70, batas bawah (α) = 60, batas atas (γ) = 100.
Maka nilai fungsi keanggotaan untuk himpunan “lulus” pada variabel
tes kompetensi bagi Arif Setiyawan adalah:
µLulus[70] = 2((x – α)/(γ – α))2
102
= 2((70 – 60)/(100 – 60))2
= 2((10)/(40))2
= 2(0,25)2
= 2(0,0625)
= 0,125
3) Agus Joko Umbaran
Nilai tes kompetensi = 58, batas bawah (α) = 60, batas atas (γ) = 100.
Maka nilai fungsi keanggotaan untuk himpunan “lulus” pada variabel
tes kompetensi bagi Agus Joko Umbaran adalah 0 karena nilai yang
dimiliki oleh Agus Joko Umbaran ≤ 60. Sesuai dengan rumus fungsi
keanggotaan S-Pertumbuhan bahwa apabila nilai x ≤ batas bawah (α)
maka nilai keanggotaannya = 0.
Untuk penghitungan nilai fungsi keanggotaan para pelamar kerja
lainnya, digunakan rumus yang sama serta hasilnya dapat di lihat pada
kolom “lulus” pada tabel temporary pada frame seleksi pelamar.
b. Tes Wawancara
Pada kolom tes wawancara, nilai himpunan “lulus” merupakan
nilai yang di dapat dari penghitungan logika fuzzy dengan menggunakan
fungsi keanggotaan S-Pertumbuhan. Sebagai contoh penghitungan dapat
di ambil beberapa sampel data dari para pelamar kerja berikut ini.
1) Umar Hadi Waluyo
Nilai tes wawancara = 66, batas bawah (α) = 60, batas atas (γ) = 100.
103
Maka nilai fungsi keanggotaan untuk himpunan “lulus” pada variabel
tes wawancara bagi Umar Hadi Waluyo adalah:
µLulus[66] = 2((x – α)/(γ – α))2
= 2((66 – 60)/(100 – 60))2
= 2((6)/(40))2
= 2(0,15)2
= 2(0,0225)
= 0,045
2) Arif Setiyawan
Nilai tes wawancara = 78, batas bawah (α) = 60, batas atas (γ) = 100.
Maka nilai fungsi keanggotaan untuk himpunan “lulus” pada variabel
tes wawancara bagi Arif Setiyawan adalah:
µLulus[78] = 2((x – α)/(γ – α))2
= 2((78 – 60)/(100 – 60))2
= 2((18)/(40))2
= 2(0,45)2
= 2(0,2025)
= 0,405
3) Agus Joko Umbaran
Nilai tes wawancara = 65, batas bawah (α) = 60, batas atas (γ) = 100.
Maka nilai fungsi keanggotaan untuk himpunan “lulus” pada variabel
tes wawancara bagi Agus Joko Umbaran adalah:
104
µLulus[65] = 2((x – α)/(γ – α))2
= 2((65 – 60)/(100 – 60))2
= 2((5)/(40))2
= 2(0,125)2
= 2(0,015625)
= 0,03125
Untuk penghitungan nilai fungsi keanggotaan para pelamar kerja
lainnya, menggunakan rumus yang sama serta hasilnya dapat di lihat
pada kolom “lulus_1” pada tabel temporary pada frame seleksi pelamar.
c. Kreaplin
Pada kolom kreaplin, nilai himpunan “baik” merupakan nilai yang
di dapat dari penghitungan logika fuzzy dengan menggunakan fungsi
keanggotaan bahu. Sebagai contoh penghitungan dapat di ambil beberapa
sampel data dari para pelamar kerja berikut ini.
1) Umar Hadi Waluyo
Nilai kreaplin = 7, kurva bahu merupakan perpaduan dari dua buah
kurva linear serta sebuah kurva segitiga, karena himpunan “baik”
terletak pada kurva segitiga maka domain (batas) yang digunakan
adalah domain kurva segitiga dimana batas 1 = 7, batas 2 = 9, batas 3
= 11. Maka nilai fungsi keanggotaan untuk himpunan “baik” pada
variabel tes kreaplin bagi Umar Hadi Waluyo adalah 0 karena nilai
yang dimiliki oleh Umar Hadi Waluyo ≤ 7. Sesuai dengan rumus
105
fungsi keanggotaan segitiga bahwa apabila nilai x ≤ batas 1 (a) maka
nilai keanggotaannya = 0.
2) Arif Setiyawan
Nilai kreaplin = 6, kurva bahu merupakan perpaduan dari dua buah
kurva linear serta sebuah kurva segitiga, karena himpunan “baik”
terletak pada kurva segitiga maka domain (batas) yang digunakan
adalah domain kurva segitiga dimana batas 1 = 7, batas 2 = 9, batas 3
= 11. Maka nilai fungsi keanggotaan untuk himpunan “baik” pada
variabel tes kompetensi bagi Arif Setiyawan adalah 0 karena nilai
yang dimiliki oleh Arif Setiyawan ≤ 7. Sesuai dengan rumus fungsi
keanggotaan segitiga bahwa apabila nilai x ≤ batas 1 (a) maka nilai
keanggotaannya = 0.
3) Agus Joko Umbaran
Nilai kreaplin = 5, kurva bahu merupakan perpaduan dari dua buah
kurva linear serta sebuah kurva segitiga, karena himpunan “baik”
terletak pada kurva segitiga maka domain (batas) yang digunakan
adalah domain kurva segitiga dimana batas 1 (a) = 7, batas 2 (b) = 9,
batas 3 (c) = 11. Maka nilai fungsi keanggotaan untuk himpunan
“baik” pada variabel kreaplin bagi Agus Joko Umbaran adalah 0
karena nilai yang dimiliki oleh Agus Joko Umbaran ≤ 7. Sesuai
dengan rumus fungsi keanggotaan segitiga bahwa apabila nilai x ≤
batas 1 (a) maka nilai keanggotaannya = 0.
106
Untuk penghitungan nilai fungsi keanggotaan para pelamar kerja
lainnya, menggunakan rumus yang sama serta hasilnya dapat dilihat
pada kolom “baik” pada tabel temporary pada frame seleksi pelamar.
Adapun untuk mengetahui proses penghitungan dengan nilai
yang memenuhi persyaratan himpunan “baik” diberikan contoh sebagai
berikut.
1) Rosit Evendi
Nilai kreaplin = 8, batas 1 = 7, batas 2 = 9, batas 3 = 11. Maka nilai
fungsi keanggotaan untuk himpunan “baik” pada variabel kreaplin
bagi Rosit Evendi adalah:
µbaik[8] = (x – a)/(b – a)
= (8 – 7)/(9 – 7)
= 0,5
2) Abdul Manan
Nilai kreaplin = 9, batas 1 = 7, batas 2 = 9, batas 3 = 11. Maka nilai
fungsi keanggotaan untuk himpunan “baik” pada variabel kreaplin
bagi Abdul Manan adalah 1 karena nilai yang dimiliki oleh Abdul
Manan = 9. Sesuai dengan rumus fungsi keanggotaan segitiga bahwa
apabila nilai x = batas 2 (b) maka nilai keanggotaannya = 1.
3) Candra Agung
Nilai kreaplin = 10, batas 1 = 7, batas 2 = 9, batas 3 = 11. Maka nilai
fungsi keanggotaan untuk himpunan “baik” pada variabel kreaplin
107
bagi Candra Agung adalah:
µbaik[10] = (c – x)/(c – b)
= (11 – 10)/(11 – 9)
= 0,5
d. Magang
Pada kolom magang, nilai himpunan “baik” merupakan nilai yang
di dapat dari penghitungan logika fuzzy dengan menggunakan fungsi
keanggotaan S-Pertumbuhan. Sebagai contoh penghitungan dapat di
ambil beberapa sampel data dari para pelamar kerja berikut ini.
1) Umar Hadi Waluyo
Nilai magang = 70, batas bawah (α) = 60, batas atas (γ) = 100. Maka
nilai fungsi keanggotaan untuk himpunan “baik” pada variabel
magang bagi Umar Hadi Waluyo adalah:
µLulus[77] = 2((x – α)/(γ – α))2
= 2((70 – 60)/(100 – 60))2
= 2((10)/(40))2
= 2(0,25)2
= 2(0,0625)
= 0,125
2) Arif Setiyawan
Nilai magang = 70, batas bawah (α) = 60, batas atas (γ) = 100. Maka
nilai fungsi keanggotaan untuk himpunan “baik” pada variabel
108
magang bagi Arif Setiyawan adalah:
µLulus[70] = 2((x – α)/(γ – α))2
= 2((70 – 60)/(100 – 60))2
= 2((10)/(40))2
= 2(0,25)2
= 2(0,0625)
= 0,125
3) Agus Joko Umbaran
Nilai magang = 60, batas bawah (α) = 60, batas atas (γ) = 100. Maka
nilai fungsi keanggotaan untuk himpunan “baik” pada variabel
magang bagi Agus Joko Umbaran adalah 0 karena nilai yang dimiliki
oleh Agus Joko Umbaran ≤ 60. Sesuai dengan rumus fungsi
keanggotaan S-Pertumbuhan bahwa apabila nilai x ≤ batas bawah (α)
maka nilai keanggotaannya = 0.
Untuk penghitungan nilai fungsi keanggotaan para pelamar kerja
lainnya, digunakan rumus yang sama serta hasilnya dapat di lihat pada
kolom “baik_2” pada tabel temporary pada frame seleksi pelamar.
7. Analisa Penghitungan Firestrength
Dari frame seleksi pelamar di atas dapat dilihat statement “where”
pada proses peng-query-an tersebut adalah:
Where tes kompetensi = lulus and tes wawancara = lulus and tes
kreaplin = baik and magang = baik and pengalaman kerja = all.
109
Sehingga penghitungan firestrength-nya adalah:
Firestrength = Min(µtes kompetensi lulus, µtes wawancara lulus,
µtes kreaplin baik, µmagang baik)
Hasil dari query di atas kemudian di saring kembali oleh masukkan
nonfuzzy yang telah di buat yaitu pengalaman kerja = all. Sebagai contoh
penghitungan di ambil dari data beberapa pelamar kerja sebagai berikut.
1) Saleh Al-farabi
Dari tabel temporary pada frame seleksi pelamar dapat di lihat
bahwa Saleh Al-farabi memiliki data sebagai berikut:
• Kompetensi = 0,98875
• Wawancara = 0,93875
• Kreaplin = 1
• Magang = 0,5
Sehingga penghitungan firestrength-nya adalah:
Firesrength = Min(0,98875,0,93875,1, 0,5) = 0,5
2) Suryana
Dari tabel temporary pada frame seleksi pelamar dapat di lihat
bahwa Suryana memiliki data sebagai berikut:
• Kompetensi = 0,93875
• Wawancara = 0,93875
• Kreaplin = 1
• Magang = 0,5
110
Sehingga penghitungan firestrength-nya adalah:
Firesrength = Min(0,93875,0,93875,1, 0,5) = 0,5
3) Dirza Suhendra
Dari tabel temporary pada frame seleksi pelamar dapat di lihat
bahwa Dirza Suhendra memiliki data sebagai berikut:
• Kompetensi = 0,84875
• Wawancara = 0,68
• Kreaplin = 0,5
• Magang = 0,5
Sehingga penghitungan firestrength-nya adalah:
Firesrength = Min(0,84875, 0,68,0,5,0,5) = 0,5
Untuk penghitungan nilai fungsi keanggotaan para pelamar kerja
lainnya, digunakan rumus yang sama serta hasilnya dapat dilihat pada
kolom “firestrength” pada tabel temporary pada frame seleksi pelamar.
Pada kolom firestrength dalam tabel seleksi pelamar, hasil
penghitungannya kemudian diurutkan dari nilai firestrength tertinggi
hingga nilai firestrength terendah. Hal ini dimaksudkan agar pengguna
dapat dengan mudah menentukan para pelamar kerja yang dinyatakan di
terima untuk posisi electrician dengan cara mengambil data para pelamar
kerja dari nilai firestrength tertinggi sebanyak yang dibutuhkan.
Apabila perusahaan hanya membutuhkan tiga orang untuk
ditempatkan pada posisi electrician maka nama-nama yang masuk
111
nominasi adalah Saleh Al-farabi, Suryana, dan Dirza Suhendra.
8. Perbandingan Hasil Penghitungan Sistem Lama Dengan Sistem Baru
Membandingkan antara sistem yang di buat saat ini dengan sistem
yang sudah ada pada perusahaan atau instansi menjadi suatu keniscayaan
untuk mengetahui apakah sistem yang baru ini nantinya dapat
menggantikan peran sistem sebelumnya.
a. Hasil Pembobotan Nilai
Pembobotan yang ditetapkan oleh pihak HRD P.T. BAT
Indonesia Tbk. adalah untuk nilai tes kompetensi x 0,3, tes wawancara
x 0,3, kreaplin x 0,2, dan magang x 0,2. Hasil dari pembobotan terhadap
nilai tes para pelamar kerja secara lengkap dapat di lihat pada tabel 4.1
berikut.
112
Tabel. 4.1 Tabel 25 Teratas Hasil Pembobotan Nilai
No.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
No
Id
36
17
30
63
64
28
16
12
13
56
11
43
26
27
29
50
44
66
65
34
10
18
70
59
53
Nama
Esti Wahyuningsih
Saiful Jauhari
Miftahul Jannah
Saleh Al-Farabi
Suryana
Ferdinand Anton
Herilmiwati
Abdul Manan
Candra Agung
Agung Setiadi
Rosit Evendi
Dirza Suhendra
Hendra Ermi Devitra
Joko Triyanto
Maulani
Ferdiyansyah
Said Karim Johar
Haries Sutamin
Sunaryo
Denny Yuliansyah
Dedi Subianto
Akbar Nugraha
Jarot Adi Sutarto
Beni Wahyudi
Khairul Fuadi
Tes
Kompetensi
1
0,9
0,99
0,97
0,93
0,8
0,91
1
0,96
0,83
0,98
0,89
0,88
0,81
0,79
0,84
0,92
0,82
0,9
0,8
0,82
0,89
0,91
0,8
0,92
Bobot
Hasil
0,3
0,3
0,3
0,3
0,3
0,3
0,3
0,3
0,3
0,3
0,3
0,3
0,3
0,3
0,3
0,3
0,3
0,3
0,3
0,3
0,3
0,3
0,3
0,3
0,3
0,3
0,27
0,297
0,291
0,279
0,24
0,273
0,3
0,288
0,249
0,294
0,267
0,264
0,243
0,237
0,252
0,276
0,246
0,27
0,24
0,246
0,267
0,273
0,24
0,276
Tes
Wawancara
1
0,9
0,99
0,93
0,93
1
0,8
0,8
0,78
0,97
0,77
0,84
0,96
0,99
0,88
0,82
0,78
0,8
0,76
0,85
0,75
0,77
0,7
0,8
0,59
Bobot
Hasil
Kreaplin
Bobot
Hasil
Magang
Bobot
Hasil
Hasil
0,3
0,3
0,3
0,3
0,3
0,3
0,3
0,3
0,3
0,3
0,3
0,3
0,3
0,3
0,3
0,3
0,3
0,3
0,3
0,3
0,3
0,3
0,3
0,3
0,3
0,3
0,27
0,297
0,279
0,279
0,3
0,24
0,24
0,234
0,291
0,231
0,252
0,288
0,297
0,264
0,246
0,234
0,24
0,228
0,255
0,225
0,231
0,21
0,24
0,177
0,79
0,86
0,57
0,64
0,64
0,71
0,79
0,64
0,71
0,5
0,57
0,57
0,5
0,5
0,57
0,64
0,57
0,64
0,57
0,57
0,57
0,5
0,57
0,57
0,79
0,2
0,2
0,2
0,2
0,2
0,2
0,2
0,2
0,2
0,2
0,2
0,2
0,2
0,2
0,2
0,2
0,2
0,2
0,2
0,2
0,2
0,2
0,2
0,2
0,2
0,158
0,172
0,114
0,128
0,128
0,142
0,158
0,128
0,142
0,1
0,114
0,114
0,1
0,1
0,114
0,128
0,114
0,128
0,114
0,114
0,114
0,1
0,114
0,114
0,158
0,8
0,8
0,8
0,8
0,8
0,8
0,8
0,8
0,8
0,8
0,8
0,8
0,7
0,7
0,8
0,7
0,7
0,7
0,7
0,7
0,8
0,7
0,7
0,7
0,6
0,2
0,2
0,2
0,2
0,2
0,2
0,2
0,2
0,2
0,2
0,2
0,2
0,2
0,2
0,2
0,2
0,2
0,2
0,2
0,2
0,2
0,2
0,2
0,2
0,2
0,16
0,16
0,16
0,16
0,16
0,16
0,16
0,16
0,16
0,16
0,16
0,16
0,14
0,14
0,16
0,14
0,14
0,14
0,14
0,14
0,16
0,14
0,14
0,14
0,12
0,918
0,872
0,868
0,858
0,846
0,842
0,831
0,828
0,824
0,8
0,799
0,793
0,792
0,78
0,775
0,766
0,764
0,754
0,752
0,749
0,745
0,738
0,737
0,734
0,731
113
b. Perbandingan Hasil Penghitungan Pembobotan Dengan Firestrength
Dari hasil penghitungan dengan cara pembobotan terlihat bahwa
Esti Wahyuningsih menempati posisi paling puncak, dengan kata lain Esti
Wahyuningsih memiliki nilai bobot paling tinggi, sedangkan dari hasil
penghitungan firestrength Saleh Al-farabi menempati posisi paling puncak
dan ini juga berarti bahwa Saleh Al-farabi memiliki nilai derajat
keanggotaan paling tinggi dari proses peng-query-an yang telah dilakukan.
Pada proses penghitungan firestength nama Esti Wahyuningsih
tidak termasuk, hal ini dikarenakan Esti Wahyuningsih dikategorikan oleh
sistem (logika fuzzy) sebagai orang yang tidak termasuk dalam kategori
yang ditetapkan oleh pengguna, yaitu: tes kompetensi lulus, tes wawancara
lulus, tes kreaplin baik, magang baik, dan pengalaman kerja tidak
diutamakan.
Hasil penghitungan dari fungsi keanggotaan pada himpunan fuzzy
kreaplin baik untuk Esti Wahyuningsih adalah 0, karena nilai yang dimiliki
oleh Esti Wahyuningsih ≥ 11. Sesuai dengan rumus fungsi keanggotaan
segitiga bahwa apabila nilai x ≥ batas 3 (11) maka nilai keanggotaannya = 0.
Akan tetapi apabila kategori dalam proses peng-query-an di ubah
menjadi tes kompetensi lulus, tes wawancara lulus, tes kreaplin topskor,
magang baik, dan pengalaman kerja tidak diutamakan maka Esti
Wahyuningsih termasuk dalam kategori tersebut, karena pada himpunan
fuzzy kreaplin topskor nilai yang dimiliki oleh Esti Wahyuningsih menjadi
114
anggota himpunan fuzzy tersebut dengan perincian perhitungannya adalah:
µLulus[11] = (x – b)/(b – a)
= (11 – 10)/(14 – 10)
= 1/4
= 0,25
Hal yang sama juga terjadi pada Saiful Jauhari yang menempati
posisi kedua atau satu tingkat di bawah Esti Wahyuningsih dalam
penghitungan menggunakan metode pembobotan. Artinya, seberapa pun
tinggi atau rendah nilai hasil tesnya akan menjadi tidak terseleksi oleh
sistem ketika nilai tersebut tidak termasuk dalam kategori yang ditentukan.
Gambar 4.18 Hasil Seleksi Dengan Mengubah Kategori Kreaplin Menjadi
Topskor.
115
BAB V
KESIMPULAN DAN DISKUSI
C. Kesimpulan
Dari hasil pegujian dan implementasi alat, maka dapat disimpulkan
bahwa peneltian ini telah berhasil dalam merancang dan membuat sebuah alat
yang dapat digunakan oleh perusahaan/institusi khususnya bagi Human and
Resource Department (HRD) dalam merekomendasikan siapa saja para
pelamar kerja yang dinyatakan layak untuk mengisi posisi yang tersedia. Di
antara bukti keberhasilan ini adalah sebagai berikut:
1. Pada perangkat lunak ini logika fuzzy berhasil dimasukkan kedalam proses
peng-query-an dalam sebuah database. Hal ini dibuktikan dari
keberhasilan perangkat lunak ini dalam mengeksekusi setiap proses pengquery-an yang diberikan oleh pengguna ke dalam sistem.
2. Perangkat lunak ini dapat merekomendasikan siapa saja para pelamar kerja
yang dinyatakan layak untuk mengisi posisi tertentu berdasarkan kriteria
yang telah di buat sebelumnya.
D.
Diskusi
Selama dan setelah penelitian ini terlaksana, sistem masih memiliki
kekurangan-kekurangan sebagai berikut:
1. Perangkat lunak ini hanya memberikan nilai derajat perekomendasian,
keputusan yang sebenarnya tergantung pada pengguna.
116
2. Untuk pengambilan keputusan yang lebih baik lagi dimungkinkan untuk
menggunakan metode kombinasi (hybrid) terhadap logika fuzzy,
contohnya adalah menggabungkan logika fuzzy dengan jaringan syaraf
tiruan.
117
DAFTAR PUSTAKA
Buku Referensi
Badriyah, Tessy. 2003. Oracle Academic Initiative Oracle9i Introduction to SQL.
Surabaya: Politeknik Elektronika Negeri Surabaya.
Galindo, José, Urrutia, Angélica and Piattini, Mario. 2006. Fuzzy Databases:
Modeling, Design and Implementation. Harshey: Idea Group Publishing
Kusumadewi, Sri dan Purnomo, Hari. 2004. Aplikasi Logika Fuzzy Untuk
Pendukung Keputusan. Yogyakarta: Graha Ilmu.
Timothy, J. Ross. 2004. Fuzzy Logic With Engineering Applications. Chichester:
John Wiley & Sons.
Artikel dan Jurnal
http://database.about.com.
http://fuzzy.sonalysts.com/How Fuzzy Query Works.html
Malaysian Journal of Computer Science, Vol. 10 No. 1, June 1997, pp. 42-46
118
LAMPIRAN
119
A. Listing Program Delphi
1. Halaman Depan
unit MainForm;
implementation
uses DataPelamarForm, DataJenisTesForm, NilaiForm,
HasilNilaiForm,
Rutinitas;
{$R *.dfm}
{$R winxp.res}
procedure TfrmMain.FormCreate(Sender: TObject);
begin
Self.WindowState := wsMaximized;
end;
procedure TfrmMain.actPelamarExecute(Sender: TObject);
begin
DataPelamar;
end;
procedure TfrmMain.actNilaiExecute(Sender: TObject);
begin
InputNilai;
end;
procedure TfrmMain.actJenisTesExecute(Sender: TObject);
begin
DataJenisTes;
end;
procedure TfrmMain.actHasilExecute(Sender: TObject);
begin
HasilNilai;
end;
end.
2. Form Data Pelamar
unit DataPelamarForm;
procedure DataPelamar;
implementation
uses DMForm, Rutinitas, TambahPelamarForm, DateUtils;
{$R *.dfm}
procedure DataPelamar;
var
120
aComponent: TComponent;
begin
aComponent := Application.FindComponent('frmDataPelamar');
if not Assigned(aComponent) then
frmDataPelamar := TfrmDataPelamar.Create(Application);
frmDataPelamar.Show;
end;
procedure TfrmDataPelamar.qryPelamarNewRecord(DataSet:
TDataSet);
function GetKode: string;
begin
with qryRutinitas do
try
SQL.Text := 'select max(idpelamar) from pelamar';
Open;
First;
Result := Format('%.5d',[Fields[0].AsInteger+1]);
finally
Free;
end;
end;
begin
qryPelamarkode.AsString := GetKode;
end;
procedure TfrmDataPelamar.qryPelamarAfterInsert(DataSet:
TDataSet);
begin
end;
procedure TfrmDataPelamar.qryPelamarCalcFields(DataSet:
TDataSet);
begin
if qryPelamartgllahir.IsNull then
qryPelamarUsia.AsVariant := null
else qryPelamarUsia.AsString :=
IntToStr(YearsBetween(qryPelamartgllahir.AsDateTime,Date)) + '
Th';
end;
121
procedure TfrmDataPelamar.qryPelamarBeforePost(DataSet:
TDataSet);
function IDPelamar: Integer;
begin
with qryRutinitas do
try
SQL.Text := 'select max(idpelamar) from pelamar';
Open;
First;
Result := Fields[0].AsInteger + 1;
finally
Free;
end;
end;
begin
if qryPelamaridpelamar.IsNull then
qryPelamaridpelamar.AsInteger := IDPelamar;
end;
procedure TfrmDataPelamar.FormCreate(Sender: TObject);
var
i: Integer;
begin
for i := 0 to qryPelamar.FieldCount -1 do
begin
if LowerCase(qryPelamar.Fields[i].FieldName) = 'nonfuzzy'
then
begin
qryPelamar.Fields[i].DisplayLabel := GetNonFuzzy;
Break;
end;
end;
inherited;
end;
procedure TfrmDataPelamar.qryPelamarAfterEdit(DataSet: TDataSet);
begin
TambahPelamar(DataSet)
end;
122
end.
3. Form Jenis Tes
unit DataJenisTesForm;
procedure DataJenisTes;
implementation
uses DMForm, TambahJenisTesForm, TambahKriteriaForm,
Rutinitas;
{$R *.dfm}
procedure DataJenisTes;
var
aComponent: TComponent;
begin
aComponent := Application.FindComponent('frmDataJenisTes');
if not Assigned(aComponent) then
frmDataJenisTes := TfrmDataJenisTes.Create(Application);
frmDataJenisTes.Show;
end;
procedure TfrmDataJenisTes.qryJenisTesAfterInsert(DataSet:
TDataSet);
begin
TambahJenisTes(DataSet);
end;
procedure TfrmDataJenisTes.qryJenisTesAfterOpen(DataSet:
TDataSet);
begin
qryKriteria.Close;
qryKriteria.Open;
end;
procedure TfrmDataJenisTes.qryKriteriaNewRecord(DataSet:
TDataSet);
begin
with DataSet do
begin
FieldByName('idjenistes').AsInteger :=
qryJenisTesidjenistes.AsInteger;
FieldByName('kurva').AsString := 'Linear Naik';
end;
end;
123
procedure TfrmDataJenisTes.qryKriteriaAfterInsert(DataSet:
TDataSet);
begin
TambahKriteria(DataSet);
end;
procedure TfrmDataJenisTes.actHapusKriteriaExecute(Sender:
TObject);
begin
if KonfirmasiHapus then
qryKriteria.Delete;
end;
procedure TfrmDataJenisTes.actTambahKriteriaExecute(Sender:
TObject);
begin
qryKriteria.Append;
end;
procedure TfrmDataJenisTes.actEditKriteriaExecute(Sender: TObject);
begin
qryKriteria.Edit;
end;
procedure TfrmDataJenisTes.qryKriteriaAfterPost(DataSet: TDataSet);
begin
qryJenisTes.Locate('idjenistes',qryKriteriaidjenistes.AsInteger,[]);
end;
procedure TfrmDataJenisTes.qryKriteriaBeforePost(DataSet:
TDataSet);
begin
with DataSet do
begin
if (FieldByName('kurva').AsString = 'Linear Naik') or
(FieldByName('kurva').AsString = 'Linear Turun') then
begin
FieldByName('c').AsVariant := null;
FieldByName('d').AsVariant := null;
end
else if (FieldByName('kurva').AsString = 'Kurva Segitiga') or
(FieldByName('kurva').AsString = 'Kurva S Pertumbuhan') or
124
(FieldByName('kurva').AsString = 'Kurva S Penyusutan') then
FieldByName('d').AsVariant := null;
end;
end;
procedure TfrmDataJenisTes.qryKriteriaaValidate(Sender: TField);
begin
if (qryKriteriakurva.AsString = 'S Pertumbuhan') or
(qryKriteriakurva.AsString = 'S Penyusutan') then
if not(qryKriteriac.IsNull) then
qryKriteriab.AsFloat := qryKriteriaa.AsFloat +
((qryKriteriac.AsFloat - qryKriteriaa.AsFloat) / 2);
end;
procedure TfrmDataJenisTes.qryKriteriacValidate(Sender: TField);
begin
if (qryKriteriakurva.AsString = 'S Pertumbuhan') or
(qryKriteriakurva.AsString = 'S Penyusutan') then
if not(qryKriteriaa.IsNull) then
qryKriteriab.AsFloat := qryKriteriaa.AsFloat +
((qryKriteriac.AsFloat - qryKriteriaa.AsFloat) / 2);
end;
end.
4. Form Tambah Jenis Tes
unit TambahJenisTesForm;
function TambahJenisTes(Dataset: TDataSet): Boolean;
implementation
uses DataJenisTesForm;
{$R *.dfm}
function TambahJenisTes(Dataset: TDataSet): Boolean;
begin
frmTambahJenisTes := TfrmTambahJenisTes.Create(Application);
with frmTambahJenisTes do
try
dsMaster.DataSet := Dataset;
Caption := 'Jenis Tes';
Result := ShowModal = mrOk;
finally
Free;
end;
125
end;
end.
5. Tambah Kriteria
unit TambahKriteriaForm;
function TambahKriteria(Dataset: TDataSet): Boolean;
implementation
uses DMForm, DataJenisTesForm, Rutinitas;
{$R *.dfm}
function TambahKriteria(Dataset: TDataSet): Boolean;
begin
frmTambahKriteria := TfrmTambahKriteria.Create(Application);
with frmTambahKriteria do
try
qryJenisTes.Open;
dsMaster.DataSet := Dataset;
cbxKurvaChange(cbxKurva);
Caption := 'Kriteria Penilaian';
Result := ShowModal = mrOk;
finally
Free;
end;
end;
procedure TfrmTambahKriteria.cbxKurvaChange(Sender: TObject);
var
vis: Boolean;
begin
vis := cbxKurva.ItemIndex in [0,1,2,3,4,5];
lblA.Visible := vis;
lblB.Visible := vis;
edtA.Visible := vis;
edtB.Visible := vis;
vis := cbxKurva.ItemIndex in [2,3,4,5];
lblC.Visible := vis;
edtC.Visible := vis;
vis := cbxKurva.ItemIndex = 3;
lblD.Visible := vis;
126
edtD.Visible := vis;
edtB.Enabled := cbxKurva.ItemIndex in [0,1,2,3];
end;
end.
6. Form Input Nilai
unit NilaiForm;
procedure InputNilai;
implementation
uses Rutinitas, DateUtils;
{$R *.dfm}
procedure InputNilai;
var
i: Integer;
str: TStrings;
begin
frmNilai := TfrmNilai.Create(Application);
with frmNilai do
try
Caption := 'Input Nilai';
str := TStringList.Create;
tblNilai.AddField('idpelamar',ftInteger);
tblNilai.AddField('tgllahir',ftDate);
tblNilai.AddField('kode',ftString,8);
tblNilai.AddField('nama',ftString,32);
tblNilai.AddField('alamat',ftString,64);
with qryRutinitas do
try
SQL.Text := 'select idjenistes,nama from jenistes';
SQL.Add('order by idjenistes');
Open;
First;
while not Eof do
begin
tblNilai.AddField(FieldByName('idjenistes').AsString,ftFloat);
str.Add(FieldByName('nama').AsString);
Next;
end;
127
tblNilai.Open;
Close;
SQL.Text := 'select * from pelamar order by kode';
Open;
First;
while not Eof do
begin
tblNilai.Append;
tblNilai.FieldByName('idpelamar').AsInteger :=
FieldByName('idpelamar').AsInteger;
tblNilai.FieldByName('tgllahir').AsDateTime :=
FieldByName('tgllahir').AsDateTime;
tblNilai.FieldByName('kode').AsString :=
FieldByName('kode').AsString;
tblNilai.FieldByName('nama').AsString :=
FieldByName('nama').AsString;
tblNilai.FieldByName('alamat').AsString :=
FieldByName('alamat').AsString;
tblNilai.Post;
Next;
end;
finally
Free;
end;
with grd1 do
for i := 0 to Columns.Count -1 do
begin
if (Columns[i].FieldName = 'idpelamar') or
(Columns[i].FieldName = 'tgllahir') then
Columns[i].Visible := False
else if Columns[i].FieldName = 'kode' then
begin
Columns[i].Title.Caption := 'Kode';
Columns[i].Width := 64;
Columns[i].ReadOnly := True;
end
else if Columns[i].FieldName = 'nama' then
begin
128
Columns[i].Title.Caption := 'Nama';
Columns[i].Width := 128;
Columns[i].ReadOnly := True;
end
else if Columns[i].FieldName = 'alamat' then
begin
Columns[i].Title.Caption := 'Alamat';
Columns[i].Width := 256;
Columns[i].ReadOnly := True;
end
else
begin
Columns[i].Title.Caption := str[i-5];
Columns[i].Title.Alignment := taRightJustify;
end;
end;
tblNilai.First;
ShowModal;
finally
str.Free;
Free;
end;
end;
{ TfrmNilai }
function TfrmNilai.Simpan: Boolean;
var
i: Integer;
idjenistes: Integer;
begin
Result := MessageDlg('Simpan data ?', mtConfirmation, [mbYes,
mbNo], 0) = mrYes;
if not Result then
Exit;
try
tblNilai.DisableControls;
with qryRutinitas do
try
SQL.Text := 'delete from nilai';
129
Execute;
Close;
SQL.Text := 'insert into nilai(';
SQL.Add('idpelamar,idjenistes,nilai)');
SQL.Add('values(');
SQL.Add(':idpelamar,:idjenistes,:nilai)');
tblNilai.First;
while not tblNilai.Eof do
begin
for i := 0 to tblNilai.FieldCount -1 do
begin
if (tblNilai.Fields[i].FieldName = 'idpelamar') or
(tblNilai.Fields[i].FieldName = 'tgllahir') or
(tblNilai.Fields[i].FieldName = 'kode') or
(tblNilai.Fields[i].FieldName = 'nama') or
(tblNilai.Fields[i].FieldName = 'alamat') then
Continue;
//if Copy(tblNilai.Fields[i].FieldName,1,1) = 'j' then
begin
idjenistes := StrToInt(tblNilai.Fields[i].FieldName);
Close;
ParamByName('idpelamar').AsInteger :=
tblNilai.FieldByName('idpelamar').AsInteger;
ParamByName('idjenistes').AsInteger := idjenistes;
ParamByName('nilai').AsFloat :=
tblNilai.FieldByName(tblNilai.Fields[i].FieldName).AsFloat;
Execute;
end;
end;
tblNilai.Next;
end;
finally
Free;
end;
InsertIntoResult;
finally
tblNilai.EnableControls;
end;
130
if Result then
MessageDlg('Data berhasil disimpan', mtInformation, [mbOK],
0);
end;
procedure TfrmNilai.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if not(ActiveControl is TDBGrid) then
inherited;
end;
procedure TfrmNilai.FormCloseQuery(Sender: TObject; var
CanClose: Boolean);
begin
if ModalResult = mrOk then
CanClose := Simpan;
end;
procedure TfrmNilai.mniAmbilUsiaClick(Sender: TObject);
begin
if not(grd1.DataSource.DataSet.State in [dsInsert,dsEdit]) then
grd1.DataSource.DataSet.Edit;
grd1.DataSource.DataSet.FieldByName(grd1.Columns[grd1.SelectedI
ndex].FieldName).AsInteger :=
YearsBetween(tblNilai.FieldByName('tgllahir').AsDateTime,Date);
end;
procedure TfrmNilai.pm1Popup(Sender: TObject);
begin
mniAmbilUsia.Enabled :=
(grd1.Columns[grd1.SelectedIndex].FieldName <> 'idpelamar') and
(grd1.Columns[grd1.SelectedIndex].FieldName <> 'tgllahir') and
(grd1.Columns[grd1.SelectedIndex].FieldName <> 'kode') and
(grd1.Columns[grd1.SelectedIndex].FieldName <> 'nama') and
(grd1.Columns[grd1.SelectedIndex].FieldName <> 'alamat')
end;
end.
7. Form Hasil
unit HasilNilaiForm;
procedure HasilNilai;
131
implementation
uses Rutinitas, SeleksiForm;
{$R *.dfm}
procedure HasilNilai;
var
aComponent: TComponent;
begin
aComponent := Application.FindComponent('frmHasilNilai');
if not Assigned(aComponent) then
begin
frmHasilNilai := TfrmHasilNilai.Create(Application);
frmHasilNilai.LoadNilai;
end;
frmHasilNilai.Show;
end;
{ TfrmHasilNilai }
procedure TfrmHasilNilai.LoadNilai;
var
i: Integer;
str: TStrings;
begin
if tblNilai.Active then
tblNilai.Close;
try
str := TStringList.Create;
tblNilai.AddField('idpelamar',ftInteger);
tblNilai.AddField('tgllahir',ftDate);
tblNilai.AddField('kode',ftString,8);
tblNilai.AddField('nama',ftString,32);
tblNilai.AddField('alamat',ftString,64);
with qryRutinitas do
try
SQL.Text := 'select idjenistes,nama from jenistes';
SQL.Add('order by idjenistes');
Open;
First;
while not Eof do
begin
132
tblNilai.AddField('j' +
FieldByName('idjenistes').AsString,ftFloat);
str.Add(FieldByName('nama').AsString);
Next;
end;
tblNilai.Open;
Close;
SQL.Text := 'select
n.idpelamar,p.kode,p.nama,p.tgllahir,p.alamat,';
SQL.Add('n.idjenistes,n.nilai from pelamar p');
SQL.Add('join nilai n on n.idpelamar = p.idpelamar');
SQL.Add('order by n.idpelamar,n.idjenistes');
Open;
First;
while not Eof do
begin
if
not(tblNilai.Locate('idpelamar',FieldByName('idpelamar').AsInteger,[]
)) then
begin
tblNilai.Append;
tblNilai.FieldByName('idpelamar').AsInteger :=
FieldByName('idpelamar').AsInteger;
tblNilai.FieldByName('tgllahir').AsDateTime :=
FieldByName('tgllahir').AsDateTime;
tblNilai.FieldByName('kode').AsString :=
FieldByName('kode').AsString;
tblNilai.FieldByName('nama').AsString :=
FieldByName('nama').AsString;
tblNilai.FieldByName('alamat').AsString :=
FieldByName('alamat').AsString;
end
else tblNilai.Edit;
tblNilai.FieldByName('j'+FieldByName('idjenistes').AsString).AsFloat
:= FieldByName('nilai').AsFloat;
tblNilai.Post;
Next;
133
end;
finally
Free;
end;
with grd1 do
for i := 0 to Columns.Count -1 do
begin
if (Columns[i].FieldName = 'idpelamar') or
(Columns[i].FieldName = 'tgllahir') then
Columns[i].Visible := False
else if Columns[i].FieldName = 'kode' then
begin
Columns[i].Title.Caption := 'Kode';
Columns[i].Width := 64;
end
else if Columns[i].FieldName = 'nama' then
begin
Columns[i].Title.Caption := 'Nama';
Columns[i].Width := 128;
end
else if Columns[i].FieldName = 'alamat' then
begin
Columns[i].Title.Caption := 'Alamat';
Columns[i].Width := 256;
end
else
begin
Columns[i].Title.Caption := str[i-5];
Columns[i].Title.Alignment := taRightJustify;
end;
end;
tblNilai.First;
finally
str.Free;
end;
end;
134
procedure TfrmHasilNilai.btnSeleksiClick(Sender: TObject);
begin
Seleksi;
end;
end.
8. Form Seleksi Pelamar
unit SeleksiForm;
function Seleksi: Boolean;
implementation
uses DMForm, Rutinitas, Math;
{$R *.dfm}
function Seleksi: Boolean;
begin
frmSeleksi := TfrmSeleksi.Create(Application);
with frmSeleksi do
try
SQLSelect := TStringList.Create;
SQLWhere := TStringList.Create;
SQLOrder := TStringList.Create;
Caption := 'Seleksi Pelamar';
sTemp := 't' + IntToStr(Random(999));
//ShowMessage(sTemp);
ConvertResult2FinalResult(sTemp);
qryJenisTes.Open;
qryKriteria.Open;
tblFilter.Open;
tblFilterAfterPost(tblFilter);
SQLOrder.Text := 'order by nilai desc';
lblNonFuzzy.Caption := GetNonFuzzy;
cbxNonFuzzy.ItemIndex := 0;
Result := ShowModal = mrOk;
finally
SQLSelect.Free;
SQLWhere.Free;
SQLOrder.Free;
Free;
end;
end;
135
procedure TfrmSeleksi.btnGoClick(Sender: TObject);
begin
if qryKriteriaidkriteria.IsNull then
begin
MessageDlg('Kriteria tidak ada', mtWarning, [mbOK], 0);
Exit;
end;
if
tblFilter.Locate('idkriteria;operator',VarArrayOf([qryKriteriaidkriteria.
AsInteger,rgDan.Items[rgDan.ItemIndex]]),[]) then
Exit;
tblFilter.Append;
tblFilterIDKriteria.AsInteger := qryKriteriaidkriteria.AsInteger;
tblFilterJenis.AsString := qryJenisTesnama.AsString;
tblFilterKriteria.AsString := qryKriterianama.AsString;
tblFilterOperator.AsString := rgDan.Items[rgDan.ItemIndex];
tblFilter.Post;
end;
procedure TfrmSeleksi.btnHapusClick(Sender: TObject);
begin
if tblFilter.Eof then
Exit;
if Konfirmasi('Remove filter ?') then
tblFilter.Delete;
end;
procedure TfrmSeleksi.tblFilterAfterPost(DataSet: TDataSet);
var
bm: TBookmarkStr;
begin
mmoFilter.Clear;
try
bm := tblFilter.Bookmark;
tblFilter.First;
while not tblFilter.Eof do
begin
if tblFilter.Bof then
136
mmoFilter.Text := tblFilterJenis.AsString + ' ' +
tblFilterKriteria.AsString
else mmoFilter.Text := mmoFilter.Text + ' ' +
tblFilterOperator.AsString + ' ' + tblFilterJenis.AsString + ' ' +
tblFilterKriteria.AsString;
tblFilter.Next;
end;
finally
tblFilter.Bookmark := bm;
end;
end;
procedure TfrmSeleksi.btnFilterPelamarClick(Sender: TObject);
var
bm: TBookmarkStr;
a,b: Extended;
nilai: Extended; // nilai fire strength
idpelamar: TStrings; // daftar idpelamar
i: Integer;
operator: string;
begin
// query disini
try
bm := tblFilter.Bookmark;
if tblFilter.Eof then
begin
MessageDlg('Silakan pilih kriteria', mtWarning, [mbOK], 0);
Exit;
end;
// edit dulu tabel temporary utk memperoleh firestrenght
with qryRutinitas do
try
idpelamar := TStringList.Create;
try
SQL.Text := 'select idpelamar from pelamar order by
idpelamar';
Open;
First;
while not Eof do
137
begin
idpelamar.Add(Fields[0].AsString); // masukkan
idpelamar ke stringlist
Next;
end;
for i := 0 to idpelamar.Count -1 do
begin
tblFilter.First;
while not tblFilter.Eof do
begin
if tblFilter.Bof then
begin
Close;
SQL.Text := 'select
k'+tblFilterIDKriteria.AsString;
tblFilter.Next; // ambil record kedua
SQL.Add(',k'+tblFilterIDKriteria.AsString);
SQL.Add('from '+sTemp);
SQL.Add('where idpelamar=:idpelamar');
ParamByName('idpelamar').AsInteger :=
StrToInt(idpelamar[i]);
Open;
First;
a := Fields[0].AsFloat;
b := Fields[1].AsFloat;
operator := tblFilterOperator.AsString;
end
else
begin
Close;
SQL.Text := 'select
k'+tblFilterIDKriteria.AsString;
SQL.Add('from '+sTemp);
SQL.Add('where idpelamar=:idpelamar');
ParamByName('idpelamar').AsInteger :=
StrToInt(idpelamar[i]);
Open;
138
First;
a := nilai;
b := Fields[0].AsFloat;
operator := tblFilterOperator.AsString;
end;
if operator = 'dan' then
nilai := Min(a,b)
else nilai := Max(a,b);
tblFilter.Next;
end;
// update fire strengthnya tabel temp berdasar
filter/operator
Close;
SQL.Text := Format('update %s set nilai=:nilai where
idpelamar=:idpelamar',[sTemp]);
ParamByName('idpelamar').AsInteger :=
StrToInt(idpelamar[i]);
ParamByName('nilai').AsFloat := nilai;
Execute;
end;
finally
idpelamar.Free;
end;
finally
Free;
end;
finally
tblFilter.Bookmark := bm;
end;
cbxNonFuzzyChange(cbxNonFuzzy);
end;
procedure TfrmSeleksi.tblFilterCalcFields(DataSet: TDataSet);
begin
if tblFilterOperator.AsString = 'dan' then
tblFilterOperator2.AsString := 'and'
else tblFilterOperator2.AsString := 'or';
end;
procedure TfrmSeleksi.cbxNonFuzzyChange(Sender: TObject);
139
var
bm: TBookmarkStr;
begin
try
bm := tblFilter.Bookmark;
tblFilter.DisableControls;
SQLSelect.Text := 'select f.idpelamar,p.kode as "Kode",p.nama
as "Nama",p.alamat as "Alamat",p.nonfuzzy as "'+GetNonFuzzy+'"';
tblFilter.First;
while not tblFilter.Eof do
begin
SQLSelect.Add(',f.k' + tblFilterIDKriteria.AsString + ' as "' +
tblFilterKriteria.AsString + '"');
tblFilter.Next;
end;
SQLSelect.Add(',nilai as "Fire Strength"'); // ==> nilai fire
strength
SQLSelect.Add(Format('from %s f',[sTemp]));
SQLSelect.Add('join pelamar p on p.idpelamar = f.idpelamar');
SQLWhere.Text := 'where';
tblFilter.First;
while not tblFilter.Eof do
begin
if tblFilter.Bof then
SQLWhere.Add('f.k' + tblFilterIDKriteria.AsString + '>0')
else SQLWhere.Add(tblFilterOperator2.AsString + ' f.k' +
tblFilterIDKriteria.AsString + '>0');
tblFilter.Next;
end;
if cbxNonFuzzy.ItemIndex in [1,2] then // False,True
SQLWhere.Add('and
p.nonfuzzy='+IntToStr(cbxNonFuzzy.ItemIndex-2));
with qryResult do
begin
Close;
SQL.Clear;
SQL.Add(SQLSelect.Text);
SQL.Add(SQLWhere.Text);
140
SQL.Add(SQLOrder.Text);
Open;
//ShowMessage(SQL.Text);
grdResult.Columns[0].Visible := False;
end;
finally
tblFilter.Bookmark := bm;
tblFilter.EnableControls;
end;
end;
procedure TfrmSeleksi.dsResultDataChange(Sender: TObject; Field:
TField);
begin
inherited;
end;
end.
Download