Perbandingan Penerapan Algoritma A*, IDA*, Jump Point Search, Dan PEA* Pada Permainan Pacman

Total Page:16

File Type:pdf, Size:1020Kb

Perbandingan Penerapan Algoritma A*, IDA*, Jump Point Search, Dan PEA* Pada Permainan Pacman 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
Recommended publications
  • AAAI Proceedings Template
    Jump Point Search Analysis Bryan Tanner Florida State University [email protected] Abstract optimal pathfinding, no need for preprocessing, and no memory overheads. The A* algorithm was developed to be an improvement over Edsger Dijkstra’s original graph 2 Prior Work search algorithm, commonly known as Dijkstra’s algorithm. A* was able to achieve this by using Several variants of the A* algorithm have addressed similar heuristics to intelligently choose paths that lead to issues as JPS (Patel, 2013). In an attempt to reduce the the goal more quickly. This allows neighbors with memory overhead, Beam Search places a limit on the higher cost to be pruned resulting in an optimal number of nodes stored in the open set. When the limit has path being discovered. This algorithm has been been reached then the node with the worst-possible chance detrimental in game development and robotic of finding the goal is dropped. pathfinding. Now, nearly forty years after A* was Iterative Deepening attemps to move ahead using a proposed, new approaches are able to improve technique where a path is examined until its value only even more on this performance. By using path increases marginally, and it’s assumed that this is as close to expansion, jump points, and symmetry reduction the goal as the current path will get. Next, another path is the Jump Point Search algorithm may be the future examined similarly, until a complete path has been found of AI in games and robotics. Bidirectional search conducts two searches in parallel. One search starts at the beginning node and searches for the goal node while the other search starts at the goal node and 1 Introduction works towards the start node.
    [Show full text]
  • 230 Simulation and Comparison of Efficency in Pathfinding Algorithms
    230 Ciência e Natura, v. 37 Part 2 jun. 2015, p. 230−238 ISSN impressa: 0100-8307 ISSN on-line: 2179-460X Simulation and Comparison of Efficency in Pathfinding algorithms in Games Azad Noori 1, Farzad Moradi 2 1Department of Computer at Technical and Vocational University, Tehran, iran 2 Saghez Branch,Islamic Azad University, Saghez, iran Abstract There are several routes to go from point A to point B in many computer games and computer player have to choose the best route. To do this, the pathfinding algorithms is used. Currently, several algorithms have been proposed for routing in games so that the general challenges of them is high consumption of memory and a long Execution time. Due to these problems, the development and introduction of new algorithms will be continued. At the first part of this article, in addition to basic and important used algorithms, the new algorithm BIDDFS is introduced. In the second part, these algorithms in the various modes, are simulated on 2D-Grid, and compared based on their efficency (memory consumption and execution time) , Simulated algorithms include: Dijkstra, Iddfs, Biddfs, Bfs (Breadth), Greedy Best First Search, Ida*, A*, Jump point search, HPA*. Keywords: BIDDFS, JPS, A*,HPA*, IDA *. Recebido: dia/mês/ano Aceito: dia/mês/ano 231 a 2D grid map. They are compared together 1 Introduction according to performance and the number of nodes traversed from start to end [2,3]. One of the important concepts in the game is trying to use artificial intelligence o that has been in them [1]. For achieving the 2 History And Previous Work aim, several methods and techniques have been proposed .One of the most important methods is In [4], the author mentions to intelligent the use of pathfinding method, Some of them are routing that is required in route selection in discussed in part [2].
    [Show full text]
  • Graph Algorithms
    Graph Algorithms PDF generated using the open source mwlib toolkit. See http://code.pediapress.com/ for more information. PDF generated at: Wed, 29 Aug 2012 18:41:05 UTC Contents Articles Introduction 1 Graph theory 1 Glossary of graph theory 8 Undirected graphs 19 Directed graphs 26 Directed acyclic graphs 28 Computer representations of graphs 32 Adjacency list 35 Adjacency matrix 37 Implicit graph 40 Graph exploration and vertex ordering 44 Depth-first search 44 Breadth-first search 49 Lexicographic breadth-first search 52 Iterative deepening depth-first search 54 Topological sorting 57 Application: Dependency graphs 60 Connectivity of undirected graphs 62 Connected components 62 Edge connectivity 64 Vertex connectivity 65 Menger's theorems on edge and vertex connectivity 66 Ear decomposition 67 Algorithms for 2-edge-connected components 70 Algorithms for 2-vertex-connected components 72 Algorithms for 3-vertex-connected components 73 Karger's algorithm for general vertex connectivity 76 Connectivity of directed graphs 82 Strongly connected components 82 Tarjan's strongly connected components algorithm 83 Path-based strong component algorithm 86 Kosaraju's strongly connected components algorithm 87 Application: 2-satisfiability 88 Shortest paths 101 Shortest path problem 101 Dijkstra's algorithm for single-source shortest paths with positive edge lengths 106 Bellman–Ford algorithm for single-source shortest paths allowing negative edge lengths 112 Johnson's algorithm for all-pairs shortest paths in sparse graphs 115 Floyd–Warshall algorithm
    [Show full text]
  • Computer Science III
    Computer Science III Dr. Chris Bourke Department of Computer Science & Engineering University of Nebraska|Lincoln Lincoln, NE 68588, USA http://cse.unl.edu/~cbourke [email protected] 2016/08/05 21:48:04 Version 1.2.0 These are lecture notes used in CSCE 310 (Data Structures & Algorithms) at the University of Nebraska|Lincoln. This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License i Contents 1 Introduction1 2 Algorithm Analysis3 2.1 Introduction .................................. 3 2.1.1 Example: Computing a Sum..................... 6 2.1.2 Example: Computing a Mode .................... 8 2.2 Pseudocode...................................11 2.3 Analysis ....................................14 2.4 Asymptotics ..................................18 2.4.1 Big-O Analysis ............................18 2.4.2 Other Notations............................21 2.4.3 Observations..............................22 2.4.4 Limit Method.............................25 2.5 Examples....................................28 2.5.1 Linear Search .............................28 2.5.2 Set Operation: Symmetric Difference ................29 2.5.3 Euclid's GCD Algorithm.......................30 2.5.4 Selection Sort .............................32 2.6 Other Considerations .............................33 2.6.1 Importance of Input Size.......................33 2.6.2 Control Structures are Not Elementary Operations.........36 2.6.3 Average Case Analysis ........................37 2.6.4 Amortized Analysis..........................38 2.7
    [Show full text]
  • JPS Algorithm Adaptation and Optimization to Three-Dimensional Space
    JPS Algorithm Adaptation and Optimization to Three-dimensional Space TURUN YLIOPISTO Tulevaisuuden teknologioiden laitos Ohjelmistotekniikka Diplomityö Pertti Ranttila Kesäkuu 2019 The originality of this thesis has been checked in accordance with the University of Turku quality assurance system using the Turnitin OriginalityCheck service. Turun yliopiston laatujärjestelmän mukaisesti tämän julkaisun alkuperäisyys on tarkastettu Turnitin OriginalityCheck-järjestelmällä. TURUN YLIOPISTO Tulevaisuuden teknologioiden laitos RANTTILA, P: JPS-algoritmin soveltaminen ja suorituskyvyn optimointi kolmiulotteisessa avaruudessa Diplomityö, 82 s. Tämän diplomityön tarkoituksena on tutkia JPS-polunhakualgoritmin (JPS) periaatteita ja mahdollisuutta soveltaa niitä kolmiulotteiseen ympäristöön. JPS perustuu osin A*- algoritmiin mutta on suorituskyvyltään merkittävästi parempi kuin A*-algoritmi. Tällä hetkellä ei ole tiedossa olevaa julkaistua kolmiulotteista polunhakualgoritmia, joka käyttäisi samoja periaatteita kuin JPS. Työn tarkoituksena on selvittää mitä muutoksia JPS-algoritmi vaatii, jotta sitä voidaan soveltaa kolmiulotteisessa ympäristössä ja saavuttaa mahdollisesti parantunut suorituskyky A* algoritmiin verrattuna. Työssä on vertailtu myös luotujen algoritmien suorituskykyä kolmiulotteisissa ja kerroksisessa ympäristössä (rakennukset) jolla on merkitystä videopeleissä sekä todellisessa maailmassa. Työn käytännön toteutus on tehty käyttäen Unity3D-pelimoottoria sekä C#- ohjelmointikieltä. Tutkimuskäyttöä varten algoritmit toteutettiin samaan
    [Show full text]
  • Improving Spatially Distributed Multiagent Pathfinding Using Cooperative JPS Sanjay Renukamurthy University of Windsor
    University of Windsor Scholarship at UWindsor Electronic Theses and Dissertations 1-12-2016 Improving Spatially Distributed Multiagent Pathfinding Using Cooperative JPS Sanjay Renukamurthy University of Windsor Follow this and additional works at: http://scholar.uwindsor.ca/etd Recommended Citation Renukamurthy, Sanjay, "Improving Spatially Distributed Multiagent Pathfinding Using Cooperative JPS" (2016). Electronic Theses and Dissertations. Paper 5663. This online database contains the full-text of PhD dissertations and Masters’ theses of University of Windsor students from 1954 forward. These documents are made available for personal study and research purposes only, in accordance with the Canadian Copyright Act and the Creative Commons license—CC BY-NC-ND (Attribution, Non-Commercial, No Derivative Works). Under this license, works must always be attributed to the copyright holder (original author), cannot be used for any commercial purposes, and may not be altered. Any other use would require the permission of the copyright holder. Students may inquire about withdrawing their dissertation and/or thesis from this database. For additional inquiries, please contact the repository administrator via email ([email protected]) or by telephone at 519-253-3000ext. 3208. IMPROVING SPATIALLY DISTRIBUTED MULTIAGENT PATHFINDING USING COOPERATIVE JPS By SANJAY RENUKAMURTHY A Thesis Submitted to the Faculty of Graduate Studies Through the School of Computer Science In Partial Fulfillment of the Requirements for the Degree of Master of Science at the University of Windsor Windsor, Ontario, Canada 2016 © 2016 Sanjay Renukamurthy Improving Spatially Distributed Multiagent Pathfinding using Cooperative JPS by Sanjay Renukamurthy APPROVED BY: ______________________________________________ Dr. Myron Hlynka, External Reader Department of Mathematics and Statistics ______________________________________________ Dr. Imran Ahmad, Internal Reader School of Computer Science ______________________________________________ Dr.
    [Show full text]
  • Performance Evaluation of Pathfinding Algorithms
    University of Windsor Scholarship at UWindsor Electronic Theses and Dissertations Theses, Dissertations, and Major Papers 1-1-2020 Performance Evaluation of Pathfinding Algorithms Harinder Kaur Sidhu University of Windsor Follow this and additional works at: https://scholar.uwindsor.ca/etd Recommended Citation Sidhu, Harinder Kaur, "Performance Evaluation of Pathfinding Algorithms" (2020). Electronic Theses and Dissertations. 8178. https://scholar.uwindsor.ca/etd/8178 This online database contains the full-text of PhD dissertations and Masters’ theses of University of Windsor students from 1954 forward. These documents are made available for personal study and research purposes only, in accordance with the Canadian Copyright Act and the Creative Commons license—CC BY-NC-ND (Attribution, Non-Commercial, No Derivative Works). Under this license, works must always be attributed to the copyright holder (original author), cannot be used for any commercial purposes, and may not be altered. Any other use would require the permission of the copyright holder. Students may inquire about withdrawing their dissertation and/or thesis from this database. For additional inquiries, please contact the repository administrator via email ([email protected]) or by telephone at 519-253-3000ext. 3208. Performance Evaluation of Pathfinding Algorithms By Harinder Kaur Sidhu A Thesis Submitted to the Faculty of Graduate Studies through the School of Computer Science in Partial Fulfillment of the Requirements for the Degree of Master of Science at the University of Windsor Windsor, Ontario, Canada 2019 © 2019 Harinder Kaur Sidhu Performance Evaluation of Pathfinding Algorithms by Harinder Kaur Sidhu APPROVED BY: ______________________________________________ C. Semeniuk Great Lakes Institute for Environmental Research ______________________________________________ A.
    [Show full text]
  • A* Search Algorithm - Wikipedia
    A* search algorithm - Wikipedia https://en.wikipedia.org/wiki/A*_search_algorithm A* search algorithm In computer science, A* (pronounced as "A star") is a computer Class Search algorithm that is widely used in pathfinding and graph traversal, algorithm which is the process of finding a path between multiple points, called "nodes". It enjoys widespread use due to its performance and Data structure Graph accuracy. However, in practical travel-routing systems, it is generally Worst-case outperformed by algorithms which can pre-process the graph to attain performance better performance,[1] although other work has found A* to be Worst-case superior to other approaches.[2] space complexity Peter Hart, Nils Nilsson and Bertram Raphael of Stanford Research Institute (now SRI International) first published the algorithm in 1968.[3] It can be seen an extension of Edsger Dijkstra's 1959 algorithm. A* achieves better performance by using heuristics to guide its search. Contents History Description Pseudocode Example Properties Special cases Implementation details Admissibility and optimality Bounded relaxation Complexity Applications Relations to other algorithms Variants See also Notes References Further reading External links History A* was created as part of the Shakey project, which had the aim of building a mobile robot that could plan its own 1 of 12 9/5/18, 3:07 PM A* search algorithm - Wikipedia https://en.wikipedia.org/wiki/A*_search_algorithm actions. Nils Nilsson originally proposed using the Graph Traverser algorithm[4] for Shakey's path planning.[5] Graph Traverser is guided by a heuristic function the estimated distance from node to the goal node, it entirely ignores the distance from the start node to Bertram Raphael suggested using the sum, .[5] Peter Hart invented the concepts we now call admissibility and consistency of heuristic functions.
    [Show full text]