Perbandingan Penerapan Algoritma A*, IDA*, Jump Point Search, Dan PEA* Pada Permainan Pacman
Total Page:16
File Type:pdf, Size:1020Kb
Jurnal Teknik Informatika dan Sistem Informasi e-ISSN : 2443-2229 Volume 2 Nomor 3 Desember 2016 Perbandingan Penerapan Algoritma A*, IDA*, Jump Point Search, dan PEA* Pada Permainan Pacman Rosa Delima#1, Gregorius Titis Indrajaya#2, Abednego Kristiawan Takaredase#3, Ignatia Dhian E.K.R. #4, Antonius Rachmat C. #5 [email protected] [email protected] [email protected] [email protected] [email protected] Fakultas Teknologi Informasi ,Universitas Kristen Duta Wacana Jalan Dr. Wahidin Sudirohusodo No. 5 - 25, Yogyakarta Abstract – Pathfinding is a way to find the shortest route Artikel ini secara khusus akan membahas mengenai between two points. There are several A* variant algorithms perbandingan performa algoritma A* beserta 3 varian dari such as Iterative Deepening A* (IDA*) algorithm, Partial A* yaitu Iterative Deepening A*, Jump Point Search, dan Expansion A* (PEA*), and Jump Point Search (JPS). In this Partial Expansion A*. research, the performance of A*, IDA* algorithm, JPS, and PEA* algorithm are being evaluated. The algorithms are implemented in pacman game and this research get the data A. Identifikasi Masalah by measuring number of open list node, visited nodes, and the length of path. Based on result analysis of the Kemampuan agen cerdas untuk mencari jalur yang algorithms in the Pacman game, it concluded that the optimal, agar dapat mencapai target akan membuat algorithms have the same path solution, but JPS permainan dalam sebuah game menjadi lebih menantang, algorithm has less visited nodes than A*, IDA*, and PEA*. sehingga membuat seorang pemain mendapatkan tekanan dan sekaligus kepuasan. A* merupakan salah satu Keywords– A*, IDA*, Jump Point Search, PEA*, Pacman algoritma yang mampu memberikan hasil terbaik dan Game. optimal untuk kasus pencarian jalur. Namun, algoritma A* memiliki kelemahan dalam kasus percabangan yang besar. Oleh karena itu, dilakukanlah penelitian mengenai I. PENDAHULUAN varian A* yang dapat mengatasi masalah pemakaian Permainan/game menurut Frasca [1] adalah sebuah memori yang besar pada A*. Beberapa diantaranya sistem dengan aktifitas yang memiliki tujuan dan struktur adalah algoritma IDA*, Jump Point Search, dan PEA*. tertentu. Sebuah game menjadi menarik jika terdapat Pada artikel ini dibahas mengenai kinerja keempat interaksi antara player dengan player, atau player dengan algoritma tersebut pada permainan Pacman. Perbandingan non-player character (NPC). NPC merupakan semua kinerja diukur melalui jumlah open node, visited node, karakter yang tidak dikendalikan oleh manusia dan dan panjang path yang dipilih oleh agen cerdas. seringkali dibangun menggunakan kecerdasan buatan untuk meningkatkan realistic gaming experience [2]. B. Tinjauan Pustaka Pacman merupakan permainan klasik yang hingga saat Algoritma A* adalah salah satu algorima pencarian ini masih populer. Permainan ini berjenis arcade dan heuristik dalam ilmu kecerdasan buatan yang biasa dikembangkan oleh Namco. Elemen penting dari digunakan untuk melakukan pencarian terhadap suatu permainan ini dan yang membuat menarik adalah target atau tempat. Algoritma ini dikenal dengan kehadiran musuh atau ghost yang selalu mengganggu. algoritma yang complete dan optimal. Complete berarti Pacman bergerak dengan menelusuri labirin / maze untuk algoritma akan selalu dapat menemukan solusi dan mengumpulkan dot yang tersebar. Dalam perjalanannya, optimal berarti kemampuan algoritma untuk menemukan Pacman akan diganggu oleh musuh yang berupa ghost. solusi terbaik jika terdapat lebih dari satu solusi [4]. Ghost dalam permainan inilah yang akan menjadi sebuah Meskipun demikian algorima A* memiliki kekurangan agen cerdas atau NPC [3]. dalam hal penggunaan memori. Algoritma ini akan 428 e-ISSN : 2443-2229 Jurnal Teknik Informatika dan Sistem Informasi Volume 2 Nomor 3 Desember2016 memasukan semua child node pada node yang sedang Kemudian, neighbor node akan ditelusuri hingga solusi ditelusuri [4]. Hal ini menyebabkan A* membutuhkan ditemukan yang memiliki nilai dibawah batas dan jika memori yang besar untuk mendukung proses pencarian. tidak ditemukan solusi nilai batas akan ditambahkan 1, Oleh karena itu algoritma ini terus dikembangkan agar demikian seterusnya hingga ditemukan solusi. performa dari algoritma dapat lebih baik terutama dalam Pseudocode untuk algoritma IDA* dapat dilihat pada hal efisiensi penggunaan memori [5]. Algoritma gambar 1. pengembangan A* yang akan dibahas dalam artikel ini Penelitian mengenai performa IDA* pernah dilakukan meliputi algoritma Iterative Deepening A* (IDA*), Jump oleh Kaur [10]. Dalam Penelitiannya Kaur melakukan Point Search (JPS), dan Partial Expansion A* (PEA*). perbandingan algoritma IDA* dan algoritma Algoritma IDA* merupakan varian A* yang Thistlewaite's untuk memecahkan masalah pada dikembangkan dari algoritma Iterative Deepening Search permainan rubik. Melalui penelitian ini didapatkan hasil (IDS). Iterasi pendalaman level (Iterative Deepening) bahwa IDA* memiliki waktu lebih cepat untuk pada IDA* memungkinkan untuk mengurangi memecahkan permasalahan berdasarkan waktu setiap penggunaan memori yang berlebihan, karena IDS gerakan. Untuk memecahkan permasalahan rubik menggabungkan kelebihan Breath-first search (complete algoritma Thistlewaite‘s memEutuhNan lebih dari 52 dan optimal) dan kelebihan Depth-first search langkah dengan waktu 6.04 detik per langkah dan akan (membutuhkan sedikit memori) yang memiliki memecahkan permasalahan dengan total keseluruhan perhitungan heuristik A* sebagai batas kedalaman [2]. waktu 315 detik. Sementara IDA* hanya membutuhkan Sementara itu Jump Point Search merupakan varian A* kurang dari 20 langkah untuk memecahkan permasalahan yang dapat mempercepat A* menemukan solusi pada rubik. Namun jika kedalaman tree melebihi 9 level [10]. sebuah grid map yang seragam. Jump Point Search tidak memiliki preprocessing dan tidak memerlukan overhead memori. Jump Point Search dapat melompat ke node yang sangat jauh dari node yang terlihat pada grid. Jump Point Search dapat melakuNan ”Mump‘ atau melompat pada successor node yang dianggap penting, maka visited node yang didapatkan Jump Point Search tidak akan sebanyak IDA*, karena selain tidak dimulai dari awal, node successor yang didapatkan memungkinkan untuk melewati ”node‘ yang dianggap tidak penting [6]. Berbeda dengan IDA* dan JPS, Algoritma PEA* merupakan varian A* yang mampu untuk mengatasi kasus penggunaan memori yang besar dengan menggunakan konsep Collapsing Frontier Nodes (CFN) [7]. Algoritma ini menambahkan sedikit kemampuan pada A* yang tidak mampu mengatasi kasus percabangan yang besar dengan cara penghematan memori. Setiap child node yang dihasilkan (generated node) tidak dengan mentah dimasukkan ke OPEN list, akan tetapi hanya child node yang memenuhi syarat f<=f(n). Sehingga diyakini PEA* mampu untuk menghemat memori jika dibandingkan dengan A* [8]. Gambar 1.Pseudocode Algoritma IDA* [9]. 1) Iterative Deepening A*: Menurut Anguelov [9], IDA* merupakan algoritma yang lebih memiliki kesamaan dengan algoritma DFS dengan mengubah nilai batas 2) Jump Point Search : Jump Point Search (JPS) adalah kedalaman menjadi nilai f(n). Sebuah node akan dipotong algoritma pencarian jalan ke suatu target dimana jika total f(n) melebihi cost batas maksimum. algoritma bergerak dengan sangat cepat di uniform-cost IDA* tidak menggunakan dynamic programming, grid maps dengan melompati banyak tempat yang dirasa sehingga pada iterasi IDA* akan terdapat kemungkinan perlu untuk dilewati. Algoritma ini adalah hasil untuk melakukan eksplorasi berulang-ulang pada sebuah pengembangan dari algoritma A* dengan menambahkan node [9], sehingga proses yang dibutuhan akan lebih lama fungsi jump points ketika melakukan path finding [6]. dan jumlah visited node akan lebih banyak. IDA* akan JPS dapat digambarkan dalam dua aturan pemangkasan menginisiasikan batas cost sama dengan f(start_node), sederhana yang diterapkan secara rekursif selama dalam kasus ini, batas maksimum akan setara dengan pencarian, aturan khusus untuk langkah lurus dan yang h(start_node) karena g(start_node)=0 atau f(0)=h(0) [9]. lain untuk langkah-langkah diagonal. Intuisi kunci dalam 429 Jurnal Teknik Informatika dan Sistem Informasi e-ISSN : 2443-2229 Volume 2 Nomor 3 Desember 2016 kedua kasus ini adalah untuk memangkas set tetangga berlebih tersebut bisa disebut sebagai surplus. Ketika dekat di sekitar node dengan mencoba untuk sebuah node diekspansi dan generate atau menghasilkan membuktikan bahwa ada jalur optimal (simetris atau surplus nodes lalu memasukkannya ke dalam OPEN, akan sebaliknya) dari parent node saat ini untuk setiap tetangga berdampak pada waktu dan penggunaan memori saat dan jalan yang tidak melibatkan node saat ini [6]. pencarian [7]. Pseudocode untuk algoritma Jump Point Search dapat Berbeda dengan A*, PEA* tidak memasukkan semua dilihat pada gambar 2. child node ke dalam OPEN. Hanya Child dengan nilai f(n) Penelitian performa Jump Point Search (JPS) pernah yang sama atau lebih baik yang dimasukkan ke dalam dilakukan dengan membandingkan kecepatan penelusuran OPEN, selanjutnya node n akan dimasukkan kembali ke node JPS dengan Hierarchical Pathfinding A* (HPA*) OPEN dengan nilai f terkecil. Gambar 3 merupakan dan algoritma Swamps. Penelitian ini dilakukan pada 4 ilustrasi penentuan node yang masuk ke dalam OPEN [8]. Baldur‘s Gate jenis permainan yaitu Adaptive Depth, , Dragon Age, dan Rooms [11]. Berdasarkan penelitian yang dilakukan diketahui bahwa JPS menunjukan performa yang paling baik dengan rata-rata