Chapter III
Chapter III
Persoalan penentuan jarak terdekat merupakan salah satu permasalahan optimasi. Graf
yang digunakan adalah suatu graf berbobot jarak antar user yang merupakan tempattempat yang akan dilintasi. Untuk meminimumkan waktu atau biaya dalam melintasi
tempat-tempat, diperlukan informasi lintasan yang terpendek yang harus dilalui.
Permasalahan pencarian lintasan yang terpendek antar lokasi dapat diselesaikan
dengan algoritma ACO yang bekerja sebagai penentuan jalur terpendek antar titik,
untuk selanjutnya dapat diterapkan pada pencarian jalur terpendek pada berbagai
lokasi yang ingin diketahui. Contoh kasus yang akan diambil adalah pencarian jalur
terpendek antara titik A dan titik D.
22
Pada Gambar 3.1 diketahui koordinat pengguna yang digunakan sebagai banyak
kota yang dikunjungi kemudian sistem ini akan mencari jarak terdekat menggunakan
3.1.1
Analisis Masalah
Materials
Man
Memiliki keterbatasan
dalam memproses data
Kesulitan dalam
pembuatan peta terbaru
Machine
Method
3.1.2
Analisis Kebutuhan Sistem meliputi analisis kebutuhan fungsional sistem dan analisis
kebutuhan non-fungsional sistem.
23
Kebutuhan fungsional yang harus dimiliki oleh aplikasi mobile tracking dalam
penentuan jarak terdekat yaitu :
1. Fasilitas gps sebuah ponsel untuk membaca koordinat.
2. Sistem akan melakukan perhitungan jarak terdekat pada google maps
menggunakan algoritma ant colony optimization.
3. Sistem dapat menampilkan route yang akan dilalui sebagai jarak terdekat.
Kebutuhan non-fungsional adalah kebutuhan yang harus dipenuhi agar aplikasi yang
dirancang mendapat umpan-balik yang baik dari pengguna aplikasi. Kebutuhan nonfungsional yang harus dipenuhi aplikasi yang dirancang adalah sebagai berikut:
a. Performa
Sistem harus mampu melaksanakan setiap tugas secara utuh dalam selang
waktu yang tidak terlalu lama sesuai dengan ukuran data input yang
diberikan.
b. Informasi
Sistem harus mampu menyediakan informasi tentang data-data yang akan
digunakan pada sistem.
c. Ekonomi
Sistem harus dapat bekerja dengan baik tanpa harus mengeluarkan biaya
tambahan dalam penggunaan perangkat keras maupun perangkat lunak.
d. Kontrol
Sistem yang telah dibangun harus tetap dikontrol setelah selesai dirancang
agar fungsi dan kinerja sistem tetap terjaga dan dapat memberikan hasil
yang sesuai dengan keinginan pengguna.
e. Efisiensi
Sistem harus dirancang sesederhana mungkin agar memudahkan pengguna
dalam menggunakan atau menjalankan aplikasi tersebut.
f. Pelayanan
24
3.1.3
Pemodelan
Data User
Login
Kordinat Ponsel
User
Long-Lat
Admin
Profil User
Hasil Perhitungan
Peta Graph
Durasi Dalam
Matriks
Hitung
Perjalanan
Eksport data
<< include >>
25
26
Activity diagram
27
Sequence diagram untuk sistem yang dirancang dapat dilihat seperti pada Gambar 3.6.
28
3.2.1
Flowchart Sistem
29
30
3.2.2
Pseudocode
ALGORITMA Ant Colony Optimization
DEKLARASI
alfa,beta,asF:double;
i,j,m,Q:integer;
DESKRIPSI
Set parameter(alfa,beta,asF,m,Q)
while stopping criterion not satisfied do
position each ant in a starting node
repeat
for each ant do
choose next node by applying the state
transition rule
apply local pheromone update
end for
until every ant has built a solution
update best solution
apply global pheromone update
end while
Output (Jarak terpendek)
31
3.2.3
Perancangan Database
Tabel yang penulis gunakan dalam pembuatan aplikasi mobile tracking yaitu
tb_admin, tb_client dan tb_track. Rincian masing-masing table diuraikan pada
table dibawah ini.
1. Tabel Admin
Tabel admin merupakan table yang digunakan untuk menyimpan account
admin yaitu username dan password sebagai autentikasi untuk masuk ke
menu admin.
Type
id_admin
int(10)
Nama
varchar(200)
Username
varchar(200)
Password
varchar(200)
2. Tabel Client
Tabel Client digunakan untuk menyimpan data user dan melacak
koordinatnya. Dimana setiap kali user melakukan login maka koordinat
pada database selalu diperbaharui
Type
id_client
int(10)
Nama
varchar(200)
username
varchar(200)
password
varchar(200)
32
Field
Type
jenis_kelamin
enum('Pria', 'Wanita')
no_hp
varchar(15)
Alamat
varchar(200)
Lat
double
Long
double
Gambar
varchar(120)
id_session
varchar(100)
Aktif
enum('Y', 'N')
3. Tabel Track
Tabel track digunakan untuk menyimpan semua data perjalanan masingmasing user.
Type
id_track
int(10)
id_client
int(10)
Lat
double
Long
double
Time
datetime
session_login
varchar(160)
3.2.4
Perancangan Tampilan
Halaman login merupakan sebagai authentikasi data untuk mengakses halaman utama
aplikasi. Halaman ini digunakan sebagai pembatasan hak akses terhadap fitur-fitur
yang ada di aplikasi. Agar dapat masuk kedalam aplikasi, maka pengguna harus
33
memiliki username dan password yang sudah terdaftar sebelumnya. Kemudian setelah
pengguna dapat melakukan proses login maka sistem akan mendapatkan koordinat
ponsel kemudian disimpan kedalam database. Tampilan dapat dilihat pada gambar 3.8
Mobile Tracking(1)
Username(2)
Text Box(3)
Password(4)
Text Box(5)
Login(6)
daftar(7)
Gambar 3.8 Halaman login
Keterangan:
1. Label yang berisi logo aplikasi
2. Label Username.
3. Label File Tujuan.
4. Text box untuk menampilkan input username.
5. Text box untuk menampilkan input password.
6. Tombol untuk memproses input login.
7. Tombol untuk menampilkan dialog pendaftaran.
Halaman User adalah halaman yang digunakan sebagai antar-muka user setelah
berhasil melakukan proses login. Halaman ini juga akan menampilkan posisinya
berada berdasarkan koordinat yang diterima. Rancangan halaman user dapat dilihat
seperti pada Gambar 3.7
34
Map(2)
Lat : (3)
Long :
Edit profile(4)
LogOut(5)
Halaman admin adalah halaman yang digunakan sebagai antar-muka admin setelah
berhasil melakukan proses login. Pada halaman ini digunakan untuk melakukan
pelacakan posisi user dan perhitungan jarak terdekatnya. Rancangan halaman admin
dapat dilihat seperti pada Gambar 3.10
35
Tujuan(1)
Text box(2)
add(3)
Pilih jalur(4)
Walking (Jalan kaki) (5)
Bicycling (Naik sepeda)
Avoid highways (Hindari jalan raya)
Avoid toll roads (Hindari jalan tol)
Map(16)
Eksport(6)
Edit Route(7)
Mobile Tracking(8)
Tracking Mobile(9)
Hitung Perjalanan TSP
Hitung Perjalanan A - Z
Data Client(10)
Ulangi lagi(11)
Refresh Halaman(12)
Pengujian javascript(13)
About
(14)
Logout(15)
36
Tujuan(1)
Data User[16]
(2)
Text box
(3)
add
Pilih jalur(4)
Walking (Jalan kaki) (5)
Bicycling (Naik sepeda)
Avoid highways (Hindari jalan raya)
Avoid toll roads (Hindari jalan tol)
Eksport(6)
Edit Route(7)
Mobile Tracking(8)
Tracking Mobile(9)
Hitung Perjalanan TSP
Hitung Perjalanan A - Z
Data Client(10)
Ulangi lagi(11)
Refresh Halaman(12)
Pengujian javascript(13)
About(14)
Logout(15)
37
Judul Skripsi
Tentang Penulis
Fakultas
BAB 4
4.1.1
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
1
2
3
4
NAMA
Donny Sanjaya
Ridho Satrya Akbar
Rajab Sihotang
Chandra Kurniawan
Lat
3,5855251
3,5678042
3,5731014
3,5673288
Long
98,6312905
98,6422931
98,6535551
98,6607754
Alamat
Jl. Merpati
Jl. Setia Budi
Jl. Mesjid
Jl. Jamin Ginting
39
Mengkonversi bujur dan lintang dua waypoint dari representasi desimal ke radian
dibagi dengan 180 / , atau 57,29578.
Lintang radian
= 0,062579218
Bujur radian
= 1,721440765
Lintang radian
= 0,06226993
Bujur radian
= 1,721632796
(sin(
. sin(
+ cos(
. cos(
. cos(
D = Acos(sin(0,062579218) . sin(0,06226993) +
cos(0,062579218) .cos(0,06226993) .
cos(1,721632796-1,721440765)) . 6371
Maka jarak = 2,318 km
40
Jalan Mesjid :
Lintang radian
= 0,06226993
Bujur radian
= 1,721632796
Lintang radian
= 0,062362384
Bujur radian
= 1,721829355
(sin(
. sin(
+ cos(
. cos(
. cos(
D = Acos(sin(0,06226993) . sin(0,062362384)+
cos(0,06226993) .cos(0,062362384) .
cos(1,721829355-1,721632796)) . 6371
Maka jarak = 1,382 km
Lintang radian
= 0,062362383938
Bujur radian
= 1,721829355293
= 0,062261633061
= 1,721955373301
Lintang radian
= 0,062579218408
Bujur radian
= 1,721440764716
= 0,062261633061
= 1,721955373301
5. Jarak antara Jalan Setia Budi (2) dan Jalan Jamin Ginting (4)
Jalan Setia Budi :
Lintang radian
= 0,062269930356
Bujur radian
= 1,721632796312
41
= 0,062261633061
= 1,721955373301
Jalan Mesjid :
Lintang radian
= 0,062579218408
Bujur radian
= 1,721440764716
Lintang radian
= 0,062362383938
Bujur radian
= 1,721829355293
2,318 km
1,381 km
2,052 km
2,830 km
3,847 km
4
1,027 km
Dari graf diatas, jarak antar kota dapat ditampilkan dimasukan kedalam sebuah tabel.
Kemudian akan dicari route terpendeknya.
2,318
2,830
3,847
2,318
1,381
2,052
2,830
1,381
1,027
3,847
2,052
1,027
42
0,431406
0,353357
0,259943
0,431406
0,724113
0,487329
0,353357
0,724113
0,97371
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-
0,01
0,01
0,01
0,01
0,01
0,01
0,01
0,01
0,01
0,01
0,01
0,01
Nilai dari parameter visibilitas () dan intensitas feromon () ini nantinya akan
digunakan
dalam
persamaan
probabilitas
dan
merupakan
parameter
yang
43
Siklus ke-1
Semut ke 1:
- Daftar semut 1 ke tujuan
- Probabilitas dari kota 1 ke setiap kota berikutnya dapat dihitung dengan persamaan
( ,
( ,
$%&' ((
. ( , !
( , # . ( , #
0
++ .,
,-./ . 0
,.
=0,088
( ,
$%&' ((
. ( , !
( , # . ( , #
0
44
= 0,474707
*++ .,
(3,2 )=
,.- . 0
= 1,1 0=0,1810
++ .,
,/1 . 0
= -,
/-
=0,1218
Semut ke 2:
- Daftar semut 1 ke tujuan
- Probabilitas dari kota 1 ke setiap kota berikutnya dapat dihitung dengan persamaan
( ,
( ,
$%&' ((
. ( , !
( , # . ( , #
0
45
++ .,
,. - . 0
= 2,
=0,1078
( ,
$%&' ((
. ( , !
( , # . ( , #
0
46
( t,v )= *
(2,3 )=
++ .,
, .- . 0
= 0,11 0=0,21966
++ .,
,/ 3 . 0
= 0,
/-
=0,2434
Semut ke 3:
- Daftar semut 1 ke tujuan
- Probabilitas dari kota 1 ke setiap kota berikutnya dapat dihitung dengan persamaan
( ,
( ,
$%&' ((
. ( , !
( , # . ( , #
0
47
( t,v )= *
(1,3 )=
++ .,
,-./ . 0
,.
=0,088
( ,
$%&' ((
. ( , !
( , # . ( , #
0
++ .,
,.- . 0
= 1,1 0=0,1810
++ .,
48
,/1 . 0
(2,4 )=
= -,
/-
=0,1218
Route
Panjang
Semut 1
1324
6,263 Km
Semut 2
1234
4,726 Km
Semut 3
1324
6,263 Km
#=@ =@ A<:;
Rute terbaik adalah 1 2 3 4 dengan panjang 567 = 4,726 FG, sehingga diperoleh
( t,v )=
0,3 H
= 0,2116
49
Intensitas feromon pada setiap titik setelah diperbaharui (ij hasil dari siklus I) akan
ditunjukkan oleh tabel 4.6 di bawah ini.
1
0,12268
0,0837
0
2
0,12268
0,22339
0,1143
3
0,0837
0,22339
0,24436
4
0
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.
Kode Program
function AntColony(mode)
var alfa
var beta
var rho
var asymptoteFactor
var pher
var nextPher
var prob
var numAnts
var numWaves
{
=
=
=
=
=
=
=
=
=
1.0;
1.0;
0.5;
0.01;
new Array();
new Array();
new Array();
20;
20;
50
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
lastNode = 0;
startNode = 0;
numSteps = numActive - 1;
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.pow(pher[curr][next], alfa) * Math.pow(dur[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:
51
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
52
137
138
139
140
141
142
143
144
Keterangan:
1. Baris 1 s/d 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.
53
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.
54
Untuk melakukan pengujian aplikasi yang dirancang, saat aplikasi ini pertama kali
dijalankan, akan muncul sebuah form login. Form login digunakan sebagai autentikasi
untuk masuk ke menu utama user, tampilan dapat dilihat pada Gambar 4.5.
Jika belum terdaftar di aplikasi, user dapat mendaftarkan ke dengan menekan tombol
daftar, kemudian user harus mengisi data pada form pendaftaran seperti Gambar 4.6.
55
Setelah data sudah terisi dengan benar maka, data akan diverifikasi oleh admin agar
user dapat melakukan login, tampilan setelah melakukan pendaftaran dilihat pada
gambar 4.7.
Setelah mengisikan username dan password pada form login, aplikasi akan
melakukan authentikasi data kemudian akan diarahkan pada tampilan utama, dapat
dilihat pada gambar 4.8
56
Menu yang tersedia pada aplikasi user hanya edit profile dan logout. Untuk
melakukan perubahan data dapat dilihat pada gambar 4.9.
Untuk masuk ke tampilan utama admin terlebih dahulu akan melakukan pengisian
username dan password sebagai autentikasi untuk masuk ke admin, tampilan login
admin dapat dilihat pada Gambar 4.10.
57
Apabila proses login admin berhasil maka, akan diarahkan pada bagian menu utama
dmin. Tampilan dapat dilihat pada gambar 4.11.
Untuk melacak posisi user, pilih tombol lacak user maka peta akan menampilkan
posisi user berdasarkan koordinat yang sudah tersimpan didatabase sebelumnya.
Tampilan dapat dilihat pada gambar 4.12.
58
Setelah posisi user sudah dilacak, kemudian dapat dilakukan perhitungan untuk
penentuan jarak terdekat. untuk melihat hasil perhitungan perjalanan dapat dilihat
pada gambar 4.13
59
Untuk melihat route tercepat yang harus dilalui setelah perhitungan dengan
menggunakan algoritma ACO untuk yaitu 1->4->6->7->2->3->5->8. Hasil dapat
dilihat pada Gambar 4.15.
Menekan tombol durasi dalam matrix untuk memulai melihat hasil perhitungan yang
disajikan dalam sebuah matrix. tampilan dapat dilihat seperti pada Gambar 4.16.
60
Setelah titik lokasi yang ingin dituju telah diinputkan pada layar maka user dapat
memilih fitur pencarian. Fitur one way trip akan mencari rute terpendek dimana lokasi
yang pertama diinputkan adalah lokasi awal dan lokasi terakhir menjadi lokasi tujuan.
Ujicoba dilakukan dengan 3 node. Hasilnya sebagai berikut :
61
Selain itu fitur ini bisa ditempuh dengan jalan (by walking). Hasilnya sebagai berikut:
Dari Gambar diatas dapat dilihat jarak tempuh total dan rute yang ditempuh dari fitur
one way trip by walking lebih kecil dibandingkan fitur one way trip by driving hal ini
disebabkan berbedanya akses jalan yang dapat ditempuh oleh keduanya.
BAB 5
5.1
Kesimpulan
Dari penelitian tentang penentuan jalur terpendek menggunakan algoritma Ant Colony
Optimization, dapat diambil kesimpulan sebagai berikut:
2. Kecepatan menampilkan suatu rute pada map tergantung pada jumlah kota
yang diinputkan, provider dan kestabilan koneksi internet.
5.2
Saran
Adapun saran yang dapat penulis berikan untuk mengembangkan penelitian ini adalah
sebagai berikut:
63
1. Diharapkan pengembangan pada aplikasi ini supaya memiliki fitur yang lebih
banyak dan lebih menarik. Contohnya fitur untuk melacak truk pengiriman
barang, melacak sebuah lokasi toko, restoran dan tempat-tempat lainya.