Implementasi Sistem Implementasi Mobile Tracking Menggunakan Metode Ant Colony Optimization Dan Google Maps Api

BAB 4 IMPLEMENTASI DAN PENGUJIAN SISTEM

4.1 Implementasi Sistem

4.1.1 Implementasi Algoritma Ant Colony Optimization

Proses yang dilakukan pertama kali adalah yaitu melacak posisi koordinat sebuah ponsel. Koordinat yang berhasil dilacak kemudian akan disimpan kedalam database. Data dapat dilihat seperti pada Tabel 4.1. Tabel 4.1. Koordinat Ponsel Yang Terlacak Oleh Apliaksi Mobile Tracking ID NAMA Lat Long Alamat 1 Donny Sanjaya 3,5855251 98,6312905 Jl. Merpati 2 Ridho Satrya Akbar 3,5678042 98,6422931 Jl. Setia Budi 3 Rajab Sihotang 3,5731014 98,6535551 Jl. Mesjid 4 Chandra Kurniawan 3,5673288 98,6607754 Jl. Jamin Ginting Jika masing-masing koordinat diatas digambarkan pada tampilan graf maka dapat kita lihat titik yang akan dilewati dalam pencarian jarak terdekat. Waypoint menunjukkan lokasi dari suatu tempat, dan dihitung menggunakan latitude lintang dan longitude bujur. Untuk perhitungan yang lebih tepat dari jarak antara dua tempat yang jauh, rumus jarak lingkaran besar dapat digunakan. Rumus yang menggunakan sifat trigonometri dari suatu koordinat termasuk sinus, cosinus, arccosinus dan perkiraan jari-jari bumi, maka jarak dari suatu tempat dapat dihitung. Universitas Sumatera Utara Langkah-langkah untuk menghitung jarak antara dua waypoint adalah sebagai berikut : Mengkonversi bujur dan lintang dua waypoint dari representasi desimal ke radian dibagi dengan 180 π, atau 57,29578. 1. Jarak antara Jl. Merpati1 dan Jl. Setia Budi2 Pengukuran lintang dan bujur untuk Jalan Merpati adalah Lintang 3,5855251, Bujur 98,6312905 Pengukuran bujur dan lintang untuk Jalan Setia Budi adalah Lintang 3,5678042, Bujur 98,6422931 Bagi dengan 180 π, sehingga diperoleh Jalan Merpati : Lintang radian = 0,062579218 Bujur radian = 1,721440765 Jalan Setia Budi : Lintang radian = 0,06226993 Bujur radian = 1,721632796 Hitung jarak dua waypoints dengan rumus = sin . sin + cos . cos . cos − . D = Acossin0,062579218 . sin0,06226993 + cos0,062579218 .cos0,06226993 . cos1,721632796-1,721440765 . 6371 Maka jarak = 2,318 km 2. Jarak antara Jalan Setia Budi2 dan Jalan Mesjid3 Pengukuran bujur dan lintang untuk Jalan Setia Budi adalah Lintang 3,5678042, Bujur 98,6422931 Pengukuran lintang dan bujur untuk Jalan Mesjid adalah Lintang 3,5731014, Bujur 98,6535551 Universitas Sumatera Utara Bagi dengan 180 π, sehingga diperoleh Jalan Setia Budi : Lintang radian = 0,06226993 Bujur radian = 1,721632796 Jalan Mesjid : Lintang radian = 0,062362384 Bujur radian = 1,721829355 Hitung jarak dua waypoints dengan rumus = sin . sin + cos . cos . cos − . D = Acossin0,06226993 . sin0,062362384+ cos0,06226993 .cos0,062362384 . cos1,721829355-1,721632796 . 6371 Maka jarak = 1,382 km 3. Jarak antara Jalan Mesjid3 dan Jalan Jamin Ginting4 Jalan Mesjid : Lintang radian = 0,062362383938 Bujur radian = 1,721829355293 Jalan Jamin Ginting : Lintang radian = 0,062261633061 Bujur radian = 1,721955373301 Maka jarak = 1,027 km 4. Jarak antara Jalan Merpati1 dan Jalan Jamin Ginting4 Jalan Merpati : Lintang radian = 0,062579218408 Bujur radian = 1,721440764716 Jalan Jamin Ginting : Lintang radian = 0,062261633061 Bujur radian = 1,721955373301 Maka jarak = 3,847 km 5. Jarak antara Jalan Setia Budi 2 dan Jalan Jamin Ginting 4 Jalan Setia Budi : Lintang radian = 0,062269930356 Bujur radian = 1,721632796312 Universitas Sumatera Utara Jalan Jamin Ginting : Lintang radian = 0,062261633061 Bujur radian = 1,721955373301 Maka jarak = 2,052 km 6. Jarak antara Jalan Merpati 1 dan Jalan Mesjid 3 Jalan Merpati : Lintang radian = 0,062579218408 Bujur radian = 1,721440764716 Jalan Mesjid : Lintang radian = 0,062362383938 Bujur radian = 1,721829355293 Maka jarak = 2,830 km Tampilan graf dapat dilihat pada Gambar 4.1. Gambar 4.1 Graf Dengan Empat Vertex Dari graf diatas, jarak antar kota dapat ditampilkan dimasukan kedalam sebuah tabel. Kemudian akan dicari route terpendeknya. Tabel 4.2 Jarak Antar Kota Kota ke- 1 2 3 4 1 2,318 2,830 3,847 2 2,318 1,381 2,052 3 2,830 1,381 1,027 4 3,847 2,052 1,027 1 2 4 3 2,318 km 2,830 km 3,847 km 2,052 km 1,027 km 1,381 km Universitas Sumatera Utara Berikut ini langkah-langkah perhitungan route terpendek menggunakan algoritma semut. Parameter–parameter yang digunakan adalah: Alfa α = 1.00 Beta β = 1.00 Rho ρ = 0.50 τij awal = 0.01 Maksimum siklus NCmax = 1 Tetapan siklus semut Q = 1 Banyak semut m = 3 Dari jarak kota yang telah diketahui dapat dihitung visibilitas antar kota ηij = 1dij Tabel 4.3 Visibilitas Antar Kota Kota ke- 1 2 3 4 1 0,431406 0,353357 0,259943 2 0,431406 0,724113 0,487329 3 0,353357 0,724113 0,97371 4 0,259943 0,487329 0,97371 Intensitas feromon antar titik τij akan diperlihatkan pada table 4.4 dibawah ini : Tabel 4.4 Feromon Antar Titik Kota ke- 1 2 3 4 1 0,01 0,01 0,01 2 0,01 0,01 0,01 3 0,01 0,01 0,01 4 0,01 0,01 0,01 Nilai dari parameter visibilitas η dan intensitas feromon τ ini nantinya akan digunakan dalam persamaan probabilitas dan merupakan parameter yang mempengaruhi semut dalam pemilihan titik berikutnya aturan transisi. Universitas Sumatera Utara Mencari titik tujuan berikutnya dengan perhitungan probabilitas : Siklus ke-1 Semut ke – 1: - Daftar semut 1 ke tujuan - Probabilitas dari kota 1 ke setiap kota berikutnya dapat dihitung dengan persamaan , = , . η , ∑ , . η , Σ[τ r,u ] α .[η r,u ] β = 0.010 + 0.010,431406 + 0.010,353357 + 0.010,259943 = 0,01045 dengan demikian dapat dihitung probabilitas dari kota 1 menuju setiap kota = Kota 1 = 0.00 Kota 2 = 0.011.00 . 0,4314061.00 0,01045 = 0,412829 Kota 3 = 0.011.00 . 0,3533571.00 0,01045 = 0,338141 Kota 4 = 0.011.00 . 0,2599431.00 0,01045 = 0.248749 - Probabilitas Komulatif = 0,000 0,413 0,751 1,000 - Bilangan Random = 0.679 - Memeriksa qk-1 r ≤ qk → Kota yang dipilih adalah 3 - Daftar semut = 1 3 - Melakukan pembaruan lokal feromon menggunakan persamaan 3: τ t,v ← 1−ρ .τ t,v+Δτ t,v Δτ t,v = ++ ., Δτ 1,3 = ,-. . 0 = ,. =0,088 τ 1,3 ← 1−0,50 .0,01+0,088 τ 1,3 ← 0,093 Menghitung probabilitas dari titik 3 ke titik berikutnya: , = , . η , ∑ , . η , Σ[τ r,u ] α .[η r,u ] β = 0.010,353357 + 0.010,724113 + 0.010,97371 = 0,0205118 Universitas Sumatera Utara Kota 1 = 0.011.00 . 0, 3533571.00 0,0205118 = 0,172270 Kota 2 = 0.011.00 . 0,7241131.00 0,0205118 = 0,353023 Kota 3 = 0 Kota 4 = 0.011.00 . 0, 973711.00 0,0205118 = 0,474707 - Probabilitas Komulatif = 0,172270 0,525292758 0,525292758 1,000 - Bilangan Random = 0.479 - Memeriksa qk-1 r ≤ qk → Kota yang dipilih adalah 2 - Daftar semut = 1 3 2 - Melakukan pembaruan lokal feromon menggunakan persamaan 3: τ t,v ← 1−ρ .τ t,v+Δτ t,v Δτ t,v = ++ ., Δτ 3,2 = ,.- . 0 = 1,1 0 =0,1810 τ 3,2 ← 1−0,50 .0,01+0,1810 τ 3,2 ← 0,186 Titik tujuan selanjutnya hanya ke titik 4 - Daftar semut = 1 3 2 4 - Melakukan pembaruan lokal feromon menggunakan persamaan 3: τ t,v ← 1−ρ .τ t,v+Δτ t,v Δτ t,v = ++ ., Δτ 2,4 = ,1 . 0 = -, - =0,1218 τ 2,4 ← 1−0,50 .0,01+ 0,1218 τ 2,4 ← 0,1268 Semut ke – 2: - Daftar semut 1 ke tujuan - Probabilitas dari kota 1 ke setiap kota berikutnya dapat dihitung dengan persamaan , = , . η , ∑ , . η , Universitas Sumatera Utara Σ[τ r,u ] α .[η r,u ] β = 0.010 + 0.010,431406 + 0.010,353357 + 0.010,259943 = 0,01045 dengan demikian dapat dihitung probabilitas dari kota 1 menuju setiap kota = Kota 1 = 0.00 Kota 2 = 0,412829 Kota 3 = 0,338141 Kota 4 = 0.248749 - Probabilitas Komulatif = 0,000 0,413 0,751 1,000 - Bilangan Random = 0.497 - Memeriksa qk-1 r ≤ qk → Kota yang dipilih adalah 2 - Daftar semut = 1 2 - Melakukan pembaruan lokal feromon menggunakan persamaan 3: τ t,v ← 1−ρ .τ t,v+Δτ t,v Δτ t,v = ++ ., Δτ 1,2 = ,. - . 0 = 2, 3 =0,1078 τ 1,2 ← 1−0,50 .0,01+0,1078 τ 1,2 ← 0,1128 Menghitung probabilitas dari titik 2 ke titik berikutnya: , = , . η , ∑ , . η , Σ[τ r,u ] α .[η r,u ] β = 0.010,431406 + 0.010 + 0.010,724113 + 0.010,487329 = 0,01643 Kota 1 = 0.011.00 . 0,4314061.00 0,01643 = 0,0087 Kota 2 = 0.00 Kota 3 = 0.011.00 . 0,7241131.00 0,01643 = 0,5926 Kota 4 = 0.011.00 . 0,4873291.00 0,01643 = 0.3988 - Probabilitas Komulatif = 0,263 0,263 0,703 1,000 - Bilangan Random = 0.598 - Memeriksa qk-1 r ≤ qk → Kota yang dipilih adalah 3 - Daftar semut = 1 2 3 - Melakukan pembaruan lokal feromon menggunakan persamaan 3: τ t,v ← 1−ρ .τ t,v+Δτ t,v Universitas Sumatera Utara Δτ t,v = ++ ., Δτ 2,3 = , .- . 0 = 0,11 0 =0,21966 τ 2,3 ← 1−0,50 .0,01+0,21966 τ 2,3 ← 0,2247 Titik tujuan selanjutnya hanya ke titik 4 - Daftar semut = 1 2 3 4 - Melakukan pembaruan lokal feromon menggunakan persamaan 3: τ t,v ← 1−ρ .τ t,v+Δτ t,v Δτ t,v = ++ ., Δτ 3,4 = , 3 . 0 = 0, - =0,2434 τ 3,4 ← 1−0,50 .0,01+ 0,2434 τ 3,4 ← 0,2484 Semut ke – 3: - Daftar semut 1 ke tujuan - Probabilitas dari kota 1 ke setiap kota berikutnya dapat dihitung dengan persamaan , = , . η , ∑ , . η , Σ[τ r,u ] α .[η r,u ] β = 0.010 + 0.010,431406 + 0.010,353357 + 0.010,259943 = 0,01045 dengan demikian dapat dihitung probabilitas dari kota 1 menuju setiap kota = Kota 1 = 0.00 Kota 2 = 0,412829 Kota 3 = 0,338141 Kota 4 = 0.248749 - Probabilitas Komulatif = 0,000 0,413 0,751 1,000 - Bilangan Random = 0.721 - Memeriksa qk-1 r ≤ qk → Kota yang dipilih adalah 3 - Daftar semut = 1 3 - Melakukan pembaruan lokal feromon menggunakan persamaan 3: τ t,v ← 1−ρ .τ t,v+Δτ t,v Universitas Sumatera Utara Δτ t,v = ++ ., Δτ 1,3 = ,-. . 0 = ,. =0,088 τ 1,3 ← 1−0,50 .0,01+0,088 τ 1,3 ← 0,093 Menghitung probabilitas dari titik 3 ke titik berikutnya: , = , . η , ∑ , . η , Σ[τ r,u ] α .[η r,u ] β = 0.010,353357 + 0.010,724113 + 0.010,97371 = 0,0205118 Kota 1 = 0,172270 Kota 2 = 0,353023 Kota 3 = 0 Kota 4 = 0,474707 - Probabilitas Komulatif = 0,172270 0,525292758 0,525292758 1,000 - Bilangan Random = 0.519 - Memeriksa qk-1 r ≤ qk → Kota yang dipilih adalah 2 - Daftar semut = 1 3 2 - Melakukan pembaruan lokal feromon menggunakan persamaan 3: τ t,v ← 1−ρ .τ t,v+Δτ t,v Δτ t,v = ++ ., Δτ 3,2 = ,.- . 0 = 1,1 0 =0,1810 τ 3,2 ← 1−0,50 .0,01+0,1810 τ 3,2 ← 0,186 Titik tujuan selanjutnya hanya ke titik 4 - Daftar semut = 1 3 2 4 - Melakukan pembaruan lokal feromon menggunakan persamaan 3: τ t,v ← 1−ρ .τ t,v+Δτ t,v Δτ t,v = ++ ., Universitas Sumatera Utara Δτ 2,4 = ,1 . 0 = -, - =0,1218 τ 2,4 ← 1−0,50 .0,01+ 0,1218 τ 2,4 ← 0,1268 Hasil rute semut pada siklus 1 adalah rute: Hasil pencarian dari siklus pertama seperti yang terlihat pada tabel 4.5 berikut: Tabel 4.5 Hasil Siklus I Algoritma Semut Semut Route Panjang Semut 1 1 3 2 4 6,263 Km Semut 2 1 2 3 4 4,726 Km Semut 3 1 3 2 4 6,263 Km Melakukan pembaruan global feromon menggunakan persamaan 4 τ t,v←1−α .τ t,v +α.Δτ t,v Δτ t,v = 4 5 67 8 9:; =, ∈ = = A:; Melakukan pembaruan global untuk rute terbaik pada siklus I: Rute terbaik adalah 1 2 3 4 dengan panjang 5 67 = 4,726 FG, sehingga diperoleh Δτ t,v = 0,3 H = 0,2116 τ t,v←1−α .τ t,v +α.Δτ t,v τ 1,2←1−0,1 . 0,1128 +0,1. 0,2116 τ 1,2←0,12268 τ 2,3←1−0,1 . 0,2247 +0,1. 0,2116 τ 2,3← 0,22339 τ 3,4←1−0,1 . 0,248 +0,1. 0,2116 τ 3,4← 0,24436 Melakukan pembaruan global untuk rute lainnya: τ t,v←1−α .τ t,v +α.Δτ t,v Δτ t,v = 0 τ 1,3←1− 0,1 0,093 +0,1.0 τ 1,3←0,0837 Universitas Sumatera Utara τ 2,4←1− 0,1 0,126 +0,1.0 τ 2,4←0,1143 Intensitas feromon pada setiap titik setelah diperbaharui τij hasil dari siklus I akan ditunjukkan oleh tabel 4.6 di bawah ini. Tabel 4.6 Feromon Antar Titik Pada Graf 1 2 3 4 1 - 0,12268 0,0837 2 0,12268 - 0,22339 0,1143 3 0,0837 0,22339 - 0,24436 4 0,1143 0,24436 - Dari tabel diatas terlihat bahwa terjadi perubahan nilai feromon. Untuk titik yang sering dikunjungi oleh semut terjadi penambahan intensitas feromon, sedangkan pada titik yang jarang dikunjungi semut terjadi pengurangan nilai intensitas feromon evaporasi. Nilai intensitas feromon yang baru inilah yang akan digunakan untuk melakukan perhitungan pada siklus berikutnya. Untuk melakukan perhitungan perjalanan, kemudian melakukan pencarian jalur terdekat, penulis melakukannya dengan cara mengimplementasikan kode program yang dapat dilihat seperti pada Tabel 4.7. Tabel 4.7. Kode Program Untuk Penentuan Route Terpendek Baris Kode Kode Program 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 function AntColonymode { var alfa = 1.0; var beta = 1.0; var rho = 0.5; var asymptoteFactor = 0.01; var pher = new Array; var nextPher = new Array; var prob = new Array; var numAnts = 20; var numWaves = 20; for var i = 0; i numActive; ++i { pher[i] = new Array; nextPher[i] = new Array; } Universitas Sumatera Utara 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 for var i = 0; i numActive; ++i { for var j = 0; j numActive; ++j { pher[i][j] = 1; nextPher[i][j] = 0.0; } } var lastNode = 0; var startNode = 0; var numSteps = numActive - 1; var numValidDests = numActive; if mode == 1 { lastNode = numActive - 1; numSteps = numActive - 2; numValidDests = numActive - 1; } for var wave = 0; wave numWaves; ++wave { for var ant = 0; ant numAnts; ++ant { var curr = startNode; var currDist = 0; for var i = 0; i numActive; ++i { visited[i] = false; } currPath[0] = curr; for var step = 0; step numSteps; ++step { visited[curr] = true; var cumProb = 0.0; for var next = 1; next numValidDests; ++next { if visited[next] { prob[next] = Math.powpher[curr][next], alfa Math.powdur[curr][next], 0.0 - beta; cumProb += prob[next]; } } var guess = Math.random cumProb; var nextI = -1; for var next = 1; next numValidDests; ++next { if visited[next] { nextI = next; guess -= prob[next]; if guess 0 { nextI = next; break; } } } currDist += dur[curr][nextI]; currPath[step+1] = nextI; curr = nextI; } currPath[numSteps+1] = lastNode; currDist += dur[curr][lastNode]; k2-rewire: Universitas Sumatera Utara 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 var lastStep = numActive; if mode == 1 { lastStep = numActive - 1; } var changed = true; var i = 0; while changed { changed = false; for ; i lastStep - 2 changed; ++i { var cost = dur[currPath[i+1]][currPath[i+2]]; var revCost = dur[currPath[i+2]][currPath[i+1]]; var iCost = dur[currPath[i]][currPath[i+1]]; var tmp, nowCost, newCost; for var j = i+2; j lastStep changed; ++j { nowCost = cost + iCost + dur[currPath[j]][currPath[j+1]]; newCost = revCost + dur[currPath[i]][currPath[j]] + dur[currPath[i+1]][currPath[j+1]]; if nowCost newCost { currDist += newCost - nowCost; Reverse the detached road segment. for var k = 0; k Math.floorj-i2; ++k { tmp = currPath[i+1+k]; currPath[i+1+k] = currPath[j- k]; currPath[j-k] = tmp; } changed = true; --i; } cost += dur[currPath[j]][currPath[j+1]]; revCost += dur[currPath[j+1]][currPath[j]]; } } } if currDist bestTrip { bestPath = currPath; bestTrip = currDist; } for var i = 0; i = numSteps; ++i { nextPher[currPath[i]][currPath[i+1]] += bestTrip - asymptoteFactor bestTrip numAnts currDist - asymptoteFactor bestTrip; } } for var i = 0; i numActive; ++i { Universitas Sumatera Utara 137 138 139 140 141 142 143 144 for var j = 0; j numActive; ++j { pher[i][j] = pher[i][j] 1.0 - rho + rho nextPher[i][j]; nextPher[i][j] = 0.0; } } } } Keterangan: 1. Baris 1 sd 144: Blok Algoritma Ant Colony Optimization dalam penentuan route terpendek . Sebagai contoh, beberapa koordinat ponsel yang digunakan dapat dilihat pada Gambar 4.1, kemudian dihitung menggunakan algortima ACO untuk menhgasilkan rute perjalanan tercepat, output yang dihasilkan dapat dilihat seperti pada Gambar 4.2. Gambar 4.2 Posisi Koordinat Dalam Google Maps Universitas Sumatera Utara Gambar 4.3 Route Perjalanan Pada tampilan Export merupakan hasil perhitungan jarak terdekat antar kota sesuai urutan pada menu export to csv, merupakan durasi perjalanan masing-masing kota yang ditampilkan dalam matrix. Tampilan Export dapat dilihat pada Gambar 4.4. Gambar 4.4 Export

4.2. Pengujian Sistem