BAB III. ANALISIS DAN PERANCANGAN
3.7. Rancangan Antar Muka
3.7.1 Form Utama
Pertama kali user masuk, akan ditampilkan form utama. Dalam form utama terdapat tombol masuk yang digunakan untuk masuk ke dalam halaman perhitungan.
MASUK PROGRAM BANTU
PENGATURAN LAMPU LALU LINTAS MENGGUNAKAN LOGIKA FUZZY
gambar
Gambar 3.14 Rancangan Antar Muka Form Utama
3.7.2 Form Perhitungan
Dalam form perhitungan terdapat 2 menu utama yaitu File dan Help. Menu
File mempunyai sub menu yaitu sub menu Aturan Logika Fuzzy berfungsi untuk menuju form Aturan Logika Fuzzy yang menampilkan aturan-aturan fuzzy yang di pakai dalam perhitungan program. Dan sub menu keluar berfungsi untuk keluar dari program. Menu Help mempunyai sub menu yaitu Petunjuk dan About. Sub menu petunjuk berfungsi untuk menuju ke form petunjuk yang menampilkan petunjuk penggunaan program. Sub menu About untuk menampilkan profile
penulis. Di form ini, user diminta memasukkan inputan yaitu jumlah kendaraan berdasarkan jenisnya yaitu LV, HV, dan MC. Sebelum memasukkan inputan
jumlah kendaraan, user di minta untuk memilih jumlah inputan (jumlah putaran lampu merah) terlebih dahulu. Tombol input berfungsi untuk memasukkan
inputan data. Kotakan output untuk menampilkan hasil perhitungan yaitu waktu lampu hijau menyala setiap jalurnya. Setelah semua data dimasukkan, tombol lihat data inputan akan aktif, tombol ini berfungsi untuk menampilkan data-data
45
yang telah di inputkan. Tombol ubah berfungsi untuk megubah data inputan. Tombol (<) dan (>) berfungsi untuk bergeser ke data sebelumnya dan sesudahnya. Tombol proses untuk melakukan perhitungan dan menampilkan output. Tombol proses akan aktif apabila data inputan sudah dimasukkan semua. Tombol detail perhitungan untuk menampilkan derajat keanggotaan dan α-predikat (fire
strength) setiap jalur. Tombol detail perhitungan akan aktif apabila tombol proses sudah ditekan. Tombol ubah batas himpunan digunakan untuk menuju ke form maintenance batas himpunan. Tombol refresh untuk menampilkan halaman perhitungan yang baru. Dan tombol keluar berfungsi untuk keluar dari program.
File Help
PERHITUNGAN WAKTU LAMPU HIJAU MENYALA
LV : Kendaraan ( mobil penumpang ) HV : Kendaraan Berat (Bis, Truk, dll) MC : Sepeda Motor
Waktu Lampu Hijau Menyala :
JALUR SELATAN detik
JALUR BARAT detik
JALUR UTARA detik
JALUR TIMUR detik
KELUAR
OUTPUT
LIHAT DATA INPUTAN DETAIL PERHITUNGAN PROSES Jumlah Inputan JALUR SELATAN LV HV MC JALUR BARAT LV HV MC JALUR UTARA LV HV MC JALUR TIMUR LV HV MC > 1 < UBAH INPUT INPUTAN
UBAH BATAS HIMPUNAN
REFRESH
Gambar 3.15 Rancangan Antar Muka Form Perhitungan
3.7.3 FormMaintenance Batas Himpunan
Form ini berfungsi untuk mengubah batas-batas himpunan untuk masing-masing variabel. Dalam form Maintenance Batas Himpunan terdapat 2
47
tabbedPane yaitu tab variabel jalur dan tab variabel lampu hijau. Dalam setiap tab terdapat combobox untuk memilih variabel-variabel dan textfield untuk mengisikan inputan batas himpunan masing-masing variabel. Tombol Ubah untuk mengaktifkan textfield dan meng-edit data batas-batas himpunan. Tombol Simpan untuk menyimpan hasil perubahan ke dalam database dan menampilkan perubahan pada tabel yang terdapat pada form Maintenance Batas Himpunan.
Nama Variabel Batas TP Batas CP Batas P Batas SP
Tabel Batas Himpunan
UBAH SIMPAN
Nama Variabel Batas TP Batas CP Batas P Batas SP Smp/ antrian Smp/ antrian Smp/ antrian Smp/ antrian KEMBALI Jalur S
Variabel Lampu Hijau Variabel Jalur
Gambar 3.16 Rancangan Antar Muka Form Maintenance Batas Himpunan
3.7.4 FormDetail Perhitungan
Form detail perhitungan berfungsi untuk menampilkan data inputan, derajat keanggotaan, α-predikat (fire strength) dan nilai z untuk setiap jalur.
... ...
R16 … ... … ... … … … … R2 … ... … ... … … … … R1 … ... … ... … … … …
Aturan predikat z predikat z predikat z predikat z Jalur Selatan Jalur Barat Jalur Utara Jalur Timur Alfa Predikat
Nilai Z ... ... ... ... Jalur Selatan Jalur Barat Jalur Utara Jalur Timur Nilai Z
miu_SangatPadat … … … ... miu_Padat … … … … miu_CukupPadat … … … … miu_TidakPadat ... … … …
Jalur Selatan Jalur Barat Jalur Utara Jalur Timur Derajat Keanggotaan
DETAIL PERHITUNGAN
Jalur Timur : … smp/jam
Jalur Utara : … smp/jam
Jalur Barat : … smp/jam
Jalur Selatan : … smp/jam Data Inputan
BAB IV
IMPLEMENTASI DAN ANALISA HASIL
4.1 Implementasi
Perancangan sistem yang sudah dilakukan selanjutnya diimplementasikan ke dalam program. Program dibuat dengan menggunakan bahasa pemrograman
Java.
4.1.1 Implementasi Fungsi Keanggotaan
Implementasi fungsi keanggotaan setiap variabel digunakan untuk menyatakan daerah fungsi keanggotaan yang berada dalam suatu interval tertentu. Sebagai contoh untuk variabel Jalur Selatan, pencarian derajat keanggotaan untuk masing-masing fungsi keanggotaannya dapat dilihat pada potongan program di bawah ini :
class Jalur_S {
public double jml_S = rata_akhir_S;
public double S_1 = BatasHimp.JalurS_Batas1(); public double S_2 = BatasHimp.JalurS_Batas2(); public double S_3 = BatasHimp.JalurS_Batas3(); public double S_4 = BatasHimp.JalurS_Batas4(); public double hsl_S; public double TP() { if ((jml_S <= S_1)) { return 1; } else if ((jml_S >= S_1) && (jml_S <= S_2)) { hsl_S=(S_2 - jml_S) / (S_2 – S_1); if(hsl_S>1){ return 1; } else{ return hsl_S; } } else { return 0; } } public double CP() { if ((jml_S <= S_1) && (jml_S >= S_3)) { return 0; 49
} else if ((jml_S >= S_1) && (jml_S <= S_2)) { hsl_S = (jml_S - S_1) / (S_2 – S_1); if(hsl_S>1){ return 1; } else{ return hsl_S; } } else if ((jml_S >= S_2) && (jml_S <= S_3)) { hsl_S = (S_3 - jml_S) / (S_3 – S_2); if(hsl_S>1){ return 1; } else{ return hsl_S; } } else { return 0; } } public double P() { if ((jml_S <= S_2) && (jml_S >= S_4)) { return 0; } else if ((jml_S >= S_2) && (jml_S <= S_3)) { hsl_S = (jml_S - S_2) / (S_3 – S_2); if(hsl_S>1){ return 1; } else{ return hsl_S; } } else if ((jml_S >= S_3) && (jml_S <= S_4)) { hsl_S = (S_4 - jml_S) / (S_4 – S_3); if(hsl_S>1){ return 1; } else{ return hsl_S; } } else { return 0; } } public double SP() { if ((jml_S <= S_3)) { return 0; } else if ((jml_S >= S_3) && (jml_S <= S_4)) { hsl_S = (jml_S - S_3) / (S_4 – S_3); if(hsl_S>1){ return 1; } else{ return hsl_S; } } else if ((jml_S >= S_4)) { return 1; } else { return 0; } } }
51
Listing program di atas digunakan untuk mencari derajat keanggotaan untuk setiap fungsi keanggotaan dari suatu masukan jml_S. Variabel S_1, S_2, S_3, S_4 merupakan variabel-variabel batas himpunan untuk jalur selatan yang diambil dari database.
4.1.2 Implementasi Aturan Kabur
Implementasi aturan kabur setiap variabel untuk menghitung nilai z untuk setiap aturan dengan menggunakan fungsi MIN pada aplikasi fungsi implikasinya. Untuk aturan jalur selatan di pengaruhi oleh jalur sebelah kirinya yaitu jalur barat. Sebagai contoh aturan untuk jalur selatan dapat dilihat pada potongan program di bawah ini :
double LampuS_1 = BatasHimp.LampuHijauS_Batas1(); double LampuS_2 = BatasHimp.LampuHijauS_Batas2(); double LampuS_3 = BatasHimp.LampuHijauS_Batas3(); double LampuS_4 = BatasHimp.LampuHijauS_Batas4(); output_rule_s = new double[16];
u_output_s = new double[16]; // R1
output_rule_s[0] = Find_Min(u_jalur_s_tp, u_jalur_b_tp); u_output_s[0] = LampuS_2 - (2 * output_rule_s[0]); // R2
output_rule_s[1] = Find_Min(u_jalur_s_tp, u_jalur_b_cp); u_output_s[1] = LampuS_2 - (2 * output_rule_s[1]); // R3
output_rule_s[2] = Find_Min(u_jalur_s_tp, u_jalur_b_p); u_output_s[2] = LampuS_2 - (2 * output_rule_s[2]); // R4
output_rule_s[3] = Find_Min(u_jalur_s_tp, u_jalur_b_sp); u_output_s[3] = LampuS_2 - (2 * output_rule_s[3]); // R5
output_rule_s[4] = Find_Min(u_jalur_s_cp, u_jalur_b_tp); u_output_s[4] = LampuS_1 + (2 * output_rule_s[4]); // R6
output_rule_s[5] = Find_Min(u_jalur_s_cp, u_jalur_b_cp); u_output_s[5] = LampuS_1 + (2 * output_rule_s[5]); // R7
output_rule_s[6] = Find_Min(u_jalur_s_cp, u_jalur_b_p); u_output_s[6] = LampuS_2 - (2 * output_rule_s[6]); // R8
output_rule_s[7] = Find_Min(u_jalur_s_cp, u_jalur_b_sp); u_output_s[7] = LampuS_2 - (2 * output_rule_s[7]); // R9
output_rule_s[8] = Find_Min(u_jalur_s_p, u_jalur_b_tp); u_output_s[8] = LampuS_2 + (4 * output_rule_s[8]); // R10
output_rule_s[9] = Find_Min(u_jalur_s_p, u_jalur_b_cp); u_output_s[9] = LampuS_2 + (4 * output_rule_s[9]); // R11
output_rule_s[10] = Find_Min(u_jalur_s_p, u_jalur_b_p); u_output_s[10] = LampuS_3 - (4 * output_rule_s[10]); // R12
output_rule_s[11] = Find_Min(u_jalur_s_p, u_jalur_b_sp); u_output_s[11] = LampuS_3 - (4 * output_rule_s[11]); // R13
output_rule_s[12] = Find_Min(u_jalur_s_sp, u_jalur_b_tp); u_output_s[12] = LampuS_3 + (3 * output_rule_s[12]); // R14
output_rule_s[13] = Find_Min(u_jalur_s_sp, u_jalur_b_cp); u_output_s[13] = LampuS_3 + (3 * output_rule_s[13]); // R15
output_rule_s[14] = Find_Min(u_jalur_s_sp, u_jalur_b_p); u_output_s[14] = LampuS_4 - (3 * output_rule_s[14]); // R16
output_rule_s[15] = Find_Min(u_jalur_s_sp, u_jalur_b_sp); u_output_s[15] = LampuS_4 - (3 * output_rule_s[15]);
Pada listing program di atas, variabel LampuS_1, LampuS_2, LampuS_3, LampuS_4 merupakan variabel-variabel batas himpunan untuk LampuHijauS yang diambil dari database.
4.1.3 Implementasi Hitung Rata-Rata Terbobot
Setelah masing-masing variabel mendapatkan nilai α-predikat dan z untuk setiap aturan maka Z untuk setiap jalur dapat dicari dengan cara menghitung rata-rata terbobot sebagai berikut :
53
∑
= = − 16 1 ) ( * n i predikati zi α Z =∑
= = − 16 1 n i predikati αSebagai contoh implementasi hitung rata-rata terbobot untuk jalur selatan dapat dilihat pada potongan program di bawah ini :
double s = 0;
double temp_s1 = 0; double temp_s2 = 0; for(int i=0;i<16;i++){
temp_s1 += output_rule_s[i] * u_output_s[i]; temp_s2 += output_rule_s[i];
}
s = temp_s1 / temp_s2;
Waktu lampu hijau menyala yang ditampilkan pada program merupakan hasil pembulatan.
4.2 Hasil Implementasi