PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PENERAPAN FUZZY DATABASE MODEL TAHANI DALAM SISTEM PENDUKUNG KEPUTUSAN PEMILIHAN MOBIL SEWA (Studi Kasus : Penyewaan Mobil di Daerah Istimewa Yogyakarta) Skripsi Diajukan Untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Komputer Program Studi Teknik Informatika
Disusun Oleh : Alexander Vitto Ardiyanto 125314116
PROGRAM STUDI TEKNIK INFORMATIKA JURUSAN TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS SANATA DHARMA 2016
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
THE APPLICATION OF FUZZY DATABASE MODEL TAHANI IN DECISION SUPPORT SYSTEMS IN SELECTING CAR RENTALS (A CASE STUDY ON CAR RENTAL SERVICES IN YOGYAKARTA SPECIAL PROVINCE)
Thesis Presented as Partial Fulfillment of the Requirements To Obtain the Sarjana Komputer Degree In Informatics Engineering
By : Alexander Vitto Ardiyanto 125314116
INFORMATICS ENGINEERING STUDY PROGRAM DEPARTMENT OF INFORMATICS ENGINEERING FACULTY OF SCIENCE AND TECHNOLOGY SANATA DHARMA UNIVERSITY YOGYAKARTA 2016
i
PLAGIAT HALAMAN MERUPAKAN PERSETUJUAN TINDAKAN TIDAK TERPUJI
SKRIPSI
PENERAPAN FUZZY DATABASE MODEL TAHANI DALAM SISTEM PENDUKUNG KEPUTUSAN PEMILIHAN MOBIL SEWA (Studi Kasus : Penyewaan Mobil di Daerah Istimewa Yogyakarta)
Disusun Oleh :
Alexander Vitto Ardiyanto 125314116
Telah disetujui oleh :
Pembimbing,
Eko Hari Parmadi, S.Si., M. Kom.
Tanggal :
i
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI HALAMAN PENGESAHAN
SKRIPSI
PENERAPAN FUZZY DATABASE MODEL TAHANI DALAM SISTEM PENDUKUNG KEPUTUSAN PEMILIHAN MOBIL SEWA (Studi Kasus : Penyewaan Mobil di Daerah Istimewa Yogyakarta) Dipersiapkan dan ditulis oleh : Alexander Vitto Ardiyanto 125314116 Telah dipertahankan di depan Panitia Penguji Pada tanggal 19 Agustus 2016 Dan dinyatakan memenuhi syarat
Susunan Panitia Penguji Nama Lengkap
Tanda Tangan
Ketua
: P.H. Prima Rosa, S.Si, M.Sc.
..............................
Sekretaris
: J.B. Budi Darmawan, S.T., M.Sc.
..............................
Anggota
: Eko Hari Parmadi, S.Si., M. Kom.
..............................
Yogyakarta, ....................... Fakultas Sains dan Teknologi Universitas Sanata Dharma Dekan,
Sudi Mungkasi, S.Si., M.Math.Sc., Ph.D.
i
PLAGIAT MERUPAKANKEASLIAN TINDAKAN TIDAK TERPUJI PERNYATAAN KARYA
Saya menyatakan dengan sesungguhnya bahwa skripsi yang saya tulis ini tidak memuat karya atau bagian karya orang lain, kecuali yang telah disebutkan dalam kutipan daftar pustaka, sebagaimana layaknya karya ilmiah.
Yogyakarta, ................... Penulis
Alexander Vitto Ardiyanto
iv
PLAGIAT PERSETUJUAN MERUPAKAN TINDAKAN TIDAK TERPUJI LEMBAR PERNYATAAN PUBLIKASI KARYA ILMIAH UNTUK
KEPENTINGAN AKADEMIS Yang bertanda tangan di bawah ini, Saya Mahasiswa Teknik Informatika Universitas Sanata Dharma : Nama : Alexander Vitto Ardiyanto NIM : 125314116 Demi pengembangan ilmu pengetahuan, Saya memberikan kepada Perpustakaan Universitas Sanata Dharma karya ilmiah Saya yang berjudul: PENERAPAN FUZZY DATABASE MODEL TAHANI DALAM SISTEM PENDUKUNG KEPUTUSAN PEMILIHAN MOBIL SEWA (Studi Kasus : Penyewaan Mobil di Daerah Istimewa Yogyakarta) Beserta perangka yang diperlukan (bila ada). Dengan demikian Saya memberikan kepada Perpustakaan Universitas Sanata Dharma hak untuk menyimpan, mengalihkan dalam bentuk media lain, mengelolanya dalam bentuk pangkalan data, mendistribusikannya secara terbatas, dan mempublikasikannya di Internet atau media lain untuk kepentingan akademis tanpa perlu meminta ijin dari Saya maupun memberikan royaliti kepada Saya selama tetap mencantumkan nama Saya sebagai penulis.
Demikian pernyataan ini Saya buat dengan sebenarnya. Dibuat di Yogyakarta, Pada tanggal : ................... Yang menyatakan,
Alexander Vitto Ardiyanto
v
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
HALAMAN PERSEMBAHAN
Karya Skripsi ini Saya persembahkan kepada: 1. Tuhan Yesus Kristus, yang memberikan berkat dan mendampi dalam menyelesaikan karya skripsi ini. 2. Keluargaku, antara lain Bapak, Mamah, Simbah, Kakak, dan Adikku yang selalu memberikan dukungan doa maupun materi. 3. Calon pendamping hidupku dan keluarganya yang selalu mendoakan dan memberikan semangat. 4. Para Dosen dan Teman-Teman Mahasiswa Teknik Informatika Universitas Sanata Dharma yang sudah mendampingi dan memberikan pertolongan selama Saya menjalankan studi. 5. Keluarga besar Universitas Sanata Dharma yang telah memberikan segala pengalaman berharga dalam hidupkan untuk bekal masuk ke dunia kerja.
vi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
HALAMAN MOTTO
“Whatever will be, will be”
“Apa yang kamu tanam itu yang kamu tuai”
“Slow down and everything you are chasing Will come around and catch you” (John DePaola)
vii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ABSTRAK Perkembangan teknologi dan ilmu pengetahuan saat ini sangat pesat. Hal ini bisa dilihat dengan banyak terciptanya sebuah sistem yang membantu mempercepat aktivitas manusia. Contohnya sistem pemesanan taksi, pemesanan hotel, dan pemesanan hotel secara online. Dari beberapa contoh sistem yang sudah dibuat muncul juga ide untuk membuat sistem penyewaan mobil secara online. Tetapi sistem penyewaan mobil secara online yang sudah metode penyimpanannya menggunakan basis data standart. Pada umumnya basis data standart digunakan untuk menangani data yang bersifat tegas. Tetapi tidak semua data itu tegas. Untuk menangani data yang bersifat tidak tegas atau samar, maka digunakan aturan logika fuzzy yang diterapkan pada sebuah sistem basis data. Salah satu metode tentang fuzzy database yang sudah ada adalah fuzzy database model Tahani. Penerapkan fuzzy database model Tahani dalam Sistem Pendukung Keputusan Pemilihan Mobil Sewa menggunakan masukan berupa bahasa verbal dan menghasilkan keluaran berupa rekomendasi mobil yang akan disewa. Jika dibandingkan dengan penggunaan basis data standard hasilnya tidak terlalu berbeda jauh. Tetapi penerapan fuzzy database ini memiliki kekurangan dibandingkan basis data standart, yaitu waktu pencarian data sesuai kriteria yang lebih lama dan kapasitas penyimpanan data lebih banyak.
Kata kunci : Penyewaan mobil, Basis data standart, Fuzzy Database model Tahani
viii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ABSTRACT
Nowadays, science and technology develop very rapidly. This is proved by many creations of a system that helps accelerate human activities, such as taxi booking system, and hotel reservations online. There also emerges an idea to create an online car rental system. However there is an obstacle concerning the method which uses standard database. In general, a standard database is used to handle firm data. Since not all data are firm, fuzzy logic rules are applied to a database system. One method of fuzzy logic available to date is fuzzy database model Tahani.
This thesis tries to apply fuzzy database model Tahani in Election Decision Support System Car Rental using verbal language as input and producing output in the form of recommended car being rented. When compared with the use of standard databases, the results are not too much different. But the application of fuzzy databases have disadvantages compared to standard databases, namely the longer search time of data according to criteria, and the more data storage capacity.
Keywords : car rental, database standards, fuzzy database model Tahani
ix
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
KATA PENGANTAR Puji dan syukur kepada Tuhan Yang Maha Esa yang telah mengaruniakan berkat dan rahmat-Nya sehingga penulis dapat menyelesaikan tugas akhir ini. Dalam proses penulisan tugas akhir ini ada banyak pihak yang telah memberikan bantuan dan perhatian dengan caranya masing-masing sehingga tugas akhir ini dapat diselesaikan. Oleh karena itu penulis mengucapkan terima kasih kepada : 1. Tuhan Yesus Kristus yang senantiasa memberikan berkat dan bimbingan kepada saya. 2. Eko Hari Parmadi, S.Si., M. Kom. selaku dosen pembimbing tugas akhir yang telah membimbing saya dalam penyusunan tugas akhir ini. 3. Ibu Paulina Heruningsih Prima Rosa, S.Si., M.Sc. dan Bapak J.B. Budi Darmawan, S.T., M.Sc. selaku panitia penguji yang telah memberikan banyak kritik dan saran untuk tugas akhir ini. 4. Kedua orang tua tercinta Bapak Karyanto dan Ibu Mulat Listyarini, kakakku Aluysia Vicka T.S. dan semua anggota keluarga saya yang selalu mendoakan , mendukung, dan memotivasi penulis sehingga penulis dapat menyelesaikan tugas akhir ini. 5. Lukas, Bagus, Andreas, Tegar, Novian, Candra, Eric, Agustin, Ni Putu, Monic, Riya yang telah memberikan bantuan, semangat, dan doa dalam penyusunan tugas akhir ini. 6. Lidwina Septyana Anggraeni yang telah memberikan motivasi, doa, dan perhatian sehingga tugas akhir ini selesai tepat pada waktunya. 7. Semua teman-teman di program studi Teknik Informatika angkatan 2012. 8. Keluarga besar Universitas Sanata Dharma yang telah menjadi pendamping dalam pembentukan karakter dan telah memberikan banyak pengalaman dalam berbagai bidang. 9. Semua pihak yang telah membantu penulis dalam penyusunan tugas akhir ini
yang
tidak
dapat
x
disebutkan
satu
persatu.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Penulis menyadari bahwa tugas akhir ini masih jauh dari sempurna. Oleh karena itu, penulis sangat mengharapkan kritik dan saran untuk memperbaiki tugas akhir ini. Akhir kata, penulis berharap tulisan ini berguna bagi perkembangan ilmu pengetahuan dan pengguna.
Penulis,
Alexander Vitto Ardiyanto
xi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
DAFTAR ISI
HALAMAN JUDUL HALAMAN JUDUL (BAHASA INGGRIS) .......................................................... i HALAMAN PERSETUJUAN ................................................................................. i HALAMAN PENGESAHAN ................................................................................. i PERNYATAAN KEASLIAN KARYA ................................................................ iv LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS ................................................................v HALAMAN PERSEMBAHAN ............................................................................ vi HALAMAN MOTTO ........................................................................................... vii ABSTRAK ........................................................................................................... viii ABSTRACT ........................................................................................................... ix KATA PENGANTAR .............................................................................................x DAFTAR ISI ......................................................................................................... xii DAFTAR GAMBAR .............................................................................................xv DAFTAR TABEL ............................................................................................... xvii BAB I
PENDAHULUAN .....................................................................................1
1.1.
Latar Belakang Masalah ............................................................................1
1.2.
Rumusan Masalah .....................................................................................2
1.3.
Tujuan........................................................................................................2
1.4.
Batasan Masalah ........................................................................................3
1.5.
Metode Penelitian ......................................................................................3
1.5.1.
Survey awal ........................................................................................3
1.5.2.
Studi Pustaka ......................................................................................3
1.5.3.
Perancangan Database .......................................................................4
1.5.4.
Tahap Perancangan Sistem ................................................................4
1.5.5.
Pengujian Sistem ................................................................................4
1.5.6.
Tahap Analisis Hasil Pengujian .........................................................4
1.6. BAB II 2.1.
Sistematika Pembahasan ...........................................................................4 LANDASAN TEORI.............................................................................6 Sistem Pendukung Keputusan ...................................................................6
xii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2.1.1.
Definisi Sistem Pendukung Keputusan ..............................................6
2.1.2.
Komponen-komponen Sistem Pendukung Keputusan .......................6
2.1.3.
Manfaat Sistem Pendukung Keputusan .............................................8
2.1.4.
Keterbatasan Sistem Pendukung Keputusan ......................................8
2.2.
Logika Fuzzy (Logika Kabur) ...................................................................9
2.2.1.
Pengertian Logika Fuzzy ....................................................................9
2.2.2.
Alasan Digunakannya Logika Fuzzy ...............................................10
2.2.3.
Himpunan Fuzzy ..............................................................................10
2.2.4.
Fungsi Keanggotaan .........................................................................15
2.2.5.
Operator Dasar Zadeh Untuk Operasi Himpunan Fuzzy .................19
2.3.
Fuzzy Database .......................................................................................20
2.3.1. 2.4.
Basisdata Fuzzy Model Tahani ........................................................20
Query .......................................................................................................24
BAB III
METODOLOGI PENELITIAN ..........................................................25
3.1.
Gambaran Umum ....................................................................................25
3.2.
Desain Penelitian .....................................................................................25
3.2.1.
Studi Literatur ..................................................................................25
3.2.2.
Data ..................................................................................................25
3.2.3.
Perancangan Alat Uji .......................................................................26
3.3.
Spesifikasi Software dan Hardware ........................................................27
3.4.
Pengujian dan Evaluasi Sistem ...............................................................27
BAB IV 4.1.
ANALISIS DAN PERANCANGAN SISTEM ...................................28 Analisa Kebutuhan ..................................................................................28
4.1.1.
Analisa Sistem .................................................................................28
4.1.2.
Analisa Kebutuhan Pengguna ..........................................................29
4.1.3.
Diagram Arus Data ..........................................................................32
4.1.4.
Perancangan Basis data ....................................................................37
4.1.5.
Penerapan Contoh Perhitungan ........................................................41
4.2.
Perancangan Antar Muka ........................................................................51
4.2.1.
Perancangan Halaman Awal ............................................................51
4.2.2.
Perancangan Halaman Pencarian .....................................................52
4.2.3.
Perancangan Halaman Data Mobil ..................................................54
xiii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4.2.4. BAB V 5.1.
Perancangan Halaman Batas Himpunan ..........................................55 IMPEMENTASI DAN ANALISA HASIL .........................................56
Implementasi ...........................................................................................56
5.1.1.
Implementasi Fungsi Keanggotaan Harga Murah ...........................56
5.1.2.
Implementasi Fungsi Keanggotaan Harga Sedang ..........................60
5.1.3.
Implementasi Fungsi Keanggotaan Harga Mahal ............................64
5.1.4.
Implementasi Fungsi Keanggotaan Ukuran Kecil ...........................69
5.1.5.
Implementasi Fungsi Keanggotaan Ukuran Normal ........................74
5.1.6.
Implementasi Fungsi Keanggotaan Ukuran Besar ...........................79
5.1.7.
Implementasi Fungsi Keanggotaan Kapasitas Penumpang Sedikit .83
5.1.8.
Implementasi Fungsi Keanggotaan Kapasitas Penumpang Sedang.87
5.1.9.
Implementasi Fungsi Keanggotaan Kapasitas Penumpang Banyak 92
5.1.10.
Implementasi Fungsi Keanggotaan Kapasitas BBM Sedikit .......96
5.1.11.
Implementasi Fungsi Keanggotaan Kapasitas BBM Sedang .....101
5.1.12.
Implementasi Fungsi Keanggotaan Kapasitas BBM Banyak.....105
5.1.13.
Implementasi Fungsi Keanggotaan Tahun Lama .......................109
5.1.14.
Implementasi Fungsi Keanggotaan Tahun Baru ........................113
5.1.15.
Implementasi Perhitungan Hasil Query Satu Kriteria ................118
5.1.16.
Implementasi Perhitungan Hasil Query Dua Kriteria ................121
5.1.17.
Implementasi Perhitungan Hasil Query Tiga Kriteria................124
5.1.18.
Implementasi Perhitungan Hasil Query Empat Kriteria ............129
5.1.19.
Implementasi Perhitungan Hasil Query Lima Kriteria ..............138
5.2.
Hasil Implementasi ................................................................................156
5.2.1.
Form Utama ...................................................................................156
5.2.2.
Form Data Mobil ...........................................................................157
5.2.3.
Form Pencarian ..............................................................................159
5.2.4.
Form Batas Himpunan ...................................................................162
5.3. BAB VI
Pengujian ...............................................................................................162 PENUTUP .........................................................................................166
6.1.
Kesimpulan............................................................................................166
6.2.
Saran ......................................................................................................166
DAFTAR PUSTAKA ..........................................................................................167
xiv
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
DAFTAR GAMBAR
Gambar 2. 1. Himpunan fuzzy pada variabel Umur ..............................................12 Gambar 2. 2. Himpunan fuzzy pada variable mahasiswa ......................................14 Gambar 2. 3. Representasi linear naik ...................................................................16 Gambar 2. 4. Representasi linear turun ..................................................................17 Gambar 2. 5. Representasi kurva trapezium ..........................................................17 Gambar 2. 6. Representasi kurva trapezium ..........................................................18 Gambar 2. 7. Daerah ‘bahu’ pada variabel TEMPERATUR.................................19 Gambar 2. 8. Fungsi keanggotaan pada Variabel Harga........................................23 Gambar 4. 1. Flowchart sistem ..............................................................................29 Gambar 4. 2. Use Case System ..............................................................................29 Gambar 4. 3. Package Kelola Data Mobil .............................................................30 Gambar 4. 4. Package Kelola Data Batas Himpunan ............................................30 Gambar 4. 5. Package Rekomendasi Mobil ..........................................................31 Gambar 4. 6. Diagram Konteks Sistem..................................................................32 Gambar 4. 7. Diagram Arus Data Level 1 .............................................................33 Gambar 4. 8. Diagram Arus Data Proses Rekomendasi Mobil .............................34 Gambar 4. 9. Arus Data Proses Kelola Data Mobil ...............................................35 Gambar 4. 10. Diagram Arus Data Proses Kelola Data Batas Himp. Fuzzy .........36 Gambar 4. 11. Perancangan konseptual .................................................................37 Gambar 4. 12. Perancangan Logikal ......................................................................37 Gambar 4. 13. Fungsi keanggotaan pada Variabel Harga......................................42 Gambar 4. 14. Fungsi Keanggotaan pada Variabel Panjang..................................43 Gambar 4. 15. Fungsi keanggotaan pada Variabel Lebar ......................................44 Gambar 4. 16. Fungsi keanggotaan pada Varabel Tinggi ......................................45 Gambar 4. 17. Fungsi keanggotaan pada Variabel Ukuran ...................................46 Gambar 4. 18. Fungsi keanggotaan pada Variabel Kapasitas BBM ......................47 Gambar 4. 19. Fungsi keanggotaan pada Variabel Kapasitas penumpang ............48 Gambar 4. 20. Fungsi keanggotaan pada Variabel Tahun .....................................49 Gambar 4. 21. Desaign Halaman Home Admin ....................................................51 Gambar 4. 22. Desaign Halaman Pencarian Tab Fuzzy Admin ............................52
xv
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Gambar 4. 23. Desaign Halaman Pencarian Tab Fuzzy Pengguna ........................52 Gambar 4. 24. Desaign Halaman Pencarian Tab Tegas Admin.............................53 Gambar 4. 25. Desaign Halaman Pencarian Tab Tegas Pengguna ........................53 Gambar 4. 26. Desaign Halamn Data Mobil Admin..............................................54 Gambar 4. 27. Desaign Halaman Data Mobil Pengguna .......................................54 Gambar 4. 28. Desaign Halaman Batas Himpunan Admin ...................................55 Gambar 5. 1. Form Utama Untuk Admin ............................................................156 Gambar 5. 2. Form Utama Untuk Pengguna ........................................................157 Gambar 5. 3. Form Data Mobil Admin................................................................158 Gambar 5. 4. Form Data Mobil Pengguna ...........................................................159 Gambar 5. 5. Form Pencarian Tab Fuzzy ............................................................160 Gambar 5. 6. Form Pencarian Tab Tegas.............................................................161 Gambar 5. 7. Form Batas Himpunan ...................................................................162 Gambar 5. 8. Ukuran Setiap Tabel Penyimpanan ................................................164
xvi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
DAFTAR TABEL
Tabel 2. 1. Contoh Tabel DT_HP pada Outlet Penjualan HP ................................21 Tabel 2. 2. Fire Strength untuk query Harga Sedang, Berat RINGAN, Ada WAP ................................................................................................................................24 Tabel 4. 1. Tabel Data Mobil .................................................................................38 Tabel 4. 2. Tabel Batas Himpunan.........................................................................38 Tabel 4. 3. Tabel Mu ..............................................................................................39 Tabel 4. 4. Data Mobil ...........................................................................................41 Tabel 4. 5. Nilai Derajat Keanggotaan pada setiap Himpunan ..............................50 Tabel 4. 6. Fire strength .........................................................................................51 Tabel 5. 1. Tabel Hasil Fuzzy Database...............................................................162 Tabel 5. 2. Tabel Hasil Basis Data Standard........................................................163 Tabel 5. 3. Tabel Hasil Fuzzy Database dengan Dua Kriteria .............................164 Tabel 5. 4. Tabel Hasil Basis Data Standard dengan Dua Kriteria ......................164
xvii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB I PENDAHULUAN
1.1.
Latar Belakang Masalah Pada era globalisasi ini kebutuhan teknologi sangat dibutuhkan manusia untuk melakukan aktivitas sehari-hari. Karena teknologi dapat membuat pekerjaan sehari-hari menjadi mudah dan cepat dilakukan. Salah satu teknologi yang dibutuhkan pada saat ini adalah teknologi dibidang transportasi yaitu mobil. Mobil sudah menjadi primadona dikalangan masyarakat pada saat ini. Karena mobil adalah alat transportasi yang praktis, cepat, dan dapat menampung banyak penumpang atau muatan. Hal ini tentu sangat bermanfaat bagi orang yang sering beraktivitas diluar ruangan seperti mengantar barang atau pergi dengan keluarga. Tetapi, harga mobil yang cukup mahal menjadi keterbatasan bagi orang untuk memilikinya.
Melihat permasalahan itu banyak orang atau pengusaha yang membuka jasa penyewaan mobil, memang usaha ini sangat menjanjikan. Karena memberikan kemudahan bagi orang yang tidak memiliki mobil untuk menggunakannya. Selain itu mereka juga bisa memilih mobil jenis apa yang akan disewa sesuai dengan keinginannya, karena pada tempat penyewaan mobil biasanya terdapat berbagai macam jenis mobil. Seiring perkembangannya, bisnis sewa mobil ini juga bisa melayani penyewaan melalui media sosial maupun melalui aplikasi khusus yang dimiliki oleh penawar jasa sewa mobil. Pada era teknologi ini sudah banyak sistem informasi untuk penyewaan atau pemesanan mobil pada perusahaan sewa mobil (rental). Beberapa sistem informasi yang sudah pernah dibuat diantaranya Sistem Informasi Pemesanan dan Penyewaan Mobil Berbasis Web Pada CV. Louhan Mobilindo dan Perancangan Aplikasi Rental Mobil Pada CV Karya Bersama Palembang. Pada kedua sistem tersebut penyimpanan data menggunakan sistem basis data, tetapi di kedua sistem tersebut hanya 1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
menggunakan sistem basis data standard saja. Tetapi, penggunaan sistem basis data standard biasanya untuk menangani data-data yang bersifat pasti. Namun pada kenyataannya tidak semua data bersifat tegas. Seiring
berkembangnya
teknologi
terdapat
sebuah
ide
yang
mendefinisikan konsep relasi fuzzy dalam sebuah Database Management System (DBMS) dengan derajat keanggotaan. Ide tersebut dikemukakan oleh Tahani (1997). Fuzzy database Model Tahani menggunakan teori himpunan fuzzy untuk mendapatkan informasi pada querynya. Berkaitan dengan hal tersebuat maka peneliti tertarik untuk menyusun sebuah tugas akhir yang berjudul “Penerapan Fuzzy Database Model Tahani dalam Sistem Pendukung Keputusan Pemilihan Mobil Sewa”. Dengan menggunakan logika Fuzzy pada Database ini diharapkan dapat menangani data yang bersifat tidak tegas atau samar yang terkandung dalam kriteria-kriteria yang disediakan. Selain itu, penelitian ini diharapkan dapat membantu calon penyewa mobil dalam menentukan mobil yang akan disewa. 1.2.
Rumusan Masalah Berdasarkan latar belakang di atas, maka rumusan masalah yang akan diselesaikan, yaitu: a. Bagaimana mengimplementasikan fuzzy database model Tahani dalam SPK pemilihan mobil sewa ? b. Apakah pengimplementasian fuzzy database model Tahani lebih efisien dari pada database standard dengan indikator waktu proses eksekusi query dan table space yang digunakan untuk menyimpan data?
1.3.
Tujuan Tujuan dari penelitian tugas akhir ini adalah: a. Membangun SPK pemilihan mobil sewa dengan menggunakan metode fuzzy database model Tahani.
2
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
b. Mengetahui seberapa efisien penerapan fuzzy database model Tahani dan database klasik. 1.4.
Batasan Masalah Dalam membangun sistem informasi ini terdapat beberapa batasan masalah, antara lain: a. Kriteria-kriteria yang digunakan dalam pengambilan keputusan adalah harga, tahun perakitan kendaraan, kapasitas kendaraan, kapasitas bahan bakar, dan ukuran. b. Data mobil yang digunakan adalah data mobil yang disewakan dari beberapa usaha penyewaan mobil di Yogyakarta. c. Sistem yang dibuat tidak mendukung untuk rekomendasi penyewaan kendaraan selain mobil. d. Sistem ini dibangun berbasis desktop dengan menggunakan bahasa pemrograman java dan database oracle.
1.5.
Metode Penelitian Langkah-langkah metode penelitian yang dilakukan dalam penelitian ini sebagai berikut: 1.5.1. Survey awal Dilakukan wawancara kepada pihak terkait (penyewa dan pemilik penyewaan mobil) serta melakukan pengumpulan data yang telah tersedia sebelumnya di tempat penyewaan mobil. 1.5.2. Studi Pustaka Dilakukan studi pustaka untuk mengumpulkan teori-teori yang digunakan
dalam
penelitian
ini,
meliputi
teori
mengenai
pengemplementasian fuzzy database model Tahani, penerapan fuzzy database model Tahani dalam sebuah sistem informasi, serta mencari informasi-informasi lain yang mendukung pembangunan sistem informasi ini.
3
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
1.5.3. Perancangan Database Pada tahap ini dilakukan perancangan database sesuai dengan data yang diperoleh. 1.5.4. Tahap Perancangan Sistem Pada tahap ini dilakukan perancangan sistem yang akan dibangun, meliputi disain user interface, fitur-fitur disediakan aplikasi, dan penanganan koneksi dengan system database. 1.5.5. Pengujian Sistem Dilakukan percobaan terhadap sistem yang telah dibangun. Percobaan dilakukan dengan menggunakan operator AND, OR, dan NOT. 1.5.6. Tahap Analisis Hasil Pengujian Pada tahap ini dilakukan analisis keluaran yang dihasilkan oleh sistem. 1.6.
Sistematika Pembahasan Sistematika penulisan dibagi menjadi beberapa bab, sebagai berikut : a. Bab I : Pendahuluan Bab ini berisi latar belakang, rumusan dan batasan masalah, tujua penelitian, manfaat penelitian, metodologi penelitian, dan sistematika penulisan. b. Bab II : Landasan Teori Bab ini berisi teori-teori yang dapat menunjang penelitian, yaitu berupa pengertian sistem pendukung keputusan, logika fuzzy, dan fuzzy database model Tahani. c. Bab III : Metodologi Penelitian Bab ini berisi tentang gambaran umum sistem yang akan dibangun, data yang digunakan, desain pennelitian, spesifikasi software dan hardware yang digunakan. d. Bab IV : Analisis dan Perancangan Sistem 4
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Bab ini berisi tentang cara penerapan konsep dasar yang telah diuraikan pada Bab II untuk menganalisis dan merancang tentang sistem sesuai tahap-tahap penyelesaian masalah tersebut dengan menggunakan Fuzzy Database model Tahani. e. Bab V : Implementasi dan Analisis Sistem Bab ini berisi tentang implementasi ke program komputer berdasarkan hasil perancangan yang dibuat, analisis perangkat lunak yang telah dibuat, serta kelebihan dan kekurangan pada sistem. f. Bab VI : Penutup Dalam bab ini berisi tentang kesimpulan dan saran dari keseluruhan penulisan tugas akhir.
5
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB II LANDASAN TEORI
2.1.
Sistem Pendukung Keputusan 2.1.1. Definisi Sistem Pendukung Keputusan Menurut (Suryadi, 1989) Sistem Pendukung Keputusan (SPK) atau Decision Support System (DSS) adalah suatu sistem berbasis komputer untuk membantu pengambilan keputusan dalam memanfaatkan data dengan menggunakan model tertentu untuk memecahkan berbagai persoalan yang semi terstruktur atau tidak terstruktur. Persoalan pengambilan keputusan pada dasarnya adalah bentuk pemilihan dari berbagai alternatif tindakan yang mungkin dipilih melalui mekanisme tertentu, dengan harapan akan menghasilkan sebuah keputusan yang terbaik. 2.1.2. Komponen-komponen Sistem Pendukung Keputusan Suatu SPK memiliki tiga subsistem utama yang menentukan kapabilitas teknik SPK tersebut, yaitu sebagai berikut: 1.
Subsistem Manajemen Basis Data (Data Base Management
Subsystem) Ada beberapa perbedaan antara database untuk SPK dan nonSPK. Pertama, sumber data untuk SPK lebih “kaya” daripada non-SPK dimana data harus berasal dari luar dan dari dalam karena proses pengambilan keputusan, terutama dalam level managemen puncak, sangat bergantung pada sumber data luar, seperti data ekonomi. Kedua, proses pengambilan dan ekstraksi data dari sumber data yang sangat besar. SPK membutuhkan proses ekstraksi dan DBMS yang dalam pengelolaannya harus cukup fleksibel
untuk
memungkinkan
pengurangannya secara cepat.
6
penambahan dan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2.
Subsistem
Managemen
Model
(Model
Management
Subsystem) Salah satu keunggulan SPK adalah kemampuan untuk mengintegrasikan akses data dan model-model keputusan. Hal ini dapat dilakukan dengan menambahkan model-model keputusan ke dalam sistem informasi yang menggunakan database sebagai mekanisme integrasi dan komunikasi di antara model-model. Komunikasi antara berbagai model yang saling berhubungan diserahkan kepada pengambil keputusan sebagai proses intelektual dan manual. 3.
Subsistem Perangkat Lunak Penyelenggara Dialog (Dialog
Generation and Management Subsystem) Komponin dari sistem dialog adalah pemakai, terminal, dan sistem perangkat lunak. Subsistem dialog dibagi menjadi tiga bagian yaitu: a. Bahasa aksi, meliputi apa yang dapat digunakan oleh pemakai dalam berkomunikasi dengan sistem. Hal ini meliputi
pemilihan-pemilihan
seperti
papan
ketik
(keyboard), panel-panel sentuh, joystick, perintah suara dan sebagainya. b. Bahasa tampilan atau presentasi, meliputi apa yang harus diketahui oleh pemakai. Bahasa tampilan meliputi pilihanpilihan seperti printer, layar tampilan, grafik, warna, plotter, keluaran suara, dan sebagainya. c. Basis pengetahuan, meliputi apa yang harus diketahui oleh pemakai agar pemakaian sistem bisa efektif. Basis pengetahuan bisa berada dalam pikiran pemakai, pada kartu referensi
atau
petunjuk,
sebagainya.
7
dalam
buku
manual,
dan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2.1.3. Manfaat Sistem Pendukung Keputusan SPK memberikan keuntungan atau menfaat bagi para pemakainya. Keuntungan yang dimaksud antara lain: 1. SPK memperluas kemampuan pengambilan keputusan dalam memproses data atau informasi bagi pemakainya. 2. SPK
membantu
pengambilan
keputusan
dalam
hal
penghematan waktu yang dibutuhkan untuk memecahkan masalah terutama berbagai masalah yang sangat kompleks dan tidak terstruktur. 3. SPK dapat menghasilkan solusi dengan lebih cepat serta hasilnya dapat diandalkan. 4. Walaupun suatu SPK, mungkin saja tidak mampu memecahkan masalah yang dihadapi oleh pengambil keputusan, namun ia dapat menjadi stimulan bagi pegambil keputusan dalam memahami persoalannya. Karena SPK mampu menyajikan berbagai alternatif. SPK dapat menyediakan bukti tambahan untuk memberikan pembenaran sehingga dapat memperkuat posisi pengambilan keputusan. 2.1.4.
Keterbatasan Sistem Pendukung Keputusan Disamping memiliki keuntungan dan manfaat, SPK juga memiliki keterbatasan diantaranya adalah sebagai berikut: 1. Ada beberapa kemampuan manajemen dan bakat manusia yang tidak dapat dimodelkan, sehingga model yang ada dalam sistem tidak semuanya mencerminkan persoalan sebenarnya.
8
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2. Kemampuan suatu SPK terbatas pada pembendaharaan pengetahuan yang dimilikinya (pengetahuan dasar serta model dasar). 3. Proses-proses yang dapat dilakukan SPK biasanya tergantung juga pada kemampuan perangkat lunak yang digunakannya. SPK tidak memiliki kemampuan intuisi seperti yang dimiliki manusi. Karena walaupun bagaimanapun canggihnya suatu SPK, dia hanyalah suatu kumpulan perangkat keras, perangkat lunak, dan sistem operasi yang tidak dilengkapi dengan kemampuan berpikir. 2.2.
Logika Fuzzy (Logika Kabur) 2.2.1. Pengertian Logika Fuzzy Logika fuzzy adalah suatu cara yang tepat untuk memetakan suatu ruang input kedalam suatu ruang output. Titik awal dari konsep modern mengenai ketidakpastian adalah paper yang dibuat oleh Lotfi A Zadeh (1965), dimana Zadeh memperkenalkan teori yang memiliki obyek-obyek dari himpunan fuzzy yang memiliki batasan yang tidak presisi dan keanggotaan dalam himpunan fuzzy, dan bukan dalam bentuk logika benar (true) atau salah (false), tapi dinyatakan dalam derajat (degree). Konsep seperti ini disebut dengan Fuzziness dan teorinya dinamakan Fuzzy Set Theory. Fuzziness dapaet didefinisikan sebagai logika kabur berkenaan dengan semantik dari suatu kejadian, fenomena atau pernyataan itu sendiri. Serigkali ditemui dalam pernyataan yang dibuat oleh seseorang, evaluasi dan suatu pengambilan keputusan. Sebagai contoh: 1. Manajer pergudangan mengatakan pada manajer produksi seberapa banyak persediaan barang pada akhir minggu ini, kemudian manajer produksi akan menetapkan jumlah barang yang harus diproduksi esok hari.
9
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2. Pelayan restoran memberikan pelayanan terhadap tamu, kemudian tamu akan memberikan tip yang sesuai atas baik tidaknya pelayanan yang diberikan. 3. Anda mengatakan pada saya seberapa sejuk ruangan yang anda inginkan, saya akan mengatur putaran kipas yang ada pada ruangan ini. 2.2.2. Alasan Digunakannya Logika Fuzzy Ada beberapa alasan mengapa orang menggunakan logika fuzzy (Kusumadewi S, Purnomo H, 2010) antara lain: 1. Konsep logika fuzzy mudah dimengerti. Konsep matematis yang mendasari penalaran fuzzy sangat sederhana dan mudah dimengerti. 2. Logika fuzzy sangat fleksibel. 3. Logika fuzzy memiliki toleransi terhadap data-data yang tidak tepat. 4. Logika fuzzy mampu memodelkan fungsi-fungsi nonlinear yang sangat kompleks. 5. Logika
fuzzy
dapat
membangun
dan
mengaplikasikan
pengalaman-pengalaman para pakar secara langsung tanpa harus melalui proses pelatihan. 6. Logika fuzzy dapat bekerjasama dengan teknik-teknik kendali secara konvensional. 7. Logika fuzzy didasarkan pada bahasa alami. 2.2.3. Himpunan Fuzzy Pada himpunan tegas (crisp), nilai keanggotaan suatu item x dalam suatu himpunan A, yang sering ditulis denganµA[x], memiliki 2 kemungkinan (Kusumadewi S, Purnomo H, 2010) yaitu:
10
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
1. Satu (1), yang berarti bahwa suatu item menjadi anggota dalam suatu himpunan, atau 2. Nol (0), yang berarti bahwa suatu item tidak menjadi anggota dalam suatu himpunan. Contoh: Misalkan variabel umur dibagi menjadi 3 kategori, yaitu: MUDA
umur < 35 tahun
PAROBAYA 35 ≤ umur ≤ 55 tahun TUA
umur ≥ 55 tahun
Bisa dikatakan bahwa:
Apabila seseorang berusia 34 tahun, maka ia dikatakan MUDA (µMUDA[34] = 1);
Apabila seseorang berusia 35 tahun, maka ia dikatakan TIDAK MUDA (µMUDA[35] = 0);
Apabila seseorang berusia 35 tahun kurang 1 hari, maka ia dikatakan TIDAK MUDA (µMUDA[35 th- 1hr] = 0);
Apabila seseorang berusia 35 tahun, maka ia dikatakan PAROBAYA (µPAROBAYA[35] = 1);
Apabila seseorang berusia 34 tahun, maka ia dikatakan TIDAK PAROBAYA (µPAROBAYA[34] = 0);
Apabila seseorang berusia 55 tahun, maka ia dikatakan PAROBAYA (µPAROBAYA[55] = 1);
Apabila seseorang berusia 35 tahun kurang 1 hari, maka ia dikatakan TIDAK PAROBAYA (µPAROBAYA[35 th – 1 hr] = 0);
11
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Dari sini bisa dikatakan bahwa pemakaian himpunan crisp untuk menyatakan umur sangat tidak adil, adanya perubahan kecil saja pada suatu nilai mengakibatkan perbedaan kategori yang cukup signifikan. Himpunan fuzzy digunakan untuk mengantisipasi hal tersebut. Seseorang dapat masuk dalam 2 himpunan yang berbeda, MUDA dan PAROBAYA, PAROBAYA dan TUA, dsb. Seberapa besar eksistensinya dalam himpunan tersebut dapat dilihat pada nilai keanggotaannya. Seperti terlihat pada gambar 2.1.
Gambar 2. 1. Himpunan fuzzy pada variabel Umur Pada Gambar 2.1, dapat dilihat bahwa:
Seseorang yang berumur 40 tahun, termasuk dalam himpunan MUDA dengan µMUDA[40] =
0,25; maupun dia juga
termasuk
PAROBAYA
dalam
himpunan
dengan
µPAROBAYA[40] = 0,5.
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.
Kalau pada himpunan crisp, nilai keanggotaan hanya ada 2 kemungkinan, yaitu 0 atau 1, pada himpunan fuzzy nilai
12
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
keanggotaan terletak pada rentang 0 sampai 1. Apabila x memiliki nilai keanggotaan fuzzy µA[x] = 0 berarti x tidak menjadi anggota himpunan A, demikian pula apabila x memiliki nilai keanggotaan fuzzy µA[x] = 1 berarti x menjadi anggota penuh pada himpunan A. Terkadang kemiripan antara keanggotaan fuzzy dengan probabilitas menimmbulkan kerancuan. Keduanya memiliki nilai pada interval [0,1], namun interprestasi nilainya sangat berbeda antara kedua kasus tersebut. Keanggotaan fuzzy memberikan suatu ukuran terhadap pendapatan atau keputusan, sedangkan probabilitas mengindikasikan proporsi terhadap keseringan suatu hasil bernilai benar dalam jangka panjang. Misalnya, jika nilai keanggotaan suatu himpunan fuzzy MUDA adalah 0,9; maka tidak perlu dipermasalahkan berapa seringnya nilai itu diulang secara individual untuk mengharapkan suatu hasil yang hampir pasti muda. Di lain pihak, nilai probabilitas 0,9 muda berarti 10% dari himpunan tersebut diharapkan tidak muda. Himpunan fuzzy memiliki 2 atribut, yaitu: 1. Linguistik, yaitu penamaan suatu grup yang mewakili suatu keadaan atau kondisi tertentu dengan menggunakan bahasa alami, seperti: MUDA, PAROBAYA, TUA. 2. Numeris, yaitu suatu nilai (angka) yang menunjukkan ukuran dari suatu variable seperti: 40, 25, 50, dsb. Ada beberapa hal yang perlu diketahui dalam memahami sistem fuzzy (Kusumadewi S, Purnomo H, 2010) yaitu: a. Variable fuzzy Variable fuzzy
merupakan variable yang hendak dibahas
dalam suatu sistem fuzzy. Contoh: umur, temperature, permintaan, dsb.
13
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
b. Himpunan fuzzy Himpunan fuzzy merupakan suatu grup yang mewakili suatu kondisi atau keadaan tertentu dalam suatu variable fuzzy. Contoh: Variable mahasiswa, terbagi menjadi 5 himpunan fuzzy, yaitu: kurang sekali, kurang, cukup, baik dan baik sekali. Seperti terlihat pada gambar 2.2.
Gambar 2. 2. Himpunan fuzzy pada variable mahasiswa c. Semesta Pembicaraan Semesta
pembicaraan
adalah
keseluruhan
nilai
yang
diperolehkan untuk dioperasikan dalam suatu variable fuzzy. Semesta pembicaraan merupakan himpunan bilangan real yang senantiasa naik (bertambah) secara monoton dari kiri ke kanan. Nilai semesta pembicaraan dapat berupa bilangan positif maupun negatif. Ada kalanya nilai semesta pembicaraan ini tidak dibatasi batas atasnya. Contoh: Semesta pembicaraan untuk variable mahasiswa: [0 50]. d. Domain
14
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Domain himpunan fuzzy adalah keseluruhan nilai yang diijinkan dalam semesta pembicaraan dan boleh dioperasikan dalam suatu himpunan fuzzy. Seperti halnya semesta pembicaraan, domain merupakan himpunan bilangan real yang senantiasa naik (bertambah) secara monoton dari kiri ke kanan. Nilai domain dapat berupa bilangan positif dan bilangan negatif. Contoh domain himpunan fuzzy: 1. Kurang sekali =[0 15] 2. Kurang
=[5 25]
3. Cukup
=[15 35]
4. Baik
=[25 45]
5. Baik sekali
=[35 50]
2.2.4. Fungsi Keanggotaan Fungsi keanggotaan (membership function)
adalah suatu kurva
yang menunjukkan pemetaan titik-titik input 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 (Kusumadewi S, Purnomo H, 2010). Ada beberapa fungsi yang bisa digunakan. a. Representasi Linear Pada
representasi
linear,
pemetaan
input
ke
derajat
keanggotaannya digambarkan sebagai suatu garis lurus. Bentuk ini paling sederhana dan menjadi pilihan yang baik untuk mendekati suatu konsep yang kurang jelas.
15
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Ada dua keadaan himpunan fuzzy yang linear. Pertama, kenaikan himpunan dimulai pada nilai domain yang memiliki derajat keanggotaan nol(0) bergerak ke kanan menuju ke nilai domain yang memiliki derajat keanggotaan lebih tinggi Seperti terlihat pada gambar 2.3.
Gambar 2. 3. Representasi linear naik Fungsi keanggotaan:
Kedua, merupakan kebalikan dari yang pertama. Garis lurus dimulai dari nilai domai dengan derajat keanggotaan tertinggi pada sisi kiri, kemudian bergerak menurun ke nilai domain yang memiliki derajat keanggotaan lebih rendah. Seperti terlihat pada gambar 2.4.
16
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Gambar 2. 4. Representasi linear turun Fungsi keanggotaan:
b. Representasi kurva segitiga Kurva segitiga pada dasarnya merupakan gabungan antara 2 garis (linear). Seperti pada gambar 2.5.
Gambar 2. 5. Representasi kurva trapezium Fungsi keanggotaan:
c. Representasi kurva trapezium
17
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Kurva Segitiga pada dasarnya seperti bentuk segitiga, hanya saja ada beberapa titik yang memiliki nilai keanggotaan 1. Seperti pada gambar 2.6.
Gambar 2. 6. Representasi kurva trapezium Fungsi keanggotaan:
d. Representasi kurva bahu Daerah yang terletak di tengah-tengah suatu variabel yang direpresentasikan dalam bentuk segitiga, pada sisi kanan dan kirinya akan naik dan turun (misalkan: DINGIN bergerak ke SEJUK bergerak ke HANGAT dan bergerak ke PANAS). Tetapi terkadang salah satu sisi dari variabel tersebut tidak mengalami perubahan. Sebagai contoh, apabila telah mencapai kondisi PANAS, kenaikan temperatur akan tetap berada pada kondisi PANAS. Himpunan fuzzy ‘bahu’, bukan segitiga, 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 variabel TEMPERATUR dengan daerah bahunya.
18
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Gambar 2. 7. Daerah ‘bahu’ pada variabel TEMPERATUR 2.2.5. Operator Dasar Zadeh Untuk Operasi Himpunan Fuzzy Seperti halya himpunan konvensional, ada beberapa operasi yang didefinisikan secara khusus untuk kombinasi dan modifikasi himpunan fuzzy. Nilai keanggotaan sebagai hasil dari operasi 2 himpunan sering dikenal dengan fire strength atau α-predikat. Ada 3 operator dasar yang diciptakan oleh Zadeh, yaitu: 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.
b. Operator OR Operator ini berhubungan dengan operasi union pada himpunan. Α-predikat sebagai hasil operasi dengan operator OP diperoleh dengan mengambil nilai keanggotaan terbesar antar elemen pada himpunan-himpunan yang bersangkutan.
c. Operator NOT
19
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Operator ini berhubungan dengan operasi komplemen pada himpunan. α-predikat sebagai hasil operasi dengan operator NOT diperoleh dengan mengurangkan nilai keanggotaan elemen pada himpunan yang bersangkutan dari 1.
2.3.
Fuzzy Database Basis data (database) merupakan kumpulan dari data yang saling berhubungan satu dengan yang lainnya, tersimpan di perangkat keras komputer dan digunakan perangkat lunak untuk memanipulasinya. Sistem basis data (database system) adalah suatu sistem informasi yang mengintegrasikan kumpulan data yang saling berhubungan satu dengan yang lainnya dan membuatnya tersedia untuk beberapa aplikasi dalam suatu organisasi. Sedangkan fuzzy database system adalah suatu sistem basis data yang menggunakan teori himpunan fuzzy dalam menghasilkan informasi (Efendi R, Ernawati, Hidayati R, 2014). Keuntungan fuzzy database sistem adalah sebagai berikut:
Fuzzy database memungkinkan penanganan data secara alami karena mengikuti pikiran manusia.
Digunakan logika fuzzy dalam melakukan pencarian data sehingga menghasilkan data yang sistematis.
Menyediakan lingkungan basis data untuk menangani data yang masih samar.
2.3.1. Basisdata Fuzzy Model Tahani Sebagian besar basis data standard diklarifikasikan berdasarkan bagaimana data tersebut dipandang oleh user. Basis data fuzzy model Tahani masih tetap menggunakan relasi standard, hanya saja model ini menggunakan teori himpunan fuzzy untuk mendapatkan informasi pada query-nya. Jadi, data awal yang diproses adalah data yang memiliki nilai crisp (pasti/ jelas keberadaannya), dan ketika akan melakukan proses pencarian data yang bersifat samar
20
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
maka proses tersebut yang dinamakan proses fuzzy query melalui fuzzy database model Tahani. Ide dari sistem fuzzy database model Tahani adalah mendefinisikan konsep dari relasi fuzzy dalam sebuah database sistem dengan menggunakan derajat keanggotaan. Contoh kasus yang dapat diselesaikan dengan fuzzy database model Tahani adalah aplikasi fuzzy database system model Tahani untuk memberikan rekomendasi pilihan HP bagi konsumen berdasarkan kriteria-kriteria yang dingiinkan oleh konsumen. Pada kasus tersebut, outlet HP memiliki data HP yang tersimpan pada tabel. Atribut yang ada pada setiap tipe HP berupa: harga, dimensi, berat, dan phonebook_memory; serta ada tidaknya fasilitas WAP (Efendi R, Ernawati, Hidayati R, 2014) seperti pada Tabel 2. Tabel 2. 1. Contoh Tabel DT_HP pada Outlet Penjualan HP
Jika dengan menggunakan basis data standard, kita dapat mencari data-data HP dengan spesifikasi tertentu dengan menggunakan query. Misal kita ingin mendapatkan informasi tentang tipe HP yang harganya kurang dari Rp. 1.000.000,- tetapi beratnya kurang
21
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
dari atau sama dengan 100 gram, maka kita bisa menuliskan suatu query: SELECT TYPE FROM DT_HP WHERE (Harga < 1000000) and (Berat ≤ 100). Sehingga muncul tipe HP T29s, sedangkan tipe HP T190 yang harganya kurang sari Rp. 1.000.000,- tidak terpilih padahal beda beratnya selisih 1 gram dari kriteria yang ditentukan. Disini berarti pada
basisdata
standard,
adanya
perubahan
kecil
saja
mengakibatkan perbedaan kategori yang cukup signifikan antara HP yang terpilih dan tidak terpilih. Agar konsumen lebih mudah dalam memberikan kriteria yang diinginkan, maka penyampaian informasi tentang kriteria suatu atribut direpresentasikan menggunakan bahasa sehari-hari/ variabel linguistik. Pada kasus penjualan HP, seorang konsumen ingin mencari informasi mengenai tipe HP yang sesuai dengan kriteria yang diinginkannya, adapun datanya menggunakan bahasa seharihari (bersifat samar). Pada basisdata fuzzy Tahani, awalnya dibentuk suatu himpunan fuzzy dengan fungsi keanggotaanya. Untuk menilai tipe HP yang diinginkan maka dibentuklah beberapa kategori yang perlu dipertimbangkan dengan himpunan yang memiliki pada masihmasing kriteria. Kriteria-kriteria tersebut adalah sebagai berikut: a. Harga HP (MURAH, SEDANG, dan MAHAL) b. Dimensi (KECIL, SEDANG, dan BESAR) c. Berat (RINGAN, SEDANG, dan BERAT) d. Phonebook memory (SEDIKIT, SEDANG, dan BANYAK) Misalkan kita mengkategorikan harga HP ke dalam himpunan: MURAH, SEDANG, dan MAHAL. Himpunan MURAH dan MAHAL menggunakan pendekatan fungsi keanggotaan berbentuk bahu, sedangkan himpunan SEDANG menggunakan pendekatan fungsi keanggotaan berbentuk segitiga. Fungsi keanggotaan harga HP terlihat pada gambar 2.6.
22
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Gambar 2. 8. Fungsi keanggotaan pada Variabel Harga Fungsi
keanggotaan
variabel
harga
dirumuskan
sebagai
berikut:
Misal ingin diketahui tipe HP apa saja yang harganya SEDANG, beratnya RINGAN, dan ada WAP. Maka, Structured Query language (SQL) yang dibentuk adalah: SELECT TYPE FROM DT_HP WHERE (harga=”sedang”) AND (berat = “RINGAN”) AND (WAP= TRUE) Karena variabel WAP bersifat non fuzzy, maka hanya ada 2 kemungkinan derajat keanggotaan, yaitu 1 apabila ada WAP, dan 0
23
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
apabila tidak ada WAP. Tabel 2.2 memperlihatkan fire strength sebagai hasil operasi dari (Harga SEDANG) AND (Berat RINGAN)
AND
(Ada
WAP)
sebagai:
µHargaSEDANGᴖBeratRINGANᴖAdaWAP
=
min(µHargaSEDANG[x1], µBeratRINGAN[x3], µAdaWAP[x5]). Tabel 2. 2. Fire Strength untuk query Harga Sedang, Berat RINGAN, Ada WAP
Tabel 2.2. memperlihatkan hasil pencarian terhadap Query 2. Ada 7 HP yang direkomendasi, dengan rekomendasi tertinggi adalah HP tipe SG 2000, dan rekomendasi terendah adalah HP tipe T29s. Sedangkan 8 tipe lainnya tidak direkomendasikan. 2.4.
Query Query adalah semacam kemampuan untuk menampilkan suatu data dari database dimana mengambil dari tabel-tabel yang ada di database, namun tabel tersebut tidak semua ditampilkan sesuai dengan yang kita inginkan. Data apa yang ingin kita tampilkan. Misal: data peminjam dengan buku yang dipinjam, maka nanti akan mengambil data dari tabel peminjam dan tabel buku.
24
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB III METODOLOGI PENELITIAN
3.1.
Gambaran Umum Penelitian yang dilakukan
bertujuan
untuk
untuk
memberikan
rekomendasi mobil sewa kepada calon penyewa berdasarkan kriteriakriteria seperti harga, tahun perakitan, kapasitas penumpang, ukuran, konsumsi bahan bakar, dan kondisi. Sistem pendukung keputusan pemilihan mobil sewa ini menggunakan metode fuzzy database model Tahani. Data yang dipakai adalah data mobil yang ada di penyewaan mobil daerah Yogyakarta. Nantinya
sistem diharapkan mampu
memberikan rekomendasi mobil yang sesuai dengan kriteria yang di masukan oleh pengguna. 3.2.
Desain Penelitian 3.2.1. Studi Literatur Studi literatur dilakukan dengan membaca buku, jurnal, serta sumber lain yang berkaitan dengan fuzzy database model Tahani. 3.2.2. Data - Data yang Digunakan Data yang digunakan adalah data mobil pada 2 tempat penyewaan mobil besar dan memiliki beberapa cabang di D.I.Y, yaitu Sabila Transport yang berlokasi di Jl.Gambir Anom No.9 dan Sewa Mobil yang terletak di Jl. Bantul km 10,5. Untuk kelengkapan data tentang spesifikasi mobil yang disewakan ada di STNK/BKPK. Tetapi ada beberapa unit mobil tidak berada di tempat atau sedang disewa. Maka untuk data mobil yang sedang disewa diambil dari website yang disediakan
oleh
pihak
http://www.sabilatransport.com/. -
Teknik Pengumpulan Data
25
penyewa,
yaitu
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Teknik pengumpulan data yang digunakan adalah wawancara dan pencarian di internet. Wawancara dilakukan dengan tanya jawab kepada pengurus penyewaan mobil tentang data mobil yang disewakan. Selain wawancara, dilakukan pencarian di internet untuk data mobil yang lebih spesifik. Karena ada beberapa
tempat
penyewaan
mobil
yang
tidak
bisa
memberikan informasi secara spesifik tentang mobil yang disewakan. 3.2.3. Perancangan Alat Uji Perancangan alat uji dalam penelitian ini menggunakan model waterfall. Berikut adalah beberapa tahapannya: -
Analisa Dalam tahap ini dilakukan analisa terhadap kebutuhan sistem. Seorang sistem analis bertugas dalam mencari informasi sebanyak mungkin dari user sehingga sistem yang dibuat sesuai dengan keinginan user. Tahapan ini biasanya akan menghasilkan
dokumen
user
requirement
yang
dapat
digunakan sistem analis untuk menerjemahkan ke dalam bahasa pemrograman. -
Desain Dalam tahap ini dilakukan proses membuat rancangan alat uji berdasarkan informasi dari tahap-tahap sebelumnya. Proses ini berfokus pada struktur data, arsitektur perangkat lunak, representasi interface, dan detail algoritma. Tahapan ini akan menghasilkan dokumen yang disebut software requirement. Dokumen ini yang digunakan seorang programmer untuk membangun sistemnya.
-
Pengkodean (Coding) Pengkodean merupakan tahap di mana perancangan yang telah dibuat pada tahap desain diterjemahkan ke dalam bahasa pemrograman pada komputer. Pengkodean menghasilkan alat
26
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
uji dalam bentuk perangkat lunak yang dibuat berdasarkan rancangan yang telah ada. -
Pengujian Pada tahap pengujian, alat uji berupa perangkat lunak diuji coba untuk mengetahui apakah perangkat lunak tersebut sudah sesuai dengan rancangan dan kebutuhan pengguna. Selain itu, pengujian dilakukan untuk menemukan kesalahan-kesalahan sistem yang kemudian akan diperbaiki.
3.3.
Spesifikasi Software dan Hardware Spesifikasi software dan hardware yang digunakan dalam implementasi sistem penentuan stok buku ini adalah sebagai berikut: a. Software -
Sistem Operasi yang digunakan adalah Microsoft Windows 7 32-bit.
-
Bahasa
pemrograman
yang
digunakan
adalah
bahasa
pemrograman Java dengan menggunakan aplikasi Netbeans. b. Hardware -
Processor yang digunakan adalah Intel(R) Core(TM) i3 CPU M 350 @ 2.27 GHz 2.27 GHz.
3.4.
Memory yaitu 2 GB.
Pengujian dan Evaluasi Sistem Pengujian dan evaluasi pada sistem adalah sebagai berikut: a. Pengujian Pengujian dilakukan dengan cara mengimplementasikan logika fuzzy kedalam sistem basis data. Kemudian dilakukan pencarian waktu proses eksekusi query setiap variabel dan dan table space yang digunakan untuk menyimpan data. b. Evaluasi Evaluasi dilakukan sesuai dengan tujuan dalam penelitian ini.
27
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB IV ANALISIS DAN PERANCANGAN SISTEM
4.1.
Analisa Kebutuhan 4.1.1. Analisa Sistem Sistem yang
akan
dibuat
bertujuan
untuk
memberikan
rekomendasi mobil sewa kepada calon penyewa berdasarkan kriteria-kriteria
seperti
harga,
tahun
perakitan,
kapasitas
penumpang, ukuran, konsumsi bahan bakar, dan kondisi. Sistem pendukung keputusan pemilihan mobil sewa ini menggunakan metode fuzzy database model Tahani. Data yang dipakai adalah data mobil yang ada di penyewaan mobil daerah Yogyakarta. Data-data mobil ini akan disimpan pada sebuah tabel di database. Setelah itu data akan diolah dengan metode fuzzy database model Tahani untuk menentukan fire-strength sesuai dengan kriteria yang diberikan. Pada akhirnya mobil dengan firestrength tertinggi lebih direkomedasikan untuk disewa. Sistem ini akan di implementasikan ke sebuah aplikasi berbasis desktop dengan menggunakan pemrograman berbasis java. Gambar 4.1 berisi tentang flowchart yang digunakan untuk memahami jalannya program.
28
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Start
Input Kriteria user
Proses
Ya Penentuan himpunan fuzzy
Penentuan fungsi keanggotaan
Tidak
Perhitungan firestrength
End
Gambar 4. 1. Flowchart sistem 4.1.2. Analisa Kebutuhan Pengguna 4.1.2.1.
Use Case Diagram System Kelola Data Mobil
Admin
Kelola Data Batas Himpunan
Pencarian Mobil
Pengguna
Rekomendasi Mobil
Gambar 4. 2. Use Case System
29
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Kelola Data Mobil
Insert
Update Admin
view
Delete
Gambar 4. 3. Package Kelola Data Mobil
Kelola Data Batas Himpunan
Insert
Update Admin
view
Delete
Gambar 4. 4. Package Kelola Data Batas Himpunan
30
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Rekomendasi Mobil
Perhitungan Derajat Keanggotaan
Pengguna
Perhitungan Firestrength
Gambar 4. 5. Package Rekomendasi Mobil Pada gambar 4.2., gambar 4.3, gambar 4.4., da gambar 4.5. direpresentasikan semua aktivitas yang dilakukan oleh pengguna dan admin pada sistem. Pengguna dalam sistem ini melakukan aktivitas seperti pencarian mobil dan rekomendasi mobil. Sedangkan admin melakukan aktivitas kelola data mobil dan kelola data batas himpunan. 4.1.2.2. Tabel Ringkasan Use Case Nama Use Case Keterangan Kelola Data Mobil
Pelaku
Use case ini merupakan Admin kumpulan
dari
beberapa
proses,
yaitu
insert
data
mobil,
view data mobil,
update data mobil, dan delete data mobil. Kelola Himpunan
Data
Batas Use case ini merupakan Admin kumpulan
dari
beberapa
proses, yaitu insert data batas himpunan fuzzy, view data batas
himpunan
fuzzy,
update data batas himpunan fuzzy,
31
dan
delete
batas
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
himpunan fuzzy. Pencarian Mobil
Use case ini merupakan Pengguna proses memasukkan kriteria mobil yang akan di sewa.
Rekomendasi Mobil
Use case ini merupakan Pengguna kumpulan
dari
beberapa
proses,
yaitu
derajat
keanggotaan
perhitungan
perhitungan dan
firestrength
sesuai dengan kriteria yang ditentukan.
4.1.3. Diagram Arus Data 4.1.3.1.
Diagram Konteks
Data Mobil
Admin
0 SYSTEM
Mobil Direkomendasi
Pengguna Kriteria Mobil
Batas Himp. Fuzzy
Gambar 4. 6. Diagram Konteks Sistem Diagram konteks untuk sistem ini seperti terlihat pada gambar 4.3 ada dua entitas luar yang berhubungan dengan sistem ini, yaitu: Admin dan pengguna. Admin adalah orang yang memiliki penyewaan atau orang yang berhak mengisi data ke sistem. Dari admin akan diperoleh batas himpunan fuzzy dan data mobil. Sedangkan pengguna akan mendapatkan layanan rekomendasi mobil sesuai dengan kriteria yang diinginkan.
32
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4.1.3.2.
Diagram Arus Data Level 1 Data Kriteria Mobil
Pengguna
Data Mobil
4 Pencarian Mobil
Data Mobil
Data Rekomendasi Mobil Derajat keanggotaan & fire strength
TDataMobil 3 Rekomendasi Mobil
Data mobil 1 Kelola Data Mobil
2 Kelola Data Batas Himpunan
Da him ta B p. atas fuz zy
TBatasHimp
s Bata Data fuzzy . himp
Ba tas fuz himp zy .
TMu
Data mobil
Admin
Gambar 4. 7. Diagram Arus Data Level 1 Diagram arus data level 1 untuk sistem ini seperti terlihat pada gambar 4.4. Diagram arus data level 1 terdiri dari 4 proses, yaitu proses kelola data mobil, proses kelola data batas himpunan, proses rekomendasi mobil, serta proses pencarian mobil. Pada proses kelola data mobil, data disimpan dan diambil dari tabel TDataMobil. Pada proses kelola data batas himpuna, data disimpan dan diambil dari tabel TbatasHimp. Pada proses pencarian mobil. Pengguna memasukan kriteria mobil yang diinginkan, dan kemudian akan mendapatkan satu atau lebih data mobil yang berkaitan dengan kriteria yang diinginkan. Setelah itu data akan masuk ke proses rekomendasi mobil dan hasilnya akan disimpan pada tabel TMu. Selain itu pada proses rekomendasi mobil akan mengambil data dari tabel TMu untuk menentukan seberapa besar nilai fire strength yang berguna sebagai acuan rekomendasi mobil untuk pengguna. Jika nilai fire strength
mendekati
nilai
33
1,
maka
akan
semakin
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
direkomendasikan dan sebaliknya apabila mendekati nilai 0, maka tidak direkomendasikan. 4.1.3.3.
Diagram Arus Data Level 2 Data Kriteria Mobil
Pengguna Data Rekomendasi Mobil
Data Mobil
Data Mobil
TDataMobil 3.1 Perhitungan derajat keanggotaan
3.2 Perhitungan Firestrength Data D kean erajat ggot aan
4 Pencarian Mobil
jat e ra a n D ta ota Da ngg a ke
TMu
Gambar 4. 8. Diagram Arus Data Proses Rekomendasi Mobil Diagram arus data level 2 untuk rekomendasi mobil sistem ini seperti terlihat pada gambar 4.5. Diagram arus data level 2 ini mendefinisikan proses rekomendasi mobil menjadi 2 proses, yaitu proses perhitungan derajat keanggotaan dan proses perhitungan
firestrength.
Proses
perhitungan
derajat
keanggotaan ini bertujuan memproses data mobil yang sudah disortir sesuai dengan kriteria sehingga menghasilkan nilai derajat keanggotaan dan disimpan ke tabel TMu. Sedangkan pada proses perhitungan firestrength, data diambil dari tabel TMu berupa data derajat keanggotaan yang kemudian akan diproses sehingga menghasilkan nilai fire strength.
34
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
TDataMobil
ob m
ob
ob il
il
1.3 Update Data Mobil
il
m
D
ta m
a at
Mo b
at a
D
Data
il
Da
1.1 Insert Data Mobil
1.4 Delete Data Mobil
il
il ob m at a D
il
ob
mo b
m ta
Da
Data
Da
ta m
ob
il
1.2 Check Data Mobil
Admin
Gambar 4. 9. Arus Data Proses Kelola Data Mobil Diagram arus data level 2 untuk kelola data mobil sistem ini seperti terlihat pada gambar 4.6. Diagram arus data level 2 ini mendefinisikan proses kelola data mobil menjadi 4 proses, yaitu proses insert data mobil, check data mobil, update data mobil, dan delete data mobil. Insert data mobil adalah proses memasukan data mobil ke tabel TDataMobil. Check data mobil hanya untuk melihat data mobil yang ada di tabel TDataMobil. Upadate data mobil untuk mengubah data mobil yang sudah ada di tabel TDataMobil. Delete data mobil untuk menghapus data mobil yang ada di tabel TDataMobil.
35
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
s Bata Data fuzzy . himp
TBatasHimp
2.2 Check Data Batas Himp. fuzzy
s ta y Ba zz a fu at . D i mp h
s Bata Data fuzzy . himp
s ta y Ba zz a fu at . D i mp h
2.3 Update Data Batas Himp. fuzzy
s ta y Ba zz a fu at . D i mp h
Da him ta B p. atas fuz zy
2.1 Insert Data Batas Himp. fuzzy
Data Batas himp. fuzzy Admin
tas Ba zzy a t Da p. fu him
2.4 Delete Data Batas Himp. fuzzy
Gambar 4. 10. Diagram Arus Data Proses Kelola Data Batas Himp. Fuzzy Diagram arus data level 2 untuk kelola data batas himp. fuzzy sistem ini seperti terlihat pada gambar 4.7. Diagram arus data level 2 ini mendefinisikan proses kelola data batas himpunan fuzzy menjadi 4 proses, yaitu proses insert data batas himp. fuzzy, check data batas himp. fuzzy, update data batas himp. fuzzy, dan delete data batas himp. fuzzy. Insert data batas himp. fuzzy untuk memasukan data batas himpunan fuzzy ke tabel TBatasHimp. check data batas himp. fuzzy untuk melihat data batas himpunan fuzzy yang ada di tabel TBatasHimp. Update data batas himp. fuzzy untuk mengubah data batas himpunan fuzzy yang ada di tabel TBatasHimp.
36
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4.1.4. Perancangan Basis data 4.1.4.1.
Perancangan Konseptual MKAPASITASP2 MKAPASITASP1
KAPASITAS_BBM
KAPASITAS_PENUMPANG
MUKURAN3
TINGGI
MKAPASITASP3
ID
MKAPASITASB1 MKAPASITASB2
HARGA
DATAMOBIL
(1.1)
MU
MKAPASITASB3
TAHUN MHARGA1 ID
PANJANG LEBAR
MTAHUN1
MHARGA2
NAMA
MTAHUN2 MUKURAN2
MHARGA3
MUKURAN1
BATAS
BATASHIMPUNAN
NILAI
Gambar 4. 11. Perancangan konseptual 4.1.4.2.
Perancangan Logikal TDataMobil TMu
PK
ID PK Nama Harga Panjang Lebar Tinggi Kapasitas_penumpang Kapasitas_bbm Tahun
Mharga1 Mharga2 Mharga3 Mukuran1 Mukuran2 Mukuran3 MkapasitasP1 MkapasitasP2 MkapasitasP3 MkapasitasBBM1 MkapasitasBBM2 MkapasitasBBM3 Mtahun1 Mtahun2
TBatasHimp PK
ID
Batas nilai
Gambar 4. 12. Perancangan Logikal 4.1.4.3. Perancangan Pisikal a. Tabel DataMobil
37
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Tabel DataMobil digunakan untuk menyimpan data-data tentang atribut, harga serta spesifikasi mobil, struktur tabel DataMobil dapat dilihat pada tabel 4.1. Tabel 4. 1. Tabel Data Mobil Nama Field
Type Data
Lebar
Keterangan
Id*
varchar2
20
Id Kendaraan
Nama
varchar2
20
Nama kendaraan
Harga
number
Harga sewa kendaraan
Kapasitas BBM
number
Kapasitas BBM
Panjang
number
Panjang kendaraan
Lebar
number
Lebar kendaraan
Tinggi
number
Tinggi kendaraan
Kapasitas penumpang
number
Kapasitas kendaraan
Tahun
number
Tahun keluaran kendaraan
*) Kunci Primer b. Tabel BatasHimpunan Tabel BatasHimpunan digunakan untuk menyimpan data-data batas himpunan-himpunan fuzzy, struktur tabel BatasHimpunan dapat dilihat pada tabel 4.2. Tabel 4. 2. Tabel Batas Himpunan Nama Field
Type Data
Lebar
Keterangan
Batas*
varchar2
20
Nama batas suatu himpunan fuzzy
nilai
number
38
nilai batas suatu
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
himpunan fuzzy
*) Kunci Primer c. Tabel Mu Tabel Mu digunakan untuk menyimpan data-data tentang derajat keanggotaan suatu kriteria mobil tertentu pada himpunan fuzzy tertentu, struktur tabel Mu dapat dilihat pada tabel 4.3. Tabel 4. 3. Tabel Mu Nama Field
Type Data
Lebar
Keterangan
Id*
varchar2
20
Id kendaraan
Mharga1
number
Derajat keanggotaan untuk harga di himp.MURAH
Mharga2
number
Derajat keanggotaan untuk harga di himp.SEDANG
Mharga3
number
Derajat keanggotaan untuk harga di himp.MAHAL
Mukuran1
number
Derajat keanggotaan untuk kondisi di himp.KECIL
Mukuran2
number
Derajat keanggotaan untuk kondisi di himp.NORMAL
39
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Mukuran3
number
Derajat keanggotaan untuk kondisi di himp.BESAR
MkapasitasP1
number
Derajat keanggotaan untuk kondisi di himp.SEDIKIT
MkapasitasP2
number
Derajat keanggotaan untuk kondisi di himp.SEDANG
MkapasitasP3
number
Derajat keanggotaan untuk kondisi di himp.BANYAK
MkapasitasB1
number
Derajat keanggotaan untuk kondisi di himp.SEDIKIT
MkapasitasB2
number
Derajat keanggotaan untuk kondisi di himp.SEDANG
MkapasitasB3
number
Derajat keanggotaan untuk kondisi di himp.BANYAK
Mtahun1
number
Derajat keanggotaan untuk tahun di himp.LAMA
Mtahun2
number
Derajat keanggotaan untuk tahun di himp.BARU
40
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4.1.5. Penerapan Contoh Perhitungan Data-data yang ada berupa 8, maka peneliti mecoba melakukan perhitungan manual sesuai dengan metode fuzzy database model Tahani. Langkah-langkah perhitungan manual, sebagai berikut : Diketahui : Tabel 4. 4. Data Mobil Id*
Nama
Harga
1
Brio satya type e 300000
2
Jazz
3
Panj ang
Leba Tinggi r
Kapas itas penu mpan g
Kapas itas BBM
Tahun
3610 1680 1485
5
35
2013
300000
3845 1675 1525
5
42
2007
Jazz vtec
300000
3845 1675 1525
5
42
2008
4
Avanza 1.3 VVTi
250000
4120 1630 1695
8
45
2008
5
Avanza 1.3g
300000
4140 1660 1695
8
45
2010
6
Yaris
300000
3750 1695 1520
5
42
2009
7
Swift
300000
3755 1690 1510
5
45
2010
8
Splash
300000
3715 1680 1618
5
43
2010
4.1.5.1. Fungsi Keanggotaan a. Variabel Harga Variabel harga dibagi menjadi 3 himpunan fuzzy,yaitu MURAH, NORMAL, dan MAHAL. Himpunan MURAH dan MAHAL menggunakan pendekatan fungsi keanggotaan yang berbentuk
bahu,
sedangkan 41
himpunan
NORMAL
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
menggunakan pendekatan fungsi keanggotaan berbentuk segitiga.
Gambar 4. 13. Fungsi keanggotaan pada Variabel Harga Fungsi keanggotaannya:
b. Variabel Ukuran Variabel ukuran merupakan variabel yang diperngaruhi oleh tiga variabel lainnya, yaitu: variabel panjang, lebar, dan tinggi. 1. Variabel Panjang
42
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Variabel panjang dibagi menjadi tiga himpunan fuzzy, yaitu: PENDEK, SEDANG, dan PANJANG. Himpunan PENDEK dan PANJANG menggunakan pendekatan fungsi keanggotaan yang berbentuk bahu, sedangkan himpunan NORMAL menggunakan pendekatan fungsi keanggotaan berbentuk segitiga.
Gambar 4. 14. Fungsi Keanggotaan pada Variabel Panjang Fungsi keanggotaannya:
2. Variabel Lebar Variabel lebar dibagi menjadi tiga himpunan fuzzy, yaitu: SEMPIT, SEDANG, dan LEBAR. Himpunan SEMPIT dan LEBAR menggunakan pendekatan fungsi keanggotaan
43
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
yang berbentuk bahu, sedangkan himpunan NORMAL menggunkan pendekatan fungsi keanggotaan berbentuk segitiga.
Gambar 4. 15. Fungsi keanggotaan pada Variabel Lebar Fungsi keanggotaanya:
3. Variabel Tinggi Variabel tinggi dibagi menjadi tiga himpunan fuzzy, yaitu: PENDEK, SEDANG, dan TINGGI. Himpunan PENDEK dan TINGGI menggunakan pendekatan fungsi keanggotaan yang berbentuk bahu, sedangkan himpunan NORMAL menggunakan pendekatan fungsi keanggotaan berbentuk segitiga.
44
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Gambar 4. 16. Fungsi keanggotaan pada Varabel Tinggi Fungsi keanggotaanya:
Variabel ukuran, dibagi menjadi tiga himpunan, yaitu: KECIL, NORMAL, dan BESAR. Meskipun variabel Panjang, Lebar, dan Tinggi masing-masing terbagi atas tiga himpunan fuzzy, namun untuk mengkategorikan suatu mobil masuk dalam salah satu himpunan (KECIL, NORMAL, atau BESAR) tidak memerlukan inferensi dari himpunan-himpunan pada variabel panjang, lebar, dan tinggi. Pembagian ketiga variabel menjadi himpunanhimpunan,
hanya
diperlukan
untuk
memudahkan
pengambilan batas fungsi keanggotaan pada variabel ukuran.
45
dalam
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Himpunan KECIL, memiliki fungsi keanggotaan berbentuk bahu kiri, dengan nilai batas bawah diperoleh dari hasil perkalian batas bawah himpunan PENDEK (pada variabel panjang), SEMPIT (pada variabel lebar), dan PENDEK (pada variabel tinggi). Sedangkan nilai batas atas diperoleh dari hasil perkalian batas atas himpunan PENDEK (pada variabel panjang), SEMPIT (pada variabel lebar), dan PENDEK (pada variabel tinggi). Himpunan NORMAL, memiliki fungsi keanggotaan berbentuk segitiga, dengan nilai batas bawah diperoleh dari hasil perkalian batas bawah himpunan SEDANG (pada variabel panjang), NORMAL (pada variabel lebar), dan SEDANG (pada variabel tinggi). Sedangkan nilai batas atas diperoleh dari hasil perkalian batas atas himpunan SEDANG (pada variabel panjang), NORMAL (pada variabel lebar), dan SEDANG (pada variabel tinggi). Himpunan BESAR, memiliki fungsi keanggotaan berbentuk bahu kanan, dengan nilai batas bawah diperoleh dari hasil perkalian batas bawah himpunan PANJANG (pada variabel panjang), LEBAR (pada variabel lebar), dan TINGGI (pada variabel tinggi). Sedangkan nilai batas atas diperoleh dari hasil perkalian batas atas himpunan PANJANG (pada variabel panjang), LEBAR (pada variabel lebar), dan TINGGI (pada variabel tinggi).
Gambar 4. 17. Fungsi keanggotaan pada Variabel Ukuran Fungsi keanggotaannya:
46
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
c. Variabel Kapasitas BBM Variabel kapasitas BBM dibagi menjadi tiga himpunan fuzzy, yaitu SEDIKIT, SEDANG, dan BANYAK. Himpunan SEDIKIT dan BANYAK menggunakan pendekatan fungsi keanggotaan yang berbentuk bahu, sedangkan himpunan SEDANG menggunakan pendekatan fungsi keanggotaan berbentuk segitiga.
Gambar 4. 18. Fungsi keanggotaan pada Variabel Kapasitas BBM Fungsi keanggotaannya:
47
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
d. Variabel Kapasitas penumpang Variabel kapasitas penumpang dibagi menjadi tiga himpunan fuzzy, yaitu SEDIKIT, SEDANG, dan BANYAK. Himpunan SEDIKIT dan BANYAK menggunakan pendekatan fungsi keanggotaan yang berbentuk bahu, sedangkan himpunan SEDANG menggunakan pendekatan fungsi keanggotaan berbentuk segitiga.
Gambar 4. 19. Fungsi keanggotaan pada Variabel Kapasitas penumpang Fungsi keanggotaannya:
48
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
e. Variabel Tahun Variabel Tahun dibagi menjadi dua himpunan fuzzy, yaitu BARU
dan
LAMA.
Himpunan
BARU
dan
LAMA
menggunakan pendekatan fungsi keanggotaan yang berbentuk bahu.
Gambar 4. 20. Fungsi keanggotaan pada Variabel Tahun Fungsi Keanggotaannya:
49
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4.1.5.2. Query 1 Ingin diketahui, mobil apa saja yang memiliki kriteria harga MURAH, ukuran BESAR, kapasitas penumpang BANYAK, kapasitas BBM SEDANG, dan tahun LAMA. Mobil apakah yang akan direkomendasikan ? SELECT a.Nama, a.Harga, b.Mu FROM DataMobil a, Mu b where ((((a.Harga=’MURAH’)) and (Ukuran=’BESAR’)) and (a.Kapasitas_penumpang=’BANYAK’))
and
(a.kapasitas_BBM=’SEDANG’)) Order by b.Mu DESC, a.Harga ASC Tabel 4. 5. Nilai Derajat Keanggotaan pada setiap Himpunan Id* Nama
Derajat Keanggotaan
Harga Ukuran MURAH KECIL
Kapasitas Penumpang BANYAK
Kapasitas BBM SEDANG
1
Brio satya type e
1
0,69496139 0
0
2
Jazz
1
0,51809721 0
0,466667
3
Jazz vtec
1
0,51809721 0
0,466667
4
Avanza 1.3 VVTi
1,5
0,17940521 1
0,666667
5
Avanza 1.3g
1
0,12175315 1
0,666667
6
Yaris
1
0,55281996 0
0
7
Swift
1
0,56998167 0
0,666667
8
Splash
1
0,45807774 0
0,533333
Hasil Pencarian Query 1 bisa dilihat pada tabel 3.6.
50
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Tabel 4. 6. Fire strength Nama
Harga
Rekomendasi
Avanza 1.3 VVTi
250000
0,179405206
Avanza 1.3g
300000
0,121753145
Brio satya type e
300000
0
Jazz
300000
0
Jazz vtec
300000
0
Yaris
300000
0
Swift
300000
0
Splash
300000
0
Jadi mobil yang paling direkomendasikan sesuai dengan kriteria adalah mobil dengan nama Avanza 1.3 VVTi. 4.2.
Perancangan Antar Muka 4.2.1. Perancangan Halaman Awal HOME PENCARIAN
DATA MOBIL
BATAS HIMPUNAN
PENERAPAN FUZZY DATABASE MODEL TAHANI DALAM SISTEM PENDUKUNG KEPUTUSAN PEMILIHAN MOBIL SEWA
Gambar 4. 21. Desaign Halaman Home Admin
51
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4.2.2. Perancangan Halaman Pencarian
Gambar 4. 22. Desaign Halaman Pencarian Tab Fuzzy Admin
Gambar 4. 23. Desaign Halaman Pencarian Tab Fuzzy Pengguna
52
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Gambar 4. 24. Desaign Halaman Pencarian Tab Tegas Admin
Gambar 4. 25. Desaign Halaman Pencarian Tab Tegas Pengguna
53
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4.2.3. Perancangan Halaman Data Mobil
Gambar 4. 26. Desaign Halamn Data Mobil Admin
Gambar 4. 27. Desaign Halaman Data Mobil Pengguna
54
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4.2.4. Perancangan Halaman Batas Himpunan
Gambar 4. 28. Desaign Halaman Batas Himpunan Admin
55
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB V IMPEMENTASI DAN ANALISA HASIL
5.1. Implementasi Perancangan sistem yang sudah dilakukan selanjutnya diimpleentasikan ke dalam
program.
Program
dibuat
dengan
menggunakan
bahasa
pemrograman Java. 5.1.1. Implementasi Fungsi Keanggotaan Harga Murah public void MhargaMurah() throws SQLException { PreparedStatement st = null; PreparedStatement st2 = null; PreparedStatement st3 = null; PreparedStatement st4 = null; ResultSet rs = null; ResultSet rs2 = null; ResultSet rs3 = null; ResultSet rs4 = null; try { conn.setAutoCommit(false); st
=
conn.prepareStatement("select
datamobil"); rs = st.executeQuery(); String id = ""; double m = 0;
56
id,harga
from
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
while (rs.next()) { id = rs.getString("id"); int h = rs.getInt("harga"); String tamp = ""; st3 = conn.prepareStatement("Select id from mu where id='" + id + "'"); rs3 = st3.executeQuery(); while (rs3.next()) { tamp = rs3.getString("id"); System.out.println("Masuk"); } if (tamp.equals("")) { System.out.println(id); System.out.println(h); if (h <= bHargaMurahA()) { st2
=
conn.prepareStatement("INSERT
INTO
MU(ID, MHARGA1) VALUES (?, '1')"); st2.setString(1, id); st2.executeUpdate(); } else if (h >= bHargaMurahB()) { st2
=
conn.prepareStatement("INSERT
MU(ID, MHARGA1) VALUES (?, '0')");
57
INTO
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
st2.setString(1, id); st2.executeUpdate(); } else { m = (bHargaMurahB() - h); m = m / (bHargaMurahB() - bHargaMurahA()); st2
=
conn.prepareStatement("INSERT
INTO
MU(ID, MHARGA1) VALUES (?, ?)"); st2.setString(1, id); st2.setDouble(2, m); st2.executeUpdate(); } } else { System.out.println("Data sudah ada"); if (h <= bHargaMurahA()) { st4
=
conn.prepareStatement("update
mu
set
mu
set
MHARGA1='1' where id=?"); st4.setString(1, id); st4.executeUpdate(); } else if (h >= bHargaMurahB()) { st4
=
conn.prepareStatement("update
MHARGA1='0' where id=?"); st4.setString(1, id);
58
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
st4.executeUpdate(); } else if (tamp.equals(id)) { m = (bHargaMurahB() - h); m = m / (bHargaMurahB() - bHargaMurahA()); st4
=
conn.prepareStatement("update
MHARGA1=? where id=?"); st4.setDouble(1, m); st4.setString(2, id); st4.executeUpdate(); } } } conn.commit(); } catch (SQLException ex) { conn.rollback(); throw ex; } finally { try { conn.setAutoCommit(true); if (st != null) { st.close(); }
59
mu
set
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
} catch (SQLException ex) { throw ex; } } }
Listing program di atas digunakan untuk mencari derajat keanggotaan untuk fungsi keanggotaan himpunan murah pada variabel harga. Data dari database akan diolah sesuai dengan fungsi keanggotaan murah pada varibel harga. 5.1.2. Implementasi Fungsi Keanggotaan Harga Sedang public void MhargaSedang() throws SQLException { PreparedStatement st = null; PreparedStatement st2 = null; PreparedStatement st3 = null; PreparedStatement st4 = null; ResultSet rs = null; ResultSet rs2 = null; ResultSet rs3 = null; ResultSet rs4 = null; try { conn.setAutoCommit(false); st
=
conn.prepareStatement("select
60
id,harga
from
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
datamobil"); rs = st.executeQuery(); String id = ""; double m = 0; while (rs.next()) { id = rs.getString("id"); int h = rs.getInt("harga"); String tamp = ""; st3 = conn.prepareStatement("Select id from mu where id='" + id + "'"); rs3 = st3.executeQuery(); while (rs3.next()) { tamp = rs3.getString("id"); System.out.println("Masuk"); } if (tamp.equals("")) { System.out.println(id); System.out.println(h); if
(h
>=
bHargaNormalA()
&&
h
bHargaNormalB()) { m = (h - bHargaNormalA()); m = m / (bHargaNormalB() - bHargaNormalA());
61
<=
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
st2
=
conn.prepareStatement("INSERT
INTO
MU(ID, MHARGA2) VALUES (?, ?)"); st2.setString(1, id); st2.setDouble(2, m); st2.executeUpdate(); } else if (h >= bHargaNormalB() && h <= bHargaNormalC()) { m = (bHargaNormalC() - h); m = m / (bHargaNormalC() - bHargaNormalB()); st2
=
conn.prepareStatement("INSERT
INTO
MU(ID, MHARGA2) VALUES (?, ?)"); st2.setString(1, id); st2.setDouble(2, m); st2.executeUpdate(); } else { st2
=
conn.prepareStatement("INSERT
INTO
MU(ID, MHARGA2) VALUES (?, '0')"); st2.setString(1, id); st2.executeUpdate(); } } else { System.out.println("Data sudah ada"); if
(h
>=
62
bHargaNormalA()
&&
h
<=
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
bHargaNormalB()) { m = (h - bHargaNormalA()); m = m / (bHargaNormalB() - bHargaNormalA()); st2
=
conn.prepareStatement("update
mu
set
MHARGA2=? where id=?"); st2.setDouble(1, m); st2.setString(2, id); st2.executeUpdate(); } else if (h >= bHargaNormalB() && h <= bHargaNormalC()) { m = (bHargaNormalC() - h); m = m / (bHargaNormalC() - bHargaNormalB()); st2
=
conn.prepareStatement("update
mu
set
mu
set
MHARGA2=? where id=?"); st2.setDouble(1, m); st2.setString(2, id); st2.executeUpdate(); } else { st2
=
conn.prepareStatement("update
MHARGA2='0' where id=?"); st2.setString(1, id); st2.executeUpdate(); }
63
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
} } conn.commit(); } catch (SQLException ex) { conn.rollback(); throw ex; } finally { try { conn.setAutoCommit(true); if (st != null) { st.close(); } } catch (SQLException ex) { throw ex; } } } Listing program di atas digunakan untuk mencari derajat keanggotaan untuk fungsi keanggotaan himpunan sedang pada variabel harga. Data dari database akan diolah sesuai dengan fungsi keanggotaan sedang pada varibel harga. 5.1.3. Implementasi Fungsi Keanggotaan Harga Mahal public void MhargaMahal() throws SQLException {
64
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PreparedStatement st = null; PreparedStatement st2 = null; PreparedStatement st3 = null; PreparedStatement st4 = null; ResultSet rs = null; ResultSet rs2 = null; ResultSet rs3 = null; ResultSet rs4 = null; try { conn.setAutoCommit(false); st
=
conn.prepareStatement("select
id,harga
from
datamobil"); rs = st.executeQuery(); String id = ""; while (rs.next()) { id = rs.getString("id"); int h = rs.getInt("harga"); String tamp = ""; st3 = conn.prepareStatement("Select id from mu where id='" + id + "'"); rs3 = st3.executeQuery(); double m = 0;
65
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
while (rs3.next()) { tamp = rs3.getString("id"); System.out.println("Masuk"); } if (tamp.equals("")) { System.out.println(id); System.out.println(h); if (h <= bHargaMahalA()) { st2
=
conn.prepareStatement("INSERT
INTO
MU(ID, MHARGA3) VALUES (?, '0')"); st2.setString(1, id); st2.executeUpdate(); } else if (h >= bHargaMahalB()) { st2
=
conn.prepareStatement("INSERT
INTO
MU(ID, MHARGA3) VALUES (?, '1')"); st2.setString(1, id); st2.executeUpdate(); } else { m = (h - bHargaMahalA()); m = m / (bHargaMahalB() - bHargaMahalA()); st2
=
conn.prepareStatement("INSERT
MU(ID, MHARGA3) VALUES (?, ?)");
66
INTO
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
st2.setString(1, id); st2.setDouble(2, m); st2.executeUpdate(); } } else { System.out.println("Data sudah ada"); if (h <= bHargaMahalA()) { st2
=
conn.prepareStatement("update
mu
set
mu
set
MHARGA3='0' where id=?"); st2.setString(1, id); st2.executeUpdate(); } else if (h >= bHargaMahalB()) { st2
=
conn.prepareStatement("update
MHARGA3='1' where id=?"); st2.setString(1, id); st2.executeUpdate(); } else { m = (h - bHargaMahalA()); m = m / (bHargaMahalB() - bHargaMahalA()); st2
=
conn.prepareStatement("update
MHARGA3=? where id=?"); st2.setDouble(1, m);
67
mu
set
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
st2.setString(2, id); st2.executeUpdate(); } } } conn.commit(); } catch (SQLException ex) { conn.rollback(); throw ex; } finally { try { conn.setAutoCommit(true); if (st != null) { st.close(); } } catch (SQLException ex) { throw ex; } } } Listing program di atas digunakan untuk mencari derajat keanggotaan untuk fungsi keanggotaan himpunan mahal pada variabel harga. Data dari
68
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
database akan diolah sesuai dengan fungsi keanggotaan mahal pada varibel harga. 5.1.4. Implementasi Fungsi Keanggotaan Ukuran Kecil public void MUkurangKecil() throws SQLException { PreparedStatement st = null; PreparedStatement st2 = null; PreparedStatement st3 = null; PreparedStatement st4 = null; ResultSet rs = null; ResultSet rs2 = null; ResultSet rs3 = null; ResultSet rs4 = null; try { conn.setAutoCommit(false); st = conn.prepareStatement("select id from datamobil"); rs = st.executeQuery(); String id = ""; double tamp = 0; double batasA = 0; double batasB = 0; double m = 0; while (rs.next()) {
69
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
id = rs.getString("id"); st3 = conn.prepareStatement("Select id from mu where id='" + id + "'"); rs3 = st3.executeQuery(); String i = ""; while (rs3.next()) { i = rs3.getString("id"); } tamp
=
MpanjangPendek(id)
*
MlebarSempit(id)
*
*
bTinggiPendekA()
/
*
bTinggiPendekB()
/
MtinggiPendek(id) / Math.pow(10, 9); batasA
=
bPanjangPendekA()
Math.pow(10, 9); batasA = batasA * bLebarSempitA(); batasB
=
bPanjangPendekB()
Math.pow(10, 9); batasB = batasB * bLebarSempitB();
System.out.println(tamp); System.out.println("PA" + bPanjangPendekA()); System.out.println("LA" + bLebarSempitA()); System.out.println("TA" + bTinggiPendekA()); System.out.println("PB" + bPanjangPendekB()); System.out.println("LB" + bLebarSempitB());
70
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
System.out.println("TB" + bTinggiPendekB()); System.out.println(batasA); System.out.println(batasB); if (i.equals("")) { if (tamp <= batasA) { st2 = conn.prepareStatement("INSERT INTO MU(ID, MUKURAN1) VALUES (?, '1')"); st2.setString(1, id); st2.executeUpdate(); } else if (tamp >= batasB) { st2 = conn.prepareStatement("INSERT INTO MU(ID, MUKURAN1) VALUES (?, '0')"); st2.setString(1, id); st2.executeUpdate(); } else { m = (batasB - tamp); m = m / (batasB - batasA); st2 = conn.prepareStatement("INSERT INTO MU(ID, MUKURAN1) VALUES (?, ?)"); st2.setString(1, id); st2.setDouble(2, m); st2.executeUpdate();
71
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
} } else { System.out.println(tamp); System.out.println("PA" + bPanjangPendekA()); System.out.println("LA" + bLebarSempitA()); System.out.println("TA" + bTinggiPendekA()); System.out.println("PB" + bPanjangPendekB()); System.out.println("LB" + bLebarSempitB()); System.out.println("TB" + bTinggiPendekB()); System.out.println(batasA); System.out.println(batasB); if (tamp <= batasA) { st2
=
conn.prepareStatement("update
mu
set
mu
set
MUKURAN1='1' where id=?"); st2.setString(1, id); st2.executeUpdate(); } else if (tamp >= batasB) { st2
=
conn.prepareStatement("update
MUKURAN1='0' where id=?"); st2.setString(1, id); st2.executeUpdate(); } else {
72
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
m = (batasB - tamp); m = m / (batasB - batasA); st2
=
conn.prepareStatement("update
MUKURAN1=? where id=?"); st2.setDouble(1, m); st2.setString(2, id); st2.executeUpdate(); } } } conn.commit(); } catch (SQLException ex) { conn.rollback(); throw ex; } finally { try { conn.setAutoCommit(true); if (st != null) { st.close(); } } catch (SQLException ex) { throw ex;
73
mu
set
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
} } } Listing program di atas digunakan untuk mencari derajat keanggotaan untuk fungsi keanggotaan himpunan kecil pada variabel ukuran. Data dari database akan diolah sesuai dengan fungsi keanggotaan kecil pada varibel ukuran. 5.1.5. Implementasi Fungsi Keanggotaan Ukuran Normal public void MUkurangNormal() throws SQLException { PreparedStatement st = null; PreparedStatement st2 = null; PreparedStatement st3 = null; PreparedStatement st4 = null; ResultSet rs = null; ResultSet rs2 = null; ResultSet rs3 = null; ResultSet rs4 = null; try { conn.setAutoCommit(false); st = conn.prepareStatement("select id from datamobil"); rs = st.executeQuery(); String id = ""; double tamp = 0;
74
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
double batasA = 0; double batasB = 0; double batasC = 0; double m = 0; while (rs.next()) { id = rs.getString("id"); st3 = conn.prepareStatement("Select id from mu where id='" + id + "'"); rs3 = st3.executeQuery(); String i = ""; while (rs3.next()) { i = rs3.getString("id"); } tamp
=
MpanjangSedang(id)
*
MlebarSedang(id)
*
MtinggiSedang(id) / Math.pow(10, 9); batasA = bPanjangSedangA() * bLebarSedangA() / Math.pow(10, 9); batasA = batasA * bTinggiSedangA(); batasB = bPanjangSedangB() * bLebarSedangB() / Math.pow(10, 9); batasB = batasB * bTinggiSedangB(); batasC = bPanjangSedangC() * bLebarSedangC() / Math.pow(10, 9);
75
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
batasC = batasC * bTinggiSedangC(); System.out.println(tamp); if (i.equals("")) { if (tamp <= batasB && tamp >= batasA) { m = (tamp - batasA); m = m / (batasB - batasA); st2 = conn.prepareStatement("INSERT INTO MU(ID, MUKURAN2) VALUES (?, ?)"); st2.setString(1, id); st2.setDouble(2, m); st2.executeUpdate(); } else if (tamp >= batasB && tamp <= batasC) { m = (batasC - tamp); m = m / (batasC - batasB); st2 = conn.prepareStatement("INSERT INTO MU(ID, MUKURAN2) VALUES (?, ?)"); st2.setString(1, id); st2.setDouble(2, m); st2.executeUpdate(); } else { st2 = conn.prepareStatement("INSERT INTO MU(ID, MUKURAN2) VALUES (?, '0')");
76
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
st2.setString(1, id); st2.executeUpdate(); } } else { if (tamp <= batasB && tamp >= batasA) { m = (tamp - batasA); m = m / (batasB - batasA); st2 = conn.prepareStatement("update mu set MUKURAN2=? where id=?"); st2.setDouble(1, m); st2.setString(2, id); st2.executeUpdate(); } else if (tamp >= batasB && tamp <= batasC) { m = (batasC - tamp); m = m / (batasC - batasB); st2 = conn.prepareStatement("update mu set MUKURAN2=? where id=?"); st2.setDouble(1, m); st2.setString(2, id); st2.executeUpdate(); } else { st2
=
conn.prepareStatement("update
77
mu
set
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
MUKURAN2='0' where id=?"); st2.setString(1, id); st2.executeUpdate(); } } } conn.commit(); } catch (SQLException ex) { conn.rollback(); throw ex; } finally { try { conn.setAutoCommit(true); if (st != null) { st.close(); } } catch (SQLException ex) { throw ex; } } }
78
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Listing program di atas digunakan untuk mencari derajat keanggotaan untuk fungsi keanggotaan himpunan normal pada variabel ukuran. Data dari database akan diolah sesuai dengan fungsi keanggotaan normal pada varibel ukuran. 5.1.6. Implementasi Fungsi Keanggotaan Ukuran Besar public void MUkurangBesar() throws SQLException { PreparedStatement st = null; PreparedStatement st2 = null; PreparedStatement st3 = null; PreparedStatement st4 = null; ResultSet rs = null; ResultSet rs2 = null; ResultSet rs3 = null; ResultSet rs4 = null; try { conn.setAutoCommit(false); st = conn.prepareStatement("select id from datamobil"); rs = st.executeQuery(); String id = ""; double tamp = 0; double batasA = 0; double batasB = 0; double m = 0;
79
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
while (rs.next()) { id = rs.getString("id"); st3 = conn.prepareStatement("Select id from mu where id='" + id + "'"); rs3 = st3.executeQuery(); String i = ""; while (rs3.next()) { i = rs3.getString("id"); } tamp
=
MpanjangPanjang(id)
*
MlebarLebar(id)
*
MtinggiTinggi(id) / Math.pow(10, 9); batasA = bPanjangPanjangA() * bLebarLebarA() / Math.pow(10, 9); batasA = batasA * bTinggiTinggiA(); batasB = bPanjangPanjangB() * bLebarLebarB() / Math.pow(10, 9); batasB = batasB * bTinggiTinggiB(); System.out.println(tamp); if (i.equals("")) { if (tamp <= batasA) { st2
=
conn.prepareStatement("INSERT
MUKURAN3) VALUES (?, '0')"); st2.setString(1, id);
80
INTO
MU(ID,
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
st2.executeUpdate(); } else if (tamp >= batasB) { st2
=
conn.prepareStatement("INSERT
INTO
MU(ID,
INTO
MU(ID,
MUKURAN3) VALUES (?, '1')"); st2.setString(1, id); st2.executeUpdate(); } else { m = (tamp - batasA); m = m / (batasB - batasA); st2
=
conn.prepareStatement("INSERT
MUKURAN3) VALUES (?, ?)"); st2.setString(1, id); st2.setDouble(2, m); st2.executeUpdate(); } } else { if (tamp <= batasA) { st2 = conn.prepareStatement("update mu set MUKURAN3='0' where id=?"); st2.setString(1, id); st2.executeUpdate(); } else if (tamp >= batasB) { st2 = conn.prepareStatement("update mu set MUKURAN3='1'
81
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
where id=?"); st2.setString(1, id); st2.executeUpdate(); } else { m = (tamp - batasA); m = m / (batasB - batasA); st2 = conn.prepareStatement("update mu set MUKURAN3=? where id=?"); st2.setDouble(1, m); st2.setString(2, id); st2.executeUpdate(); } } } conn.commit(); } catch (SQLException ex) { conn.rollback(); throw ex; } finally { try { conn.setAutoCommit(true); if (st != null) {
82
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
st.close(); } } catch (SQLException ex) { throw ex; } } } Listing program di atas digunakan untuk mencari derajat keanggotaan untuk fungsi keanggotaan himpunan besar pada variabel ukuran. Data dari database akan diolah sesuai dengan fungsi keanggotaan besar pada varibel ukuran. 5.1.7. Implementasi Fungsi Keanggotaan Kapasitas Penumpang Sedikit public void MKapasitasPenumpangSedikit() throws SQLException { PreparedStatement st = null; PreparedStatement st2 = null; PreparedStatement st3 = null; PreparedStatement st4 = null; ResultSet rs = null; ResultSet rs2 = null; ResultSet rs3 = null; ResultSet rs4 = null; try { conn.setAutoCommit(false);
83
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
st = conn.prepareStatement("select id,kapasitas_penumpang from datamobil"); rs = st.executeQuery(); String id = ""; double m = 0; while (rs.next()) { id = rs.getString("id"); int h = rs.getInt("kapasitas_penumpang"); String tamp = ""; st3 = conn.prepareStatement("Select id from mu where id='" + id + "'"); rs3 = st3.executeQuery(); while (rs3.next()) { tamp = rs3.getString("id"); System.out.println("Masuk"); } if (tamp.equals("")) { System.out.println(id); System.out.println(h); if (h <= bKapasitasPenumpangSedikitA()) { st2 = conn.prepareStatement("INSERT INTO MU(ID, MKAPASITASP1) VALUES (?, '1')");
84
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
st2.setString(1, id); st2.executeUpdate(); } else if (h >= bKapasitasPenumpangSedikitB()) { st2 = conn.prepareStatement("INSERT INTO MU(ID, MKAPASITASP1) VALUES (?, '0')"); st2.setString(1, id); st2.executeUpdate(); } else { m = (bKapasitasPenumpangSedikitB() - h); m
=
m
/
(bKapasitasPenumpangSedikitB()
-
bKapasitasPenumpangSedikitA()); st2 = conn.prepareStatement("INSERT INTO MU(ID, MKAPASITASP1) VALUES (?, ?)"); st2.setString(1, id); st2.setDouble(2, m); st2.executeUpdate(); } } else { System.out.println("Data sudah ada"); if (h <= bKapasitasPenumpangSedikitA()) { st4
=
conn.prepareStatement("update
MKAPASITASP1='1' where id=?"); st4.setString(1, id);
85
mu
set
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
st4.executeUpdate(); } else if (h >= bKapasitasPenumpangSedikitB()) { st4
=
conn.prepareStatement("update
mu
set
MKAPASITASP1='0' where id=?"); st4.setString(1, id); st4.executeUpdate(); } else if (tamp.equals(id)) { m = (bKapasitasPenumpangSedikitB() - h); m
=
m
/
(bKapasitasPenumpangSedikitB()
-
bKapasitasPenumpangSedikitA()); st4
=
conn.prepareStatement("update
MKAPASITASP1=? where id=?"); st4.setDouble(1, m); st4.setString(2, id); st4.executeUpdate(); } } } conn.commit(); } catch (SQLException ex) { conn.rollback(); throw ex;
86
mu
set
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
} finally { try { conn.setAutoCommit(true); if (st != null) { st.close(); } } catch (SQLException ex) { throw ex; } } } Listing program di atas digunakan untuk mencari derajat keanggotaan untuk fungsi keanggotaan himpunan sedikit pada variabel kapasitas penumpang. Data dari database akan diolah sesuai dengan fungsi keanggotaan sedikit pada varibel kapasitas penumpang. 5.1.8. Implementasi Fungsi Keanggotaan Kapasitas Penumpang Sedang public void MKapasitasPenumpangSedang() throws SQLException { PreparedStatement st = null; PreparedStatement st2 = null; PreparedStatement st3 = null; PreparedStatement st4 = null; ResultSet rs = null;
87
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ResultSet rs2 = null; ResultSet rs3 = null; ResultSet rs4 = null; try { conn.setAutoCommit(false); st = conn.prepareStatement("select id,kapasitas_penumpang from datamobil"); rs = st.executeQuery(); String id = ""; double m = 0; while (rs.next()) { id = rs.getString("id"); int h = rs.getInt("kapasitas_penumpang"); String tamp = ""; st3 = conn.prepareStatement("Select id from mu where id='" + id + "'"); rs3 = st3.executeQuery(); while (rs3.next()) { tamp = rs3.getString("id"); System.out.println("Masuk"); } if (tamp.equals("")) {
88
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
System.out.println(id); System.out.println(h); if
(h
>=
bKapasitasPenumpangSedangA()
&&
h
<=
(bKapasitasPenumpangSedangB()
-
bKapasitasPenumpangSedangB()) { m = (h - bKapasitasPenumpangSedangA()); m
=
m
/
bKapasitasPenumpangSedangA()); st2
=
conn.prepareStatement("INSERT
INTO
MU(ID,
MKAPASITASP2) VALUES (?, ?)"); st2.setString(1, id); st2.setDouble(2, m); st2.executeUpdate(); } else if (h >= bKapasitasPenumpangSedangB() && h <= bKapasitasPenumpangSedangC()) { m = (bKapasitasPenumpangSedangC() - h); m
=
m
/
(bKapasitasPenumpangSedangC()
-
bKapasitasPenumpangSedangB()); st2
=
conn.prepareStatement("INSERT
INTO
MU(ID,
INTO
MU(ID,
MKAPASITASP2) VALUES (?, ?)"); st2.setString(1, id); st2.setDouble(2, m); st2.executeUpdate(); } else { st2
=
conn.prepareStatement("INSERT
89
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
MKAPASITASP2) VALUES (?, '0')"); st2.setString(1, id); st2.executeUpdate(); } } else { System.out.println("Data sudah ada"); if
(h
>=
bKapasitasPenumpangSedangA()
&&
h
<=
(bKapasitasPenumpangSedangB()
-
bKapasitasPenumpangSedangB()) { m = (h - bKapasitasPenumpangSedangA()); m
=
m
/
bKapasitasPenumpangSedangA()); st2
=
conn.prepareStatement("update
mu
set
MKAPASITASP2=? where id=?"); st2.setDouble(1, m); st2.setString(2, id); st2.executeUpdate(); } else if (h >= bKapasitasPenumpangSedangB() && h <= bKapasitasPenumpangSedangC()) { m = (bKapasitasPenumpangSedangC() - h); m
=
m
/
(bKapasitasPenumpangSedangC()
-
bKapasitasPenumpangSedangB()); st2
=
conn.prepareStatement("update
MKAPASITASP2=? where id=?");
90
mu
set
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
st2.setDouble(1, m); st2.setString(2, id); st2.executeUpdate(); } else { st2
=
conn.prepareStatement("update
MKAPASITASP2='0' where id=?"); st2.setString(1, id); st2.executeUpdate(); } } } conn.commit(); } catch (SQLException ex) { conn.rollback(); throw ex; } finally { try { conn.setAutoCommit(true); if (st != null) { st.close(); } } catch (SQLException ex) {
91
mu
set
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
throw ex; } } } Listing program di atas digunakan untuk mencari derajat keanggotaan untuk fungsi keanggotaan himpunan sedang pada variabel kapasitas penumpang. Data dari database akan diolah sesuai dengan fungsi keanggotaan sedang pada varibel kapasitas penumpang. 5.1.9. Implementasi Fungsi Keanggotaan Kapasitas Penumpang Banyak public void MKapasitasPenumpangBanyak() throws SQLException { PreparedStatement st = null; PreparedStatement st2 = null; PreparedStatement st3 = null; PreparedStatement st4 = null; ResultSet rs = null; ResultSet rs2 = null; ResultSet rs3 = null; ResultSet rs4 = null; try { conn.setAutoCommit(false); st = conn.prepareStatement("select id,kapasitas_penumpang from datamobil"); rs = st.executeQuery();
92
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
String id = ""; double m = 0; while (rs.next()) { id = rs.getString("id"); int h = rs.getInt("kapasitas_penumpang"); String tamp = ""; st3 = conn.prepareStatement("Select id from mu where id='" + id + "'"); rs3 = st3.executeQuery(); while (rs3.next()) { tamp = rs3.getString("id"); System.out.println("Masuk"); } if (tamp.equals("")) { System.out.println(id); System.out.println(h); if (h <= bKapasitasPenumpangBanyakA()) { st2
=
conn.prepareStatement("INSERT
INTO
MKAPASITASP3) VALUES (?, '0')"); st2.setString(1, id); st2.executeUpdate(); } else if (h >= bKapasitasPenumpangBanyakB()) {
93
MU(ID,
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
st2
=
conn.prepareStatement("INSERT
INTO
MU(ID,
MKAPASITASP3) VALUES (?, '1')"); st2.setString(1, id); st2.executeUpdate(); } else { m = (h - bKapasitasPenumpangBanyakA()); m
=
m
/
(bKapasitasPenumpangBanyakB()
-
bKapasitasPenumpangBanyakA()); st2
=
conn.prepareStatement("INSERT
INTO
MU(ID,
MKAPASITASP3) VALUES (?, ?)"); st2.setString(1, id); st2.setDouble(2, m); st2.executeUpdate(); } } else { System.out.println("Data sudah ada"); if (h <= bKapasitasPenumpangBanyakA()) { st2
=
conn.prepareStatement("update
mu
set
mu
set
MKAPASITASP3='0' where id=?"); st2.setString(1, id); st2.executeUpdate(); } else if (h >= bKapasitasPenumpangBanyakB()) { st2
=
conn.prepareStatement("update
94
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
MKAPASITASP3='1' where id=?"); st2.setString(1, id); st2.executeUpdate(); } else { m = (h - bKapasitasPenumpangBanyakA()); m
=
m
/
(bKapasitasPenumpangBanyakB()
-
bKapasitasPenumpangBanyakA()); st2
=
conn.prepareStatement("update
MKAPASITASP3=? where id=?"); st2.setDouble(1, m); st2.setString(2, id); st2.executeUpdate(); } } } conn.commit(); } catch (SQLException ex) { conn.rollback(); throw ex; } finally { try { conn.setAutoCommit(true);
95
mu
set
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
if (st != null) { st.close(); } } catch (SQLException ex) { throw ex; } } } Listing program di atas digunakan untuk mencari derajat keanggotaan untuk fungsi keanggotaan himpunan banyak pada variabel kapasitas penumpang. Data dari database akan diolah sesuai dengan fungsi keanggotaan banyak pada varibel kapasitas penumpang. 5.1.10. Implementasi Fungsi Keanggotaan Kapasitas BBM Sedikit public void MKapasitasBBMSedikit() throws SQLException { PreparedStatement st = null; PreparedStatement st2 = null; PreparedStatement st3 = null; PreparedStatement st4 = null; ResultSet rs = null; ResultSet rs2 = null; ResultSet rs3 = null; ResultSet rs4 = null; try {
96
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
conn.setAutoCommit(false); st
=
conn.prepareStatement("select
id,kapasitas_BBM
from
datamobil"); rs = st.executeQuery(); String id = ""; while (rs.next()) { id = rs.getString("id"); int h = rs.getInt("kapasitas_BBM"); String tamp = ""; st3 = conn.prepareStatement("Select id from mu where id='" + id + "'"); rs3 = st3.executeQuery(); double m = 0; while (rs3.next()) { tamp = rs3.getString("id"); System.out.println("Masuk"); } System.out.println("kapasitas" + h); System.out.println("ba" + bKapasitasBBMSedikitA()); System.out.println("bb" + bKapasitasBBMSedikitB()); if (tamp.equals("")) { System.out.println(id);
97
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
System.out.println(h); if (h <= bKapasitasBBMSedikitA()) { st2
=
conn.prepareStatement("INSERT
INTO
MU(ID,
INTO
MU(ID,
MKAPASITASB1) VALUES (?, '1')"); st2.setString(1, id); st2.executeUpdate(); } else if (h >= bKapasitasBBMSedikitB()) { st2
=
conn.prepareStatement("INSERT
MKAPASITASB1) VALUES (?, '0')"); st2.setString(1, id); st2.executeUpdate(); } else { System.out.println(bKapasitasBBMSedikitA()); m = (bKapasitasBBMSedikitB() - h); m
=
m
/
(bKapasitasBBMSedikitB()
-
bKapasitasBBMSedikitA()); System.out.println(m); st2
=
conn.prepareStatement("INSERT
MKAPASITASB1) VALUES (?, ?)"); st2.setString(1, id); st2.setDouble(2, m); st2.executeUpdate(); }
98
INTO
MU(ID,
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
} else { System.out.println("Data sudah ada"); if (h <= bKapasitasBBMSedikitA()) { st4
=
conn.prepareStatement("update
mu
set
mu
set
MKAPASITASB1='1' where id=?"); st4.setString(1, id); st4.executeUpdate(); } else if (h >= bKapasitasBBMSedikitB()) { st4
=
conn.prepareStatement("update
MKAPASITASB1='0' where id=?"); st4.setString(1, id); st4.executeUpdate(); } else if (tamp.equals(id)) { System.out.println(bKapasitasBBMSedikitA()); m = (bKapasitasBBMSedikitB() - h); m
=
m
/
(bKapasitasBBMSedikitB()
-
bKapasitasBBMSedikitA()); System.out.println(m); st4
=
conn.prepareStatement("update
MKAPASITASB1=? where id=?"); st4.setDouble(1, m); st4.setString(2, id); st4.executeUpdate();
99
mu
set
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
} } } conn.commit(); } catch (SQLException ex) { conn.rollback(); throw ex; } finally { try { conn.setAutoCommit(true); if (st != null) { st.close(); } } catch (SQLException ex) { throw ex; } } } Listing program di atas digunakan untuk mencari derajat keanggotaan untuk fungsi keanggotaan himpunan sedikit pada variabel kapasitas BBM. Data dari database akan diolah sesuai dengan fungsi keanggotaan sedikit pada varibel kapasitas BBM.
100
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5.1.11. Implementasi Fungsi Keanggotaan Kapasitas BBM Sedang public void MKapasitasBBMSedang() throws SQLException { PreparedStatement st = null; PreparedStatement st2 = null; PreparedStatement st3 = null; PreparedStatement st4 = null; ResultSet rs = null; ResultSet rs2 = null; ResultSet rs3 = null; ResultSet rs4 = null; try { conn.setAutoCommit(false); st
=
conn.prepareStatement("select
id,kapasitas_BBM
from
datamobil"); rs = st.executeQuery(); String id = ""; while (rs.next()) { id = rs.getString("id"); int h = rs.getInt("kapasitas_BBM"); String tamp = ""; st3 = conn.prepareStatement("Select id from mu where id='" + id + "'");
101
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
rs3 = st3.executeQuery(); double m = 0; while (rs3.next()) { tamp = rs3.getString("id"); System.out.println("Masuk"); } if (tamp.equals("")) { System.out.println(id); System.out.println(h); if
(h
>=
bKapasitasBBMSedangA()
&&
h
<=
(bKapasitasBBMSedangB()
-
bKapasitasBBMSedangB()) { m = (h - bKapasitasBBMSedangA()); m
=
m
/
bKapasitasBBMSedangA()); st2
=
conn.prepareStatement("INSERT
INTO
MU(ID,
MKAPASITASB2) VALUES (?, ?)"); st2.setString(1, id); st2.setDouble(2, m); st2.executeUpdate(); } else if (h >= bKapasitasBBMSedangB() && h <= bKapasitasBBMSedangC()) { m = (bKapasitasBBMSedangC() - h); m
=
m
/
102
(bKapasitasBBMSedangC()
-
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
bKapasitasBBMSedangB()); st2
=
conn.prepareStatement("INSERT
INTO
MU(ID,
INTO
MU(ID,
MKAPASITASB2) VALUES (?, ?)"); st2.setString(1, id); st2.setDouble(2, m); st2.executeUpdate(); } else { st2
=
conn.prepareStatement("INSERT
MKAPASITASB2) VALUES (?, '0')"); st2.setString(1, id); st2.executeUpdate(); } } else { System.out.println("Data sudah ada"); if
(h
>=
bKapasitasBBMSedangA()
&&
h
<=
(bKapasitasBBMSedangB()
-
bKapasitasBBMSedangB()) { m = (h - bKapasitasBBMSedangA()); m
=
m
/
bKapasitasBBMSedangA()); st2
=
conn.prepareStatement("update
MKAPASITASB2=? where id=?"); st2.setDouble(1, m); st2.setString(2, id);
103
mu
set
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
st2.executeUpdate(); } else if (h >= bKapasitasBBMSedangB() && h <= bKapasitasBBMSedangC()) { m = (bKapasitasBBMSedangC() - h); m
=
m
/
(bKapasitasBBMSedangC()
-
bKapasitasBBMSedangB()); st2
=
conn.prepareStatement("update
mu
set
mu
set
MKAPASITASB2=? where id=?"); st2.setDouble(1, m); st2.setString(2, id); st2.executeUpdate(); } else { st2
=
conn.prepareStatement("update
MKAPASITASB2='0' where id=?"); st2.setString(1, id); st2.executeUpdate(); } } } conn.commit(); } catch (SQLException ex) { conn.rollback(); throw ex;
104
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
} finally { try { conn.setAutoCommit(true); if (st != null) { st.close(); } } catch (SQLException ex) { throw ex; } } } Listing program di atas digunakan untuk mencari derajat keanggotaan untuk fungsi keanggotaan himpunan sedang pada variabel kapasitas BBM. Data dari database akan diolah sesuai dengan fungsi keanggotaan sedang pada varibel kapasitas BBM. 5.1.12. Implementasi Fungsi Keanggotaan Kapasitas BBM Banyak public void MKapasitasBBMBanyak() throws SQLException { PreparedStatement st = null; PreparedStatement st2 = null; PreparedStatement st3 = null; PreparedStatement st4 = null; ResultSet rs = null; ResultSet rs2 = null;
105
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ResultSet rs3 = null; ResultSet rs4 = null; try { conn.setAutoCommit(false); st
=
conn.prepareStatement("select
id,kapasitas_BBM
from
datamobil"); rs = st.executeQuery(); String id = ""; while (rs.next()) { id = rs.getString("id"); int h = rs.getInt("kapasitas_BBM"); String tamp = ""; st3 = conn.prepareStatement("Select id from mu where id='" + id + "'"); rs3 = st3.executeQuery(); double m = 0; while (rs3.next()) { tamp = rs3.getString("id"); System.out.println("Masuk"); } if (tamp.equals("")) { System.out.println(id);
106
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
System.out.println(h); if (h <= bKapasitasBBMBanyakA()) { st2
=
conn.prepareStatement("INSERT
INTO
MU(ID,
INTO
MU(ID,
MKAPASITASB3) VALUES (?, '0')"); st2.setString(1, id); st2.executeUpdate(); } else if (h >= bKapasitasBBMBanyakB()) { st2
=
conn.prepareStatement("INSERT
MKAPASITASB3) VALUES (?, '1')"); st2.setString(1, id); st2.executeUpdate(); } else { m = (h - bKapasitasBBMBanyakA()); m
=
m
/
(bKapasitasBBMBanyakB()
-
bKapasitasBBMBanyakA()); st2
=
conn.prepareStatement("INSERT
MKAPASITASB3) VALUES (?, ?)"); st2.setString(1, id); st2.setDouble(2, m); st2.executeUpdate(); } } else { System.out.println("Data sudah ada");
107
INTO
MU(ID,
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
if (h <= bKapasitasBBMBanyakA()) { st2
=
conn.prepareStatement("update
mu
set
mu
set
MKAPASITASB3='0' where id=?"); st2.setString(1, id); st2.executeUpdate(); } else if (h >= bKapasitasBBMBanyakB()) { st2
=
conn.prepareStatement("update
MKAPASITASB3='1' where id=?"); st2.setString(1, id); st2.executeUpdate(); } else { m = (h - bKapasitasBBMBanyakA()); m
=
m
/
(bKapasitasBBMBanyakB()
-
bKapasitasBBMBanyakA()); st2
=
conn.prepareStatement("update
MKAPASITASB3=? where id=?"); st2.setDouble(1, m); st2.setString(2, id); st2.executeUpdate(); } } } conn.commit();
108
mu
set
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
} catch (SQLException ex) { conn.rollback(); throw ex; } finally { try { conn.setAutoCommit(true); if (st != null) { st.close(); } } catch (SQLException ex) { throw ex; } } } Listing program di atas digunakan untuk mencari derajat keanggotaan untuk fungsi keanggotaan himpunan banyak pada variabel kapasitas BBM. Data dari database akan diolah sesuai dengan fungsi keanggotaan banyak pada varibel kapasitas BBM. 5.1.13. Implementasi Fungsi Keanggotaan Tahun Lama public void MTahunLama() throws SQLException { PreparedStatement st = null; PreparedStatement st2 = null; PreparedStatement st3 = null;
109
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PreparedStatement st4 = null; ResultSet rs = null; ResultSet rs2 = null; ResultSet rs3 = null; ResultSet rs4 = null; try { conn.setAutoCommit(false); st = conn.prepareStatement("select id,tahun from datamobil"); rs = st.executeQuery(); String id = ""; while (rs.next()) { id = rs.getString("id"); int h = rs.getInt("tahun"); String tamp = ""; st3 = conn.prepareStatement("Select id from mu where id='" + id + "'"); rs3 = st3.executeQuery(); double m = 0; while (rs3.next()) { tamp = rs3.getString("id"); System.out.println("Masuk"); }
110
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
if (tamp.equals("")) { System.out.println(id); System.out.println(h); if (h <= bTahunLamaA()) { st2
=
conn.prepareStatement("INSERT
INTO
MU(ID,
INTO
MU(ID,
INTO
MU(ID,
MTAHUN1) VALUES (?, '1')"); st2.setString(1, id); st2.executeUpdate(); } else if (h >= bTahunLamaB()) { st2
=
conn.prepareStatement("INSERT
MTAHUN1) VALUES (?, '0')"); st2.setString(1, id); st2.executeUpdate(); } else { m = (bTahunLamaB() - h); m = m / (bTahunLamaB() - bTahunLamaA()); st2
=
conn.prepareStatement("INSERT
MTAHUN1) VALUES (?, ?)"); st2.setString(1, id); st2.setDouble(2, m); st2.executeUpdate(); }
111
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
} else { System.out.println("Data sudah ada"); if (h <= bTahunLamaA()) { st4 = conn.prepareStatement("update mu set MTAHUN1='1' where id=?"); st4.setString(1, id); st4.executeUpdate(); } else if (h >= bTahunLamaB()) { st4 = conn.prepareStatement("update mu set MTAHUN1='0' where id=?"); st4.setString(1, id); st4.executeUpdate(); } else if (tamp.equals(id)) { m = (bTahunLamaB() - h); m = m / (bTahunLamaB() - bTahunLamaA()); st4 = conn.prepareStatement("update mu set MTAHUN1=? where id=?"); st4.setDouble(1, m); st4.setString(2, id); st4.executeUpdate(); } }
112
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
} conn.commit(); } catch (SQLException ex) { conn.rollback(); throw ex; } finally { try { conn.setAutoCommit(true); if (st != null) { st.close(); } } catch (SQLException ex) { throw ex; } } } Listing program di atas digunakan untuk mencari derajat keanggotaan untuk fungsi keanggotaan himpunan lama pada variabel tahun. Data dari database akan diolah sesuai dengan fungsi keanggotaan lama pada varibel tahun. 5.1.14. Implementasi Fungsi Keanggotaan Tahun Baru public void MTahunBaru() throws SQLException { PreparedStatement st = null;
113
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PreparedStatement st2 = null; PreparedStatement st3 = null; PreparedStatement st4 = null; ResultSet rs = null; ResultSet rs2 = null; ResultSet rs3 = null; ResultSet rs4 = null; try { conn.setAutoCommit(false); st = conn.prepareStatement("select id,tahun from datamobil"); rs = st.executeQuery(); String id = ""; while (rs.next()) { id = rs.getString("id"); int h = rs.getInt("tahun"); String tamp = ""; st3 = conn.prepareStatement("Select id from mu where id='" + id + "'"); rs3 = st3.executeQuery(); double m = 0; while (rs3.next()) { tamp = rs3.getString("id");
114
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
System.out.println("Masuk"); } if (tamp.equals("")) { System.out.println(id); System.out.println(h); if (h <= bTahunBaruA()) { st2
=
conn.prepareStatement("INSERT
INTO
MU(ID,
INTO
MU(ID,
INTO
MU(ID,
MTAHUN2) VALUES (?, '0')"); st2.setString(1, id); st2.executeUpdate(); } else if (h >= bTahunBaruB()) { st2
=
conn.prepareStatement("INSERT
MTAHUN2) VALUES (?, '1')"); st2.setString(1, id); st2.executeUpdate(); } else { m = (h - bTahunBaruA()); m = m / (bTahunBaruB() - bTahunBaruA()); st2
=
conn.prepareStatement("INSERT
MTAHUN2) VALUES (?, ?)"); st2.setString(1, id); st2.setDouble(2, m);
115
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
st2.executeUpdate(); } } else { System.out.println("Data sudah ada"); if (h <= bTahunBaruA()) { st2 = conn.prepareStatement("update mu set MTAHUN2='0' where id=?"); st2.setString(1, id); st2.executeUpdate(); } else if (h >= bTahunBaruB()) { st2 = conn.prepareStatement("update mu set MTAHUN2='1' where id=?"); st2.setString(1, id); st2.executeUpdate(); } else { m = (h - bTahunBaruA()); m = m / (bTahunBaruB() - bTahunBaruA()); st2 = conn.prepareStatement("update mu set MTAHUN2=? where id=?"); st2.setDouble(1, m); st2.setString(2, id); st2.executeUpdate();
116
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
} } } conn.commit(); } catch (SQLException ex) { conn.rollback(); throw ex; } finally { try { conn.setAutoCommit(true); if (st != null) { st.close(); } } catch (SQLException ex) { throw ex; } } } Listing program di atas digunakan untuk mencari derajat keanggotaan untuk fungsi keanggotaan himpunan baru pada variabel tahun. Data dari database akan diolah sesuai dengan fungsi keanggotaan baru pada varibel tahun.
117
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5.1.15. Implementasi Perhitungan Hasil Query Satu Kriteria public List<Mu> lihatHasil1(String kriteria1,String n1) throws SQLException { PreparedStatement st = null; ResultSet rs = null; PreparedStatement st2 = null; ResultSet rs2 = null; try { conn.setAutoCommit(false); String sql = "select distinct d.id,d.nama,d.harga from datamobil d, mu m" + " where d.id=m.id and m." + kriteria1 + "> 0 "; st = conn.prepareStatement(sql); rs = st.executeQuery(); List<Mu> m = new ArrayList<Mu>(); while (rs.next()) { Mu mu = new Mu(); mu.setNama(rs.getString("nama")); mu.setHarga(Double.parseDouble(rs.getString("harga"))); String sql2 = "select "+n1+"" + kriteria1 + " " + kriteria1 + " from mu" + " where id='" + rs.getString("id") + "'"; System.out.println(rs.getString("id"));
118
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
st2 = conn.prepareStatement(sql2); rs2 = st2.executeQuery(); double i = 0; while (rs2.next()) { for (int j = 1; j <= 1; j++) { i = Double.parseDouble(rs2.getString(j)); } } mu.setSum(i); if (i != 0) { m.add(mu); } else {
} } Collections.sort(m, new Comparator<Mu>() { @Override public int compare(Mu m1, Mu m2) { return Double.compare(m2.getSum(), m1.getSum()); } });
119
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
conn.commit(); return m; } catch (SQLException exception) { throw exception; } finally { try { conn.setAutoCommit(true); if (rs != null) { rs.close(); } if (st != null) { st.close(); } } catch (SQLException exception) { throw exception; } } } Listing program di atas digunakan untuk menghitung fire strength sesuai dengan query yang diinputkan. Perhitungan fire strength dilakukan dengan cara mengambil derajat keanggotaan dari database kemudian setiap derajat keanggotan yang sesuai dengan kriteria query akan diproses sesuai dengan aturan atau operator yang diinputkan, misalnya operator and, or, atau not. Listing program di atas hanya untuk query dengan satu kriteria saja. 120
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5.1.16. Implementasi Perhitungan Hasil Query Dua Kriteria public List<Mu> lihatHasil2(String kriteria1, String kriteria2, String operator1,String n1,String n2) throws SQLException { PreparedStatement st = null; ResultSet rs = null; PreparedStatement st2 = null; ResultSet rs2 = null; try { conn.setAutoCommit(false); String sql = "select distinct d.id,d.nama,d.harga from datamobil d, mu m" + " where d.id=m.id and m." + kriteria1 + ">= 0 " + operator1 + " m." + kriteria2 + ">= 0 "; st = conn.prepareStatement(sql); rs = st.executeQuery(); List<Mu> m = new ArrayList<Mu>(); while (rs.next()) { Mu mu = new Mu(); mu.setNama(rs.getString("nama")); mu.setHarga(Double.parseDouble(rs.getString("harga"))); String sql2 = "select "+n1+""+kriteria1+" " + kriteria1 + ","+n2+"" + kriteria2 + " " + kriteria2 + " from mu" + " where id='" + rs.getString("id") + "'";
121
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
System.out.println(rs.getString("id")); st2 = conn.prepareStatement(sql2); rs2 = st2.executeQuery(); double i = 0; while (rs2.next()) { if (operator1.equals("AND")) { i = 1; for (int j = 1; j <= 2; j++) { if (i > Double.parseDouble(rs2.getString(j))) { i = Double.parseDouble(rs2.getString(j)); } } } if (operator1.equals("OR")) { i = 0; for (int j = 1; j <= 2; j++) { if (i < Double.parseDouble(rs2.getString(j))) { i = Double.parseDouble(rs2.getString(j)); } } }
122
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
} mu.setSum(i); if (i != 0) { m.add(mu); } else {
} } Collections.sort(m, new Comparator<Mu>() { @Override public int compare(Mu m1, Mu m2) { return Double.compare(m2.getSum(), m1.getSum()); } }); conn.commit(); return m; } catch (SQLException exception) { throw exception; } finally { try { conn.setAutoCommit(true);
123
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
if (rs != null) { rs.close(); } if (st != null) { st.close(); } } catch (SQLException exception) { throw exception; } } } Listing program di atas digunakan untuk menghitung fire strength sesuai dengan query yang diinputkan. Perhitungan fire strength dilakukan dengan cara mengambil derajat keanggotaan dari database kemudian setiap derajat keanggotan yang sesuai dengan kriteria query akan diproses sesuai dengan aturan atau operator yang diinputkan, misalnya operator and, or, atau not. Listing program di atas hanya untuk query dengan dua kriteria saja. 5.1.17. Implementasi Perhitungan Hasil Query Tiga Kriteria public List<Mu> lihatHasil3(String kriteria1, String kriteria2, String kriteria3, String operator1, String operator2,String n1, String n2,String n3) throws SQLException { PreparedStatement st = null; ResultSet rs = null; PreparedStatement st2 = null;
124
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ResultSet rs2 = null; try { conn.setAutoCommit(false); String sql = "select distinct d.id,d.nama,d.harga from datamobil d, mu m" + " where d.id=m.id and (m." + kriteria1 + "> 0 " + operator1 + " m." + kriteria2 + "> 0)" + " " + operator2 + " m." + kriteria3 + " > 0"; st = conn.prepareStatement(sql); rs = st.executeQuery(); List<Mu> m = new ArrayList<Mu>(); while (rs.next()) { Mu mu = new Mu(); mu.setNama(rs.getString("nama")); mu.setHarga(Double.parseDouble(rs.getString("harga"))); String sql2 = "select "+n1+"" + kriteria1 + " " + kriteria1 + "," + " "+n2+"" + kriteria2 + " " + kriteria2 + "," + " "+n3+"" + kriteria3 + " " + kriteria3 + " from mu" + " where id='" + rs.getString("id") + "'"; System.out.println(rs.getString("id")); st2 = conn.prepareStatement(sql2); rs2 = st2.executeQuery();
125
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
double i = 0; while (rs2.next()) { if (operator1.equals("AND") && operator2.equals("AND")) { i = 1; for (int j = 1; j <= 3; j++) { if (i > Double.parseDouble(rs2.getString(j))) { i = Double.parseDouble(rs2.getString(j)); } } } if (operator1.equals("OR") && operator2.equals("OR")) { i = 0; for (int j = 1; j <= 3; j++) { if (i < Double.parseDouble(rs2.getString(j))) { i = Double.parseDouble(rs2.getString(j)); } } } if (operator1.equals("AND") && operator2.equals("OR")) { i = 1; for (int j = 1; j <= 2; j++) {
126
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
if (i > Double.parseDouble(rs2.getString(j))) { i = Double.parseDouble(rs2.getString(j)); } } if (i < Double.parseDouble(rs2.getString(3))) { i = Double.parseDouble(rs2.getString(3)); } } if (operator1.equals("OR") && operator2.equals("AND")) { i = 0; for (int j = 1; j <= 2; j++) { if (i < Double.parseDouble(rs2.getString(j))) { i = Double.parseDouble(rs2.getString(j)); } } if (i > Double.parseDouble(rs2.getString(3))) { i = Double.parseDouble(rs2.getString(3)); } } } mu.setSum(i);
127
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
if (i != 0) { m.add(mu); } else { } } Collections.sort(m, new Comparator<Mu>() { @Override public int compare(Mu m1, Mu m2) { return Double.compare(m2.getSum(), m1.getSum()); } }); conn.commit(); return m; } catch (SQLException exception) { throw exception; } finally { try { conn.setAutoCommit(true); if (rs != null) { rs.close(); }
128
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
if (st != null) { st.close(); } } catch (SQLException exception) { throw exception; } } } Listing program di atas digunakan untuk menghitung fire strength sesuai dengan query yang diinputkan. Perhitungan fire strength dilakukan dengan cara mengambil derajat keanggotaan dari database kemudian setiap derajat keanggotan yang sesuai dengan kriteria query akan diproses sesuai dengan aturan atau operator yang diinputkan, misalnya operator and, or, atau not. Listing program di atas hanya untuk query dengan tiga kriteria saja. 5.1.18. Implementasi Perhitungan Hasil Query Empat Kriteria public List<Mu> lihatHasil4(String kriteria1, String kriteria2, String kriteria3, String kriteria4, String operator1, String operator2, String operator3,String n1,String n2, String n3,String n4) throws SQLException { PreparedStatement st = null; ResultSet rs = null; PreparedStatement st2 = null; ResultSet rs2 = null; try { conn.setAutoCommit(false);
129
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
String sql = "select distinct d.id,d.nama,d.harga from datamobil d, mu m" + " where d.id=m.id and ( m." + kriteria1 + "> 0 " + operator1 + " m." + kriteria2 + "> 0 )" + " " + operator2 + " ( m." + kriteria3 + " > 0 " + operator3 + " " + kriteria4 + " > 0 )"; st = conn.prepareStatement(sql); rs = st.executeQuery(); List<Mu> m = new ArrayList<Mu>(); while (rs.next()) { Mu mu = new Mu(); mu.setNama(rs.getString("nama")); mu.setHarga(Double.parseDouble(rs.getString("harga"))); String sql2 = "select "+n1+"" + kriteria1 + " " + kriteria1 + "," + " "+n2+"" + kriteria2 + " " + kriteria2 + ", " + " "+n3+"" + kriteria3 + " " + kriteria3 + "," + " "+n4+"" + kriteria4 + " " + kriteria4 + " from mu" + " where id='" + rs.getString("id") + "'"; System.out.println(rs.getString("id")); st2 = conn.prepareStatement(sql2); rs2 = st2.executeQuery(); double i = 0;
130
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
double x = 0; while (rs2.next()) { if (operator1.equals("AND") && operator2.equals("AND") && operator3.equals("AND")) { i = 1; for (int j = 1; j <= 4; j++) { if (i > Double.parseDouble(rs2.getString(j))) { i = Double.parseDouble(rs2.getString(j)); } } } if
(operator1.equals("OR")
&&
operator2.equals("OR")
&&
operator3.equals("OR")) { i = 0; for (int j = 1; j <= 4; j++) { if (i < Double.parseDouble(rs2.getString(j))) { i = Double.parseDouble(rs2.getString(j)); } } } if (operator1.equals("AND") && operator2.equals("OR") && operator3.equals("OR")) {
131
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
i = 1; x = 0; for (int j = 1; j <= 2; j++) { if (i > Double.parseDouble(rs2.getString(j))) { i = Double.parseDouble(rs2.getString(j)); } } for (int j = 3; j <= 4; j++) { if (x < Double.parseDouble(rs2.getString(j))) { x = Double.parseDouble(rs2.getString(j)); } } if (i < x) { i = x; } } if (operator1.equals("AND") && operator2.equals("AND") && operator3.equals("OR")) { i = 1; x = 0; for (int j = 1; j <= 2; j++) { if (i > Double.parseDouble(rs2.getString(j))) {
132
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
i = Double.parseDouble(rs2.getString(j)); } } for (int j = 3; j <= 4; j++) { if (x < Double.parseDouble(rs2.getString(j))) { x = Double.parseDouble(rs2.getString(j)); } } if (i > x) { i = x; } } if (operator1.equals("OR") && operator2.equals("AND") && operator3.equals("OR")) { i = 0; x = 0; for (int j = 1; j <= 2; j++) { if (i < Double.parseDouble(rs2.getString(j))) { i = Double.parseDouble(rs2.getString(j)); } } for (int j = 3; j <= 4; j++) {
133
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
if (x < Double.parseDouble(rs2.getString(j))) { x = Double.parseDouble(rs2.getString(j)); } } if (i > x) { i = x; } } if (operator1.equals("OR") && operator2.equals("AND") && operator3.equals("AND")) { i = 0; x = 1; for (int j = 1; j <= 2; j++) { if (i < Double.parseDouble(rs2.getString(j))) { i = Double.parseDouble(rs2.getString(j)); } } for (int j = 3; j <= 4; j++) { if (x > Double.parseDouble(rs2.getString(j))) { x = Double.parseDouble(rs2.getString(j)); } }
134
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
if (i > x) { i = x; } } if
(operator1.equals("OR")
&&
operator2.equals("OR")
operator3.equals("AND")) { i = 0; x = 1; for (int j = 1; j <= 2; j++) { if (i < Double.parseDouble(rs2.getString(j))) { i = Double.parseDouble(rs2.getString(j)); } } for (int j = 3; j <= 4; j++) { if (x > Double.parseDouble(rs2.getString(j))) { x = Double.parseDouble(rs2.getString(j)); } } if (i < x) { i = x; } }
135
&&
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
if (operator1.equals("AND") && operator2.equals("OR") && operator3.equals("AND")) { i = 1; x = 1; for (int j = 1; j <= 2; j++) { if (i > Double.parseDouble(rs2.getString(j))) { i = Double.parseDouble(rs2.getString(j)); } } for (int j = 3; j <= 4; j++) { if (x > Double.parseDouble(rs2.getString(j))) { x = Double.parseDouble(rs2.getString(j)); } } if (i < x) { i = x; } } } mu.setSum(i); if (i != 0) { m.add(mu);
136
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
} else { } } Collections.sort(m, new Comparator<Mu>() { @Override public int compare(Mu m1, Mu m2) { return Double.compare(m2.getSum(), m1.getSum()); } }); conn.commit(); return m; } catch (SQLException exception) { throw exception; } finally { try { conn.setAutoCommit(true); if (rs != null) { rs.close(); } if (st != null) { st.close();
137
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
} } catch (SQLException exception) { throw exception; } } } Listing program di atas digunakan untuk menghitung fire strength sesuai dengan query yang diinputkan. Perhitungan fire strength dilakukan dengan cara mengambil derajat keanggotaan dari database kemudian setiap derajat keanggotan yang sesuai dengan kriteria query akan diproses sesuai dengan aturan atau operator yang diinputkan, misalnya operator and, or, atau not. Listing program di atas hanya untuk query dengan empat kriteria saja. 5.1.19. Implementasi Perhitungan Hasil Query Lima Kriteria public List<Mu> lihatHasil5(String kriteria1, String kriteria2, String kriteria3, String kriteria4, String kriteria5, String operator1, String operator2, String operator3, String operator4,String n1,String n2, String n3,String n4, String n5) throws SQLException { PreparedStatement st = null; ResultSet rs = null; PreparedStatement st2 = null; ResultSet rs2 = null; try { conn.setAutoCommit(false); String sql = "select distinct d.id,d.nama,d.harga from datamobil d, mu m"
138
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
+ " where d.id=m.id and ((( m." + kriteria1 + "> 0 " + operator1 + " m." + kriteria2 + "> 0 )" + " " + operator2 + " ( m." + kriteria3 + " > 0 " + operator3 + " " + kriteria4 + " > 0 )) " + operator4 + " m." + kriteria5 + " > 0 )"; st = conn.prepareStatement(sql); rs = st.executeQuery(); List<Mu> m = new ArrayList<Mu>(); while (rs.next()) { Mu mu = new Mu(); mu.setNama(rs.getString("nama")); mu.setHarga(Double.parseDouble(rs.getString("harga"))); String sql2 = "select "+n1+"" + kriteria1 + " " + kriteria1 + "," + " "+n2+"" + kriteria2 + " " + kriteria2 + ", " + " "+n3+"" + kriteria3 + " " + kriteria3 + "," + " "+n4+"" + kriteria4 + " " + kriteria4 + "," + " "+n5+""+kriteria5+" "+kriteria5+" from mu" + " where id='" + rs.getString("id") + "'"; System.out.println(rs.getString("id")); st2 = conn.prepareStatement(sql2); rs2 = st2.executeQuery(); double i = 0; double x = 0;
139
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
while (rs2.next()) { if (operator1.equals("AND") && operator2.equals("AND") && operator3.equals("AND") && operator4.equals("AND")) { i = 1; for (int j = 1; j <= 5; j++) { if (i > Double.parseDouble(rs2.getString(j))) { i = Double.parseDouble(rs2.getString(j)); } } } if
(operator1.equals("OR")
&&
operator2.equals("OR")
&&
operator3.equals("OR") && operator4.equals("OR")) { i = 0; for (int j = 1; j <= 5; j++) { if (i < Double.parseDouble(rs2.getString(j))) { i = Double.parseDouble(rs2.getString(j)); } } } if (operator1.equals("AND") && operator2.equals("OR") && operator3.equals("OR") && operator4.equals("OR")) { i = 1;
140
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
x = 0; for (int j = 1; j <= 2; j++) { if (i > Double.parseDouble(rs2.getString(j))) { i = Double.parseDouble(rs2.getString(j)); } } for (int j = 3; j <= 4; j++) { if (x < Double.parseDouble(rs2.getString(j))) { x = Double.parseDouble(rs2.getString(j)); } } if (i < x) { i = x; } if (i < Double.parseDouble(rs2.getString(5))) { i = Double.parseDouble(rs2.getString(5)); } } if (operator1.equals("AND") && operator2.equals("OR") && operator3.equals("OR") && operator4.equals("AND")) { i = 1; x = 0;
141
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
for (int j = 1; j <= 2; j++) { if (i > Double.parseDouble(rs2.getString(j))) { i = Double.parseDouble(rs2.getString(j)); } } for (int j = 3; j <= 4; j++) { if (x < Double.parseDouble(rs2.getString(j))) { x = Double.parseDouble(rs2.getString(j)); } } if (i < x) { i = x; } if (i > Double.parseDouble(rs2.getString(5))) { i = Double.parseDouble(rs2.getString(5)); } } if (operator1.equals("AND") && operator2.equals("AND") && operator3.equals("OR") && operator4.equals("OR")) { i = 1; x = 0; for (int j = 1; j <= 2; j++) {
142
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
if (i > Double.parseDouble(rs2.getString(j))) { i = Double.parseDouble(rs2.getString(j)); } } for (int j = 3; j <= 4; j++) { if (x < Double.parseDouble(rs2.getString(j))) { x = Double.parseDouble(rs2.getString(j)); } } if (i > x) { i = x; } if (i < Double.parseDouble(rs2.getString(5))) { i = Double.parseDouble(rs2.getString(5)); } } if (operator1.equals("AND") && operator2.equals("AND") && operator3.equals("OR") && operator4.equals("AND")) { i = 1; x = 0; for (int j = 1; j <= 2; j++) { if (i > Double.parseDouble(rs2.getString(j))) {
143
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
i = Double.parseDouble(rs2.getString(j)); } } for (int j = 3; j <= 4; j++) { if (x < Double.parseDouble(rs2.getString(j))) { x = Double.parseDouble(rs2.getString(j)); } } if (i > x) { i = x; } if (i > Double.parseDouble(rs2.getString(5))) { i = Double.parseDouble(rs2.getString(5)); } } if (operator1.equals("OR") && operator2.equals("AND") && operator3.equals("OR") && operator4.equals("OR")) { i = 0; x = 0; for (int j = 1; j <= 2; j++) { if (i < Double.parseDouble(rs2.getString(j))) { i = Double.parseDouble(rs2.getString(j));
144
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
} } for (int j = 3; j <= 4; j++) { if (x < Double.parseDouble(rs2.getString(j))) { x = Double.parseDouble(rs2.getString(j)); } } if (i > x) { i = x; } if (i < Double.parseDouble(rs2.getString(5))) { i = Double.parseDouble(rs2.getString(5)); } } if (operator1.equals("OR") && operator2.equals("AND") && operator3.equals("OR") && operator4.equals("AND")) { i = 0; x = 0; for (int j = 1; j <= 2; j++) { if (i < Double.parseDouble(rs2.getString(j))) { i = Double.parseDouble(rs2.getString(j)); }
145
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
} for (int j = 3; j <= 4; j++) { if (x < Double.parseDouble(rs2.getString(j))) { x = Double.parseDouble(rs2.getString(j)); } } if (i > x) { i = x; } if (i < Double.parseDouble(rs2.getString(5))) { i = Double.parseDouble(rs2.getString(5)); } } if
(operator1.equals("OR")
&&
operator2.equals("OR")
operator3.equals("OR") && operator4.equals("AND")) { i = 0; x = 0; for (int j = 1; j <= 2; j++) { if (i < Double.parseDouble(rs2.getString(j))) { i = Double.parseDouble(rs2.getString(j)); } }
146
&&
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
for (int j = 3; j <= 4; j++) { if (x < Double.parseDouble(rs2.getString(j))) { x = Double.parseDouble(rs2.getString(j)); } } if (i < x) { i = x; } if (i > Double.parseDouble(rs2.getString(5))) { i = Double.parseDouble(rs2.getString(5)); } } if (operator1.equals("OR") && operator2.equals("AND") && operator3.equals("AND") && operator4.equals("OR")) { i = 0; x = 1; for (int j = 1; j <= 2; j++) { if (i < Double.parseDouble(rs2.getString(j))) { i = Double.parseDouble(rs2.getString(j)); } } for (int j = 3; j <= 4; j++) {
147
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
if (x > Double.parseDouble(rs2.getString(j))) { x = Double.parseDouble(rs2.getString(j)); } } if (i > x) { i = x; } if (i < Double.parseDouble(rs2.getString(5))) { i = Double.parseDouble(rs2.getString(5)); } } if (operator1.equals("OR") && operator2.equals("AND") && operator3.equals("AND") && operator4.equals("AND")) { i = 0; x = 1; for (int j = 1; j <= 2; j++) { if (i < Double.parseDouble(rs2.getString(j))) { i = Double.parseDouble(rs2.getString(j)); } } for (int j = 3; j <= 4; j++) { if (x > Double.parseDouble(rs2.getString(j))) {
148
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
x = Double.parseDouble(rs2.getString(j)); } } if (i > x) { i = x; } if (i > Double.parseDouble(rs2.getString(5))) { i = Double.parseDouble(rs2.getString(5)); } } if
(operator1.equals("OR")
&&
operator2.equals("OR")
operator3.equals("AND") && operator4.equals("OR")) { i = 0; x = 1; for (int j = 1; j <= 2; j++) { if (i < Double.parseDouble(rs2.getString(j))) { i = Double.parseDouble(rs2.getString(j)); } } for (int j = 3; j <= 4; j++) { if (x > Double.parseDouble(rs2.getString(j))) { x = Double.parseDouble(rs2.getString(j));
149
&&
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
} } if (i < x) { i = x; } if (i < Double.parseDouble(rs2.getString(5))) { i = Double.parseDouble(rs2.getString(5)); } } if
(operator1.equals("OR")
&&
operator2.equals("OR")
operator3.equals("AND") && operator4.equals("AND")) { i = 0; x = 1; for (int j = 1; j <= 2; j++) { if (i < Double.parseDouble(rs2.getString(j))) { i = Double.parseDouble(rs2.getString(j)); } } for (int j = 3; j <= 4; j++) { if (x > Double.parseDouble(rs2.getString(j))) { x = Double.parseDouble(rs2.getString(j)); }
150
&&
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
} if (i < x) { i = x; } if (i > Double.parseDouble(rs2.getString(5))) { i = Double.parseDouble(rs2.getString(5)); } } if (operator1.equals("AND") && operator2.equals("OR") && operator3.equals("AND") && operator4.equals("OR")) { i = 1; x = 1; for (int j = 1; j <= 2; j++) { if (i > Double.parseDouble(rs2.getString(j))) { i = Double.parseDouble(rs2.getString(j)); } } for (int j = 3; j <= 4; j++) { if (x > Double.parseDouble(rs2.getString(j))) { x = Double.parseDouble(rs2.getString(j)); } }
151
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
if (i < x) { i = x; } if (i < Double.parseDouble(rs2.getString(5))) { i = Double.parseDouble(rs2.getString(5)); } } if (operator1.equals("AND") && operator2.equals("AND") && operator3.equals("AND") && operator4.equals("OR")) { i = 1; x = 1; for (int j = 1; j <= 2; j++) { if (i > Double.parseDouble(rs2.getString(j))) { i = Double.parseDouble(rs2.getString(j)); } } for (int j = 3; j <= 4; j++) { if (x > Double.parseDouble(rs2.getString(j))) { x = Double.parseDouble(rs2.getString(j)); } } if (i > x) {
152
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
i = x; } if (i < Double.parseDouble(rs2.getString(5))) { i = Double.parseDouble(rs2.getString(5)); } } if (operator1.equals("AND") && operator2.equals("OR") && operator3.equals("AND") && operator4.equals("AND")) { i = 1; x = 1; for (int j = 1; j <= 2; j++) { if (i > Double.parseDouble(rs2.getString(j))) { i = Double.parseDouble(rs2.getString(j)); } } for (int j = 3; j <= 4; j++) { if (x > Double.parseDouble(rs2.getString(j))) { x = Double.parseDouble(rs2.getString(j)); }
} if (i < x) {
153
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
i = x; } if (i > Double.parseDouble(rs2.getString(5))) { i = Double.parseDouble(rs2.getString(5)); } } } mu.setSum(i); if (i != 0) { m.add(mu); } else { } } Collections.sort(m, new Comparator<Mu>() { @Override public int compare(Mu m1, Mu m2) { return Double.compare(m2.getSum(), m1.getSum()); } }); conn.commit(); return m;
154
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
} catch (SQLException exception) { throw exception; } finally { try { conn.setAutoCommit(true); if (rs != null) { rs.close(); } if (st != null) { st.close(); } } catch (SQLException exception) { throw exception; } } } Listing program di atas digunakan untuk menghitung fire strength sesuai dengan query yang diinputkan. Perhitungan fire strength dilakukan dengan cara mengambil derajat keanggotaan dari database kemudian setiap derajat keanggotan yang sesuai dengan kriteria query akan diproses sesuai dengan aturan atau operator yang diinputkan, misalnya operator and, or, atau not. Listing program di atas hanya untuk query dengan lima kriteria saja.
155
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5.2.
Hasil Implementasi
5.2.1. Form Utama Form utama pada aplikasi ini dibagi menjadi dua, yaitu form utama untuk admin dan form utama untuk pengguna. Untuk implementasinya bisa dilihat pada gambar di bawah ini. 5.2.1.1.
Form Utama Admin
Gambar 5. 1. Form Utama Untuk Admin Pada form utama untuk admin ini terdapat empat menu, yaitu home, pencarian, data mobil, dan batas himpunan. Menu home untuk menampilkan halaman awal seperti yang terlihat pada gambar di atas. Menu pencarian untuk mencari mobil berdasarkan kriteria. Menu data mobil untuk melihat data mobil yang tersimpan pada sistem. Dan yang terakhir menu batas himpunan untuk melihat batas himpunan yang menjadi acuan untuk proses perhitungan derajat keanggotaan.
156
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5.2.1.2.
Form Utama Pengguna
Gambar 5. 2. Form Utama Untuk Pengguna Pada form utama untuk pengguna ini terdapat tiga menu, yaitu home, pencarian, dan data mobil. Fungsi untuk setiap menu hampir sama seperti fungsi menu yang ada pada form utama untuk admin. 5.2.2. Form Data Mobil Form data mobil pada aplikasi ini dibagi menjadi dua, yaitu form data mobil untuk admin dan form data mobil untuk pengguna. Untuk implementasinya bisa dilihat pada gambar di bawah ini.
157
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5.2.2.1.
Form Data Mobil Admin
Gambar 5. 3. Form Data Mobil Admin Pada form data mobil admin ini berfungsi untuk melihat, menambahkan, menghapus, dan mengubah data mobil ke dalam sistem yang dilakukan oleh admin. Untuk menambahkan data admin memasukan data mobil melalui field-field yang terdapat pada form data mobil. Pada form tersebut juga terdapat tombol clear dam simpan yang aktif. Tombol clear berfungsi untuk menghapus text yang terdapat pada field-field di form data mobil. Sedangkan tombol simpan berfungsi untuk menyimpan data yang ada di field-field ke dalam database. Pada form data mobil juga terdapat dua tombol ubah dan hapus yang tidak aktif. Untuk mengaktifkan tombol tersebut admin harus mengarahkan kursor pada salah satu data mobil yang ada di tabel kemudian diklik kanan pada mouse, maka data muncul pad field-field di form tersebut dan kedua tombol akan aktif. Tombol hapus untuk menghapus data yang sudah dipilih dan tombol ubah untuk menyimpan data yang sudah di ubah.
158
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5.2.2.2.
Form Data Mobil Pengguna
Gambar 5. 4. Form Data Mobil Pengguna Pada form data mobil pengguna ini berfungsi untuk melihat data mobil saja. Berbeda dengan admin yang bisa mengubah, menambah, dan menghapus data mobil. 5.2.3. Form Pencarian Form pencarian pada aplikasi ini memiliki fungsi yang sama untuk admin dan pengguna. Pada form pencarian ini terdapat dua submenu, yaitu fuzzy dan tegas.
159
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5.2.3.1.
Form Pencarian Tab Fuzzy
Gambar 5. 5. Form Pencarian Tab Fuzzy Gambar di atas menunjukan tampilan pada submenu fuzzy. Pada submenu fuzzy ini terdapat lima kriteria yang bisa dipilih oleh pengguna. Untuk memilih kriteria sudah terdapat pilihan yang tersedia pada combo box pilih. Kemudian pengguna bisa juga memilih aturan atau operator seperti not, and, dan or. Tombol cari pada form ini berfungsi untuk mencari mobil sesuai dengan kriteria yang telah dimasukan dan hasilnya akan muncul pada tabel di bawah. Hasil berupa sebuah rekomendasi mobil yang di inginkan sesuai dengan kriteria yang sudah diproses sesuai aturan fuzzy database.
160
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5.2.3.2.
Form Pencarian Tab Tegas
Gambar 5. 6. Form Pencarian Tab Tegas Gambar di atas menunjukan tampilan pada submenu tegas. Pada submenu tegas ini terdapat lima kriteria yang bisa dipilih oleh pengguna sama seperti pada form pencarian submenu fuzzy. Tetapi pada submenu tegas ini pengguna harus memasukan nilai nominal untuk setiap kriteria yang dipilih. Tombol cari pada submenu ini berfungsi sama seperti pada submenu fuzzy, tetapi data kriteria ini dioleh sesuai dengan aturan database klasik tidak menggunkan aturan fuzzy dan hasilnya akan ditampilkan pada tabel di bawah.
161
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5.2.4. Form Batas Himpunan
Gambar 5. 7. Form Batas Himpunan Form batas himpunan ini hanya bisa diakses oleh admin saja karena pada form ini berfungsi untuk melihat, mengubah, menambah, dan menghapus batas himpunan untuk proses perhitungan fuzzy. 5.3.
Pengujian Pada tahap ini dilakukan perbandingan hasil dan waktu pencarian query antara fuzzy database dan basis data standard (tegas). Tabel 5. 1. Tabel Hasil Fuzzy Database Variabel
Kondisi Fuzzy
hasil
waktu
harga
murah
22
0,327
sedang
7
0,265
mahal
8
0,265
kecil
18
0,334
normal
32
0,425
besar
16
0,398
ukuran
162
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
kapasitas BBM
kapasitas penumpang
tahun
sedikit
19
0,31
sedang
23
0,331
banyak
15
0,354
sedikit
8
0,349
sedang
16
0,316
banyak
26
0,375
lama
29
0,312
baru
7
0,304
Tabel 5. 2. Tabel Hasil Basis Data Standard Variabel
Kondisi Tegas
hasil
waktu
harga
harga<=300000
19
0,234
harga>300000 and harga<500000
7
0,265
harga>=500000
8
0,266
ukuran<=7600000000
0
0,352
ukuran>7600000000 and ukuran<17100000000
32
0,293
ukuran>17100000000
2
0,311
kBBM<=35
3
0,289
kBBM>35 and kBBM<65
23
0,316
kBBM>65
8
0,324
kPenumpang<=4
0
0,312
kPenumpang>4 and kPenumpang<8
16
0,308
kPenumpang>=8
34
0,296
ukuran
kapasitas BBM
kapasitas penumpang
163
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
tahun
tahun<=2012
27
0,301
tahun>=2014
5
0,303
Tabel 5. 3. Tabel Hasil Fuzzy Database dengan Dua Kriteria Variabel
Kondisi Fuzzy
harga
murah
hasil
waktu
7
0,434
and kapasitas penumpang
sedikit
Tabel 5. 4. Tabel Hasil Basis Data Standard dengan Dua Kriteria Variabel
Kondisi Tegas
harga
harga<=300000
hasil
waktu
0
0,33
and kapasitas penumpang
kPenumpang<=4
Gambar 5. 8. Ukuran Setiap Tabel Penyimpanan Jika diperhatikan dari hasil pengujian, waktu untuk melakukan pencaria data sesuai kriteria dengan menggunakan metode fuzzy database lebih lama daripada database standart. karena pada sistem ini hasil perhitungan derajat keanggotaan untuk setiap variabel disimpan pada sebuah tabel sehingga perlu digunakan operasi join untuk pencarian sehingga waktu yang dibutuhkan untuk pencarian data menjadi lebih lama. Selain itu,
164
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
karena penerapan fuzzy database pada sistem penyewaan mobil ini menggunakan 3 tabel, yaitu tabel datamobil dengan ukuran 197 byte, tabel batashimpunan dengan ukuran 121 byte, dan tabel mu dengan ukuran 512 byte. Sedangkan pada penerapan basis data standart untuk penyimpanan data menggunakan 2 tabel, yaitu tabel datamobil dengan ukuran 197 dan tabel batashimpunan dengan ukuran 121 byte. Jika dibandingkan total space yang dibutuhkan untuk penyimpanan pada sistem yang menerapkan fuzzy database totalnya 830 byte dan pada basis data standart total space untuk penyimpanan adalah 318 byte. Jadi penerapan fuzzy database pada sistem penyewaan mobil ini jika dilihat dari sudut pandang kapasitas penyimpanan data lebih banyak daripada penerapan basis data standart.
165
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB VI PENUTUP
6.1.
Kesimpulan Kesimpulan yang diperoleh dari penelitian tentang penerapan fuzzy database model tahani dalam sistem pendukung keputusan pemilihan mobil sewa ini, yakni sebagai berikut: 1) Sistem pendukung keputusan pemilihan mobil sewa ini mampu memberikan rekomendasi sesuai dengan kriteria yang dimasukan oleh penggunanya. 2) Penerapan fuzzy database pada sistem ini kurang efektif daripada menggunakan basis data standard (tegas). Karena jika berdasarkan indikator
penggunaan
tabel
untuk
menyimpan
hasil
derajat
keanggotaan ini memboroskan tempat penyimpanan. Selain itu penggunaan tabel untuk menyimpan hasil derajat keanggotaan juga membuat akses pencarian data menjadi lebih lama. 6.2.
Saran Adapun beberapa saran yang penulis berikan untuk pengembangan sistem ini, antara lain sebagai berikut. 1) Variabel yang digunakan pada sistem ini hanya terbatas pada variabel harga, ukuran, kapasitas penumpang, kapasitas BBM, dan tahun. Dalam pengembangannya, sistem ini diharapkan dapat menambahkan variabel baru, menghapus, dan mengubah variabel yang sudah ada. 2) Dalam pengembangannya, sistem ini diharapkan dapat diakses secara global melalui sebuah web (web base). 3) Dalam pengembangannya, sistem ini diharapkan untuk tidak menyimpan hasil derajat keanggotaan setiap variabel kedalam tabel.
166
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
DAFTAR PUSTAKA
Efendi R, Ernawati, Hidayati R. (2014). Aplikasi Fuzzy Database Model Tahani Dalam Memberikan Rekomendasi Pembelin Rumah Berbasis Web. Jurnal, F. Teknik Universitas Bengkulu. Kusumadewi, S. dan Purnomo, H. (2004) Aplikasi Logika Fuzzy untuk Pendukung Keputusam. Yogyakarta: Penerbit Graha Ilmu. Puspitaning, Verania. (2009) Program Bantu Pengaturan Lampu Lalu Lintas Menggunakan Logika Fuzzy. Skripsi, F. Teknik USD. Yogyakarta. Suryadi, Kadarsah. (1989) Sistem Pendukung Keputusan Suatu Wacana Struktural Idealisasi dan implementasi konsep Pengambilan Keputusan. Jakarta: PT. Remaja Rosdakarya. Wahyudi, R. Pengertian Query. http://www.academia.edu/12086993/Pengertian_Query/ [Accessed 4 December 2015].
167