PROGRAM BANTU PENGATURAN LAMPU LALU LINTAS … · Yogyakarta using constant timing system and...
Transcript of PROGRAM BANTU PENGATURAN LAMPU LALU LINTAS … · Yogyakarta using constant timing system and...
PROGRAM BANTU PENGATURAN LAMPU LALU LINTAS
MENGGUNAKAN LOGIKA FUZZY
( Studi Kasus : Perempatan Ringroad UPN Yogyakarta )
TUGAS AKHIR
Diajukan untuk Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Teknik
Program Studi Teknik Informatika
Oleh:
Verania Puspitaning Tyas Cipta Putri
NIM : 045314043
PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
2009
THE ASSISTANCE PROGRAM OF TRAFFIC LIGHTS
SYSTEM USING FUZZY LOGIC
( Case Study : Ringroad Intersection of UPN Yogyakarta )
FINAL PROJECT
Presented as Partial Fulfillment of The Requirements
To Obtain Bachelor Degree
in Informatics Engineering
By:
Verania Puspitaning Tyas Cipta Putri
NIM : 045314043
INFORMATICS ENGINEERING STUDY PROGRAM
FACULTY OF SCIENCE AND TECHNOLOGY
SANATA DHARMA UNIVERSITY
YOGYAKARTA
2009
ii
iii
iv
v
PERNYATAAN KEASLIAN NASKAH Saya menyatakan dengan sesungguhnya bahwa skripsi yang saya tulis ini
tidak memuat karya atau bagian karya orang lain, kecuali yang telah disebutkan
dalam kutipan dan daftar pustaka sebagaimana layaknya karya ilmiah.
Yogyakarta, ………………………
Penulis
Verania Puspitaning Tyas Cipta Putri
vi
Karya kecil ini kupersembahkan untuk :
Tuhan Yesus Kristus yang Maha Pengasih
Bunda Maria atas keajaiban yang diberikan
Bapak , Ibu dan Mbah ‘Ti atas segala doa dan pengorbanannya
Mbak Tia dan ade’ku Sita Tersayang
Lolik Terkasih
vii
Bila engkau tidak bisa menjadi pohon cemara di bukit,
jadilah belukar yang indah di tepi parit
Bila engkau tidak bisa menjadi belukar,
jadilah rumput yang membuat jalan-jalan semarak.
Bila engkau tidak bisa menjadi gurami,
jadilah teri yang terindah di tambak.
Bila engkau tidak bisa menjadi komandan,
jadilah prajurit yang tangguh.
Bukan kebesaran yang menentukan menang atau kalah,
yang penting jadilah wajar, apa adamu dan menjadi dewasa.
( Douglas Malloch)
viii
ABSTRAKSI
Pengaturan lampu lalu lintas pada perempatan ringroad UPN Yogyakarta
pada saat ini masih menggunakan sistem pewaktuan yang tetap dan tidak
memperhitungkan kepadatan pada tiap jalurnya. Salah satu faktor yang
mempengaruhi pengaturan lampu lalu lintas adalah besarnya volume kendaraan
atau kepadatan pada perempatan tersebut. Kepadatan lalu lintas yang bersifat tidak
tegas (kabur) mengakibatkan asumsi yang berbeda-beda. Menanggapi hal
tersebut, maka dibuat program bantu pengaturan lampu lalu lintas dengan
menggunakan logika fuzzy.
Pada program bantu ini, user diminta untuk menginputkan jumlah kendaraan
untuk masing-masing jalurnya. Selain memperhatikan kepadatan lalu lintas pada
jalur yang diatur, program ini juga memperhatikan kepadatan lalu lintas pada jalur
yang menunggu. Nilai batas-batas himpunan diambil dari hasil pengamatan di
perempatan ringroad UPN Yogyakarta. Pengambilan data dilakukan pada tanggal
31 Maret 2008 sampai 6 April 2008 dengan waktu yang berbeda-beda. Program
bantu ini dibangun dengan menggunakan bahasa pemrograman Java dan database
MySQL untuk menyimpan batas-batas himpunannya.
Hasil yang diberikan dari program berupa waktu lampu hijau menyala untuk
setiap jalurnya sehingga diharapkan kepadatan pada perempatan ringroad UPN
Yogyakarta dapat berkurang atau bahkan dapat melintas seluruhnya. Keluaran
program juga dipengaruhi oleh batas-batas himpunan.
ix
ABSTRACT
In the recent time, traffic lights system at ringroad intersection of UPN
Yogyakarta using constant timing system and counting system is not measured by
the density for each traffic lanes. One of influenced factors of traffic lights system
is the volume of unit of vehicles or the density of the intersection. The
characteristic of traffic density is not distinctive (vague) arising the different
assumptions. Responding on this problem, invented the assistance program of
traffic lights system using fuzzy logic.
By the assistance program, user ask for inputting the volume unit vehicles
for each traffic lanes. Additionally, concerning on the traffic density for well
organized traffic lane, the program also concerns on the traffic density for waiting
traffic lane. The gathering of limitation values taken from observation result at
ringroad intersection of UPN Yogyakarta. Data gathering was held during March
31 2008 until April 6 2008 with different time frame. The assistance program is
built with java programming language and MySQL database for storing the
limitation of gathering.
The result of the program showed when the green light for each traffic lanes,
so it could be expected that the traffic density at ringroad intersection of UPN
Yogyakarta could be decreased, moreover could be fully crossed. The output of
the program is also influenced by the limitation of gathering.
x
KATA PENGANTAR
Puji dan syukur penulis panjatkan kepada Tuhan Yang maha Esa yang telah
melimpahkan berkat dan rahmat-Nya sehingga dapat terselesaikannya penulisan
tugas akhir dengan judul PROGRAM BANTU PENGATURAN LAMPU LALU
LINTAS MENGGUNAKAN LOGIKA FUZZY.
Selesainya tugas akhir ini juga tidak luput dari peran serta berbagai pihak yang
dengan caranya tersendiri memberikan dukungan dan bantuan. Oleh karena itu
penulis ingin mengucapkan terima kasih kepada :
1. Bapak Ir. Gregorius Heliarko SJ, SS, BST, MA, M.Sc selaku Dekan Fakultas
Sains dan Teknologi Universitas Sanata Dharma.
2. Bapak Drs. Jong Jek Siang, M.Sc. yang telah meluangkan waktu, tenaga dan
pikiran untuk membimbing penulis dari awal sampai terselesaikannya
penulisan tugas akhir ini.
3. Bapak Puspaningtyas Sanjoyo Adi, S.T., M.T. selaku Ketua Jurusan teknik
Informatika sekaligus dosen penguji yang telah memberikan banyak kritik dan
saran yang membangun demi sempurnanya tugas akhir ini.
4. Bapak St. Eko Hari Parmadi, S.Si, M.Kom. selaku dosen penguji yang telah
memberikan banyak kritik dan saran yang membangun demi sempurnanya
tugas akhir ini.
5. Seluruh Dosen, Laboran, Staf Sekretariat, dan karyawan Jurusan Teknik
Informatika Universitas Sanata Dharma Yogyakarta.
6. Bapak dan ibu yang telah mencurahkan kasih sayang serta doa-doa yang tak
pernah berhenti mengiringi setiap langkah-langkah kami. Dan untuk
pengorbanan bapak dan ibu yang tidak akan pernah tergantikan dengan
apapun.
7. Mbah Ti Dwijo Susanto yang turut membesarkan dan merawatku.
8. Mbak Tia dan ade’ku Sita yang selalu bersedia mendengar keluh kesahku dan
selalu memberi semangat. Mas seno untuk terjemahannya.
xi
9. Seluruh keluarga besar, yang telah memberikan semangat, nasehat, doa, dan
dorongan dalam menjalani hidup ini.
10. “Lolik” terimakasih untuk kasih sayang, perhatian, doa, semangat dan
dukungannya selama ini.
11. Ina, Vera Sala, Lusi dan Teman-teman TI’04, terimakasih atas bantuan,
dukungan dan kebersamaan kalian selama ini.
12. Temanku suci, terimakasih sudah menjadi sahabatku.
13. Semua pihak yang telah membantu penulis dalam penyelesaian Tugas Akhir,
terima kasih.
Dengan rendah hati penulis menyadari bahwa karya ilmiah ini masih sangat
jauh dari sempurna. Oleh karena itu kritik dan saran sangat penulis harapkan
untuk perbaikan tugas akhir ini. Akhir kata, semoga tugas akhir ini bermanfaat
bagi semua pihak. Terima kasih.
Penulis
xii
DAFTAR ISI
HALAMAN JUDUL -------------------------------------------------------------- i
HALAMAN PERSETUJUAN ------------------------------------------------- iii
HALAMAN PENGESAHAN -------------------------------------------------- iv
HALAMAN PERNYATAAN -------------------------------------------------- vi
HALAMAN PERSEMBAHAN ------------------------------------------------ vii
MOTTO ---------------------------------------------------------------------------- viii
ABSTRAKSI ---------------------------------------------------------------------- ix
ABSTRACT ---------------------------------------------------------------------- x
KATA PENGANTAR ----------------------------------------------------------- xi
DAFTAR ISI ---------------------------------------------------------------------- xiii
DAFTAR GAMBAR-------------------------------------------------------------- xvi
DAFTAR TABEL ----------------------------------------------------------------- xviii
BAB I. PENDAHULUAN
1.1. Latar Belakang Masalah ------------------------------------------------- 1
1.2. Rumusan Masalah -------------------------------------------------------- 2
1.3. Batasan Masalah ---------------------------------------------------------- 2
1.4. Tujuan Penyusunan Skripsi---------------------------------------------- 3
1.5. Metode Penelitian--------------------------------------------------------- 3
1.6. Sistematika Penulisan ---------------------------------------------------- 3
BAB II. LANDASAN TEORI
2.1. Logika Fuzzy
2.1.1. Pengenalan Logika Fuzzy ---------------------------------------- 5
2.1.2. Variabel Linguistik dan Pengubah Linguistik ---------------- 5
2.1.3. Fungsi Keanggotaan ---------------------------------------------- 7
2.1.4. Operator Dasar Zadeh Untuk Operasi Himpunan Fuzzy ----- 9
xiii
2.1.5. Aturan Jika-Maka ------------------------------------------------- 11
2.1.6. Fungsi Implikasi -------------------------------------------------- 11
2.1.7. Sistem Kendali Logika Kabur ----------------------------------- 12
2.1.8 Variasi Sistem Kendali Kabur Tsukamoto -------------------- 18
2.2. Java ------------------------------------------------------------------------ 19
2.3. Arus Lalu Lintas ---------------------------------------------------------- 21
BAB III. ANALISIS DAN PERANCANGAN
3.1. Pembentukan Variabel Linguistik
3.1.1. Variabel Jalur S --------------------------------------------------- 24
3.1.2. Variabel Jalur B -------------------------------------------------- 25
3.1.3. Variabel Jalur U--------------------------------------------------- 27
3.1.4. Variabel Jalur T -------------------------------------------------- 28
3.1.5. Variabel LampuHijau S ------------------------------------------ 29
3.1.6. Variabel LampuHijau B ----------------------------------------- 31
3.1.7. Variabel LampuHijau U ----------------------------------------- 32
3.1.8. Variabel LampuHijau T ----------------------------------------- 34
3.2. Aturan Logika Fuzzy ---------------------------------------------------- 35
3.3. Contoh Penerapan Logika Fuzzy --------------------------------------- 36
3.4. Perancangan Sistem ----------------------------------------------------- 38
3.5. Analisis Sistem
3.5.1. Use Case Diagram ----------------------------------------------- 40
3.5.2. Context Diagram ------------------------------------------------- 41
3.5.3. Decompotition Diagram ---------------------------------------- 41
3.5.4. Data Flow Diagram --------------------------------------------- 42
3.6. Perancangan Struktur Data ---------------------------------------------- 43
3.7. Rancangan Antar Muka
3.7.1. Form Utama ------------------------------------------------------- 43
3.7.2. Form Perhitungan------------------------------------------------- 44
3.7.3. Form Maintenance Batas Himpunan--------------------------- 46
3.7.4. Form Detail Perhitungan --------------------------------------- 47
xiv
BAB IV. IMPLEMENTASI DAN ANALISA HASIL
4.1. Implementasi
4.1.1. Implementasi Fungsi Keanggotaan----------------------------- 49
4.1.2. Implementasi Aturan Kabur ------------------------------------- 51
4.1.3. Implementasi Hitung Rata-Rata Terbobot--------------------- 52
4.2 Hasil Implementasi
4.2.1. Form Utama ------------------------------------------------------ 53
4.2.2. Form Perhitungan ------------------------------------------------ 54
4.2.3. Form Maintenance Batas Himpunan -------------------------- 56
4.2.4. Form Detail Perhitungan --------------------------------------- 57
4.3 Analisa Hasil -------------------------------------------------------------- 58
BAB V. PENUTUP
5.1 Kesimpulan ---------------------------------------------------------------- 63
5.2 Saran ---------------------------------------------------------------------- 64
DAFTAR PUSTAKA
LAMPIRAN
xv
DAFTAR GAMBAR
Gambar Keterangan Halaman
2.1 Representasi Linear Naik 8
2.2 Representasi Linear Turun 8
2.3 Representasi Kurva Segitiga 9
2.4 Representasi Kurva Bentuk Bahu 9
2.5 Struktur dasar suatu sistem kendali kabur 12
2.6 Contoh Fungsi Keanggotaan Segitiga 14
2.7 Fungsi Pengaburan Gauss 14
3.1 Fungsi keanggotaan pada Variabel jalur S 24
3.2 Fungsi keanggotaan pada Variabel jalur B 26
3.3 Fungsi keanggotaan pada Variabel jalur U 27
3.4 Fungsi keanggotaan pada Variabel jalur T 28
3.5 Fungsi keanggotaan pada Variabel LampuHijau S 30
3.6 Fungsi keanggotaan pada Variabel LampuHijau B 31
3.7 Fungsi keanggotaan pada Variabel LampuHijau U 33
3.8 Fungsi keanggotaan pada Variabel LampuHijau T 34
3.9 Flowchart Untuk Halaman Perhitungan 39
3.10 Use Case Diagram 40
3.11 Context Diagram 41
3.12 Decompotition Diagram 41
3.13 Data Flow Diagram 42
3.14 Rancangan Antar Muka Form Utama 44
3.15 Rancangan Antar Muka Form Perhitungan 46
3.16 Rancangan Antar Muka Form Maintenance Batas
Himpunan
47
3.17 Rancangan Antar Muka Form Detail Perhitungan 48
xvi
4.1 Form Utama 53
4.2 Form Perhitungan 55
4.3 Form Maintenance Batas Himpunan untuk Variabel Jalur 56
4.4 Form Maintenance Batas Himpunan untuk Variabel
Lampu Hijau
56
4.5 Form Detail Perhitungan 57
xvii
DAFTAR TABEL
Tabel Keterangan Halaman
2.1 Tabel Ekivalen Mobil Penumpang 21
3.1 Tabel aturan jika-maka 36
3.2 Tabel Data Mentah Jumlah Kendaraan 36
3.3 Tabel Data Jumlah Kendaraan yang sudah
dikonfersikan ke dalam smp
36
3.4 Derajat Keanggotaan 37
3.5 α-predikat dan z 37
3.6 Nilai Z 38
3.7 Tabel BatasHimp 43
4.1 Tabel Data Mentah Jumlah Kendaraan 58
4.2 Tabel Data Jumlah Kendaraan
yang sudah dikonversikan ke dalam smp
59
4.3 Tabel perbandingan lampu hijau 59
4.4 Tabel batas himpunan variabel jalur 60
4.5 Tabel batas himpunan variabel lampu hijau 60
4.6 Tabel Keluaran Program 60
4.7 Tabel batas himpunan variabel jalur yang
diubah
61
4.8 Tabel batas himpunan variabel lampu hijau
yang diubah
61
4.9 Tabel Keluaran Program 61
xviii
BAB I
PENDAHULUAN
1.1 Latar Belakang Masalah
Kelancaran lalu lintas sangat diperlukan di kota-kota besar seperti di
Yogyakarta. Untuk mendukung hal tersebut maka di setiap persimpangan jalan
dipasang lampu lalu lintas. Lampu lalu lintas memegang peranan penting dalam
menentukan kelancaran sebaran kendaraan di jalan-jalan di sekitar persimpangan
tersebut.
Pengaturan lampu lalu lintas yang baik, sebaiknya dapat menyesuaikan diri
dengan kepadatan lalu lintas pada tiap-tiap jalur. Namun pengaturan lampu lalu
lintas pada perempatan ringroad UPN Yogyakarta yang ada saat ini masih
menggunakan sistem pewaktuan yang tetap atau tidak berubah-ubah dalam satu
siklusnya dan tidak memperhitungkan kepadatan pada tiap jalurnya, hal ini dapat
menyebabkan antrian kendaraan yang panjang.
Salah satu faktor yang mempengaruhi kelancaran lalu lintas adalah kepadatan
lalu lintas. Jumlah kepadatan lalu lintas bersifat tidak tegas ( kabur ), oleh karena
itu Logika Fuzzy cocok diterapkan dalam pengaturan lampu lalu lintas. Logika
Fuzzy dapat mengubah sifat tidak tegas tersebut ke dalam model matematis yang
mendasari penalaran fuzzy sangat sederhana dan mudah dimengerti sehingga dapat
diproses lebih lanjut untuk dapat diterapkan dalam sistem pengaturan lampu lalu
lintas. Dengan menggunakan Logika Fuzzy, dapat di prediksi waktu lampu hijau
menyala sesuai dengan kepadatan pada tiap-tiap jalur sehingga antrian dapat
1
2
diminimalkan. Kepadatan lalu lintas dihitung menggunakan satuan mobil
penumpang (SMP), yaitu koefisien dari berbagai jenis kendaraan yang beragam
kedalam satu satuan tertentu untuk mempermudah dalam perhitungan arus lalu
lintas.
1.2 Rumusan Masalah
Dari latar belakang masalah di atas dapat dirumuskan menjadi beberapa
masalah sebagai berikut:
a. Bagaimana mengimplementasikan logika fuzzy dalam pengaturan lampu lalu
lintas ?
b. Bagaimana mengatur waktu lampu hijau menyala sehingga antrian kendaraan
dapat berkurang atau bahkan dapat melintas seluruhnya?
1.3 Batasan Masalah
Adapun masalah yang akan diselesaikan dibatasi oleh hal-hal sebagai berikut:
a. Model persimpangan jalan yang di pakai adalah simpang empat atau
perempatan. Studi lapangan dilakukan di perempatan Ringroad UPN
Yogyakarta.
b. Kepadatan lalu lintas dihitung berdasarkan SMP (Satuan Mobil Penumpang).
c. Fasilitas ke kiri jalan terus, tidak masuk ke dalam perhitungan.
d. Pengaturan lampu lalu lintas diberikan searah jarum jam.
e. Metode yang digunakan untuk sistem penalaran kabur adalah metode
Tsukamoto.
3
f. Bahasa pemrograman yang digunakan adalah Java.
1.4 Tujuan Penyusunan Skripsi
Menerapkan logika fuzzy untuk membantu pengaturan lampu lalu lintas yang
akan memprediksi waktu lampu hijau menyala sehingga dapat meminimalkan
antrian atau kepadatan lalu lintas.
1.5 Metode Penelitian
Metode yang digunakan dalam penelitian meliputi:
a. Studi pustaka
Dengan mempelajari buku referensi yang berkaitan dengan logika fuzzy.
b. Observasi lapangan
Dengan melakukan pengamatan lapangan di perempatan ringroad UPN.
c. Perancangan
Tahap ini digunakan untuk mengubah model matematika menjadi sebuah
representasi perangkat lunak.
d. Implementasi program.
Hasil dari tahap perancangan diterjemahkan ke dalam program.
1.6 Sistematika Penulisan
BAB I : PENDAHULUAN
Bab ini berisi latar belakang masalah, rumusan masalah, batasan
masalah, tujuan, metodologi penelitian dan sistematika penulisan.
4
BAB II : LANDASAN TEORI
Bab ini berisi tentang penjelasan dasar teori Logika Fuzzy, Java
dan Satuan Mobil Penumpang (SMP).
BAB III : ANALISIS DAN PERANCANGAN
Bab ini berisi tentang analisa sistem, gambaran umum
perancangan program, pembentukan himpunan fuzzy, dan
rancangan antar muka yang digunakan dalam pembuatan
program bantu, dan contoh penerapan logika fuzzy.
BAB IV : IMPLEMENTASI DAN ANALISA HASIL
Bab ini berisi tentang pengimplementasian dari analisis dan
desain sistem pada bab sebelumnya serta analisa hasil
implemantasi.
BAB V : PENUTUP
Bab ini berisi kesimpulan dan saran-saran yang dapat
dipertimbangkan agar program bantu dapat digunakan secara
maksimal.
BAB II
LANDASAN TEORI
2.1 Logika Fuzzy (Logika Kabur)
2.1.1 Pengenalan Logika Fuzzy
Teori himpunan logika fuzzy dikembangkan oleh Prof Lofti Zadeh pada
tahun 1965. Tidak seperti logika boolean, logika fuzzy mempunyai nilai yang
kontinu. Fuzzy dinyatakan dalam derajat dari suatu keanggotaan dan derajat dari
kebenaraan (Trivita, 2006).
Kalau pada himpunan tegas, nilai keanggotaan hanya ada 2 kemungkinan,
yaitu 0 atau 1, pada himpunan fuzzy nilai keanggotaan terletak pada rentang 0
sampai 1. Bila x memiliki nilai keanggotaan fuzzy µA[x]=0 berarti x tidak menjadi
anggota himpunan A, demikian pula bila x memiliki nilai keanggotaan fuzzy
µA[x]=1 berarti menjadi anggota penuh pada himpunan A.
2.1.2 Variabel Linguistik dan Pengubah Linguistik (Linguistic Hedge)
Suatu variabel adalah suatu lambang atau kata yang menunjuk kepada
sesuatu yang tidak tertentu dalam semesta wacananya. Misalnya dalam kalimat :
“Mahasiswa itu lulus dengan pujian”, kata “mahasiswa” adalah suatu variabel
karena menunjuk kepada orang yang tidak tertentu dalam semesta wacananya
yaitu himpunan manusia. Suatu variabel dapat diganti oleh unsur-unsur dalam
semesta wacananya, misalnya variabel “ mahasiswa” dapat diganti dengan
“Anton”. Kata “Anton” menunjuk pada unsur yang tertentu pada masing-masing
5
6
semesta wacananya, dan disebut konstanta. Kalau semesta wacananya adalah
himpunan bilangan-bilangan, maka variabelnya disebut variabel numeris,
sedangkan kalau semesta wacananya adalah himpunan kata-kata atau istilah-
istilah dari bahasa sehari-hari (misalnya:tinggi, cepat, muda), maka variabelnya
disebut variabel linguistik (Susilo, F, 2006). Secara formal variabel linguistik
didefinisikan sebagai berikut.
Suatu variabel linguistik adalah suatu rangkap-5 (x, T, X, G, M) di mana :
− x adalah lambang variabelnya.
− T adalah himpunan nilai-nilai linguistik yang dapat menggantikan x.
− X adalah semesta wacana (numeris) dari nilai-nilai linguistik dalam T (jadi
juga dari variabel x).
− G adalah himpunan aturan-aturan sintaksis yang mengatur pembentukan
istilah-istilah anggota T.
− M adalah himpunan aturan-aturan semantik yang mengaitkan setiap istilah
dalam T dengan suatu himpunan kabur dalam semesta X.
Contoh : Bila variabel linguistiknya adalah “umur”, maka sebagai himpunan nilai-
nilai linguistik dapat diambil himpunan istilah-istilah T={muda,sangat muda, agak
muda, tidak muda, tidak sangat muda, tidak muda dan tidak tua, agak tua, tua,
tidak sangat tua}, dengan semesta X = [0,100], aturan sintaksis yang mengatur
pembentukan istilah-istilah dalam T, dan aturan semantik yang mengaitkan setiap
istilah dalam T dengan suatu himpunan kabur dalam semesta X.
7
Pengubah linguistik (linguistic hedge/modifier) adalah suatu kata yang
dipergunakan untuk mengubah suatu kata/istilah menjadi kata/istilah yang baru
dengan makna yang baru pula. Dua pengubah linguistik yang paling sering
dipakai adalah “sangat” dan “agak”.
Jika suatu istilah A dikaitkan dengan himpunan kabur à dalam semesta X,
maka istilah “sangat A” dikaitkan dengan himpunan kabur konsentrasi dari Ã,
dengan lambang Kon(Ã) dan fungsi keanggotaan
µ Kon(Ã)(x) = (µÃ(x))2
untuk setiap x Є X, sedangkan istilah “agak A” dikaitkan dengan himpunan kabur
dilasi dari Ã, dengan lambang Dil(Ã) dan fungsi keanggotaan
µ Dil(Ã)(x) = (µÃ(x))1/2
untuk setiap x Є X.
2.1.3 Fungsi Keanggotaan
Fungsi keanggotan (membership function) adalah suatu kurva yang
menunjukkan pemetaan titik-titik input data ke dalam nilai keanggotanya (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 & Purnomo, 2004). Ada
beberapa fungsi yang bisa digunakan, yaitu :
a. Representasi Linear
Pada representasi linear, pemetaan input ke derajat keanggotaanya
digambarkan sebagai suatu garis lurus. Ada 2 keadaaan himpunan fuzzy yang
8
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 (Gambar 2.1). Kedua, merupakan
kebalikan yang pertama. Garis lurus di mulai dari nilai domain dengan derajat
keanggotaan tertinggi pada sisi kiri, kemudian bergerak menurun ke nilai yang
memiliki derajat keanggotaan lebih rendah (Gambar 2.2).
Gambar 2.1 Representasi Linear Naik
Gambar 2.2 Representasi Linear Turun
Fungsi Keanggotaan : 0; x ≤ a µ[x] = (x – a) / (b – a) a ≤ x ≤ b 1; x ≥ b
Fungsi Keanggotaan : (b – x) / (b-a) a ≤ x ≤ b µ[x] = 0; x ≥ b
1
µ[x]
0 domain a b
1
b. Representasi Kurva Segitiga
Kurva Segitiga pada dasarnya merupakan gabungan antara garis (linear)
seperti terlihat pada Gambar 2.3.
domain b
µ[x]
0 a
9
Fungsi Keanggotaan : 0; x ≤ a atau x ≥ c µ[x] = (x-a)/(b-a) a ≤ x ≤ b (c-x)/(c-b) b ≤ x ≤ c
Gambar 2.3 Representasi Kurva Segitiga
1
c. Representasi Kurva Bentuk Bahu
Daerah yang terletak di tengah – tengah suatu variabel yang
direpresentasikan dalam bentuk segitiga, pada sisi kanan dan kirinya akan naik
dan turun. Himpunan fuzzy ‘bahu’, bukan segitiga, digunakan untuk mengakhiri
variable suatu daerah fuzzy. Bahu kiri bergerak dari benar ke salah, demikian juga
bahu kanan bergerak dari salah ke benar.
Gambar 2.4 Representasi Kurva Bentuk Bahu
2.1.4 Operator Dasar Zadeh untuk Operasi Himpunan Fuzzy
Seperti halnya himpunan konvensional, ada beberapa operasi yang
didefinisikan secara khusus untuk kombinasi dan memodifikasi himpunan fuzzy.
Nilai keanggotaan sebagai hasil dari operasi 2 himpunan sering dikenal dengan
domain
c a
µ[x]
0 b
10
fire strength atau α-predikat. Ada 3 operator dasar yang diciptakan oleh Zadeh,
yaitu :
a. Operator AND
berhubungan dengan operasi intersection pada himpunan. α-
predika
µA∩B = min (µA[x], µB[y])
b. Operator O
ni berhubungan dengan operasi union pada himpunan. α-
predika
µAuB = max (µA[x], µB[y])
c. Operator N
berhubungan dengan operasi komplemen pada himpunan. α-
predika
µA' = 1- µA[x]
Operator ini
t sebagai hasil operasi dengan operator AND diperoleh dengan mengambil
nilai keanggotaan terkecil antar elemen pada himpunan-himpunan yang
bersangkutan.
R
Operator i
t sebagai hasil operasi dengan operator OR diperoleh dengan mengambil
nilai keanggotaan terbesar antar elemen pada himpunan-himpunan yang
bersangkutan.
OT
Operator ini
t sebagai hasil operasi dengan operator NOT diperoleh dengan
mengurangkan nilai keanggotaan elemen pada himpunan yang bersangkutan dari
1.
11
2.1.5 Aturan Jika-Maka
merupakan suatu keadaan yang dapat dinyatakan
dengan
IF <fuzzy proposition 1> THEN < fuzzy proposition 2>
Suatu fuzz sitio
nggal
alah nilai dari variable linguistic a.
.
dari atomic proposition mempergunakan
nilai dari varaibel linguistic a, dan Y
2.1.6 Fungsi Implikasi
(proposisi) pada basis pengetahuan fuzzy akan
berhub
is B
Secara umu ng dapat digunakan, yaitu :
emotong output himpunan fuzzy.
Aturan kabur if-then
:
Atau IF <FP1> THEN <FP2>
y propo n dapat terbentuk dari :
1. Atomic Fuzzy Proposition
Adalah suatu pernyataan tu
Contoh : a adalah X di mana X ad
2 Compound Fuzzy Proposition
Merupakan penggabungan
penghubung “dan”, “atau”, dan “tidak”
Contoh : a adalah X dan b adalah Y, X
adalah nilai dari variable linguistic b.
Tiap-tiap aturan
ungan dengan suatu relasi fuzzy. Bentuk umum dari aturan yang digunakan
dalam fungsi implikasi adalah :
IF x is A THEN y
m ada 2 fungsi implikasi ya
a. Min (minimum)
Fungsi ini akan m
12
b.
menskala output himpunan fuzzy.
2.1.7 Sistem kendali Logika Kabur
Kendali Logika Kabur (Fuzzy Logic Control) merupakan suatu piranti
yang d
Dot (product)
Fungsi ini akan
ipergunakan untuk mengendalikan suatu proses tertentu berdasarkan aturan
penarikan kesimpulan hampiran (Susilo, 2003). Struktru dasar suatu sistem
kendali kabur (Susilo, 2003) adalah :
Gambar 2.5. Struktur dasar suatu sistem kendali kabur
1. Unit Pen
ika kabur bekerja dengan kaidah dan masukan kabur.
Lan
gaburan
Sistem kendali log
gkah pertama adalah mengubah masukan tegas yang diterima menjadi
masukan kabur. Untuk setiap variabel masukan ditentukan suatu fungsi
pengaburan yang akan mengubah nilai variabel masukan yang tegas menjadi nilai
13
pendekatan yang kabur. Fungsi pengaburan itu biasanya ditentukan berdasarkan
beberapa kriteria :
a. Fungsi pengaburan diharapkan mengubah suatu nilai tegas, misalnya a Є , ke
suatu himpunan kabur à dengan µA(a) = 1, atau sekurang-kurangnya a
mempunyai derajat keanggotaan yang tinggi.
b. Bila nilai masukannya cacat karena derau, diharapkan fungsi pengaburan
dapat menekan sejauh mungkin derau itu.
c. Fungsi pengaburan diharapakan dapat membantu menyederhanakan
komputasi yang harus dilakukan oleh sistem tersebut dalam proses
inferensinya.
Contoh fungsi pengaburan :
Fungsi Pengaburan Segitiga memetakan suatu nilai a Є ke himpuan
kabur à dengan fungsi keanggotaan segitiga. Suatu fungsi keanggotaan
himpunan kabur disebut fungsi keanggotaan segitiga jika mempunyai tiga
buah parameter, yaitu a, b, c Є dengan a, b, c, dan dinyatakan dengan
Segitiga (x; a, b, c) dengan aturan :
14
Gambar 2.6 Contoh fungsi Keanggotaan Segitiga (x;5,7,9)
Fungsi Pengaburan Gauss memetakan a Є ke himpunan kabur à dengan
fungsi keanggotaan Gauss, yaitu
Di mana b adalah suatu parameter berupa bilangan positif.
Gambar 2.7 Fungsi Pengaburan Gauss
µÃ(x) = Gauss(x;a,b) =
2. Basis Pengetahuan
Basis pengetahuan dari suatu sistem kendali logika kabur terdiri dari basis
data dan basis kaidah. Basis data adalah himpunan fungsi-fungsi keanggotaan dari
15
himpunan-himpunan kabur yang terkait dengan nilai-nilai linguistik dari variabel-
variabel yang terlibat dalam sistem itu.
Misalkan dalam suatu sistem kendali logika kabur, variabel kecepatan x
dengan semesta selang tertutup [0,140] mempunyai tiga nilai linguistik sebagai
berikut : Lambat, yang dikaitkan dengan himpunan kabur L
Sedang, yang dikaitkan dengan himpunan kabur S
Cepat, yang dikaitkan dengan himpunan kabur C
Maka basis data dari sistem itu memuat fungsi keanggotaan dari himpunan-
himpunan kabur yang terkait itu.
Basis kaidah adalah himpunan implikasi-implikasi kabur yang berlaku sebagai
kaidah dalam sistem itu.
Contoh kaidah dalam suatu sistem kendali kabur :
Jika jumlah kendaraan yang akan melintas SANGAT BANYAK dan
jumlah kendaraan pada arah lain yang mengantri SEDIKIT, maka lama
waktu nyala lampu hijau LAMA.
Jika jumlah kendaraan yang akan melintas SEDANG dan jumlah
kendaraan yang mengantri SEDANG, maka lama waktu nyala lampu hijau
menjadi SEDANG.
3. Unit Penalaran Kabur
Masukan kabur hasil pengolahan unit pengaburan diterima oleh unit penalaran
untuk disimpulkan berdasarkan kaidah-kaidah yang tersedia dalam basis
pengetahuan. Penarikan kesimpulan itu dilaksanakan berdasarkan aturan modus
16
ponens rampat multikondisonal. Secara umum, bentuk modus ponens pada logika
klasik adalah :
Premis 1 (aturan) : Jika x adalah A, maka y adalah B
Premis 2 (fakta) : x adalah A
Kesimpulan : y adalah B
Aturan penarikan kesimpulan ini dapat digeneralisasi menjadi aturan
penarikan kesimpulan yang diberlakukan untuk premis-premis yang berpredikat
kabur. Secara umum, bentuk modus ponens rampat adalah :
Premis 1 (aturan) : jika x adalah A, maka y adalah B
(merupakan relasi/implikasi kabur → di X x Y)
Premis 2 (fakta) : x adalah A′
(dapat dinyatakan dengan himpunan kabur Ã′ dalam X)
Kesimpulan : y adalah B′
Diperoleh dengan menetukan himpunan kabur
4. Unit Penegasan
Kesimpulan/keluaran dari sistem kendali kabur adalah suatu himpunan kabur.
Karena suatu sistem hanya dapat mengeksekusikan nilai yang tegas, maka
diperlukan suatu mekanisme untuk mengubah nilai kabur keluaran itu menjadi
nilai yang tegas. Itulah peranan unit penegasan yang memuat fungsi-fungsi
17
penegasan dalam sistem itu. Pemilihan fungsi penegasan biasanya ditentukan oleh
beberapa kriteria :
a. Masuk akal, artinya secara intuitif bilangan tegas t(Ã) dapat diterima sebagai
bilangan yang mewakili himpunan kabur Ã, misalnya t(Ã) kuran lebih berada
di tengah-tengah pendukung dari Ã, atau t(Ã) mempunyai derajat keanggotaan
yang tinggi dalam himpunan kabur Ã. Pendukung dari suatu himpunan kabur
Ã, yang dilambangkan dengan Pend (Ã), adalah himpunan tegas yang memuat
semua unsur dari semesta yang mempunyai derajat keanggotaan taknol dalam
Ã.
b. Kemudahan komputasi , yaitu diharapkan fungsi penegasan itu cukup mudah
dan sederhana dalam proses komputasinya untuk menghasilkan bilangan tegas
keluarannya.
c. Kontiyu, artinya perubahan kecil pada à tidak akan mengakibatkan perubahan
besar pada t(Ã).
Dalam literatur dikenal beberapa fungsi penegasan, di antaranya adalah :
Purata Maksimum (Mean of Maximum) : Himpunan kabur à dalam semesta
diubah menjadi bilangan tegas t(Ã) yang merupakan purta dari semua nilai
yang mencapai nilai maksimum dalam µÃ, yaitu
Di mana M = { x Є | µÃ(x) = Tinggi(Ã)}.
Apabila M = [a,b], maka t(Ã) = Bila himpunan kabur à terdefinisi
pada semesta berhingga X = {x1,x2,...,xn}, maka bilangan tegas t(Ã)
a + b 2
18
didefinisikan sebagai rerata dari semua nilai dalam himpunan tegas M = {x, Є
X | µÃ(xi)} = Tinggi (Ã)}, yaitu
di mana | M | menyatakan banyaknya anggota dari himpunan tegas M.
Rerata Pusat (Center Average) : Kalau himpunan kabur à dalam semesta
merupakan gabungan dari m buah himpunan kabur, yaitu
maka à diubah menjadi bilangan tegas t(Ã) yang merupakan rerata terbobot
dari pusat-pusat m buah himpunan kabur tersebut, dengan tinggi masing-
masing himpunan kabur itu sebagai bobotnya. Jadi
di mana xi adalah pusat dari himpunan kabur Ãi dan bi = Tinggi (Ãi).
2.1.8 Variasi Sistem Kendali Kabur Tsukamoto
Tsukamoto (1979) mengembangkan variasi sistem kendali himpunan
kabur yang dipakai untuk menyatakan predikat kabur pada bagian konsekuen dari
kaidah-kaidah sistemnya mempunyai fungsi keanggotaan yang monoton (naik
atau turun), misalnya fungsi keanggotaan sigmoid. Akibatnya, masing-masing
kaidah akan menghasilkan keluaran berupa nilai tegas yang diimbas oleh daya
sulut pada kaidah yang bersangkutan. Bentuk umum kaidah ke-i sistem tersebut
adalah sebagai berikut :
19
Bila x1 adalah Ai1 dan ... dan xn adalah Ain, maka y adalah Bi
di mana Bi adalah predikat kabur yang direpresentasikan dengan himpunan kabur
Bi dengan fungsi keanggotaan yang monoton untuk i = 1, ..., m (dengan m adalah
banyaknya kaidah dalam sistem itu). Maka setiap masukan x = (xi,...,xn) akan
menghasilkan daya sulut wi yang mengimbas keluaran tegas yi untuk kaidah ke-i .
kesimpulan akhir y diperoleh dengan menghitung rerata terbobot dari semua
keluaran yi tersebut dengan bobot daya sulutnya, yaitu :
∑=
m
iwiyi
1
y =
iwm
i∑=1
di mana wi adalah daya sulut untuk kaidah ke-i. Sistem ini seringkali disebut
sistem kabur Tsukamoto. Sistem Tsukamoto juga menyederhanakan komputasi
karena tidak memerlukan fungsi penegasan (Susilo, 2006).
2.2 Java
Java adalah bahasa pemrograman serbaguna (Abdul Kadir, 2004). Java
mendukung sumber daya Internet yang saat ini populer, yaitu World Wide Web.
Java juga mendukung aplikasi klien/server, baik dalam jaringan lokal (LAN)
maupun jaringan berskala luas (WAN). Java dikembangkan oleh Sun Microsistem
pada Agustus 1991, dengan nama semula Oak.
Program java bersifat tidak bergantung pada platform, artinya, Java dapat
dijalankan pada sembarang komputer dan bahkan pada sembarang sistem operasi.
Ketidakbergantungan terhadap platform sering dinyatakan dengan istilah
20
portabilitas. Yang menarik, tingkat portabilitas Java tidak hanya sebatas pada
program sumber (source code), melainkan juga pada tingkat kode biner yang
disebut bytecode.
Kode yang disebut bytecode dapat dijalankan pada berbagai sistem operasi
karena kode ini berbeda dengan kode mesin. Kode mesin sangat bergantung pada
platform, sedangkan bytecode dapat dimengerti oleh semua platform yang telah
dilengkapi dengan interpreter Java.
Java juga merupakan bahasa pemrograman berorientasi objek, Java
menggunakan kelas untuk membentuk suatu objek. Pewarisan adalah salah satu
sifat yang ada pada bahasa pemrograman berorientasi objek, yang memungkinkan
sifat-sifat suatu objek diturunkan dengan mudah ke objek lain.
Program Java dapat dibedakan menjadi dua jenis, yaitu applet dan aplikasi.
• Applet adalah program yang dibuat dengan Java, dapat diletakkan pada
Web server dan diakses melalui Web browser. Browser yang digunakan
adalah yang memiliki kemampuan Java (misalnya Netscape Navigator,
Internet Explorer, dan HotJava).
• Aplikasi adalah program yang dibuat dengan Java yang bersifat umum.
Aplikasi dapat dijalankan secara langsung, tidak perlu perangkat lunak
browser untuk menjalankannya.
21
2.3 Arus Lalu Lintas
Perhitungan dilakukan per satuan jam untuk satu atau lebih periode,
misalnya didasarkan pada kondisi arus lalu lintas rencan jam puncak pagi, siang,
dan sore (MKJI, 1997).
Arus lalu lintas untuk setiap gerakan dikonversi dari kendaraan per jam
menjadi menjadi satuan mobil penumpang perjam dengan menggunakan ekivalen
kendaraan penumpang.
Satuan mobil penumpang adalah satuan arus lalu lintas dari berbagai tipe
kendaraan yang diubah menjadi kendaraan ringan (termasuk mobil penumpang)
dengan menggunakan faktor emp. Ekivalen mobil penumpang (emp) adalah faktor
dari berbagai tipe kendaraan sehubungan dengan keperluan waktu lampu hijau
untuk keluar dari antrian apabila dibandingkan dengan sebuah kendaraan ringan.
Tabel 2.1. Tabel Ekivalen Mobil Penumpang
Jenis kendaraan emp
Kendaraan Ringan (LV)
Kendaraan Berat (HV)
Sepeda Motor (MC)
1,0
1,3
0,2
Keterangan :
• LV ( Kendaraan Ringan )
Kendaraan bermotor dua as beroda 4 dengan jarak as 2,0 - 3,0 m
(termasuk mobil penumpang, opelet, mikrobis, pick-up dan truk kecil
sesuai sistem klasifikasi Bina Marga).
22
• HV ( Kendaraan Berat )
Kendaraan bermotor dengan jarak as lebih dari 3,50 m, biasanya beroda
lebih dari 4 (termasuk bis, truk 2 as, truk 3 as dan truk kombinasi sesuai
sistem klasifikasi Bina Marga).
• MC ( Sepeda Motor )
Kendaraan bermotor beroda dua atau tiga (termasuk sepeda motor dan
kendaraan beroda 3 sesuai sistem klasifikasi Bina Marga).
BAB III
ANALISIS DAN PERANCANGAN
3.1 Pembentukan Variabel Lingusitik
Dalam Program Pengaturan Lampu Lalu Lintas ini ada 3 variabel linguistik
yaitu 2 variabel input dan 1 variabel output. Variabel input yaitu variabel jumlah
kepadatan / kendaraan dalam satuan smp/antrian, ada 2 variabel input yaitu
variabel jalur yang diatur dan variabel jalur yang menunggu. Untuk variabel input
dibagi menjadi 4 variabel sesuai dengan jalurnya. Masing-masing variabel terbagi
atas 4 himpunan yaitu TIDAK PADAT (TP), CUKUP PADAT (CP), PADAT (P),
dan SANGAT PADAT (SP) dalam semesta pembicaraan (nilai yang
diperbolehkan untuk dioperasikan dalam suatu variabel) yaitu [0,80].
Sedangkan variabel output yaitu variabel keluaran waktu lampu hijau
menyala pada jalur yang diatur dalam satuan detik. Variabel waktu lampu hijau
menyala dibagi menjadi 4 variabel sesuai dengan jalurnya. Variabel output terbagi
atas 4 himpunan yaitu CEPAT (C), AGAK CEPAT (AC), AGAK LAMA (AL),
dan LAMA (L) dalam semesta pembicaraan [0,60].
Nilai batas-batas himpunan untuk masing-masing variabel di dapat dari data
hasil pengamatan lapangan yang sudah diolah. Pengamatan lapangan dilakukan
pada tanggal 31 Maret 2008 sampai 6 April 2008, dengan waktu pengambilan
data yang berbeda-beda. Untuk menentukan nilai batas himpunan variabel jalur
yaitu dari data hasil pengamatan lapangan dikonfersikan terlebih dahulu ke dalam
satuan smp/antrian menurut jenis-jenis kendaraan. Lalu di dapat data jumlah
23
24
kendaraan terkecil dan terbesar. Data jumlah kendaraan terkecil dijadikan batas
himpunan TIDAK PADAT (TP) sedangkan data jumlah kendaraan terbesar
dijadikan batas himpunan SANGAT PADAT (SP). Setelah itu data terbesar tadi
dikurangi data terkecil, lalu hasilnya dibagi 3. Hasil pembagiannya ditambahkan
dengan batas TIDAK PADAT (TP) dan akan diperoleh batas himpunan CUKUP
PADAT (CP), selanjutnya batas CP ditambahkan dengan hasil pembagiannya tadi
dan akan diperoleh batas himpunan PADAT (P).
3.1.1 Variabel Jalur S (xS)
Yang dimaksud jalur S di sini adalah jumlah kendaraan pada jalur selatan.
Variabel jalur S dibagi menjadi 4 himpunan Fuzzy yaitu TIDAK PADAT (TP),
CUKUP PADAT (CP), PADAT (P), SANGAT PADAT (SP). Untuk himpunan
TIDAK PADAT (TP) dan SANGAT PADAT (SP) menggunakan pendekatan
fungsi keanggotaan berbentuk bahu, sedangkan himpunan CUKUP PADAT (CP)
dan PADAT (P) menggunakan pendekatan fungsi keanggotaan berbentuk
segitiga.
Gambar 3.1 Fungsi keanggotaan pada Variabel jalur S
25
Fungsi keanggotaan pada jalur S dapat dirumuskan sebagai berikut :
1 xS ≤ 2,2 µTP[xS] = 8,4- xS 2,2 ≤ xS ≤ 8,4 6,2
0 xS ≥ 8,4
0 xS ≤ 2,2 atau xS ≥ 14,6 µCP[xS] = xS – 2,2 2,2 ≤ xS ≤ 8,4
6,2 14,6 - xS 8,4 ≤ xS ≤ 14,6 6,2 0 xS ≤ 8,4 atau xS ≥ 20,8 µP[xS] = xS – 5,3 8,4 ≤ xS ≤ 14,6
6,2 20,8 - xS 14,6 ≤ xS ≤ 20,8 6,2 0 xS ≤ 14,6 µSP[xS] = xS-14,6 14,6 ≤ xS ≤ 20,8
6,2
1 xS ≥ 20,8
3.1.2 Variabel Jalur B (xB)
Yang dimaksud jalur B di sini adalah jumlah kendaraan pada jalur barat.
Variabel jalur B dibagi menjadi 4 himpunan Fuzzy yaitu TIDAK PADAT (TP),
CUKUP PADAT (CP), PADAT (P), SANGAT PADAT (SP). Untuk himpunan
TIDAK PADAT (TP) dan SANGAT PADAT (SP) menggunakan pendekatan
fungsi keanggotaan berbentuk bahu, sedangkan himpunan CUKUP PADAT (CP)
26
dan PADAT (P) menggunakan pendekatan fungsi keanggotaan berbentuk
segitiga.
Gambar 3.2 Fungsi keanggotaan pada Variabel jalur B
Fungsi keanggotaan pada jalur B dapat dirumuskan sebagai berikut :
1 xB ≤ 13,4 µTP[xB] = 29,7 - xB 13,4 ≤ xB ≤ 29,7 16,3 0 xB≥ 29,7 0 xB ≤ 13,4 atau xB ≥ 46 µCP[xB] = xB – 13,4 13,4≤ xB ≤ 29,7
16,3 46– xB 29,7 ≤ xB ≤ 46 16,3
0 xB ≤ 29,7 atau xB ≥ 62,4 µP[xB] = xB– 29,7 29,7 ≤ xB ≤ 46
16,3 62,4– xB 46 ≤ xB ≤ 62,4 16,3
0 xB ≤ 46 µSP[xB] = xB – 46 46 ≤ xB ≤ 62,4
16,3
1 xB ≥ 62,4
27
3.1.3 Variabel Jalur U (xU)
Yang dimaksud jalur U di sini adalah jumlah kendaraan pada jalur utara.
Variabel jalur U dibagi menjadi 4 himpunan Fuzzy yaitu TIDAK PADAT (TP),
CUKUP PADAT (CP), PADAT (P), SANGAT PADAT (SP). Untuk himpunan
TIDAK PADAT (TP) dan SANGAT PADAT (SP) menggunakan pendekatan
fungsi keanggotaan berbentuk bahu, sedangkan himpunan CUKUP PADAT (CP)
dan PADAT (P) menggunakan pendekatan fungsi keanggotaan berbentuk
segitiga.
Gambar 3.3 Fungsi keanggotaan pada Variabel jalur U
Fungsi keanggotaan pada jalur U dapat dirumuskan sebagai berikut :
1 xU≤ 3 µTP[xU] = 7,2 - xU 3 ≤ xU ≤ 7,2
4,2 0 xU ≥ 7,2 0 xU ≤ 3 atau xU ≥ 11,4 µCP[xU] = xU – 3 3 ≤ xU ≤ 7,2
4,2 11,4 – xU 7,2 ≤ xU ≤ 11,4 4,2
28
0 xU ≤ 7,2 atau xU ≥ 15,6 µP[xU] = xU – 7,2 7,2 ≤ xU ≤ 11,4
4,2 15,6 – xU 11,4 ≤ xU ≤ 15,6 4,2 0 xU ≤ 11,4 µSP[xU] = xU – 11,4 11,4 ≤ xU ≤ 15,6
4,2
1 xU ≥ 15,6
3.1.4 Variabel Jalur T (xT)
Yang dimaksud jalur T di sini adalah jumlah kendaraan pada jalur timur.
Variabel jalur T dibagi menjadi 4 himpunan Fuzzy yaitu TIDAK PADAT (TP),
CUKUP PADAT (CP), PADAT (P), SANGAT PADAT (SP). Untuk himpunan
TIDAK PADAT (TP) dan SANGAT PADAT (SP) menggunakan pendekatan
fungsi keanggotaan berbentuk bahu, sedangkan himpunan CUKUP PADAT (CP)
dan PADAT (P) menggunakan pendekatan fungsi keanggotaan berbentuk
segitiga.
Gambar 3.4 Fungsi keanggotaan pada Variabel jalur T
29
Fungsi keanggotaan pada jalur T dapat dirumuskan sebagai berikut :
1 xT ≤ 9,9 µTP[xT] = 19,1- xT 9,9 ≤ xT ≤ 19,1
9,2 0 xT ≥ 14,5 0 xT ≤ 9,9 atau xT ≥ 28,3 µCP[xT] = xT – 9,9 9,9 ≤ xT ≤ 19,1
9,2 28,3 – xT 19,1≤ xT ≤ 28,3 9,2
0 xB ≤ 19,1 atau xT ≥ 37,5 µP[xT] = xT – 19,1 19,1 ≤ xT ≤ 28,3
9,2 37,5– xT 28,3 ≤ xT ≤ 37,5 9.2 0 xT ≤ 28,3 µSP[xT] = xT – 28,3 28,3 ≤ xT ≤ 37,5
9,2
1 xT ≥ 37,5
3.1.5 Variabel LampuHijau S (zS)
Yang dimaksud LampuHijau S disini adalah waktu lampu hijau menyala
pada jalur selatan. Variabel LampuHijau S dibagi menjadi 4 himpunan Fuzzy
yaitu CEPAT (C), AGAK CEPAT (AC), AGAK LAMA (AL) dan LAMA (L).
Untuk himpunan CEPAT (C) dan LAMA (L) menggunakan pendekatan fungsi
keanggotaan berbentuk bahu, sedangkan himpunan AGAK CEPAT (AC) dan
30
AGAK LAMA (AL) menggunakan pendekatan fungsi keanggotaan berbentuk
segitiga.
Gambar 3.5 Fungsi keanggotaan pada Variabel LampuHijau S
Fungsi keanggotaan pada Variabel LampuHijau S dapat dirumuskan sebagai
berikut :
1 zS ≤ 11 µC[zS] = 15 - zS 11 ≤ zS ≤ 15
4
0 zS ≥ 15
0 zS ≤ 11 atau zS ≥ 19 µAC [zS] = zS – 11 11 ≤ zS ≤ 15
4 19 – zS 15 ≤ zS ≤ 19 4
0 zS ≤ 15 atau zS ≥ 23 µAL[zS] = zS – 15 15 ≤ zS ≤ 19
4 23 – zS 19 ≤ zS ≤ 23 4
31
0 zS ≤ 19 µL[zS] = zS – 19 19≤ zS ≤ 23
4 1 zS ≥ 23
3.1.6 Variabel LampuHijau B (zB)
Yang dimaksud LampuHijau B di sini adalah waktu lampu hijau menyala
pada jalur barat. Variabel LampuHijau B dibagi menjadi 4 himpunan Fuzzy yaitu
CEPAT (C), AGAK CEPAT (AC), AGAK LAMA (AL) dan LAMA (L). Untuk
himpunan CEPAT (C) dan LAMA (L) menggunakan pendekatan fungsi
keanggotaan berbentuk bahu, sedangkan himpunan AGAK CEPAT (AC) dan
AGAK LAMA (AL) menggunakan pendekatan fungsi keanggotaan berbentuk
segitiga.
Gambar 3.6 Fungsi keanggotaan pada Variabel LampuHijau B
Fungsi keanggotaan pada Variabel LampuHijau B dapat dirumuskan sebagai
berikut :
1 zB ≤ 32 µC[zB] = 36 - zB 32 ≤ zB≤ 36
4 0 zB ≥ 36
32
0 zB ≤ 32 atau zB ≥ 40 µAC[zB] = zB – 32 32 ≤ zB ≤ 36
4 40 – zB 36≤ zB ≤ 40 4 0 zB ≤ 36 atau zB ≥ 44 µAL[zB] = zB – 36 36 ≤ zB ≤ 40
4 44 – zB 40 ≤ zB ≤ 44 4 0 zB ≤ 40 µL[zB] = zB – 40 40 ≤ zB ≤ 44
4 1 zB ≥ 44
3.1.7 Variabel LampuHijau U (zU)
Yang dimaksud LampuHijau U di sini adalah waktu lampu hijau menyala
pada jalur utara. Variabel LampuHijau U dibagi menjadi 4 himpunan Fuzzy yaitu
CEPAT (C), AGAK CEPAT (AC), AGAK LAMA (AL) dan LAMA (L). Untuk
himpunan CEPAT (C) dan LAMA (L) menggunakan pendekatan fungsi
keanggotaan berbentuk bahu, sedangkan himpunan AGAK CEPAT (AC) dan
AGAK LAMA (AL) menggunakan pendekatan fungsi keanggotaan berbentuk
segitiga.
33
Gambar 3.7 Fungsi keanggotaan pada Variabel LampuHijau U
Fungsi keanggotaan pada Variabel LampuHijau U dapat dirumuskan sebagai
berikut
1 zU ≤ 14
µC[zU] = 18 - zU 14 ≤ zU ≤ 18
4 0 zU ≥ 18
0 zU≤ 14 atau zU ≥ 22 µAC[zU] = zU – 14 14 ≤ zU ≤ 18
4 22 – zU 18 ≤ zU ≤ 22 4
0 zU ≤ 18 atau zU ≥ 26 µAL[zU] = zU – 18 18 ≤ zU ≤ 22
4 26 – zU 22 ≤ zU ≤ 26 4
0 zU ≤ 22 µL[zU] = zU – 22 22 ≤ zU ≤ 26
4
1 zU ≥ 26
34
3.1.8 Variabel LampuHijau T (zT)
Yang dimaksud LampuHijau T di sini adalah waktu lampu hijau menyala
pada jalur timur. Variabel LampuHijau T dibagi menjadi 4 himpunan Fuzzy yaitu
CEPAT (C), AGAK CEPAT (AC), AGAK LAMA (AL) dan LAMA (L). Untuk
himpunan CEPAT (C) dan LAMA (L) menggunakan pendekatan fungsi
keanggotaan berbentuk bahu, sedangkan himpunan AGAK CEPAT (AC) dan
AGAK LAMA (AL) menggunakan pendekatan fungsi keanggotaan berbentuk
segitiga.
Gambar 3.8 Fungsi keanggotaan pada Variabel LampuHijau T
Fungsi keanggotaan pada Variabel LampuHijau T dapat dirumuskan sebagai
berikut :
1 zT ≤ 22 µC[zT] = 26 - zT 22 ≤ zT ≤ 26
4 0 zT ≥ 26 0 zT ≤ 22 atau zT ≥ 30 µAC [zT] = zT – 24 22 ≤ zT ≤ 26
4 30 – zT 26 ≤ zT ≤ 30 4
35
0 zT ≤ 26 atau zT ≥ 34 µAL[zT] = zT – 26 26 ≤ zT ≤ 30
4 34 – zT 30 ≤ zT ≤ 34 4 0 zT ≤ 30 µL[zT] = zT – 30 30 ≤ zT ≤ 34
4
1 zT ≥ 34
3.2 Aturan Logika Fuzzy
Dalam program ini terdapat 16 aturan setiap jalurnya. Jalur yang
mempengaruhi waktu lampu hijau menyala pada tiap jalur adalah jalur yang
menunggu yaitu jalur sebelah kirinya. Jalur selatan dipengaruhi jalur barat, jalur
barat dipengaruhi jalur utara, jalur utara dipengaruhi jalur timur, dan jalur timur
dipengaruhi jalur selatan. Aturan-aturan tersebut diterjemahkan ke dalam aturan
JIKA – MAKA. Contoh pembacaan tabel aturan logika Fuzzy :
R1 : JIKA jumlah kendaraan pada jalur yang diatur TIDAK PADAT dan
jumlah kendaraan pada jalur yang menunggu TIDAK PADAT MAKA
waktu lampu hijau menyala pada jalur yang diatur CEPAT .
36
Aturan-aturan yang di pakai dapat di lihat dalam tabel di bawah.
Tabel 3.1 Tabel aturan jika-maka
Jalur yang diatur TP CP P SP Jalur yang menunggu
TP C 1 AC 5 AL 9 L 13
CP C 2 AC 6 AL 10 L 14
P C 3 C 7 AC 11 AL 15
SP C 4 C 8 AC 12 AL 16
3.3 Contoh Penerapan Logika Fuzzy
Dimisalkan data inputan diambil dari pengambilan data jumlah kendaraan
pada hari senin tanggal 31 Maret 2008 ( data dapat dilihat pada lampiran ) .
Tabel 3.2 Tabel Data Mentah Jumlah Kendaraan
Jalur Selatan Jalur Barat Jalur Utara Jalur Timur I II III IV I II III IV I II III IV I II III IVLV 5 5 5 4 15 12 16 17 4 4 2 2 13 9 5 6 HV 1 0 1 0 5 3 8 6 0 0 1 3 5 2 5 4 MC 25 29 25 31 79 74 72 54 26 28 36 17 64 50 51 58
Tabel 3.3 Tabel Data Jumlah Kendaraan yang sudah dikonfersikan ke dalam smp
Jalur Selatan Jalur Barat Jalur Utara Jalur Timur I II III IV I II III IV I II III IV I II III IV LV 5 5 5 4 15 12 16 17 4 4 2 2 13 9 5 6
HV 1,3 0 1,3 0 6,5 3,9 10,4 7,8 0 0 1,3 3,9 6,5 2,6 6,5 5,2
MC 5 5,8 5 6,2 15,8 14,8 14,4 10,8 5,2 5,6 7,2 3,4 12,8 10 10,2 11,6
11,3 10,8 11,3 10,2 37,3 30,7 40,8 35,6 9,2 9,6 10,5 9,3 32,3 21,6 21,7 22,8
Rata2 10,9 36,1 9,7 24,6
Dari hasil rata-rata tiap jalur tersebut selanjutnya ditentukan derajat
keanggotaan untuk variabel jalur S, jalur B, jalur U, dan jalur T.
37
Tabel 3.4 Derajat Keanggotaan
Jalur S Jalur B Jalur U Jalur T
µ[TP] 0 0 0 0
µ[CP] 0,59 0,61 0,42 0,40 µ[ P] 0,40 0,39 0.58 0,59 µ[SP] 0 0 0 0
Setelah masing-masing mendapatkan derajat keanggotaanya, kemudian
dicari nilai α-predikat (fire strength) melalui operasi AND yaitu dengan
mengambil derajat keanggotaan terkecil untuk setiap aturan.
µA∩B = min (µA[x], µB[y])
Selanjutnya nilai α-predikat (fire strength) digunakan untuk menentukan
nilai z untuk setiap aturan. Untuk lebih jelasnya terlihat dalam Tabel 3.6.
Tabel 3.5 α-predikat dan z
Jalur Selatan Jalur Barat Jalur Utara Jalur Timur
Aturan α-predikat z α-
predikat z α-predikat z α-
predikat z
R1 0 15 0 36 0 18 0 26
R2 0 15 0 36 0 18 0 26
R3 0 15 0 36 0 18 0 26
R4 0 15 0 36 0 18 0 26
R5 0 11 0 32 0 14 0 22
R6 0,59 12,19 0,42 33,25 0,40 15,20 0,40 22,80
R7 0,39 14,21 0,58 34,25 0,42 16,75 0,40 25,19
R8 0 15 0 36 0 18 0 26
R9 0 15 0 36 0 18 0 26
R10 0,40 16,61 0,39 37,57 0,40 19,60 0,40 28,38
R11 0,39 17,42 0,39 38,42 0,58 19,66 0,40 28,38
R12 0 19 0 40 0 22 0 24
38
R13 0 19 0 40 0 22 0 30
R14 0 19 0 40 0 22 0 30
R15 0 23 0 44 0 26 0 34
R16 0 23 0 44 0 26 0 34
Setelah masing-masing variabel mendapatkan nilai α-predikat dan z untuk
setiap aturan, maka Z untuk setiap jalur dapat dicari dengan cara sebagai berikut :
∑=
=
−16
1)(*
n
ipredikatizi α
Z =
∑=
=
−16
1
n
ipredikatiα
Maka diperoleh nilai Z untuk setiap jalur, terlihat dalam Tabel 3.7
Tabel 3.6 Nilai Z
Jalur S
Jalur B
Jalur U
Jalur T
Z 14,79 35,67 17,99 26,43
Output waktu lampu hijau menyala yang diperoleh kemudian dibulatkan
yaitu untuk jalur selatan = 15 detik, jalur barat = 36 detik, jalur utara =18 detik,
dan jalur timur = 26 detik.
3.4 Perancangan Sistem
Program bantu pengaturan lampu lalu lintas ini mengambil studi kasus
pada perempatan jalan. Inputan dari program ini adalah jumlah kepadatan tiap-
tiap jalur pada perempatan. Secara umum setiap jalur pada perempatan jalan
39
mempunyai jumlah kepadatan yang berbeda-beda. Jumlah kepadatan saling
mempengaruhi waktu lampu hijau menyala pada jalur lain. Setelah semua inputan
dimasukkan lalu inputan akan dikonfersikan berdasarkan satuan mobil
penumpang. Setelah itu dihitung derajat keanggotaan dan fire-strenght untuk
masing-masing jalur. Keluaran dari program ini adalah waktu lampu hijau
menyala dalam satuan detik pada tiap-tiap jalur agar antriannya dapat
diminimalkan. Gambar 3.9 berisi tentang flowchart yang digunakan untuk
memahami jalannya program.
Gambar 3.9 Flowchart Jalannya Program
40
3.5 Analisis Sistem
Analisis sistem adalah suatu teknik penyelesaian masalah yang membagi
sistem ke dalam bagian-bagian komponen kecil dengan tujuan agar bagian-bagian
dari komponen tersebut dapat bekerja dan berinteraksi dengan baik untuk
melengkapi tujuannya. Tujuan dari analisis sistem adalah membuat pemetaan
awal mengenai perilaku yang diisyaratkan dalam sistem aplikasi ke dalam
elemen-elemen pemodelan.
3.5.1 Use Case Diagram
Gambar 3.10 Use Case Diagram
Gambar 3.10 merupakan Use Case Diagram dari Program Bantu
Pengaturan Lampu Lalu Lintas. Penggunan use case ditujukan untuk
menggambarkan secara keseluruhan mengenai peran user yang terlibat dalam
program dan proses apa saja yang terjadi dalam program. Pada program ini
41
terdapat 1 aktor saja yaitu user. User dapat melakukan semua proses yaitu input
data, lihat data, ubah data, hitung lampu hijau, lihat detail perhitungan, dan ubah
batas himpunan. Proses lihat data, ubah data, hitung lampu hijau, lihat detail
perhitungan dapat dijalankan apabila proses input data sudah selesai dijalankan.
3.5.2 Context Diagram
Gambar 3.11 Context Diagram
Diagram konteks sistem terlihat pada gambar 3.11. Terdapat 1 entitas luar
yaitu user. Program mendapat inputan dari user berupa data-data jumlah
kendaraan untuk masing-masing jalur dan batas himpunan. Dan keluaran dari
program berupa informasi detail batas himpunan dan waktu lampu hijau menyala
untuk masing-masing jalurnya.
3.5.3 Decompotition Diagram
Gambar 3.12 Decompotition Diagram
42
Program Bantu Pengaturan Lalu Lintas terbagi menjadi 6 proses yang
semuanya terdapat pada level 1 yaitu input data, lihat data, ubah data, hitung
lampu hijau, lihat detail perhitungan, dan ubah batas himpunan.
3.5.4 Data Flow Diagram
Gambar 3.13 Data Flow Diagram
Pada Data Flow Diagram (DFD) pada gambar 3.13 terdapat 4 proses yaitu
proses input data, ubah data, hitung lampu hijau dan ubah batas himpunan. Pada
proses input data, user menginputkan jumlah kendaraan yang nantinya akan
dikonfersikan dalam satuan mobil penumpang (smp). Proses ubah data inputan
berfungsi untuk mengubah data yang sudah di inputkan. Pada proses ubah batas
himpunan, user menginputkan nilai batas himpunan untuk setiap variabelnya,
data-data batas himpunan tersebut disimpan dalam database BatasHimp. Proses
hitung waktu lampu hijau, masukan berupa data jumlah kendaraan yang sudah
43
dikonfersikan ke dalam satuan mobil penumpang (smp) dan data batas himpunan
yang diambil dari database BatasHimp. Pada proses hitung lampu hijau ini akan
di hitung derajat keanggotaan dan fire strength, dan hasil akhirnya di dapat waktu
lampu hijau menyala untuk masing-masing jalur.
3.6 Perancangan Struktur Data
Tabel yang diperlukan dalam Program Bantu Pengaturan Lampu Lalu
Lintas yaitu tabel BatasHimp. Tabel BatasHimp digunakan untuk menyimpan
batas himpunan masing-masing variabel.
Tabel 3.7. Tabel BatasHimp
Nama Field Type Keterangan
NamaVar Varchar(15) Nama Variabel
Batas1 Double Nilai batas 1
Batas2 Double Nilai batas 2
Batas3 Double Nilai batas 3
Batas4 Double Nilai batas 4
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.
44
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.
46
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 Form Maintenance 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 HijauVariabel Jalur
Gambar 3.16 Rancangan Antar Muka Form Maintenance Batas Himpunan
3.7.4 Form Detail Perhitungan
Form detail perhitungan berfungsi untuk menampilkan data inputan, derajat
keanggotaan, α-predikat (fire strength) dan nilai z untuk setiap jalur.
48
... ... 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
Gambar 3.17 Rancangan Antar Muka Form Detail Perhitungan
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
50
} 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
52
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
ipredikatizi α
Z =
∑=
=
−16
1
n
ipredikatiα
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
4.2.1 Form Utama
Gambar 4.1 Form Utama
54
Pertama kali user masuk program, akan ditampilkan form utama. Pada
form Utama terdapat tombol Masuk yang berfungsi untuk menuju ke form
Perhitungan.
4.2.2 Form Perhitungan
Form Perhitungan merupakan tampilan yang berfungsi untuk menginputkan
data jumlah kendaraan, memprosesnya dan menampilkan output waktu lampu
hijau menyala. Pada form perhitungan terdapat 2 menu yaitu menu File dan menu
Help. Menu File terdiri dari 2 sub menu yaitu Aturan Logika Fuzzy yang
berfungsi untuk menuju ke form aturan logika fuzzy yang menampilkan aturan-
aturan logika fuzzy yang dipakai dalam program serta cara pembacaan aturan
tersebut. Serta sub menu keluar yang berfungsi untuk keluar dari program. Menu
Help terdiri dari 2 sub menu yaitu 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 dalam satuan
detik. Setelah semua data dimasukkan, tombol lihat data inputan akan aktif,
tombol ini berfungsi untuk menampilkan data-data yang telah di inputkan.
Tombol ubah berfungsi untuk megubah data inputan. Tombol (<) dan (>)
55
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.
Gambar 4.2 Form Perhitungan
56
4.2.3 Form Maintenance Batas Himpunan
Form Maintenance Batas Himpunan digunakan untuk menset-up nilai
batas himpunan untuk masing-masing variabel yang nantinya digunakan untuk
menghitung nilai derajat keanggotaan. Pada Form Maintenance Batas Himpunan
terdapat 2 TabbedPane yaitu TabbedPane Variabel Jalur untuk menampilkan dan
menset-up batas himpunan untuk variabel jalur dan TabbedPane Variabel Lampu
Hijau menampilkan dan menset-up batas himpunan untuk variabel lampu hijau.
Tombol Ubah berfungsi untuk mengubah textfield menjadi editable sehingga data
dalam textfield dapat diubah dengan data yang baru. Tombol Simpan berfungsi
untuk menyimpan perubahan data ke dalam tabel batas himpunan. Tombol simpan
akan aktif apabila tombol ubah sudah di tekan. Tombol kembali berfungsi untuk
menuju ke form perhitungan.
Gambar 4.3 Form Maintenance Batas Himpunan untuk Variabel Jalur
57
Gambar 4.4 Form Maintenance Batas Himpunan untuk Variabel Lampu Hijau
4.2.4 Form Detail Perhitungan
Gambar 4.5 Form Detail Perhitungan
58
Form detail perhitungan berfungsi untuk menampilkan detail
perhitungan dari program. Form ini menampilkan data inputan, derajat
keanggotaan ,α-predikat (fire strength) dan nilai Z untuk setiap jalur.
4.3 Analisa Hasil
Pengaturan lampu lalu lintas yang baik, sebaiknya dapat menyesuaikan diri
dengan kepadatan lalu lintas pada tiap jalurnya. Jumlah kepadatan lalu lintas
bersifat tidak tegas ( kabur ) mengakibatkan munculnya asumsi-asumsi yang
berbeda-beda, oleh karena itu Logika Fuzzy cocok diterapkan dalam pengaturan
lampu lalu lintas. Logika Fuzzy dapat mengubah sifat tidak tegas tersebut ke
dalam model matematis. Dengan menggunakan Logika Fuzzy, dapat di prediksi
waktu lampu hijau menyala sesuai dengan kepadatan pada tiap-tiap jalur sehingga
kepadatan atau antrian dapat diminimalkan. Hal ini dapat terlihat pada contoh
perbandingan berikut :
Misalkan data jumlah kendaraan di ambil dari pengambilan data pada hari
senin tanggal 31 Maret 2008 ( data dapat dilihat pada lampiran ) :
Tabel 4.1 Tabel Data Mentah Jumlah Kendaraan
Jalur Selatan Jalur Barat Jalur Utara Jalur Timur I II III IV I II III IV I II III IV I II III IVLV 5 5 5 4 15 12 16 17 4 4 2 2 13 9 5 6 HV 1 0 1 0 5 3 8 6 0 0 1 3 5 2 5 4 MC 25 29 25 31 79 74 72 54 26 28 36 17 64 50 51 58
59
Tabel 4.2 Tabel Data Jumlah Kendaraan yang sudah dikonfersikan ke dalam smp
Jalur Selatan Jalur Barat Jalur Utara Jalur Timur I II III IV I II III IV I II III IV I II III IV LV 5 5 5 4 15 12 16 17 4 4 2 2 13 9 5 6
HV 1,3 0 1,3 0 6,5 3,9 10,4 7,8 0 0 1,3 3,9 6,5 2,6 6,5 5,2
MC 5 5,8 5 6,2 15,8 14,8 14,4 10,8 5,2 5,6 7,2 3,4 12,8 10 10,2 11,6
11,3 10,8 11,3 10,2 37,3 34,6 36,9 31,7 9,2 9,6 10,5 9,3 32,3 21,6 21,7 22,8
Rata2 10,9 35,1 9,7 24,6
Dari rata-rata kepadatan tiap-tiap jalur di atas, maka dapat dilihat
perbandingan lampu hijau yang sebenarnya dengan lampu hijau hasil perhitungan
dari program, dapat dilihat pada tabel 4.3 berikut :
Tabel 4.3 Tabel perbandingan lampu hijau
Jalur Lampu Hijau Sebenarnya
Lampu Hijau Hasil Perhitungan
Program S 22 15 B 40 36 U 19 18 T 30 26
Dari tabel perbandingan lampu hijau di atas, dapat dilihat perbedaan waktu
lampu hijau menyala yang dihasilkan oleh program lebih cepat dibandingkan
dengan lampu hijau sebenarnya. Lampu hijau hasil perhitungan program dihitung
sesuai dengan jumlah kendaraan / kepadatan tiap-tiap jalur. Selain itu program
juga memperhatikan jumlah kendaraan/ kepadatan pada jalur yang menunggu
(jalur sebelah kirinya). Sehingga antrian pada perempatan UPN Yogyakarta dapat
berkurang atau bahkan dapat melintas seluruhnya. Untuk melihat antrian dapat
60
berkurang atau bahkan dapat melintas seluruhnya harus dilakukan pengujian
terlebih dahulu pada perempatan UPN Yogyakarta.
Keluaran yang dihasilkan program juga dipengaruhi oleh pendefinisian
fungsi keanggotaan masukan, pendefinisian aturan fuzzy yang sudah ditetapkan
dan pendefinisian fungsi keanggotaan keluaran.
Tabel 4.4 Tabel batas himpunan variabel jalur
Nama Variabel
Batas Himpunan TP
Batas Himpunan CP
Batas Himpunan P
Batas Himpunan SP
Jalur S 2,2 8,4 14,6 20,8 Jalur T 9,9 19,1 28,3 37,5 Jalur U 3 7,2 11,4 15,6 Jalur B 13,4 29,7 46 62,3
Tabel 4.5 Tabel batas himpunan variabel lampu hijau
Nama Variabel Batas Himpunan C
Batas Himpunan AC
Batas Himpunan AL
Batas Himpunan L
LampuHijau S 11 15 19 23 LampuHijau T 22 26 30 34 LampuHijau U 14 18 22 26 LampuHijau B 32 36 40 44
Apabila batas-batas himpunan di-set seperti pada tabel 4.4 dan tabel 4.5 di
atas dan dengan data inputan jumlah kendaraan pada tabel 4.1, maka keluaran
program dapat dilihat pada tabel 4.6 berikut :
Tabel 4.6 Tabel Keluaran program
Jalur Lampu Hijau
Hasil Perhitungan Program
S 15 B 36 U 18 T 26
61
Dan apabila batas-batas himpunan diubah seperti terlihat di bawah ini :
Tabel 4.7 Tabel batas himpunan variabel jalur yang diubah
Nama Variabel
Batas Himpunan TP
Batas Himpunan CP
Batas Himpunan P
Batas Himpunan SP
Jalur S 4,2 9,3 18,6 24,8 Jalur T 13,9 18,5 32,3 41,5 Jalur U 7 11,2 17,5 19,6 Jalur B 17,4 33,7 58,2 66,4
Tabel 4.8 Tabel batas himpunan variabel lampu hijau yang diubah
Nama Variabel Batas Himpunan C
Batas Himpunan AC
Batas Himpunan AL
Batas Himpunan L
LampuHijau S 15 17 21 24 LampuHijau T 26 28 32 35 LampuHijau U 17 20 24 26 LampuHijau B 35 38 42 44
Batas-batas himpunan di-set seperti pada tabel 4.7 dan tabel 4.8 di atas dan
dengan data inputan jumlah kendaraan pada tabel 4.1, maka keluaran program
dapat dilihat pada tabel 4.9 berikut :
Tabel 4.9 Tabel Keluaran program
Jalur Lampu Hijau
Hasil Perhitungan Program
S 17 B 37 U 18 T 29
Dari contoh perbandingan tabel 4.4 sampai dengan tabel 4.9 di atas, dapat
dilihat bahwa batas-batas himpunan fungsi keanggotaan mempengaruhi keluaran
program. Apabila nilai dari batas-batas himpunan fungsi keanggotaan ditambah
62
maka keluaran program berupa waktu lampu hijau menyala juga akan bertambah.
Dan sebaliknya, apabila nilai batas-batas himpunan fungsi keanggotaan dikurangi
maka waktu lampu hijau menyala juga akan berkurang.
Apabila program ini benar-benar diterapkan pada keadaan nyata, maka
permasalahan utamanya adalah perangkat keras tambahan yang terdiri dari :
sensor, lampu lalu lintas, dan lain-lain. Sensor digunakan untuk mengambil data
jumlah kendaraan. Selain permasalahan perangkat keras, sebaiknya program
terlebih dahulu dikonsultasikan kepada yang berpengalaman dalam bidang
pengaturan lalu lintas, yatu polisi lalu lintas dan DLLAJR.
BAB V
PENUTUP
5.1 Kesimpulan
Dari Program Bantu Pengaturan Lampu Lalu Lintas Menggunakan Logika
Fuzzy maka dapat ditarik kesimpulan yaitu :
1. Logika Fuzzy membantu mengatasi kondisi ketidaktegasan (kabur) jumlah
kepadatan lalu lintas akibat pemahaman yang berbeda-beda.
2. Dengan menggunakan Logika Fuzzy, keluaran waktu lampu hijau menyala
sesuai dengan jumlah kepadatan pada tiap-tiap jalur dengan
memperhatikan juga jalur yang menunggu sehingga antrian kendaraan pada
perempatan UPN Yogyakarta dapat berkurang atau bahkan dapat melintas
seluruhnya. Keluaran program juga dipengaruhi oleh pendefinisian fungsi
keanggotaan masukan, pendefinisian aturan fuzzy dan pendefinisian fungsi
keanggotaan keluaran.
5.2 Saran
Beberapa saran untuk mendapatkan Program Bantu Pengaturan Lampu Lalu
Lintas yang lebih baik dan bermanfaat, yaitu :
1. Program diharapkan dapat dikembangkan dengan metode-metode fuzzy
yang lain sehingga dapat dihasilkan output yang lebih optimal.
2. Program diharapkan dapat dikembangkan untuk persimpangan-
persimpangan lain seperti pertigaan.
63
64
3. Program dapat di tambah dengan simulasi untuk memperjelas tujuan dari
program.
DAFTAR PUSTAKA
Kadir,Abdul. (2004). Dasar Pemrograman Java 2. Yogyakarta: Andi Offset. Kuswijayanti, Trivita. (2006). Penerapan Logika Fuzzy Dalam Sistem Pendukung
Keputusan Pembelian Ponsel. Skripsi, F. Teknik USD. Yogyakarta. Manual Kapasitas Jalan Indonesia (MKJI). (1997). Yogyakarta : Direktorat
Jenderal Bina Marga. Oktriono, Kristianus. (2004). Simulasi Kendali Lampu Lalu Lintas Berbasis
Logika Kabur. Skripsi, F. Matematika dan Ilmu Pengetahuan Alam USD. Yogyakarta.
Sri Kusumadewi & Hari Purnomo. (2004). Aplikasi Logika Fuzzy untuk
Pendukung Keputusan. Yogyakarta: Graha Ilmu. Susilo, Frans. (2003). Pengantar Himpunan dan Logika Kabur serta Aplikasinya.
Yogyakarta : Penerbit Universitas Sanata Dharma. (2006). Himpunan dan Logika Kabur serta Aplikasinya.
Yogyakarta: Graha Ilmu.
LAMPIRAN
Data Jumlah Kendaraan Hasil Studi Lapangan ( data mentah )
Pengamatan lapangan dilakukan pada tanggal 31 Maret 2008 sampai 6 April 2008, dengan
waktu pengambilan data yang berbeda-beda. Pengambilan data dilakukan dengan cara menghitung
jumlah kendaraan untuk setiap jenisnya yaitu LV, HV, dan MC pada saat lampu merah menyala.
Keterangan : I, II, III, IV = satu putaran/ lampu merah
JALUR SELATAN
31 Maret 2008 1 April 2008 2 April 2008 4 April 2008 I II III IV I II III IV I II III IV I II III IV LV 5 5 5 4 9 8 10 7 4 2 3 2 7 7 6 6 HV 1 0 1 0 1 0 2 2 0 0 0 0 1 1 1 1 MC 25 29 25 31 39 45 41 40 32 22 28 38 41 37 30 38
5 April 2008 6 April 2008(pagi) 6 April 2008 (siang) I II III IV I II III IV I II III IV LV 5 3 7 6 1 3 2 2 7 2 8 5 HV 0 0 0 0 0 0 0 0 0 0 0 0 MC 25 19 26 24 6 7 7 13 24 20 18 29
JALUR BARAT
31 Maret 2008 1 April 2008 2 April 2008 4 April 2008 I II III IV I II III IV I II III IV I II III IV LV 15 12 16 17 42 35 39 40 6 9 17 21 14 10 22 7 HV 5 3 8 6 6 5 7 8 3 1 3 4 8 6 8 5 MC 79 74 72 54 59 63 65 60 46 36 48 38 53 50 58 45
5 April 2008 6 April 2008(pagi) 6 April 2008(siang) I II III IV I II III IV I II III IV LV 19 18 20 16 9 10 20 15 20 27 19 29 HV 3 2 4 2 0 0 4 1 4 5 3 5 MC 70 52 65 68 22 30 46 40 40 38 49 50
JALUR UTARA
31 Maret 2008 1 April 2008 2 April 2008 4 April 2008 I II III IV I II III IV I II III IV I II III IV LV 4 4 2 2 8 7 5 3 1 4 4 1 6 4 3 3 HV 0 0 1 3 0 0 1 2 1 0 1 0 0 0 1 0 MC 26 28 36 17 33 42 29 26 15 14 11 15 23 24 20 17
5 April 2008 6 April 2008(pagi) 6 April 2008(siang) I II III IV I II III IV I II III IV LV 3 2 4 7 3 2 1 2 3 5 2 1 HV 0 0 0 0 0 0 0 0 0 0 0 0 MC 15 21 18 17 6 6 10 14 6 11 7 14
JALUR TIMUR
31 Maret 2008 1 April 2008 2 April 2008 4 April 2008 I II III IV I II III IV I II III IV I II III IV LV 13 9 5 6 8 12 16 11 9 7 9 13 14 7 14 14 HV 5 2 5 4 5 9 2 3 1 1 6 0 6 8 9 6 MC 64 50 51 58 40 38 39 40 22 30 25 29 42 36 38 34
5 April 2008 6 April 2008(pagi) 6 April 2008 (siang) I II III IV I II III IV I II III IV LV 16 17 13 12 6 4 8 6 13 18 10 12 HV 9 5 7 8 0 1 2 2 1 2 3 2 MC 49 56 57 60 27 23 16 20 20 35 31 38