PENERAPAN ALGORITMA A* (STAR) UNTUK MENCARI RUTE TERCEPAT DENGAN HAMBATAN
Click here to load reader
-
Upload
teknik-informatika-politeknik-tedc-bandung -
Category
Data & Analytics
-
view
815 -
download
4
Transcript of PENERAPAN ALGORITMA A* (STAR) UNTUK MENCARI RUTE TERCEPAT DENGAN HAMBATAN
Seminar Nasional Telekomunikasi dan Informatika (SELISIK 2016) Bandung, 28 Mei 2016
219
ISSN : 2503-2844
Yenie Syukriyah, Falahah, Hermi Solihin
Seminar Nasional Telekomunikasi dan Informatika 2016
PENERAPAN ALGORITMA A* (STAR)
UNTUK MENCARI RUTE TERCEPAT DENGAN HAMBATAN
Yenie Syukriyah1) Falahah2) Hermi Solihin 3)
1,2,3) Teknik Informatika Universitas Widyatama
Jl. Cikutra no. 204 A Bandung
[email protected]), [email protected]), [email protected])
Abstrak
Algoritma A* (Astar) merupakan salah satu
algoritma yang termasuk dalam kategori metode
pencarian yang memiliki informasi (informed search
method). Algortima ini sangat baik sebagai solusi
proses pathfinding (pencari jalan). Algoritma ini
mencari jarak rute tercepat yang akan ditempuh suatu
point awal (starting point) sampai ke objek tujuan.
Teknik pencarian yang digunakan dalam simulasi ini
adalah menggunakan Algoritma A* dengan fungsi
heuristic manhattan distance. Simulasi dilakukan
dengan bahasa pemrograman Java. Tujuan utama
penelitian ini mempelajari cara kerja algoritma A*
dalam mencari jarak tercepat, yang disimulasikan
seperti kondisi ketika seorang mencari rute dalam
keadaan jalanan macet. Simulasi ini memberikan
gambaran yang lebih realistis terhadap perilaku
algoritma A dalam pencarian jarak tercepat, dan
untuk itu, akan dibangun sebuah aplikasi sebagai
pendukung proses simulasi tersebut.
Kata kunci :
Algoritma, A-star, simulasi, rute, kemacetan
Abstract
Algorithm A* (Astar) is one of the algorithms
included in the category of search methods that has
an information (informed search method). This
algorithm is very good as a pathfinding process
(search path). These algorithms look for the fastest
route distance to be taken an initial point (starting
point) to object to the destination by comparing the
values in this algorithm. The calculation of the
heuristic function in these simulations using
Manhattan distance heuristic function. To explore the
behavior of A* algorithm, we build a simulation
using Java programming language. The aim of this
research is to establish a simulation application of
A* Algorithm for finding the fastest route, and we try
to implement it into the case of barriers traffic jam.
The result shows that the calculation can prove that
the route found in this simulation is the route with the
best solution which have the smallest value.
Keywords :
Algorithm, A-star, simulation, route, traffic jam.
I. PENDAHULUAN
Algoritma pencarian jarak tercepat ataupun
jarak terpendek tetap merupakan bidang penelitian
algoritma yang menarik. Terdapat beberapa algoritma
pencarian untuk menemukan solusi pencarian jarak
tercepat, diantaranya adalah algoritma breadth first
search, depth first search, best first search , A* , dan
lain lain. Algoritma A* (Astar) adalah merupakan
salah satu algoritma yang termasuk dalam kategori
metode pencarian yang memiliki informasi (informed
search method). Algoritma ini sangat baik sebagai
solusi proses pathfinding (pencari jalan), mencari
jarak rute tercepat yang akan ditempuh suatu poin
awal (starting point) sampai ke objek tujuan sehingga
cukup popular dikalangan pemrogram
Algoritma A* menggunakan estimasi jarak
terdekat untuk mencapai tujuan (goal) dan memiliki
nilai heuristik yang digunakan sebagai dasar
pertimbangan.
Penelitian ini bertujuan untuk mempelajari cara
kerja algoritma A* dalam mencari jarak tercepat,
yang disimulasikan dengan kondisi seorang mencari
rute dalam keadaan jalanan macet. Simulasi ini
memberikan gambaran yang lebih realistis terhadap
perilaku algoritma A dalam pencarian jarak tercepat,
Seminar Nasional Telekomunikasi dan Informatika (SELISIK 2016) Bandung, 28 Mei 2016
220
ISSN : 2503-2844
Yenie Syukriyah, Falahah, Hermi Solihin
Seminar Nasional Telekomunikasi dan Informatika 2016
dan untuk itu, akan dibangun sebuah aplikasi sebagai
pendukung proses simulasi tersebut.
Penelitian ini diselesaikan dengan memperhatikan
batasan-batasan sebagai berikut :
1. Teknik pencarian yang digunakan dalam
simulasi ini adalah dengan menggunakan
Algoritma A* dengan menggunakan fungsi
heuristic manhattan distance
2. Rute jalan disimulasikan dengan bentuk mapgrid
3. Jarak tempuh jalan akan diasumsikan dalam
bentuk banyaknya grid yang dilalui jalur
4. Hambatan kemacetan dalam simulasi ini
diasumsikan dengan memberikan nilai beban di
titik yang dijadikan hambatan kemacetan.
Tampilan simulasi hanya berupa grid kotak-
kotak dengan ukuran 20x20.
II. TINJAUAN PUSTAKA
Algoritma A* (A star) dikenal sebagai salah
satu algoritma yang paling sering digunakan untuk
pencarian jalur (path finding) dan penerusan grafis
(graph traversal), yaitu proses plotting jalur yang
paling efisien antar titik, yang disebut dengan nodes.
Metode A* adalah metode yang merupakan
hasil pengembangan dari metode dasar Best First
Search . Metode ini mengevaluasi setiap titik dengan
mengkombinasikan dengan g(n), nilai untuk
mencapai titik n dari titik awal, dan h(n), nilai
perkiraan untuk mencapai tujuan dari titik n tersebut.
Algoritma ini menggunakan fungsi distance –
plus – cost (biasanya di notasikan dengan f(x))
untuk menentukan urutan kunjungan pencarian node
di dalam tree. Gabungan jarak – plus – biaya
merupakan penjumlahan dari dua fungsi, yaitu fungsi
path – cost (selalu dinotasikan dengan g(x),
dimungkinkan bernilai heuristik ataupun tidak), dan
sebuah kemungkinan penerimaan atas “perkiraan
heuristik” jarak ke titik tujuan (dinotasikan dengan
h(x)). Fungsi path- cost g(x) adalah jumlah biaya
yang harus dikeluarkan dari node awal menuju node
tujuan.
Dengan terlebih dahulu mencari rute yang
tampaknya mempunyai kemungkinan besar untuk
menuju ke arah tujuan, algoritma ini mengambil jarak
perjalanan ke arah tujuan (dimana g(x) bagian dari
heuristik adalah biaya dari awal). Beberapa
terminologi dasar yang terdapat pada algoritma ini
adalah starting point, simpul (nodes), A, open list,
closed list , harga (cost), halangan (unwalkable).
Prinsip algoritma ini adalah mencari jalur
terpendek dari sebuah simpul awal (starting point)
menuju simpul tujuan dengan memperhatikan harga
(F) terkecil. Diawali dengan menempatkan A pada
starting point, memasukkan seluruh simpul yang
bertetangga dan tidak memiliki atribut rintangan
dengan A ke dalam open list, mencari nilai H terkecil
dari simpul-simpul dalam open list tersebut,
memindahkan A ke simpul yang memiliki nilai H
terkecil. Simpul sebelum A disimpan sebagai parent
dari A dan dimasukkan ke dalam closed list. Jika
terdapat simpul lain yang bertetangga dengan A
(yang sudah berpindah) namun belum termasuk
kedalam anggota open list, maka masukkan simpul-
simpul tersebut ke dalam open list. Setelah itu,
bandingkan nilai G yang ada dengan nilai G
sebelumnya. Jika nilai G sebelumnya lebih kecil
maka A kembali ke posisi awal. Simpul yang pernah
dicoba dimasukkan ke dalam closed list. Hal tersebut
dilakukan berulang-ulang hingga terdapat solusi atau
tidak ada lagi simpul lain yang berada pada open list.
Gambar 1 menggambarkan cara kerja algoritma
A* secara konseptual.
Gambar 1. Algoritma A*
III. METODE PENELITIAN
3.1. Prinsip Kerja
Simulasi ini akan digunakan untuk menentukan
pencarian rute (path finding) yang dibentuk dengan
Seminar Nasional Telekomunikasi dan Informatika (SELISIK 2016) Bandung, 28 Mei 2016
221
ISSN : 2503-2844
Yenie Syukriyah, Falahah, Hermi Solihin
Seminar Nasional Telekomunikasi dan Informatika 2016
model mapgrid yang diasumsikan grid tersebut
sebagai sebuah jalan, dengan asumsi tersebut dapat
dilihat apakah dengan melewati kemacetan ataupun
menghindari kemacetan dengan mencari rute terbaru
merupakan hal yang tepat untuk menghemat waktu
perjalanan. Sistem Algoritma A* akan mencari solusi
yang terbaik.
Sistem simulasi yang akan dibangun berupa
sebuah tampilan mapgrid yang berbentuk maze . Di
dalamnya akan ditentukan titik awal (start point)
perjalanan, titik akhir/tujuan perjalanan setelah itu
pencarian dengan algoritma A* diproses untuk
menemukan rute. Setelah rute ditemukan akan dicoba
untuk melakukan pencarian lagi tetapi dengan
memberikan beban atau penghalang disalah satu grid
yang tadi rutenya sudah ditemukan untuk melihat
pencarian baru. Penghalang ini merupakan asumsi
dari kemacetan yang terjadi di jalan. Setelah
dilakukan pencarian maka rute terbaik akan
ditemukan.
3.2. Data-data yang dibutuhkan
Dalam pembuatan simulasi ini digunakan
algoritma A* dengan fungsi heuristik, oleh karena itu
ada beberapa data-data yang diperlukan :
1. Titik awal, ditentukan oleh pengguna dengan
memilih titik koordinat yang akan dijadikan titik
awal. Titik awal ini akan diberikan tanda berupa
warna hijau (green).
2. Grid adalah petak-petak kecil yang di representasi
dari area path finding yang berupa persegi
panjang. Grid yang ada disimulasi ini 20x20 =
400 grid.
3. Titik akhir, ditentukan oleh pengguna dengan
memilih titik koordinat yang akan dijadikan titik
akhir. Titik akhir ini akan diberikan tanda berupa
warna biru (blue).
4. Harga F, nilai yang diperoleh dari penjumlahan
nilai G (movement cost) dan nilai h (heuristic).
Dikarenakan simulasi ini berbentuk gridcell maka
nilai jarak tempuh per grid (per koordinat )
memiliki nilai 1.
5. Nilai hambatan kemacetan (penghalang),
diberikan dengan memilih titik koordinat yang
akan dijadikan titik kemacetan. Ada 2 jenis titik
hambatan kemacetan yang pertama adalah macet
parah dan yang kedua adalah sedikit macet. Untuk
macet parah diberikan tambahan nilai jarak
tempuh sebesar 10 poin dan untuk sedikit macet
dengan 5 poin. Untuk macet parah koordinat yang
sudah dipilih akan diberikan tanda berupa warna
merah (red) dan untuk sedikit macet akan
diberikan tanda berupa warna abu-abu (grey).
6. Pembatas jalan, merupakan batas jalan kiri dan
kanan yang tidak dapat dilalui. Batas jalan ini
diberi sebuah tanda berupa warna hitam (black).
3.3 Prinsip Algoritma A* Prinsip algoritma ini adalah mencari jalur
terpendek dari sebuah titik awal menuju titik akhir
dengan memperhatikan harga F terkecil. Algoritma
ini memperhitungkan nilai dari current state ke
tujuan dengan fungsi heuristik, dan juga
mempertimbangkan nilai yang telah ditempuh selama
ini dari initial state ke current state. Jadi jika ada
jalan yang telah ditempuh sudah terlalu panjang dan
ada jalan lain yang nilainya lebih kecil tetapi
memberikan posisi yang sama dilihat dari goal, jalan
yang lebih pendek yang akan dipilih.
Rumus pencarian F (n) = h(n) + g (n) dimana : g (n)
adalah movecost , dikarenakan simulasi berbentuk
grid persegi , tiap koordinat antara titik koordinat
berikutnya sama bernilai satu. Lalu h(n) dapat dicari
dengan rumus sebagai berikut :
function heuristic(node) =
dx = abs(node.x - goal.x)
dy = abs(node.y - goal.y)
return D * (dx + dy)
Rumus ini digunakan dikarenakan pengembangan
aplikasi simulasi ini menggunakan fungsi heuristic
manhattan distance.
Algoritma A* secara garis besar dapat
dijelaskan seperti berikut:
1. Masukkan node awal ke openlist
2. Loop langkah-langkah dibawah ini:
a. Cari node (n) dengan nilai f(n) yang paling
kecil dalam open list, dan node ini sekarang
menjadi current node.
b. Keluarkan current node dari openlist dan
masukkan ke open list
c. Untuk setiap tetangga dari current node
lakukan berikut
1. Jika tidak dapat dilalui atau sudah ada
dalam close list , abaikan
2. Jika belum ada di open list buat current
node parent dari node tetangga ini, simpan
nilai f,g, dan h dari node ini.
3. Jika sudah ada di openlist cek apabila node
tetangga ini lebih baik menggunakan nilai g
sebagai ukuran. Jika lebih baik ganti parent
dari node ini di opentlist menjadi current
Seminar Nasional Telekomunikasi dan Informatika (SELISIK 2016) Bandung, 28 Mei 2016
222
ISSN : 2503-2844
Yenie Syukriyah, Falahah, Hermi Solihin
Seminar Nasional Telekomunikasi dan Informatika 2016
node, lalu kalkulasikan ulang nilai g dan f
dari node ini.
d. Hentikan looping jika:
1. Node tujuan telah ditambah ke openlist
yang berarti rute ditemukan
2. Belum menemukan node akhir (tujuan)
sementara openlist kosong atau berarti tidak
ada rute.
Simpan rute, lalu secara backward urut mulai
dari node akhir (tujuan) sampai ke titik awal sambil
menyimpan node ke dalam array.
IV. IMPLEMENTASI
Pada simulasi ini, algoritma A*
diimplementasikan pada saat pengguna melakukan
pencarian rute path. Deskripsi di bawah ini
menjelaskan implementasi algoritma A* yang
diterapkan pada simulasi ini.
. Proses Algoritma A* {Start point dan finish point sudah dalam keadaan di set} Input: Set start , Set Finish Output: Path Found or No Found
Algoritma : Function heuristic (awal, akhir , D)= dx = abs (nilai x awal – nilai x akhir) dy = abs (nilai y awal - niai y akhir ) return nilai D * (dx + dy ) EndFunction Function FindPath For i to total x grid For j to total y grid minCost = Math.min (nilai gridcell [j][i], minCost) increment j increment i end for end for EndFunction Function Langkah For i temp Set now gridcell temp elementAt (i) If now sudah terisi score = ambil nilai now dari start score = score + Function heuristic (posisi sekarang (), posisi akhir , minCost) If score kurang dari min Min = score Best = now Endif Endif Increment i Endfor Now = best Edge.removeElement(now) Done.AddElement(now) Set Gridcell next [] = map.getAdjacent(now) For i to 4 If next [i] != null If next [i] == finish Ditemukan
Endif If next [i] totalblock Add next[i] to path from start If!edge.contains (next[i]) && !done.contains(next[i]) Add element next[i] ;grownt =true; Endif Endif Endif If ditemukan Call ditemukan (PATH FOUND) Endif Endif Urutkan secara backward dari finish (tujuan) ke titik semula (start) lalu beri tanda berupa warna If edgesize bernilai 0 Call tidak ditemukan (No_Found) EndFunction
Gambar 2 memperlihatkan tampilan aplikasi
simulasi pencarian rute tanpa penghalang (2a) dan
jika ada penghalang (2b)
(a) Tanpa penghalang kemacetan
(b) Dengan hambatan kemacetan parah
Gambar 2. Tampilan Pencarian Rute
V. PENGUJIAN FUNGSI PENCARIAN RUTE 5.1 Pengujian
Dalam pengujian ini akan dilakukan pegujian
fungsi pencarian dengan pembuktian dari hasil
pencarian rute. Dalam pembuktian ini dibuat sebuah
jalur lalu lintas yang berbentuk grid yang akan
dijalankan pada simulasi. Pertama kali dilakukan
adalah mengambil (load) mapgrid yang sudah di
design sebelumnya. Setelah MapGrid ditampilkan
Seminar Nasional Telekomunikasi dan Informatika (SELISIK 2016) Bandung, 28 Mei 2016
223
ISSN : 2503-2844
Yenie Syukriyah, Falahah, Hermi Solihin
Seminar Nasional Telekomunikasi dan Informatika 2016
kemudian dilakukan pengaturan titik awal (Set Start)
yang dalam pengujian ini posisi titik awal (start)
berada di point (x=1,y=9). Setelah itu tentukan titik
akhir (Set Finish) yang dalam pengujian ini posisi
titik akhir berada pada point (x=19,y=19).Kemudian
dilakukan pencarian. Setelah ditemukan pencarian
berikutnya dalam jalur pencarian tersebut diberi
hambatan kemacetan parah di titik (x=17,y=9) .
(a) Mapgrid awal pengujian
(b) Pencarian Rute tanpa hambatan kemacetan
(c) Pencarian Rute dengan Hambatan Kemacetan
Gambar 3. Mekanisme Pencarian Rute
Pada gambar 3 dapat dilihat hasil dari pencarian
rute dengan menggunakan Algoritma A*. Berikut
adalah keterangan gambar :
1. Titik berwarna Green : Titik Awal (x=1, y =9)
2. Titik berwarna Blue: Titik Akhir (x=19, y=19)
3. Titik berwarna Red: Titik Penghalang Macet Parah
(x=17, y= 9)
4. Urutan berwarna Yellow adalah urutan rute yang
ditemukan
5.2 Pembuktian
Berikutnya dilakukan pembuktian perhitungan
dari hasil yang didapat. Rute yang akan dibuktikan
adalah hasil pencarian rute dengan adanya hambatan
kemacetan yang terlihat pada Gambar 3.
Pembuktian hasil pencarian rute akan dilakukan
dengan perhitungan yang dilakukan secara manual.
Pembuktian jalur hasil pencarian rute tanpa hambatan
kemacetan (berdasarkan gambar 3.b).
Gambar 4 Kemungkinan Jalur
Pembuktian ini akan dilakukan pencarian nilai
secara manual dari setiap jalur kemungkinan. Nilai-
nilai tersebut kemudian dihitung secara manual
seperti contoh pada Tabel 1 dan Tabel 2. Hal yang
sama juga dilakukan untuk Jalur tiga.
Tabel 1. Contoh Perhitungan Pembuktian Nilai
Jalur Satu
No X1 Y1 g(n) h(n)= abs(x1-x2)
+abs(y1-y2)
Score
F(n)
1 2 9 1 27 28
2 3 9 2 26 28
3 4 9 3 25 28
…. …. …. …. …. ….
27 18 19 27 1 28
28 19 19 28 0 28
Dari tabel hasil perhitungan manual didapat
bahwa nilai f(n) terbaik terdapat pada setiap cell yang
dilalui oleh jalur 1 (yellow) yaitu bernilai 28
sedangkan jalur 2 bernilai 42 dan jalur 3 bernilai 34.
Dengan demikian jalur terbaik terdapat pada jalur 1,
karena memiliki nilai f(n) yang kecil daripada jalur-
jalur lainnya.
Masih dengan jalur yang sama (Gambar 3.b) dan
kemungkinan jalur yang sama (Gambar 3.c). Akan
dilakukan pembuktian secara manual untuk melihat
nilai dari setiap jalur, tetapi kali ini jalur yang terbaik
yang sudah dibuktikan sebelumnya diberi beban
Seminar Nasional Telekomunikasi dan Informatika (SELISIK 2016) Bandung, 28 Mei 2016
224
ISSN : 2503-2844
Yenie Syukriyah, Falahah, Hermi Solihin
Seminar Nasional Telekomunikasi dan Informatika 2016
(penghalang kemacetan) dengan level macet parah
yang dalam simulasi ini diberi nilai beban 10.
Tabel 2. Contoh Perhitungan Pembuktian Nilai
Jalur Dua
No X1 Y1 g(n) h(n)= abs(x1-x2)
+abs(y1-y2)
Score
F(n)
1 2 9 1 27 28
2 3 9 2 26 28
3 3 8 3 27 30
…. …. …. …. …. ….
40 18 18 40 2 42
41 18 19 41 1 42
42 19 19 42 0 42
Dikarenakan pembuktian ini menggunakan jalur
yang sama dengan sebelumnya, untuk pembuktian
jalur 2 dan 3 dapat di lihat di tabel 1 dan 2. Untuk
pembuktian jalur 1 akan ditampilkan di tabel 3.
Dari tabel pembuktian diatas dapat dilihat nilai
f(n) bertambah menjadi 38. Dengan demikian jalur
terbaik menjadi jalur 3 yang bernilai 34.
Tabel 3. Contoh Perhitungan Pembuktian
Nilai Jalur Satu dengan Hambatan Kemacetan
No X1 Y
1
g(n) h(n)= abs(x1-x2)
+abs(y1-y2)
Score F(n)
1 2 9 1 27 28
2 3 9 2 26 28
3 4 9 3 25 28
4 5 9 4 24 28
5 6 9 5 23 28
…. …. … …. …. ….
14 15 9 14 14 28
15 16 9 15 13 28
16 17 9 16 12 28 + 10 = 38
17 18 9 17 11 28 + 10 = 38
18 18 10 18 10 28 + 10 = 38
19 18 11 19 9 28 + 10 = 38
…. …. … …. …. ….
27 18 19 27 1 28 + 10 = 38
28 19 19 28 0 28 + 10 = 38
Dari pembuktian dan pengujian yang dilakukan
diatas dapat dilihat bahwa simulasi dapat menentukan
jalur terbaik yang akan dilalui . Dengan ini simulasi
yang menerapkan Algoritma A* dengan fungsi
heuristic manhattan distance dapat menentukan rute
(jalur) terbaik dengan membandingkan nilai f(n)
terkecil.
Apabila simulasi ini diterapkan dikeadaan nyata
lalu lintas maka bisa diasumsikan jalur – jalur
tersebut merupakan jalan yang akan kita lalui untuk
mencapai suatu tujuan.
VI. KESIMPULAN
Berdasarkan hasil simulasi algoritma A* pada
penelitian ini dapat disimpulkan hal-hal berikut :
1. Algoritma A* dapat diterapkan sebagai
algoritma untuk menentukan rute (jalur) terbaik
yang akan dilalui.
2. Simulasi ini dapat menentukan rute (jalur)
terbaik dari titik awal (start) menuju titik akhir
(finish) dengan hambatan-hambatan yang
diberikan disetiap rute. Dari hasil pengujian ,
rute yang ditemukan merupakan rute yang
terbaik dengan nilai f(n) terkecil dibandingkan
dengan rute-rute (jalur-jalur) lainnya.
3. Untuk pengembangan lebih lanjut disarankan
menggunakan algoritma lain selain algoritma
A* untuk menentukan jalur (rute) yang terbaik.
Dan juga dapat membandingkan algoritma lain
tersebut apakah lebih baik dalam penentuan
jalur tercepat
REFERENSI Brourg, David. Seeman,Glenn. (2004). AI For Game
Developers.O’Reilly Inc : United States of America.
Madhav, Sanjay. Game Programming Algorithms and
Techniques.Addison Wesley : United State.
Netbeans (2013). Documentation,Training,& Support .
<Netbeans.org>
“A* search algorithm”. Wikipedia . Web . 22 May 2014.
http://en.wikipedia.org/wiki/A*_search_algorithm
“Amit’s Thoughts on Pathfinding. Web . 31 May 2014.
http://theory.stanford.edu/~amitp/Game
Programming/AStarComparison
Eranki,Ranjiv. Pathfinding using A* (A-Star) . 2002 . Web.
31 May 2014. http://web.mit.edu/eranki/www/
tutorials/search
“Simulation”. Wikipedia . Web . 24 April 2014.
http://en.wikipedia.org/wiki/Simulation
Norvig,Peter. Russell,Stuart. Artificial Intelligence A
Modern Approach Second Edition. Prentice Hall :
United State