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