BAB IV PENUTUP
B. Saran
Sistem inferensi kabur yang digunakan dalam tugas akhir ini adalah sistem inferensi kabur Tsukamoto. Untuk penelitian selanjutnya dapat digunakan sistem inferensi kabur lainnya, misalnya sistem inferensi kabur Mamdani atau sistem inferensi kabur Takagi-Sugeno-Kang.
Pada tugas akhir ini, untuk menentukan waktu tempuh bus Trans Jogja penulis hanya menggunakan dua faktor masukan, yaitu jarak tempuh dan volume kendaraan. Untuk penelitian selanjutnya, dapat ditambahkan faktor-faktor lainnya, seperti kecepatan kendaraan, kondisi jalan, konsumsi bahan bakar, dan lain sebagainya, yang berpengaruh dalam menentukan waktu tempuh bus Trans Jogja.
Selain itu, dalam tugas akhir ini penulis hanya menggunakan dua variabel masukan dengan masing-masing mempunyai tiga nilai linguistik, sehingga banyaknya kaidah yang dapat diterima maksimal 9 kaidah. Untuk penelitian selanjutnya, dapat ditambahkan nilai linguistik dari masing-masing variabel masukan, sehingga dapat ditambahkan kaidah-kaidah yang dapat diterima.
Fungsi pengaburan yang dipakai adalah Fungsi Pengaburan Segitiga. Untuk penelitian selanjutnya, dapat digunakan fungsi pengaburan lainnya, misalnya Fungsi Pengaburan Elemen Tunggal atau Fungsi Pengaburan Gauss.
62
DAFTAR PUSTAKA
Badan Pusat Statistik. (2019). Statistik Transportasi Darat 2018. Jakarta: BPS RI. https://www.bps.go.id/publication/2019/11/27/7fdd3379108b4a60e046f4c 8/statistik-transportasi-darat-2018.html diakses tanggal 9 Juni 2020
Direktorat Jenderal Bina Marga. (1997). Manual Kapasitas Jalan Indonesia (MKJI). Jakarta: Direktorat Jenderal Bina Marga, Direktorat Bina Jalan Kota.
Dinas Perhubungan Daerah Istimewa Yogyakarta. (2017). Peta Jalur Bus Trans Jogja.
https://dishub.jogjaprov.go.id/trans-jogja diakses tanggal 3 Juni 2020 Khairi, I., Yudaningtyas, E., Dachlan, H.S. (2013). Optimasi Pencarian Jalur Lalu
Lintas Antar Kota di Jawa Timur dengan Algoritma Hybrid Fuzzy-Floyd Warshall. Jurnal EECCIS, 7(2): 165-170.
https://jurnaleeccis.ub.ac.id/index.php/eeccis/article/view/221diakses tanggal 22 Februari 2019.
Sukirman, S. (1999). Dasar-dasar Perencanaan Geometrik Jalan (Cetakan Ketiga). Bandung: Nova.
Suryawan, H.P. (2016). Kalkulus Diferensial. Yogyakarta: Sanata Dharma University Press.
Susilo, F. (2012). Landasan Matematika. Yogyakarta: Graha Ilmu.
Susilo, F. (2018). Himpunan & Logika Kabur serta Aplikasinya (Edisi Kedua). Yogyakarta: Matematika.
63 LAMPIRAN
Lampiran 1: Langkah-langkah membangun sistem inferensi kabur Tsukamoto untuk menentukan waktu tempuh bus Trans Jogja pada aplikasi MATLAB berbasis GUI:
1. Buka aplikasi Matlab, kemudian pada Command Window ketikkan: >> guide
Akan muncul tampilan kotak dialog GUIDE Quick Start seperti berikut
2. Pada kotak dialog GUIDE Quick Start, pada bagian Create New GUI pilih menu Blank GUI (Default), lalu tekan OK. Akan muncul tampilan Menu Utama GUIDE seperti berikut
3. Untuk mengubah tampilan nama komponen pada Menu Utama GUIDE, pilih menu File > Preferences > GUIDE, lalu pilih Show names in component palette dan tekan OK. Tampilan akan berubah seperti berikut
4. Dalam menentukan waktu tempuh bus Trans Jogja, variabel masukan yang dibutuhkan adalah jarak tempuh dan volume kendaraan, serta variabel keluaran adalah waktu tempuh. Oleh karena itu, diperlukan 4 edit text yang digunakan untuk menampilkan variabel-variabel tersebut beserta kategorinya. Selain itu, juga diperlukan satu tombol pushbutton untuk memulai melakukan proses perhitungan. Langkah-langkah dalam mendesain figure seperti berikut:
a. Pilih menu Static Text, lalu akan muncul kotak dengan label text1. Lakukan hal yang sama untuk menambahkan kotak teks lainnya.
b. Klik kotak berlabel text1, kemudian pilih menu String dan ketikkan “PENENTUAN WAKTU TEMPUH BUS TRANS JOGJA” untuk mengubah labelnya.
c. Klik kotak berlabel text2, kemudian pilih menu String dan ketikkan “Masukan” untuk mengubah labelnya.
d. Klik kotak berlabel text3, kemudian pilih menu String dan ketikkan “Keluaran” untuk mengubah labelnya.
e. Klik kotak berlabel text4, kemudian pilih menu String dan ketikkan “Jarak Tempuh” untuk mengubah labelnya.
f. Klik kotak berlabel text5, kemudian pilih menu String dan ketikkan “Volume Kendaraan” untuk mengubah labelnya.
g. Klik kotak berlabel text6, kemudian pilih menu String dan ketikkan “Waktu Tempuh” untuk mengubah labelnya.
h. Klik kotak berlabel text7, kemudian pilih menu String dan ketikkan “Kategori” untuk mengubah labelnya.
i. Untuk menambahkan variabel-variabel masukan dan keluaran, pilih menu Edit Text, maka akan muncul kotak dengan label edit1. Lakukan hal yang sama untuk menambahkan variabel lainnya.
j. Klik kotak berlabel edit1, kemudian pilih menu String dan ketikkan “ ” untuk mengubah labelnya.
k. Klik kotak berlabel edit2, kemudian pilih menu String dan ketikkan “ ” untuk mengubah labelnya.
l. Klik kotak berlabel edit3, kemudian pilih menu String dan ketikkan “ ” untuk mengubah labelnya.
m. Klik kotak berlabel edit4, kemudian pilih menu String dan ketikkan “ ” untuk mengubah labelnya.
n. Pilih menu Push Button, lalu akan muncul kotak dengan label pushbutton1.
o. Klik kotak berlabel pushbutton1, kemudian pilih menu String dan ketikkan “PROSES” untuk mengubah labelnya.
Akan muncul tampilan seperti berikut:
5. Langkah selanjutnya adalah menyimpan tampilan tersebut dan memberi nama PenentuanWaktuTempuhBusTransJogja.fig. Secara otomatis akan terbentuk kerangka m-file. Dalam hal ini, cukup diperhatikan fungsi yang memiliki callback, yaitu edit1_Callback, edit2_Callback, edit3_Callback, edit4_Callback, dan pushbutton1_Callback.
6. Untuk mendefinisikan fungsi-fungsi keanggotaan variabel-variabel masukan dan variabel keluaran, dilakukan cara sebagai berikut:
a. Pada bagian edit1, tambahkan program di bawah fuction edit1_Callback untuk mendefinisikan masukan jarak tempuh seperti berikut:
jaraktempuh=str2num(get(handles.edit1,'String')); handles.jaraktempuh=jaraktempuh;
guidata(hObject,handles)
b. Pada bagian edit2, tambahkan program di bawah fuction edit2_Callback untuk mendefinisikan masukan volume kendaraan seperti berikut:
volumekendaraan=str2num(get(handles.edit2,'String')); handles.volumekendaraan=volumekendaraan;
c. Pada bagian edit3, tidak perlu ditambahkan program apapun di bawah edit3_Callback, karena kotak tersebut hanya berfungsi untuk menampilkan hasil perhitungan waktu tempuhnya.
d. Pada bagian edit4, tidak perlu ditambahkan program apapun di bawah edit4_Callback, karena kotak tersebut hanya berfungsi untuk menampilkan kategori hasil perhitungan waktu tempuhnya.
e. Pada bagian pushbutton1, tambahkan program di bawah fuction pushbutton1_Callback seperti berikut:
jaraktempuh=str2num(get(handles.edit1,'String')); volumekendaraan=str2num(get(handles.edit2,'String'));
%Mendefinisikan fungsi keanggotaan variabel masukan %Jarak tempuh dekat
if (jaraktempuh<=0) myu_dekat=1; elseif (jaraktempuh>=20) myu_dekat=0; else x1 = (20*jaraktempuh)/22; x2 = (20*jaraktempuh)/18; b1 = (x1-(jaraktempuh-2))/2; b2 = ((jaraktempuh+2)-x2)/2; myu_dekat = max(b1,b2) end end
%Jarak tempuh sedang
if((jaraktempuh <= 15) || (jaraktempuh >= 35)) myu_sedang1 = 0;
elseif(jaraktempuh == 25) myu_sedang1 = 1;
elseif((jaraktempuh >= 15) && (jaraktempuh <= 25)) x3 = ((10 * jaraktempuh) - 50) / 8; x4 = ((10*jaraktempuh) + 50) / 12; b3 = (x3 - (jaraktempuh - 2)) / 2; b4 = ((jaraktempuh + 2) - x4) / 2; myu_sedang1 = max(b3,b4)
elseif((jaraktempuh >= 25) && (jaraktempuh <= 35)) x5 = ((10 * jaraktempuh) + 50) / 12; x6 = ((10*jaraktempuh) - 50) / 8; b5 = (x5 - (jaraktempuh - 2)) / 2; b6 = ((jaraktempuh + 2) - x6) / 2; myu_sedang1 = max(b5,b6) end end end end
%Jarak tempuh jauh if(jaraktempuh <= 30) myu_jauh = 0; elseif(jaraktempuh >= 60) myu_jauh = 1; else x7 = ((30 * jaraktempuh) - 120) / 28; x8 = ((30 * jaraktempuh) + 120) / 32; b7 = (x7 - (jaraktempuh - 2)) / 2; b8 = ((jaraktempuh + 2) - x8) / 2; myu_jauh = max(b7,b8) end end
%Volume kendaraan rendah if(volumekendaraan <= 0) myu_rendah = 1; elseif (volumekendaraan >= 4000) myu_rendah = 0; else x9 = (4000 * volumekendaraan) / 4200; x10 = (4000 * volumekendaraan) / 3800; b9 = (x9 - (volumekendaraan-200)) / 200; b10 = ((volumekendaraan + 200) - x10) / 200; myu_rendah = max(b9,b10) end end
%Volume kendaraan sedang
if((volumekendaraan <= 3000) || (volumekendaraan >= 8000)) myu_sedang2 = 0;
elseif(volumekendaraan == 5500) myu_sedang2 = 1;
else
if ((volumekendaraan >= 3000) && (volumekendaraan <= 5500)) x11 = ((2500 * volumekendaraan) - 1100000) / 2300;
x12 = ((2500 * volumekendaraan) + 1100000) / 2700; b11 = (x11 - (volumekendaraan - 200)) / 200;
b12 = ((volumekendaraan + 200) - x12) / 200; myu_sedang2 = max(b11,b12)
elseif ((volumekendaraan >= 5500) && (volumekendaraan <= 8000)) x13 = ((2500 * volumekendaraan) + 1100000) / 2700;
x14 = ((2500 * volumekendaraan) - 1100000) / 2300; b13 = (x13 - (volumekendaraan - 200)) / 200;
myu_sedang2 = max(b13,b14) end end end end
%Volume kendaraan tinggi if(volumekendaraan <= 7000) myu_tinggi = 0; elseif(volumekendaraan >= 14000) myu_tinggi = 1; else x15 = ((7000 * volumekendaraan) - 2800000) / 6800; x16 = ((7000 * volumekendaraan) + 2800000) / 7200; b15 = (x15 - (volumekendaraan - 200)) / 200; b16 = ((volumekendaraan + 200) - x16) / 200; myu_tinggi = max(b15,b16) end end
%Perhitungan masing-masing kaidah
%Kaidah 1: Jika jarak tempuh dekat dan volume kendaraan rendah, maka waktu tempuh cepat
w1 = min([myu_dekat,myu_rendah]) if(w1 == 0) y1 = 40 elseif(w1 == 1) y1 = 0 else y1 = 40 - (w1 * 40) end
end
%Kaidah 2: Jika jarak tempuh dekat dan volume kendaraan sedang, maka waktu tempuh agak cepat
w2 = min([myu_dekat,myu_sedang2]) if(w2 == 0) y2 = 40 elseif(w2 == 1) y2 = 0 else y2 = 40 - ((w2 ^ 2) * 40) end end
%Kaidah 3: Jika jarak tempuh dekat dan volume kendaraan tinggi, maka waktu tempuh lambat
w3 = min([myu_dekat,myu_tinggi]) if(w3 == 0) y3 = 30 elseif(w3 == 1) y3 = 120 else y3 = 30 + (w3 * 90) end end
%Kaidah 4: Jika jarak tempuh sedang dan volume kendaraan rendah, maka waktu tempuh cepat
w4 = min([myu_sedang1,myu_rendah]) if(w4 == 0)
elseif(w4 == 1) y4 = 0 else y4 = 40 - (w4 * 40) end end
%Kaidah 5: Jika jarak tempuh sedang dan volume kendaraan sedang, maka waktu tempuh agak cepat
w5 = min([myu_sedang1,myu_sedang2]) if(w5 == 0) y5 = 40 elseif(w5 == 1) y5 = 0 else y5 = 40 - ((w5 ^ 2) * 40) end end
%Kaidah 6: Jika jarak tempuh sedang dan volume kendaraan tinggi, maka waktu tempuh lambat
w6 =min([myu_sedang1,myu_tinggi]) if(w6 == 0) y6 = 30 elseif(w6 == 1) y6 = 120 else y6 = 30 + (w6 * 90) end end
%Kaidah 7: Jika jarak tempuh jauh dan volume kendaraan rendah, maka waktu tempuh agak cepat
w7 = min([myu_jauh,myu_rendah]) if(w7 == 0) y7 = 40 elseif(w7 == 1) y7 = 0 else y7 = 40 - ((w7 ^ 2) * 40) end end
%Kaidah 8: Jika jarak tempuh jauh dan volume kendaraan sedang, maka waktu tempuh lambat
w8 = min([myu_jauh,myu_sedang2]) if(w8 == 0) y8 = 30 elseif(w8 == 1) y8 = 120 else y8 = 30 + (w8 * 90) end end
%Kaidah 9: Jika jarak tempuh jauh dan volume kendaraan tinggi, maka waktu tempuh lambat
w9 = min([myu_jauh,myu_tinggi]) if(w9 == 0)
y9 = 30 elseif(w9 == 1) y9 = 120
else
y9 = 30 + (w9 * 90) end
end
%Perhitungan nilai akhir y
waktutempuh=sum([w1*y1,w2*y2,w3*y3,w4*y4,w5*y5,w6*y6,w7*y 7,w8*y8,w9*y9]/sum([w1,w2,w3,w4,w5,w6,w7,w8,w9])) set(handles.edit3,'String',num2str(waktutempuh)); if waktutempuh<40 set(handles.edit4,'String','Cepat');
elseif waktutempuh<=40 && waktutempuh>=0 set(handles.edit4,'String','Agak Cepat');
elseif waktutempuh<=120 && waktutempuh>=30 set(handles.edit4,'String','Lambat');
end;
f. Langkah selanjutnya adalah menjalankan aplikasi yang telah dibuat, yaitu dengan mengklik tombol Run dari jendela figure, sehingga muncul tampilan seperti pada Gambar 3.10.
Lampiran 2: Langkah dalam memasukkan masukan jarak tempuh dan volume kendaraan serta menjalankan program tersebut, dengan cara sebagai berikut:
a. Klik kotak putih pada masukan jarak tempuh, kemudian ketikkan jarak tempuh yang ingin dimasukkan, begitu juga pada masukan volume kendaraan. Misalkan dalam contoh pada subbab di atas, ketikkan jarak tempuh 17 dan volume kendaraan 3500.
b. Kemudian tekan tombol PROSES. Akan muncul nilai keluaran atau dalam kasus ini waktu tempuh yang dapat dilihat pada kotak putih di bawah tulisan Keluaran Waktu Tempuh.
c. Lakukan hal yang sama untuk menghitung waktu tempuh jalur bus Trans Jogja yang lainnya. Tampilan hasil perhitungan akan tampak seperti pada Gambar 3.11.