Seminar Nasional Telekomunikasi dan Informatika (SELISIK 2016) Bandung, 28 Mei 2016
ISSN : 2503-2844
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, 219
Yenie Syukriyah, Falahah, Hermi Solihin Seminar Nasional Telekomunikasi dan Informatika 2016
Seminar Nasional Telekomunikasi dan Informatika (SELISIK 2016) Bandung, 28 Mei 2016
ISSN : 2503-2844
dan untuk itu, akan dibangun sebuah aplikasi sebagai pendukung proses simulasi tersebut.
adalah starting point, simpul (nodes), A, open list, closed list , harga (cost), halangan (unwalkable).
Penelitian ini diselesaikan dengan memperhatikan batasan-batasan sebagai berikut :
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 simpulsimpul 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.
1.
2. 3. 4.
Teknik pencarian yang digunakan dalam simulasi ini adalah dengan menggunakan Algoritma A* dengan menggunakan fungsi heuristic manhattan distance Rute jalan disimulasikan dengan bentuk mapgrid Jarak tempuh jalan akan diasumsikan dalam bentuk banyaknya grid yang dilalui jalur Hambatan kemacetan dalam simulasi ini diasumsikan dengan memberikan nilai beban di titik yang dijadikan hambatan kemacetan. Tampilan simulasi hanya berupa grid kotakkotak 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.
Gambar 1 menggambarkan cara kerja algoritma A* secara konseptual.
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
Gambar 1. Algoritma A*
III. METODE PENELITIAN 3.1. Prinsip Kerja Simulasi ini akan digunakan untuk menentukan pencarian rute (path finding) yang dibentuk dengan 220
Yenie Syukriyah, Falahah, Hermi Solihin Seminar Nasional Telekomunikasi dan Informatika 2016
Seminar Nasional Telekomunikasi dan Informatika (SELISIK 2016) Bandung, 28 Mei 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
ISSN : 2503-2844
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
221 Yenie Syukriyah, Falahah, Hermi Solihin Seminar Nasional Telekomunikasi dan Informatika 2016
Seminar Nasional Telekomunikasi dan Informatika (SELISIK 2016) Bandung, 28 Mei 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
ISSN : 2503-2844
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
222 Yenie Syukriyah, Falahah, Hermi Solihin Seminar Nasional Telekomunikasi dan Informatika 2016
Seminar Nasional Telekomunikasi dan Informatika (SELISIK 2016)
ISSN : 2503-2844
Bandung, 28 Mei 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) .
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).
(a) Mapgrid awal pengujian
Gambar 4 Kemungkinan Jalur Pembuktian ini akan dilakukan pencarian nilai secara manual dari setiap jalur kemungkinan. Nilainilai tersebut kemudian dihitung secara manual seperti contoh pada Tabel 1 dan Tabel 2. Hal yang sama juga dilakukan untuk Jalur tiga. (b) Pencarian Rute tanpa hambatan kemacetan
Tabel 1. Contoh Perhitungan Pembuktian Nilai Jalur Satu No
X1
Y1
g(n) h(n)= abs(x1-x2) +abs(y1-y2)
1 2 3 …. 27 28
2 3 4 …. 18 19
9 9 9 …. 19 19
1 2 3 …. 27 28
27 26 25 …. 1 0
Score F(n) 28 28 28 …. 28 28
(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
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 jalurjalur 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 223
Yenie Syukriyah, Falahah, Hermi Solihin Seminar Nasional Telekomunikasi dan Informatika 2016
Seminar Nasional Telekomunikasi dan Informatika (SELISIK 2016) Bandung, 28 Mei 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 3 …. 40 41 42
2 3 3 …. 18 18 19
9 9 8 …. 18 19 19
1 2 3 …. 40 41 42
27 26 27 …. 2 1 0
28 28 30 …. 42 42 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
g(n)
h(n)= abs(x1-x2) +abs(y1-y2)
Score F(n)
1 1 2 3 4 5 ….
2 3 4 5 6 ….
9 9 9 9 9 …
1 2 3 4 5 ….
27 26 25 24 23 ….
28 28 28 28 28 ….
14 15 16
15 16 17
9 9 9
14 15 16
14 13 12
28 28 28 + 10 = 38
17 18 19 ….
18 18 18 ….
9 10 11 …
17 18 19 ….
11 10 9 ….
28 + 10 = 38 28 + 10 = 38 28 + 10 = 38 ….
27 28
18 19
19 19
27 28
1 0
28 + 10 = 38 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
ISSN : 2503-2844
(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 .
“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
224 Yenie Syukriyah, Falahah, Hermi Solihin Seminar Nasional Telekomunikasi dan Informatika 2016