BAB 3 ANALISIS DAN PERANCANGAN
3.1
Gambaran Umum Departemen Pekerjaan Umum Departemen Pekerjaan Umum, biasa disebut Departemen PU, sempat bernama
"Departemen Permukiman dan Pengembangan Wilayah" (1999-2000) dan "Departemen Permukiman dan Prasarana Wilayah" (2000-2004), adalah departemen dalam Pemerintah Indonesia yang membidangi urusan pekerjaan umum. Departemen PU dipimpin oleh seorang Menteri Pekerjaan Umum yang sejak tanggal 21 Oktober 2004 dijabat oleh Ir. Djoko Kirmanto, Dipl. HE.. Berikut ini adalah struktur organisasi dari Departemen Pekerjaan Umum :
Gambar 3.1 Struktur Organisasi Departemen Pekerjaan Umum
47
48 Oleh Karena kami menggunakan data jalan raya sebagai bahan penelitian kami maka kami berhubungan dengan Ditjen Bina Marga Berikut ini adalah struktur organisasi dari Ditjen Bina Marga :
Gambar 3.2 Struktur Organisasi Bina Marga
3.1.1
Tugas pokok dan fungsi Direktorat Jendral Bina Marga Direktorat Jenderal Bina Marga mempunyai tugas melaksanakan
sebagian tugas pokok Departemen Pekerjaan Umum dalam perumusan dan pelaksanaan kebijakan dan standarisasi teknis di bidang jalan. Dalam melaksanakan tugas sebagaimana dimaksud, Direktorat Jenderal Bina Marga menyelenggarakan fungsi: a. Perumusan kebijakan teknik di bidang jalan sesuai peraturan perundangundangan. b. Penyusunan program dan anggaran serta evaluasi kinerja pelaksanaan kebijakan di bidang jalan.
49 c. Pelaksanaan kebijakan teknik di bidang jalan nasional meliputi jalan nasional, jalan bebas hambatan dan sebagian jalan kota. d. Pembinaan teknis penyelengggaraan jalan propinsi/ kabupaten/kota. e. Pengembangan sistem pembiayaan dan pola investasi bidang jalan. f. Penyusunan norma, standar, pedoman, dan manual di bidang jalan. g. Pelaksanaan urusan administrasi Direktorat Jenderal.
3.2
ANALISA PERMASALAHAN 3.2.1
Analisa Data dan Kepadatan Menganalisa data kepadatan dapat dilakukan dengan mengetahui
kecepatan rata-rata kendaraan untuk melewati suatu ruas jalan. Untuk mengetahui kecepatan rata-rata kendaraan, kami menggunakan analisa data secara offline (tidak terhubung dengan internet). Analisa data secara offline dilakukan dengan cara menghitung rasio kepadatan pada ruas jalan. Dari rasio kepadatan maka akan dapat diperkirakan kecepatan kendaraan yang melewati suatu jalan. Rasio kepadatan ialah hasil penghitungan logika fuzzy yang menggabungkan jam (waktu saat kendaraan melintas) dan intensitas jalur (menggambarkan banyaknya jumlah kendaraan yang melintasi jalur tersebut). untuk lebih jelasnya akan dijelaskan pada Bab 3.3.1.
3.2.2 Analisa Pencariaan Jalur Tercepat Analisa pencarian rute tercepat dilakukan dengan cara mencari 5 buah rute jalur terdekat dengan menggunakan metode algoritma genetika yang akan
50 dijelaskan pada Bab 3.3.2 , lalu dari setiap hasil rute jalur akan dihitung lama waktu tempuh perjalanan mulai dari titik start sampai ke titik finish.
Waktu tempuh = Jarak / kecepatan Total Waktu Tempuh = ∑ Waktu Tempuh
Setelah diketahui total waktu tempuh dari setiap jalur terpendek yang didapat, maka akan dipilih total waktu tempuh terkecillah yang akan menjadi solusi dalam pencarian jalur tercepat.
3.2.3 Tampilan Antarmuka Pengguna Tampilan antar muka pengguna yang digunakan dalam aplikasi client dan server secara umum memperhatikan beberapa faktor berikut : 1.
Tampilan harus sesederhana mungkin dan mudah digunakan.
2.
Tampilan antar muka pengguna menggunakan sedikit mungkin jendela yang bertumpuk-tumpuk.
3.
Tampilan antar muka pengguna harus dapat memperlihatkan peta secara optimal.
4.
Warna yang digunakan tidak boleh terlalu kontras (berlawanan satu sama lain), sebaliknya warna senada sebaiknya digunakan, selain warna yang digunakan tidak boleh terlalu terang atau gelap.
Berdasarkan pada faktor-faktor diatas, maka tampilan antarmukapengguna yang digunakan adalah sebagai berikut :
51 a. Tampilan antarmuka pengguna utama hanya terdiri dari satu jendela saja b. Untuk menghindari jendela yang bertumpuk-tumpuk maka peta kami letakkan bersebelahan dengan panel-panel yang dibutuhkan. c. Warna yang digunakan adalah warna standar Windows.
3.3 Perancangan 3.3.1
Penghitungan Kecepatan Dengan Logika Fuzzy Pada tahapan ini akan digunakan jam dan intensitas pengguna jalan
sebagai input untuk mendapatkan output berupa kecepatan kendaraan. Jam ialah waktu pada saat program dieksekusi untuk menentukan besarnya kepadatan kendaraan pada jalan-jalan yang akan dilalui. Waktu kepadatan kendaraan dapat dikelompokan menjadi 4, yaitu : Sepi, Lancar, Padat, Macet.
Tabel 3.1 Jenis Kepadatan No 1 2 3 4
Jenis Kepadatan Sepi Jarang Padat Macet
Waktu 22.01 ‐ 05.30 05.31 ‐ 06.00 10.01 ‐ 14.00 21.01 ‐ 22.00 06.01 ‐ 06.30 09.01 ‐ 10.00 14.01 ‐ 16.00 19.01 ‐ 21.00 06.31 ‐ 09.00 16.01 ‐ 19.00
sumber : Dep.Pekerjaan Umum Republik Indonesia
52 Intensitas pengguna jalan ialah nilai yang menunjukkan besarnya rasio banyaknya kendaraan yang melalui jalan tersebut dalam satu menit.
Tabel 3.2 Intensitas kendaraan per menit
No Intensitas 1 Jarang 2 Sedang 3 Sering
Jumlah kendaraan/menit
<10 10 sampai 30 >30 sumber : Dep.Pekerjaan Umum Republik Indonesia
Dalam menentukan kecepatan kendaraan, kecepatan dianggap selalu stabil tidak mengalami penurunan ataupun kenaikan. Kecepatan kendaraan dapat dibagi
menjadi
empat
kelompok
(Sangatlambat,
lambat,
sedang,
kencang),dimana kecepatan kendaraan terendah ialah 5 km/jam dan kecepatan tertinggi ialah 60 km/jam.
Tabel 3.3 Kecepatan kendaraan berdasarkan asumsi No 1 2 3 4
Jenis Kecepatan Sangat Lambat Lambat Sedang Kencang
Kecepatan (km/jam) 0 < x < 15 8 < x < 30 20 < x < 50 40 < x < 65
Dari data - data variabel diatas, dapat dibentuk menjadi model fuzzy berikut :
53 Jenis kepadatan berdasarkan waktu :
Gambar 3.3 Grafik Keanggotaan Waktu
µJAMsepi [x]
=
µJAMjarang [x] =
µJAMpadat [x] =
µJAMmacet [x] =
(x-0)/1;
0<x<1
(2-x)/1;
1<x<2
0;
x < 0 atau x ≥ 2
(x-1)/1;
1<x<2
(3-x)/1;
2<x<3
0;
x < 1 atau x ≥ 3
(x-2)/1;
2<x<3
(4-x)/1;
3<x<4
0;
x < 2 atau x ≥ 4
(x-3)/1;
3<x<4
(5-x)/1;
4<x<5
0;
x < 3 atau x ≥ 5
54 Intensitas penggunaan jalan per menit :
Gambar 3.4 Grafik Keanggotaan Intensitas
µINTjarang [y]
µINTsedang [y]
µINTsering [y]
=
=
=
1;
y < 10
( 20 - y ) / 10 ;
10 < y < 20
0;
y ≥ 20
1;
20 < y < 30
( y - 10 ) / 10 ;
10 < y < 20
( 40 - y ) / 10 ;
30 < y < 40
0;
y ≤10 atau y ≥ 40
1;
y ≥ 40
( y - 30 ) / 10 ;
30 < y < 40
0;
y ≤ 30
55 Kecepatan Kendaraan :
Gambar 3.5 Grafik Keanggotaan Kecepatan
µKECs_lambat [z]
µKEClambat [z]
µJKECsedang [z]
µKECkencang [z]
=
=
=
=
(z-0)/5;
0
( 15 - z ) / 10 ;
5 < z < 15
0;
z < 0 atau z ≥ 15
( z - 8 ) / 12 ;
8 < z < 20
( 30 - z ) / 10 ;
20 < z < 30
0;
z < 8 atau z ≥ 30
( z - 20 ) / 20 ;
20 < z < 40
( 50 - z ) / 10 ;
40 < z < 50
0;
z < 20 atau z ≥ 50
( z - 40 ) / 20 ;
40 < z < 60
( 65 - z ) / 5 ;
60 < z < 65
0;
z < 60 atau z ≥ 65
56 Rules yang digunakan : [R1]
If jam sepi dan Intensitas Jarang -> Kecepatan Sedang
[R2]
If jam Sepi dan Intensitas Sedang -> Kecepatan Sedang
[R3]
If jam Sepi dan Intensitas Sering -> Kecepatan Kencang
[R4]
If jam Jarang dan Intensitas Jarang -> Kecepatan Sedang
[R5]
If jam Jarang dan Intensitas Sedang -> Kecepatan Sedang
[R6]
If jam Jarang dan Intensitas Sering -> Kecepatan Kencang
[R7]
If jam Padat dan Intensitas Jarang -> Kecepatan Sedang
[R8]
If jam Padat dan Intensitas Sedang -> Kecepatan Lambat
[R9]
If jam Padat dan Intensitas Sering -> Kecepatan Lambat
[R10]
If jam Macet dan Intensitas Jarang -> Kecepatan Lambat
[R11]
If jam Macet dan Intensitas Sedang -> Kecepatan Sangat Lambat
[R12]
If jam Macet dan Intensitas Sering -> Kecepatan Sangat Lambat
Rumus menghitung z pada setiap rule : [R1]
α-predikat1
= µJAMsepi ∩ µINTjarang = min (µJAMsepi ∩ µINTjarang)
α-predikat1 = ( b - z1 ) / ( b / a )
[R2]
α-predikat2
= µJAMsepi ∩ µINTsedang = min (µJAMsepi ∩ µINTsedang)
α-predikat2 = ( b – z2 ) / ( b / a )
57 [R3]
α-predikat3
= µJAMsepi ∩ µINTsering = min (µJAMsepi ∩ µINTsering)
α-predikat3 = ( b – z3 ) / ( b / a )
[R4]
α-predikat4
= µJAMjarang ∩ µINTjarang = min (µJAMjarang ∩ µINTjarang)
α-predikat4 = ( b – z4 ) / ( b / a )
[R5]
α-predikat5
= µJAMjarang ∩ µINTsedang = min (µJAMjarang ∩ µINTsedang)
α-predikat5 = ( b – z5 ) / ( b / a )
[R6]
α-predikat6
= µJAMjarang ∩ µINTsering = min (µJAMjarang ∩ µINTsering)
α-predikat6 = ( b – z6 ) / ( b / a )
[R7]
α-predikat7
= µJAMpadat ∩ µINTjarang = min (µJAMpadat ∩ µINTjarang)
α-predikat7 = ( b – z7 ) / ( b / a )
[R8]
α-predikat8
= µJAMpadat ∩ µINTsedang = min (µJAMpadat ∩ µINTsedang)
α-predikat8 = ( b – z8 ) / ( b / a )
58 [R9]
α-predikat9
= µJAMpadat ∩ µINTsering = min (µJAMpadat ∩ µINTsering)
α-predikat9 = ( b – z9 ) / ( b / a )
[R10]
α-predikat10 = µJAMmacet∩ µINTjarang = min (µJAMmacet ∩ µINTjarang) α-predikat10 = ( b - z10 ) / ( b / a )
[R11]
α-predikat11 = µJAMmacet ∩ µINTsedang = min (µJAMmacet ∩ µINTsedang) α-predikat11 = ( b - z11 ) / ( b / a )
[R12]
α-predikat12 = µJAMmacet ∩ µINTsering = min (µJAMmacet ∩ µINTsering) α-predikat12 = ( b - z12 ) / ( b / a )
Kecepatan =(α-predikat1 * z1)+ (α-predikat2 * z2)+...+ (α-predikat(n) * z(n)) α-predikat1 + α-predikat2 + ... + α-predikat(n)
3.3.2 Pencarian Jalur Terpendek dengan Algoritma Genetika 3.3.2.1 Pemilihan kromosom Langkah awal untuk menerapkan algoritma genetik adalah penentuan bentuk kromosom yang akan dibentuk diman gennya berupa titik dimana titik tersebut adalah percabangan jalan.
59 Titik tersebut berada di dalam area yg telah di pilih dan terhubung dengan titik-titik yang lain. Sehingga akan terbentuk kumpulan titik yang berawal di titik start dan berakhir di finish. Setelah sebuah titik terbuka maka titik tersebut akan membuka titik lain yang terhubung dengannya. Bila titik yang tehubung dengannya ada lebih dari 1 titik maka akan di pilih secara acak sehingga akan tercipta suatu parent yang menghubungkan start dengan finish secara acak.
3.3.2.2 Pemilihan Parent Langkah berikutnya adalah penentuan bentuk parent yang akan dibentuk berupa titik-titik yang saling berhubungan dari start sampai finish yang di ambil secara random. Perandoman titik yang akan di buka selanjutnya berdasarkan dengan metode roulette-wheel dengan range 1-100. Agar kemungkinan terpilihnya titik terbagi dengan rata.
60 Berikut adalah gambar peta dan keseluruhan titik yang ada :
Gambar 3.6 Letak keseluruhan titik yang terdapat pada peta
61 Berikut adalah gambar setelah di lakukan random untuk mencari parent:
Gambar 3.7 Letak titik setalah dilakukan random untuk dijadikan parent
Titik berwarna biru adalah titik di mulai perjalanan dan titik merah adalah
tujuannya.
Setelah
di
lakukan
random
titik-titik
yang
menghubungkan titik mulai dan tujuan sebanyak 5 kali maka akan di dapatkan 5 buah parent dengan gen (titik-titik) yang berbeda. Titik-titik yang terhubung tersebut kemudian di jadikan parent lalu akan di simpan ke dalam tabel solusi.
62 Berikut ialah data pada tabel parent setaelah dilakukan random sebanyak lima kali :
Table 3.4 Data pada tabel parent
Setelah di dapatkan 5 solusi yang berpotensi menjadi parent maka akan di pilih sebuah solusi yang memiliki jumlah titik paling sedikit untuk menjadi parent 1 dan dipilih solusi dengan jumlah titik ke 2 paling sedikit untuk di jadikan parent 2 kemudian kedua parent di simpan pada tabel tempag.
63 Berikut gambar tabel tempag : Table 3.5 Data pada tabel tempag
3.3.2.3 Metode Rekombinasi Setelah parent di dapatkan maka langkah selanjutnya adalah menentukan metode rekombinasi. Metode rekombinasi yang di gunakan adalah metode edge recombination. Metode edge recombination merupakan metode yang mendaftar gen-gen yang membangun parent tersebut dan hubungannya dengan gen yang lain. Metode ini merupakan metode yang di gunakan untuk membuat mating pool yang memilik nilai permutasi dan menganggap penting hubungan antar gen. Untuk itu gen dari tiap kromosom akan di pecah dan di daftar titik-titik yang terhubung.
64 Setelah di lakukan random sebanyak 5 kali hasil pemecahan kromosomnya kemudian di simpan pada database tabel pool seperti gambar berikut : Table 3.6 Tabel pool
65
Setelah di dapatkan mating pool nya kemudian di ambil titik start sebagi titik awal. Setelah itu di lihat titik apa saja yang terhubung dengan start, kemudian di cari lagi titik yang terhubung hingga di dapatkan titik finish. Syarat-syarat pemilihan titik adalah sebagai berikut: 1.
Bila titik yang terhubung lebih dari satu maka akan di pilih titik yang memiliki hubungan terbanyak.
2.
Titik yang sudah di ambil tidak bisa di ambil kembali.
3.
Bila ada titik dengan jumlah titik yang terhubung sama banyak maka ambil titik yang terdapat di parent 1.
66 Berikut gambar hasil rekombinasi dari mating pool yang kemudian di simpan ke dalam tabel anak: Table 3.7 Tabel anak
Setelah itu generasi baru tersebut akan di gunakan sebagai parent 1 dan kemudian di rekombinasi dengan parent 2 yaitu solusi yang belum di rekombinasi. Sehingga di harapkan akan di temukan hubungan baru antar gen yang dapat memberikan hasil yang lebih baik. Setelah semua solusi di rekombinasi maka akan di dapatkan 4 buah generasi baru yang di harapkan memiliki fitness yang lebih baik daripada parentnya.
3.3.2.4. Penentuan Fitness Untuk mendapatkan generasi dengan kromosom terbaik di butuh kan fitness. Fitness yaitu
waktu tempuh, jadi semakin sedikit waktu
tempuhnya maka fitnessnya semakin kecil dan kemungkinan generasi tersebut terpilih akan semakin besar. Apabila ada lebih dari 1 generasi yang memiliki fitness terbaik maka akan di pilih generasi dengan titik yang paling sedikit.
67 Ada 2 fitness yang kami gunakan 1.
Jalur tercepat, karena titik yang diambil adalah percabangan jalan maka dianggap titik memiliki lampu merah yang akan memperlambat waktu tempuh
2.
Lama perjalanan, yaitu total waktu tempuh antar titik.
3.3.2.5. Mutasi Metode mutasi yang kami gunakan pada sistem ini adalah metode penyisipan (Insert Mutation), Karena mutasi ini cocok untuk sistem dengan representasi gen berupa permutasi. Setiap gen pada kromosom anak dengan fitness terbaik akan dicek hubungannya dengan gen lain di bawahnya. Bila ada titik yang tidak terdapat pada kromosom tersebut tetapi titik tersebut berpeluang untuk menciptakan kromosom hasil dengan fitness yang lebih baik maka titik itu akan disisipkan.
3.3.3 Spesifikasi Modul Modul mulai Menentukan titik start dan finish Buka koneksi dengan database (tabel dot_master) cari titik terdekat dengan start dan finish Akhir modul
68 Modul trap membuat batasan seleksi titik berdasarkan koordinat if koordinat y start >= koordinat x start then y atas =y start+1000 y bawah= y finish-1000 else y atas=y finish+1000 y bawah=y start-1000 endif if koordinat x start >= koordinat x start then x kanan =x start+1000 x kiri= x finish-1000 else x kanan=x finish+1000 x kiri=x start-1000 endif Akhir modul
Modul cek Modul yang menyeleksi titik yang akan di gunakan berdasarkan batasan koordinat yg telah di buat Buka semua titik dari dot_master dimana x< x kanan dan x> x kiri dan y
y bawah order by titik asc"
69 Masukan hasil proses di atas yaitu titik dan hubungannya dengan titik lain ke dalam database(cek) Akhir modul
Modul random Modul yang akan merandom titik dengan menggunakan metode roulete wheel(database yang di gunakan di sini sesuai dengan kebutuhan modul yang memanggil karena modul ini hanya di gunakan untuk merandom, modul ini mengembalikan sebuah nilai integer)
b = hasil random angka 0 sampai 100 If (jumlah data = 2) Then If (b < 50) Then Ambil data di urutan pertama
ElseIf (b > 49) Then Ambil data di urutan kedua End If
ElseIf (jumlah data = 3) Then If (b < 33) Then Ambil data di urutan pertama
ElseIf (b > 32 And b < 66) Then
70 Ambil data di urutan kedua
ElseIf (b > 65) Then Ambil data di urutan ketiga End If ElseIf (jumlah data = 4) Then If (b < 25) Then Ambil data di urutan pertama
ElseIf (b > 24 And b < 50) Then Ambil data di urutan kedua
ElseIf (b > 49 And b < 75) Then Ambil data di urutan ketiga
ElseIf (b > 75) Then Ambil data di urutan keempat
End If ElseIf (jumlah data = 5) Then If (b < 20) Then Ambil data di urutan pertama
ElseIf (b > 19 And b < 40) Then
71 Ambil data di urutan kedua
ElseIf (b > 39 And b < 60) Then Ambil data di urutan ketiga
ElseIf (b > 59 And b < 80) Then Ambil data di urutan keempat
ElseIf (b > 79) Then Ambil data di urutan kelima End If End If A=data yg di ambil Akhir modul
Modul titik1 Modul yang mengambil titik awal Masukan titik start ke database tabel temp Buka database tabel cek buka semua data yang terhubung dengan titik start If(jumlah data >1) Jalankan modul Random Else a= titik endif temp1 = a
72 masukan temp1 ke database temp Buka modul titik2 Akhir modul
Modul titik2 Modul untuk mencari titik yang akan menghubungkan start dengan finish Buka database cari titik yang terhubung dengan a di tabel cek Do while(temp1<>finish) If(titik a telah di buka)then Buka database tabel temp ambil data terakhir yg di masukan Buka modul cek1 Else Temp1=a Masukan temp1 ke tabel temp Buka table dot master ambil semua titik yg terhubung dengan finish
If (temp1 terhubung dengan finish)then Temp1=finish Masukan temp1 ke tabel temp Buka modul pool1 Endif Buka table dot master yang titiknya terhubung dengan temp1 If (jumlah data> 1) Then
73 random Else: a = titik End If Endif Loop Akhir modul
Modul cek1 Mengecek apakah titik yang dipilih telah sesuai If(titik yang terhubung telah terbuka semua)then Ulang pencarian dari awal Endif Akhir modul
Modul pool1 masukan isi tabel temp ke tabel solusitemp hapus isi tabel temp Akhir modul
Modul pool2 Masukan ke dalam tabel solusi isi dari tabel solusitemp dimana titik yg di lewati bukan 0 Buka modul parent1 Akhir modul
74 Modul parent1 Modul yang menentukan parent 1 Masukan ke dalam tabel tempag kolom parent_1 isi dari tabel solusitemp dimana titik yg di lewati memiliki jumlah paling sedikit dan bukan 0 Buka modul parent2 Akhir modul
Modul parent2 Modul untuk menentukan parent 2 If(tabel solusitemp belum di buka)then Masukan ke dalam tabel tempag kolom parent_2 isi dari tabel solusitemp dimana titik yg di lewati memiliki jumlah paling sedikit dan bukan 0 endif Akhir modul
Modul kromosom_pool Modul yang membuat mating pool dari parent 1 Buka tabel tempag di mana parent_1 <> 0 Do While (end of files= false) Buka tabel tempag di mana parent_1 <> 0 Ambil titik yang di tunjuk kursor dan masukan ke table pool kolom 1 Ambil titik di bawah titik yang di tunjuk kursor dan masukan ke table pool kolom 2 Ambil titik di atas titik yang di tunjuk kursor dan masukan ke table pool kolom 3 Loop
75 kromosom_pool2 End Sub Akhir modul
Modul kromosom_pool2 Modul yang membuat mating pool dari parent 2 Buka tabel tempag di mana parent_2 <> 0 Do While (end of files= false) If(titik belum di ambil)then Ambil titik yang di tunjuk kursor dan masukan ke table pool kolom 1 Ambil titik di bawah titik yang di tunjuk kursor dan masukan ke table pool kolom 4 Ambil titik di atas titik yang di tunjuk kursor dan masukan ke table pool kolom 5 Else Buka table pool dimana titik=titik yang di tunjuk kursor Ambil titik di bawah titik yang di tunjuk kursor dan masukan ke table pool kolom 4 Ambil titik di atas titik yang di tunjuk kursor dan masukan ke table pool kolom 5 Endif Buka tabel tempag di mana parent_2 <> 0 Loop Buka modul kombinasi Akhir modul
Modul kombinasi Modul yang melakukan rekombinasi dari maring pool yang di dapat
76 Do While (a <> fin) Buka tabel pool Pilih titik dengan hubungan terbanyak dimana titik adalah kolom 2,3,4 dan 5 Masukan titik dengan hubungan terbanyak ke table hasil Jika jumlah titik yang terhubung sama maka ambil titik yang ada di parent 1 Loop Buka modul Buka modul sortir Buka modul insert_anak Buka modul insert_tempag Akhir modul
Modul insert_anak Masukan isi table hasil ke table anak Akhir modul
Modul sortir Modul untuk membantu menemukan jaalur tercepat Buka table hasil Cek apakah ada titik yang biasa langsung di hubungkan Jika ada maka hubungkan dan hapus titik di antara kedua titik tersebut Masukan hasil ke table temp Akhir modul
77 modul insert_tempag masukan isi tabel temp ke tabel tempag masukan isi tabel tempag ke tabel anak akhir Akhir Modul
Modul akhir Masukan isi tabel anak ke tabel akhir Masukan isi tabel anak dengan jumlah titik tersedikit lalu masukan ke parent1 Akhir Modul
Modul tampil Tampilkan generasi baru dengan fitness terbaik Akhir modul
Modul Total Jarak Hitung total jarak dari titik yang di tampilkan Akhir modul
Modul fuzzy titik Buka tabel temp2 If(ada titik yang menghubungkan sebuah titik dengan titik setelahnya(1 baris di bawah) di tabel temp2) then Hitung total waktu tempuh antara titik asal ke titik setelahnya melalui titik
78 penghubung baru. If(waktu tempuh jalur dengan titik baru < waktu tempuh jalur lama)then Masukan titik asal dan alur baru ke tabel hasil Else : Masukan titik asal ke tabel hasil Akhir modul
Modul fuzzy titik2 Buka tabel temp2 If(ada titik yang menghubungkan titik asal dengan titik lain(lebih dari 1 baris di bawahnya)di tabel temp2 )then Hitung total waktu tempuh antara titik asal ke titik yang terhubung dengan titik penghubung baru If(waktu tempuh jalur baru
3.4
Alur Program Secara Umum Program aplikasi ini mempunyai beberapa proses utama yaitu dengan
menentukan titik start dan finish, melakukan pencarian jalur tercepat dan menampilkan hasil penghitungan jalur tercepat dan lama perjalanan.
79
Gambar 3.8 Usecase Diagram
Pada saat awal user akan diminta untuk menentukan letak start dan finish, kemudian sistem akan menentukan titik-titik terdekat diantara titik start dan finish, setelah itu akan dibuat batasan area untuk membantu membatasi jumlaha titik pada saat melakukan pencarian jalur terdekat, kemudian sistem mencari titik-titik yang terhubung antara titik start dan finish yang berada pada area pencarian, setelah didapatkan titiktitiknya maka dicarilah titik yang terbaik, kemudian proses terakhir adalah menampilkan hasil, dan program akan berulang setiap 30 detik sampai program di hentikan. Untuk lebih jelasnya dapat dilihat di flowchart dibawah ini.
80
Gambar 3.9 Flowchart program secara umum
81 Start proses menentukan titik start dan finish
mencari titik terdekat dengan titik start dan finish
Membuat batasan area
Memilih titik - titik didalam area
Random titik
Titik sudah dibuka
ya
tidak
ya
Perulangan untuk menentukan 5 buah parent yang akan direkombinasi
Titik yang terhubung telah dibuka semua tidak
Titik = finish
tidak
ya Simpan titik kedalam database
Menentukan parent 1
Menentukan parent 2
Rekombinasi parent 1 dan parent 2
Ambil titik -titik dengan fitnes terbaik
Generasi baru
Menghitung Waktu tempuh
Hitung fitnes
Tampilkan titik pilihan
Simpan kedalam database
Selesai
Merekombinasi ulang generasi baru dengan seluruh parent untuk mendapatkan hasil yang maksimal
Gambar 3.10 Flowchart proses Algoritma Genetik