Bab 4 Hasil dan Pembahasan Bab 4 Hasil dan Pembahasan Setelah melakukan tahap perancangan yang ada pada bab 3, langkah selanjutnya adalah mengimplementasinya. Dari hasil tahap implementasi dihasilkan sebuah aplikasi dengan nama “SPK JALAN - BAPPEDA SALATIGA”
4.1 Implementasi Aplikasi 4.1.1 Implementasi Database Sesuai pada perancangan tabel maka tabel-tabel yang terdapat pada database MySQL juga sama seperti pada perancangannya.
Gambar 4.1. Struktur Tabel tb_id3_data
Gambar 4.1 merupakan penerapan tabel tb_id3_data pada MySQL Server. Tabel tb_id3_data terdiri dari field id, fungsi, pengaju, kondisi_jalan dan result.
67
68
Gambar 4.2. Struktur Tabel tb_id3_result
Gambar 4.2 merupakan penerapan tabel tb_id3_result pada MySQL Server. Tabel tb_id3_result memiliki field id, atribut, value dan level.
Gambar 4.3. Struktur Tabel tb_jalan
Gambar 4.3 merupakan penerapan tabel tb_jalan pada MySQL Server.
Tabel tb_jalan memiliki
field id_jalan,
nama_jalan, pangkal_simpul, ujung_simpul, status_otonomi, jalur_lajur,
panjang,
jenis_perkerasan,
lebar_damija,
fungsi_jalan,
titik_pangkal dan titik_ujung.
lebar_perkerasan,
kondisi_jalan,
last_update,
69
Gambar 4.4. Struktur Tabel tb_pengajuan
Gambar 4.4 merupakan penerapan tabel tb_pengajuan pada MySQL Server. Tabel tb_pengajuan memiliki field id_pengajuan, userid, id_jalan, kondisi_jalan, status_ID3, waktu dan alasan.
Gambar 4.5. Struktur Tabel tb_user
Gambar 4.5 merupakan penerapan tabel tb_user pada MySQL Server. Tabel tb_user memiliki field userid, password, nama, tipe_user, banned, last_active dan alamat. 4.1.2 Implementasi Aplikasi Sistem Pendukung Keputusan Jalan Dalam aplikasi Sistem Pendukung Keputusan Jalan, digunakan sistem login dengan 3 macam hak akses yaitu administrator
dan
user
biasa
yang
dapat
melakukan
70
pengolahan data pada aplikasi ini dan satu hak akses yang dapat digunakan ketika koneksi database atau status database bermasalah. Jika login valid, maka aplikasi akan menampilkan menu-menu yang sesuai dengan hak akses pada saat login.
Gambar 4.6. Tampilan Awal Aplikasi
Gambar 4.6 merupakan tampilan awal sebelum login. Untuk dapat masuk ke dalam aplikasi diperlukan username dan password. Data username dan password disimpan dalam tabel tb_user.
Gambar 4.7. Tampilan Menu User Administrator
71
Gambar 4.7 merupakan tampilan dari aplikasi ketika user administrator telah login. Untuk hak akses administrator terdapat menu yang dapat diakses adalah Data yang meliputi Data Jalan Salatiga, Data Pengguna, Data ID3 dan Data Pengajuan Perbaikan. Selain itu, menu User Control dapat diakses Lihat Peta Salatiga dan Ganti Password. Menu Pengaturan juga dapat diakses oleh administrator yang meliputi Backup Database, Restore Database dan Ganti Koneksi Database.
Gambar 4.8. Tampilan Menu User Biasa
Gambar 4.8 merupakan tampilan menu untuk user biasa. Fungsi dengan adanya menu User Control adalah user biasa dapat mengakses submenu Lihat Peta Salatiga, Tambah Pengajuan Perbaikan Jalan, Lihat Data Pengajuan dan Ganti Password.
4.2 Pembahasan Aplikasi Dalam pembahasan aplikasi Sistem Pendukung Keputusan Jalan akan dibahas mengenai metode ID3 dan form-form yang digunakan.
72
4.2.1 Implementasi Metode ID3 ID3 merupakan sebuah metode yang menghasilkan pohon keputusan dimana berguna dalam mencapai keputusan tertentu. Kode Program 4.1. Perhitungan Gain 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
private double gain(DataTable samples, Attribute attribute) { string[] values = attribute.values; double sum = 0.0; for (int i = 0; i < values.Length; i++) { int positives, negatives; positives = negatives = 0; getValuesToAttribute(samples,attribute, values[i], out positives, out negatives); double entropy = calcEntropy(positives, negatives); sum += -(double)(positives + negatives) / mTotal * entropy; } return mEntropySet + sum; }
Kode Program 4.1 digunakan untuk perhitungan nilai gain dari suatu atribut. Untuk memulai menggunakan perhitungan gain, maka method gain dipanggil. Method gain mempunyai dua parameter yaitu samples dan attribute. Parameter samples bertipe DataTable yang digunakan untuk mem-parsing data sample yang digunakan oleh method gain. Sedangkan attribute bertipe data Attribute yang merupakan tipe data turunan digunakan untuk menyimpan data atribut. Pada baris 4 merupakan deklarasi dan inisialisasi variabel sum yang digunakan untuk menyimpan nilai entropy dari tiap value pada attribute. Baris 5 sampai 12 merupakan proses looping untuk value dari atribut yang di-parsing-kan. Baris 7 sampai 8 merupakan tahap deklarasi dengan tipe data integer dan inisialisasi dengan nilai 0
73
pada variabel positives dan variabel negatives. Pada baris 9 dilakukan pemanggilan method getValueToAttribute dengan data yang di-parsing adalah data samples, attribute, nilai pada attribute saat looping (value[i]), dan parse by reference untuk variabel positives dan negatives. Method getValueToAttribute digunakan untuk mendapatkan jumlah nilai negatif dan positif dari data sample untuk tiap nilai dari attribute. Baris 10 dilakukan untuk menghitung nilai entropy dari atribut positives dan negatives. Baris 11 adalah proses menjumlahkan nilai entropy dari tiap value pada attribute. Baris 13 merupakan proses akhir dari perhitungan gain. Yaitu entropy(S) dikurangi dengan jumlah entropy dari tiap value pada attribute. Kode Program 4.2. Perhitungan Entropy 1. 2. 3. 4. 5. 6. 7.
private double calcEntropy(int positives, int negatives) { int total = positives + negatives; double ratioPositive = (double)positives/ total; double ratioNegative = (double)negatives/ total; if (ratioPositive != 0) ratioPositive = -(ratioPositive) * System.Math.Log(ratioPositive, 2); 8. if (ratioNegative != 0) 9. ratioNegative = -(ratioNegative) * System.Math.Log(ratioNegative, 2); 10. double result = ratioPositive + ratioNegative; 11. } 12. return result; 13. }
Kode Program 4.2 merupakan perintah untuk menghitung nilai entropy. Untuk menghitung nilai entropy diperlukan 2 parameter yaitu jumlah nilai negatif dan positif. Nilai total didapat dari menjumlah nilai negatif dan positif. Baris 4 dan 5 digunakan untuk menghitung nilai perbandingan nilai positif dan
74
negatif dengan nilai total. Baris 6 dan 8 merupakan suatu kondisi dimana untuk menghitung nilai entropy, rasio perbandingan tidak boleh 0. Baris 7 dan 9 adalah langkah untuk menghitung nilai entropy, dimana nilai entropy didapatkan dari penjumlahan dari 2 variabel yaitu ratiopositives dan rationegatives. 4.2.2 Form Utama Pada bagian dilakukan pengujian aplikasi yang telah dibuat menggunakan Microsoft Visual Studio 2008 dan MySQL 5.0. Pengujian
dilakukan
dengan
menggunakan
data
yang
disimulasikan tetapi dikondisikan sebagaimana data asli. Pada saat aplikasi pertama kali dijalankan, secara default aplikasi akan membuat sesi koneksi terhadap database. Koneksi database yang digunakan pertama kali berasal dari file config.cfg. Apabila
koneksi masih gagal, maka aplikasi akan mencoba
koneksi menggunakan koneksi default setting pada saat aplikasi dibangun. Terdapat tiga macam login yang ada di dalam aplikasi, yaitu administrator lokal apabila terjadi kesalahan dalam koneksi terhadap database, administrator untuk proses administratif dan user biasa. Untuk
menggunakan
aplikasi,
diperlukan
validasi
pengguna. Diasumsikan pengguna berhasil melewati proses validasi, maka menu yang dapat diakses adalah sesuai dengan hak akses pada saat validasi login. Gambar 4.7 merupakan tampilan menu yang dapat diakses oleh hak akses administrator. Menu yang dapat diakses adalah Data yang meliputi Data Jalan
75
Salatiga, Data Pengguna, Data ID3 dan Data Pengajuan Perbaikan. Selain itu, menu User Control dapat diakses Lihat Peta Salatiga dan Ganti Password. Menu Pengaturan juga dapat diakses oleh administrator yang meliputi Backup Database, Restore Database dan Ganti Koneksi Database. 4.2.3 Form Data Jalan Form Data Jalan berfungsi untuk melihat data jalan yang ada. Administrator juga dapat mengolah data jalan berupa insert data jalan, update data jalan, delete data jalan maupun membuat report data jalan. Data jalan yang digunakan untuk pengolahan antara lain id jalan, nama jalan, pangkal simpul jalan, ujung simpul jalan, status otonomi jalan, jalur dan lajur jalan, panjang jalan, lebar damija jalan, lebar perkerasan jalan, jenis perkerasan jalan, fungsi jalan, kondisi jalan, titik pangkal jalan dan titik ujung jalan. Tampilan form Data Jalan dapat dilihat pada Gambar 4.9.
76
Gambar 4.9. Tampilan Form Data Jalan
77
Gambar 4.10. Tampilan Report Data Jalan
Gambar 4.10 merupakan tampilan report data jalan hasil dari pemilihan pada form Data Jalan. 4.2.4 Form Data Pengajuan Form Data Pengajuan adalah form yang digunakan untuk melihat data pengajuan yang telah diterima Bappeda dan melakukan proses pengolahan data yaitu proses pemilihan keputusan dengan menggunakan ID3. Dalam form Data Pengajuan juga terdapat fungsi menampilkan report yang dapat dijadikan menjadi file DOC, RTF, PDF, XLS dan RPT. Apabila data telah diproses maka akan ada konfirmasi apakah ingin menghitung ulang. Setelah proses penghitungan, pengguna akan dikonfirmasikan untuk mensetujui perhitungan atau tidak. Apabila setuju maka data akan langsung di-update dalam database dan apabila pengguna tidak setuju, maka hasil akan diubah dengan kebalikan dari hasil proses perhitungan kemudian baru disimpan ke dalam database. Tampilan form Data Pengajuan dapat dilihat pada Gambar 4.11.
78
Gambar 4.11. Tampilan Form Data Pengajuan
Gambar 4.12. Tampilan Report Data Pengajuan
4.2.5 Form Ganti Database Form Ganti Database dapat digunakan apabila database server akan maintanance atau terjadi kesalahan dalam tabel database ataupun koneksi terhadap database server. Dalam
79
berkoneksi dengan database server, aplikasi ini menggunakan dua macam connection string yaitu koneksi dari konfigurasi standar yang tersimpan dalam aplikasi dan koneksi dari file config.cfg. Tampilan untuk form Ganti Database dapat dilihat pada Gambar 4.13.
Gambar 4.13. Tampilan Form Ganti Database
Untuk mengganti koneksi database, maka administrator harus mengisi host server, username, password dan port yang digunakan untuk koneksi terhadap database baru. Kemudian pilih tombol Menghubungkan. Fungsi dari tombol Menghubungkan adalah untuk memeriksa koneksi terhadap server database baru. Apabila dapat terkoneksi maka list database akan ditambahkan pada combo box. Langkah selanjutnya adalah memilih database dan memilih tombol Ganti. Secara otomatis aplikasi akan
80
mengganti file config.cfg baru dengan koneksi ke database server baru. 4.2.6 Form ID3 Data Form ID3 Data digunakan untuk melihat data yang digunakan untuk proses perhitungan ID3 dan membuat pohon keputusan. Fungsi dari form ini adalah data yang digunakan dalam perhitungan ID3 dapat ditambahkan. Pada form ID3 Data juga terdapat fungsi untuk menghitung data ID3 dan membuat pohon keputusan. Hasil dari perhitungan ID3 dapat disimpan dengan fungsi Simpan ke DB. Tampilan form ID3 Data dapat dilihat pada Gambar 4.14.
Gambar 4.14. Tampilan Form ID3 Data
Perintah untuk menghitung ID3 dan menampilkan pohon keputusan dapat dilihat pada Kode Program 4.3.
81
Kode Program 4.3. Perintah Menghitung ID3 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
private void btnHitungID3_Click(object sender, EventArgs e){ Attribute ceu = new Attribute("fungsi", new string[] { "Arteri Primer", "Kolektor Primer", "Kolektor Sekunder", "Lokal Primer", "Lokal Sekunder", "Lingkungan" }); Attribute temperatura = new Attribute("pengaju", new string[] { "Perorangan", "Masyarakat", "Dewan" }); Attribute humidade = new Attribute("kondisi_jalan", new string[] { "Rusak Ringan", "Rusak Berat", "Baik" }); Attribute[] attributes = new Attribute[] { ceu, temperatura, humidade }; ID3_Data dataID3 = new ID3_Data(dbCon.con); DataTable samples = dataID3.getDataTable(); ID3 id3 = new ID3(); TreeNode root=id3.mountTree(samples,"result", attributes); treeView1.BeginUpdate(); treeView1.Nodes.Clear(); treeView1.Nodes.Add(this.BuatPohon(root)); treeView1.EndUpdate(); treeView1.ExpandAll(); if (!checkTree(root)){ this.ROOT = root; if (this.ROOT != null) this.btnSaveDB.Enabled = true; } else{ searchErrorTree(root); MessageBox.Show(this, "Terjadi kesalahan pada '" + this.ErrorTree + "'\nSample Data tidak mencukupi.", "Kesalahan", MessageBoxButtons.OK, MessageBoxIcon.Error); } this.ErrorTree = ""; }
Kode Program 4.3 dapat dijelaskan sebagai berikut. Baris 3 sampai 5 merupakan langkah untuk menyusun atribut yang digunakan. Baris 6 sampai 7 digunakan untuk mengambil data sample ID3 dari database. Baris 9 digunakan untuk memulai proses penghitungan data sample ID3 dan menyimpan hasil perhitungan dalam variabel root. Variabel root merupakan pohon keputusan dari hasil perhitungan ID3. Baris 10 sampai 14 adalah perintah untuk menampilkan hasil perhitungan ID3 menjadi visualisasi pohon keputusan. Baris 15 sampai 18 adalah pengecekan pohon keputusan apakah terjadi kesalahan atau tidak.
82
Jika tidak ada kesalahan maka pemberian nilai pada variabel ROOT dan jika variabel ROOT bukan null, maka tombol Simpan ke DB akan aktif. Baris 19, jika terjadi kesalahan pada pohon keputusan maka akan memberikan pesan kesalahan dan me-reset variabel ErrorTree. 4.2.7 Form Map Form Map digunakan untuk melihat data spasial Salatiga yang telah diubah menjadi peta. Tampilan form Map dapat dilihat pada Gambar 4.15.
Gambar 4.15. Tampilan Form Map
Dalam implementasi peta dengan menggunakan library yang
disertakan
dalam
MapServer
yaitu
library
mapscript_csharp.dll dan beberapa file yang berada pada MapServer pada folder ms4w\Apache\cgi-bin.
83
Perintah untuk menampilkan peta dapat dilihat pada Kode Program 4.4. Kode Program 4.4. Perintah Untuk Menampilkan Peta 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
public void reloadMap() { imageObj img = map.draw(); byte[] imgByte = img.getBytes(); using (MemoryStream ms = new MemoryStream(imgByte)) { picMap.Image = System.Drawing.Image.FromStream(ms); } reloadMapLayer(); reloadMapLegend(); }
Kode Program 4.4 dapat dijelaskan sebagai berikut. Baris 2 digunakan untuk mengubah data peta menjadi data image. Baris 3 sampai 7 digunakan untuk menampilkan image peta seperti pada Gambar 4.13. Baris 8 sampai 9 digunakan untuk menampilkan data layer dan image legenda dari peta. 4.2.8 Form Pengguna Form
Pengguna
digunakan
untuk
pengolahan
data
pengguna. Administrator dapat mengubah data pribadi termasuk password terhadap pengguna lain yang terdaftar. Tampilan form Pengguna dapat dilihat pada Gambar 4.16.
84
Gambar 4.16. Tampilan Form Pengguna
4.2.9 Form Tambah Pengajuan Form Tambah Pengajuan digunakan untuk melihat data jalan dan menambahkan data pengajuan perbaikan jalan yang diakses oleh user biasa. Tampilan form Tambah Pengajuan dapat dilihat pada Gambar 4.17.
85
Gambar 4.17. Tampilan Form Tambah Pengajuan
Pada Gambar 4.17 merupakan form Tambah Pengajuan. Pengguna aplikasi dapat menambahkan data pengajuan perbaikan jalan dengan menyertakan alasan yang logis dan hanya dapat mengajukan satu jalan untuk tiap pengajuan dan jalan yang sudah diajukan pengguna tertentu, maka pengguna tertentu tersebut tidak dapat mengajukan jalan yang sama. Untuk menambahkan pengajuan langkah pertama adalah memilih jalan yang akan diajukan kemudian mengisi form. Dilanjutkan memilih tombol Laporkan.
4.3 Pengujian Sistem dengan Blackbox Testing Pengujian Blackbox Testing pada sistem dilakukan pada proses login , pencarian data, tambah data, hapus data dan ubah
86
data. Hasil pengujian Blackbox Testing dapat dilihat pada Tabel 4.1. Tabel 4.1. Tabel Blackbox Testing Aktivitas dan Event
Input
Login dengan memilih tombol Login
Username dan Password
Input data kemudian memilih tombol Simpan
Memasukkan data baik itu data jalan, pengguna, ID3, maupun pengajuan perbaikan jalan. Mengubah data yang ada.
Mengubah data kemudian memilih tombol Edit
Output - Jika berhasil Login maka bisa mengakses menu-menu yang terdapat dalam aplikasi. - Jika username atau password salah maka muncul peringatan username atau password anda salah. - Jika belum memasukkan data sesuai prosedur (field yang tersedia) maka akan muncul peringatan bahwa kurang lengkap.
Status Penguji an Valid
Valid
- Jika masih ada data yang masih kurang (tidak sesuai prosedur) maka proses edit gagal dan akan muncul peringatan bahwa kurang lengkap.
Valid
Mencari data kemudian memilih tombol Cari
Memasukkan data yang ingin dicari
Jika data yang akan dicari tidak ada maka data tidak akan muncul.
Valid
Memilih data kemudian memilih Delete
Konfirmasi Ya atau Tidak
- Jika konfirmasi Ya maka data akan terhapus - Jika konfirmasi Tidak maka data tidak akan terhapus
Valid
Pada Tabel 4.1 menjelaskan bahwa ketika user melakukan Login harus memasukkan username dan password terlebih dahulu. Jika password maupun username salah maka akan
87
muncul peringatan bahwa password atau username salah. Namun jika berhasil maka menu akan terbuka sesuai dengan tipe pengguna yang login. Selain itu, ketika user ingin edit maupun tambah data, data yang dimasukkan harus sesuai dengan prosedur (tidak boleh kosong).
4.4 Pengujian ID3 Uji coba yang dilakukan untuk pengujian algoritma ID3 dilakukan dengan memasukkan data sample terhadap aplikasi. Jumlah data sample adalah 50 data sample. Hasil pengujian didapatkan 16% dari 50 data sample tidak sesuai dengan keputusan. Kombinasi dalam pembuatan pohon keputusan menjadi faktor dalam penentuan hasil.