47
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
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 perundang- undangan.
b. Penyusunan program dan anggaran serta evaluasi kinerja pelaksanaan kebijakan di bidang jalan.
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
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 :
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 Jenis Kepadatan Waktu
1 Sepi 22.01 ‐ 05.30
2 Jarang 05.31 ‐ 06.00
10.01 ‐ 14.00
21.01 ‐ 22.00
3 Padat 06.01 ‐ 06.30
09.01 ‐ 10.00
14.01 ‐ 16.00
19.01 ‐ 21.00
4 Macet 06.31 ‐ 09.00
16.01 ‐ 19.00
sumber : Dep.Pekerjaan Umum Republik Indonesia
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
Jumlah kendaraan/menit
1 Jarang <10
2 Sedang 10 sampai 30
3 Sering >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 Jenis Kecepatan
Kecepatan (km/jam) 1 Sangat Lambat 0 < x < 15 2 Lambat 8 < x < 30 3 Sedang 20 < x < 50 4 Kencang 40 < x < 65
Dari data - data variabel diatas, dapat dibentuk menjadi model fuzzy berikut :
Jenis kepadatan berdasarkan waktu :
Gambar 3.3 Grafik Keanggotaan Waktu
µJAMsepi [x] = ( x - 0 ) / 1 ; 0 < x < 1 ( 2 - x ) / 1 ; 1 < x < 2 0; x < 0 atau x ≥ 2 µJAMjarang [x] = ( x - 1 ) / 1 ; 1 < x < 2
( 3 - x ) / 1 ; 2 < x < 3 0; x < 1 atau x ≥ 3 µJAMpadat [x] = ( x - 2 ) / 1 ; 2 < x < 3
( 4 - x ) / 1 ; 3 < x < 4 0; x < 2 atau x ≥ 4 µJAMmacet [x] = ( x - 3 ) / 1 ; 3 < x < 4
( 5 - x ) / 1 ; 4 < x < 5 0; x < 3 atau x ≥ 5
Intensitas penggunaan jalan per menit :
Gambar 3.4 Grafik Keanggotaan Intensitas
µINTjarang [y] = 1; y < 10
( 20 - y ) / 10 ; 10 < y < 20 0; y ≥ 20 µINTsedang [y] = 1; 20 < y < 30
( y - 10 ) / 10 ; 10 < y < 20 ( 40 - y ) / 10 ; 30 < y < 40 0; y ≤10 atau y ≥ 40
µINTsering [y] = 1; y ≥ 40
( y - 30 ) / 10 ; 30 < y < 40 0; y ≤ 30
Kecepatan Kendaraan :
Gambar 3.5 Grafik Keanggotaan Kecepatan
µKECs_lambat [z] = ( z - 0 ) / 5 ; 0 < z < 5 ( 15 - z ) / 10 ; 5 < z < 15 0; z < 0 atau z ≥ 15 µKEClambat [z] = ( z - 8 ) / 12 ; 8 < z < 20
( 30 - z ) / 10 ; 20 < z < 30 0; z < 8 atau z ≥ 30 µJKECsedang [z] = ( z - 20 ) / 20 ; 20 < z < 40
( 50 - z ) / 10 ; 40 < z < 50 0; z < 20 atau z ≥ 50 µKECkencang [z] = ( z - 40 ) / 20 ; 40 < z < 60
( 65 - z ) / 5 ; 60 < z < 65 0; z < 60 atau z ≥ 65
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 )
[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 )
[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.
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.
Berikut adalah gambar peta dan keseluruhan titik yang ada :
Gambar 3.6 Letak keseluruhan titik yang terdapat pada peta
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.
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.
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.
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
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.
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.
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
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 atas dan y>y bawah order by titik asc"
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
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
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
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
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
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
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
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
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
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<titik tempuh jalur lama)then Masukan titik asal dan alur baru ke tabel hasil
Else : Masukan titik asal ke tabel hasil endif
Akhir modul
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.
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 titik- titiknya 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.
Gambar 3.9 Flowchart program secara umum
mencari titik terdekat dengan titik start dan finish
Membuat batasan area
Memilih titik - titik didalam area
Titik sudah dibuka
Titik yang terhubung telah
dibuka semua
Simpan titik kedalam database
Titik = finish
Menentukan parent 2
Rekombinasi parent 1 dan parent 2
Hitung fitnes
Ambil titik -titik dengan fitnes terbaik Menentukan
parent 1
Generasi baru
Simpan kedalam database
ya
tidak ya tidak
Perulangan untuk menentukan 5 buah parent yang akan direkombinasi
Selesai Merekombinasi ulang generasi baru dengan seluruh
parent untuk mendapatkan hasil yang maksimal
Random titik Start proses menentukan
titik start dan finish
Tampilkan titik pilihan ya
tidak
Menghitung Waktu tempuh
Gambar 3.10 Flowchart proses Algoritma Genetik