• Tidak ada hasil yang ditemukan

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

Dokumen terkait