Implementasi Algoritma Iterative Deepening A* (IDA*) Dengan Stochastic Node Caching (SNC) Untuk Pathfinding Musuh Pada Game Labirin

IMPLEMENTASI ALGORITMA

  (IDA*) DENGAN STOCHASTIC NODE CACHING (SNC) UNTUK PATHFINDING MUSUH PADA GAME LABIRIN SKRIPSI

  Diajukan untuk Menempuh Ujian Akhir Sarjana

SRI ANGGRAINI SURIANTO 10110250 PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS TEKNIK DAN ILMU KOMPUTER UNIVERSITAS KOMPUTER INDONESIA 2014

  

DAFTAR ISI

  ABSTRAK .................................................................................................... i

  

ABSTRACT .................................................................................................... ii

  KATA PENGANTAR ................................................................................... iii DAFTAR ISI ................................................................................................. v DAFTAR GAMBAR ..................................................................................... vii DAFTAR TABEL .......................................................................................... x DAFTAR SIMBOL ....................................................................................... xi DAFTAR LAMPIRAN .................................................................................. xiv BAB 1 PENDAHULUAN .............................................................................

  1 1.1 Latar Belakang Masalah .....................................................................

  1 1.2 Identifikasi Masalah ...........................................................................

  2 1.3 Maksud dan Tujuan ............................................................................

  2 1.4 Batasan Masalah .................................................................................

  3 1.5 Metodologi Penelitian .........................................................................

  3 1.6 Sistematika Penulisan .........................................................................

  5 BAB 2 TINJAUAN PUSTAKA .....................................................................

  7 2.1 Kecerdasan Buatan .............................................................................

  7 2.2 Pencarian Jalur / Rute .........................................................................

  9

  2.3 Game Labirin ..................................................................................... 11

  2.4 Metode-metode Pencarian .................................................................. 12

  2.4.1 Pencarian Buta (Blind Search) ............................................................ 13

  2.4.2 Pencarian Terbimbing (Heuristic Search) ........................................... 13

  2.5 Algoritma Iterative Deepening A* (IDA*) .......................................... 14

  2.6 Algoritma IDA* dengan Stochastic Node Caching (SNC) .................. 28

  2.7 OOP (Object Oriented Programming) ................................................ 40

  2.8 UML (Unified Modeling Language) ................................................... 41

  2.8.1 Use Case Diagram ............................................................................. 42

  2.8.2 Activity Diagram ................................................................................ 42

  2.8.3

  2.8.4 Class Diagram ................................................................................... 43

  2.8.5 Statechart Diagram ............................................................................ 43

  2.8.6 Collaboration Diagram ...................................................................... 44

  2.8.7 Component Diagram .......................................................................... 44

  2.8.8 Deployment Diagram ......................................................................... 44

  2.9 Java .................................................................................................... 45

  BAB 3 ANALISIS DAN KEBUTUHAN ALGORITMA ............................... 47

  3.1 Analisis Masalah ................................................................................ 47

  3.2 Analisis Game Labirin ........................................................................ 48

  3.3 Analisis Masukan ............................................................................... 48

  3.3.1 Analisis Masukan Algoritma IDA* ..................................................... 48

  3.3.2 Analisis Masukan Algoritma IDA* SNC ............................................ 50

  3.4 Analisis Algoritma .............................................................................. 51

  3.4.1 Analisis Algoritma IDA* .................................................................... 51

  3.4.2 Analisis Algoritma IDA* SNC ........................................................... 73

  3.5 Analisis Kebutuhan Implementasi Algoritma ...................................... 97

  3.5.1 Analisis Perangkat Keras .................................................................... 98

  3.5.2 Analisis Perangkat Lunak ................................................................... 98

  3.6 Analisis Kebutuhan Fungsional .......................................................... 98

  BAB 4 IMPLEMENTASI DAN PENGUJIAN .............................................. 99

  4.1 Implementasi Antarmuka ..................................................................... 99

  4.2 Pengujian ............................................................................................ 101

  4.2.1 Pengujian Parameter IDA* SNC ......................................................... 101

  4.2.2 Pengujian Parameter Aplikasi ............................................................. 108

  BAB 5 KESIMPULAN DAN SARAN .......................................................... 113

  5.1 Kesimpulan ........................................................................................ 113

  5.2 Saran .................................................................................................. 113 DAFTAR PUSTAKA .................................................................................... 114

DAFTAR PUSTAKA

  [1] Chandra, T.N. 2010. Aplikasi Algoritma Greedy untuk Pergerakan

  Musuh pada Permainan Pac-Man. Jurnal Teknik Informatika, Institut Teknologi Bandung.

  [2] Masoud Nosrati, Ronak Karimi, Hojat. 2012. Investigation of the * (star)

  Search Algorithm:Characteristics, Methods and Approaches. Iran: Journal of World Applied Programming, Islamic Azad University.

  [3] Millington, Ian. 2006. Artificial Intelligence for Games. USA: Elsevier. [4] Miura, Teruhisa, Ishida, Toru. 1998. Stochastic Node Caching for

  Memory-bounded Search. Kyoto: Journal of Social Informatics, Kyoto University.

  [5] Pressman, Roger. 2005. Software Engineering A Practitioner's Approach Edisi ke 6. New York, McGraw-Hill. [6] Kusumadewi, Sri. 2002. Artificial Intelligence (Teknik dan Aplikasinya).

  Yogyakarta, Graha Ilmu. [7] Suyanto. 2007. Artificial Intelligence. Bandung, Informatika. [8] Russell, Stuart J. dan Peter Norvig. 2003. Artificial Intelligence: A Modern Approach (Second Edition). Prentice Hall, New Jersey.

  [9] Richard E. Korf. 1985. Depth-First Iterative-Deepening: An Optimal Admissible Tree Search. CiteSeer. [10] I. Sommerville. 2003. Software Engineering Rekayasa Perangkat Lunak.

  Jakarta, Airlangga. [11] Raharjo, Budi. 2010. Mudah Belajar Java Revisi kedua. Bandung, Informatika.

  [12] Setiawan, Sandi. 1993. Artificial Intelligence. Yogyakarta, Andi Offset. [13]

  B. Hariyanto. 2008. Struktur Data: Pondasi Membuat Program yang Elegan dan Efisien. Bandung, Informatika.

  nd

  [14]

  F. S. J. Hill. 2001. Computer graphics using OpenGL (2 ed.). New Jersey, Prentice Hall.

  

KATA PENGANTAR

Assalamualaikum Warahmatullahi Wabarakatuh.

  Alhamdulillahi Robbil ’Alamin, puji dan syukur penulis panjatkan kehadirat Allah Subhanahu wa Ta'ala atas berkat rahmat serta kasih-Nya sehingga penulis dapat menyelesaikan skripsi ini dengan judul “Implementasi Algoritma

  

Iterative Deepening A* (IDA*) dengan Stochastic Node Caching (SNC) untuk

Pathfinding Musuh pada Game Labirin. Penulisan skripsi ini bertujuan untuk

  memenuhi sebagian syarat memperoleh gelar sarjana pendidikan bagi mahasiswa program S1 pada program studi Teknik Informatika Universitas Komputer Indonesia, Bandung. Penulis menyadari bahwa skripsi ini masih jauh dari kesempurnaan, oleh sebab itu penulis mengharapkan kritik dan saran yang bersifat membangun dari semua pihak demi kesempurnaan skripsi ini.

  Selesainya skripsi ini tidak terlepas dari bantuan berbagai pihak, sehingga pada kesempatan ini penulis dengan segala kerendahan hati dan penuh rasa hormat mengucapkan terima kasih yang sebesar-besarnya kepada semua pihak yang telah memberikan bantuan moril maupun materil secara langsung maupun tidak langsung kepada penulis dalam penyusunan skripsi ini hingga selesai, terutama kepada yang saya hormati :

  1. Yang tercinta Ibunda (Isgiarti) dan Ayahanda (Almarhum Surianto) yang telah memberikan dorongan, mencurahkan segenap perhatian, kasih sayang dan do’a serta pengorbanannya untuk keberhasilan penulis dan bantuannya baik dari segi moril maupun materil.

  2. Bapak Ir. Eddy Suryanto Soegoto, M.Sc. selaku Rektor UNIKOM.

  3. Bapak Irawan Afrianto, S.T., M.T., selaku Ketua Program Studi Teknik Informatika, Fakultas Teknik dan Ilmu Komputer, UNIKOM.

  4. Bapak Iskandar Ikbal, S.T., M.Kom., selaku dosen wali IF6/2010 yang telah memberikan saran, arahan dan bimbingan kepada penulis.

  5. Ibu Ednawati Rainarli, S.Si., M.Si. selaku dosen pembimbing dan penguji dua yang telah memberikan saran, arahan, dorongan dan bimbingan kepada penulis dalam menyelesaikan skripsi ini.

  6. Ibu Nelly Indriani Widiastuti, S.Si.,M.T. selaku dosen penguji satu yang telah memberikan saran, arahan dan bimbingan kepada penulis dalam menyelesaikan skripsi ini.

  7. Bapak Irfan Maliki, S.T., M.T. selaku dosen penguji tiga. Terima kasih karena telah banyak meluangkan waktu untuk memberikan bimbingan dan saran kepada penulis dalam menyelesaikan skripsi ini.

  8. Seluruh Dosen pengajar dan staf UNIKOM yang telah membekali ilmu.

  9. Mas, mbak, abang dan adek (Annas Arief Surianto, Fidya Andarini, Rachman Aprianto Surianto, dan Arsista Kanczha Surianto) yang telah memberikan doa dan dorongan kepada penulis.

  10. Teman–teman seperjuangan di Program Studi Teknik Informatika.

  11. Saudara–saudara penulis di kelas IF-6 khususnya Dodi Permana, Chrismikha Hardyanto, Pipit Pitria, Selamet Riyadi, Mexan Juadha, Rizki Adam Kurniawan, Gina Khayatun Nufus, Sandi Cahya yang telah banyak membantu dalam proses penyusunan skripsi ini dan memberikan motivasi serta dorongan kepada penulis.

  12. Terima kasih juga kepada semua pihak yang telah membantu dalam penyelesaian skripsi ini yang tidak dapat disebutkan satu per satu.

  Akhir kata penulis mengucapkan terimakasih kepada semua pihak yang telah membantu dan penulis berharap semoga skripsi ini dapat bermanfaat bagi kita semua dan menjadi bahan masukan bagi dunia pendidikan.

  Bandung, 7 Juli 2014 Penulis

BAB 1 PENDAHULUAN

1.1 Latar Belakang Masalah

  Game labirin (maze) adalah sebuah permainan jaringan jalan yang rumit

  dan berliku-liku bertujuan untuk menentukan jalur yang tepat untuk mencapai tujuan yang telah di tetapkan. Salah satu game labirin yang sering dikenal yaitu

  

game pac-man, pada game ini pemain harus menggerakkan karakter pac-man

  untuk menghabiskan titik-titik yang tersedia sampai tidak tersisa satu pun. Untuk meningkatkan kesulitan game pac-man, beberapa karakter musuh diberi suatu kecerdasan khusus agar dapat mengejar karakter pemain. Dalam pemrosesan gerakan karakter ini, dibutuhkan algoritma pathfinding. Algoritma pathfinding yang diterapkan pada karakter musuh game pac-man adalah algoritma greedy [1]. Namun karena dalam pencariannya algoritma greedy hanya memperhitungkan biaya perkiraan (heuristik) saja, hal ini membuat algoritma greedy tidak selalu menghasilkan solusi yang optimal. Artinya bahwa jalur pencarian yang dipilih oleh algoritma greedy tidak selalu menemukan jalur terpendek.

  Pada game labirin dengan banyak pilihan jalan yang bercabang dan dibatasi oleh tembok-tembok, dibutuhkan algoritma pencarian jalur untuk karakter musuh-musuh yang optimal (jalur terpendek) agar dapat mengejar karakter pemain. Salah satu algoritma pathfinding untuk menyesuaikan permasalahan tersebut yaitu algoritma Iterative Deepening A* (IDA*). Penerapan algoritma

  IDA* dalam game labirin dibuat untuk mendapatkan langkah terpendek dari posisi musuh ke posisi pemain. Algoritma IDA* merupakan algoritma yang menggabungkan algoritma A* dan Iterative Deepening Search (IDS). Prinsip kerja yang digunakan IDA* seperti IDS yang menggunakan kedalaman secara iteratif. Selain itu IDA* mengambil kelebihan A* yaitu biaya yang diperhitungkan didapat dari biaya sebenarnya ditambah dengan biaya perkiraan untuk pemeriksaan simpul-simpul sehingga membuat algoritma IDA* complete dan optimal [4].

  Di sisi lain, karena pencarian pada algoritma IDA* dilakukan secara iteratif, maka diperlukan waktu eksekusi yang lama sehingga berkemungkinan untuk selalu kembali mengunjungi simpul yang sama. Hal ini menyebabkan proses ekspansi simpul yang banyak dan berujung pada waktu eksekusi yang lama. Untuk mengatasi masalah ini, akan menggunakan sebuah algoritma IDA* dengan fitur tambahan yaitu Stochastic Node Caching (SNC) [4]. Algoritma IDA* SNC mencoba mengatasi kelemahan yang dimiliki algoritma IDA* dengan parameter tambahan berupa inputan awal yaitu M dan p. IDA* SNC mengalokasikan ruang memori yang dapat menyimpan M simpul dan nilai heuristiknya sehingga dapat mengurangi kemungkinan terjadinya kunjungan kembali ke simpul yang sama. Sedangkan p adalah probabilitas yang menentukan bagaimana sebuah simpul dalam cache setiap kali diekspansi.

  Pada tugas akhir ini, akan mengimplementasi dan menganalisa bagaimana kinerja algoritma IDA* dan IDA* SNC dalam kasus pathfinding pada game labirin ditinjau dari jumlah simpul yang diekspansi. Berkurangnya ekspansi simpul diharapkan akan mengurangi waktu pemrosesan dari algoritma IDA*. Berdasarkan latar belakang yang telah dijelaskan di atas maka tugas akhir ini diberi judul yakni ”IMPLEMENTASI ALGORITMA ITERATIVE DEEPENING

  

A* (IDA*) DENGAN STOCHASTIC NODE CACHING (SNC) UNTUK

PATHFINDING MUSUH PADA GAME LABIRIN

  ”.

  1.2 Identifikasi Masalah

  Berdasarkan uraian latar belakang masalah yang dikemukakan, maka dapat di identifikasikan masalah yang ada adalah mengoptimalkan jalur terpendek game labirin terhadap jalur yang dipilih, waktu, dan jumlah ekspansi simpul untuk NPC (Non Playble Character) menggunakan algoritma IDA*SNC.

  1.3 Maksud dan Tujuan

  Berdasarkan permasalahan yang diteliti, maka maksud dari penulisan tugas akhir ini adalah mengimplementasikan algoritma IDA* dengan SNC untuk

  pathfinding musuh-musuh pada game labirin berbasis desktop.

  Sedangkan tujuan yang akan dicapai dalam penelitian ini adalah untuk melihat apakah algoritma IDA* dengan SNC dapat menghasilkan solusi optimal pada game labirin ditinjau dari jalur terpendek dan banyaknya ekspansi simpul agar dapat mengurangi waktu pemrosesan pencarian.

1.4 Batasan Masalah

  Terdapat beberapa batasan permasalahan yang dapat dirumuskan agar pembahasan masalah dapat lebih terarah dan terperinci, dengan maksud untuk mempermudah identifikasi dan pemahaman terhadap aplikasi. Adapun batasan masalah dalam pembangunan game ini adalah sebagai berikut :

  1. Game labirin ini berbasis desktop.

  2. Game ini memiliki 1 stage dalam ukuran 800 x 640.

  3. Kerumitan labirin yang dapat dipilih yaitu easy, medium, atau hard.

  4. Berjumlah 2 NPC yang diimplementasikan dengan algoritma IDA* dan IDA* SNC.

  5. Nilai inputan parameter IDA SNC yaitu untuk M mulai dari 0 sampai 60, dan p mulai dari 0 sampai 1.

  6. Game yang dibangun berupa prototype.

  7. Software yang digunakan untuk membangun game labirin ini adalah Eclipse IDE.

  8. Menggunakan bahasa pemrograman Java.

1.5 Metodologi Penelitian

  Metode penelitian yang digunakan dalam penulisan tugas akhir ini adalah metode penelitian eksperimen yaitu suatu jenis dari metodologi kuantitatif dengan melakukan percobaan untuk melihat suatu hasil dan meneliti ada tidaknya hubungan sebab-akibat. Adapun tahap yang akan dilalui adalah metode pengumpulan data, analisis kebutuhan algoritma, dan metode pembangunan perangkat lunak.

  1. Metode Pengumpulan data Metode pengumpulan data yang digunakan dalam penelitian adalah sebagai berikut : a.

  Studi Pustaka Studi Pustaka yang dilakukan ialah dengan mempelajari berbagai literatur, seperti buku-buku, artikel-artikel, e-book, website, jurnal, dan sumber-sumber yang berkaitan dengan game yang akan dibangun, meliputi kecerdasan buatan, desain, tools dan juga pemodelan dengan UML yang dapat membantu menyelesaikan pembangunan game ini.

  2. Analisis Kebutuhan Algoritma Menganalisis kebutuhan algoritma pada game labirin diantaranya yaitu analisis bagaimana cara kerja algoritma IDA* dan IDA*SNC, menganalisis bagaimana algoritma IDA* dan IDA* SNC pada game labirin diterapkan untuk pathfinding NPC (non playable character).

  3. Metode Pembangunan Perangkat Lunak Pembangunan perangkat lunak yang dilakukan merupakan kebutuhan untuk menguji kinerja dari algoritma IDA* dan algoritma IDA*SNC. Dalam pembuatan perangkat lunak ini menggunakan Model Agile sebagai tahap pengembangan perangkat lunaknya.

Gambar 1.1 Model Agile [5] a.

  Planning

  Tahap perencanaan yang dilakukan adalah dengan pemodelan menggunakan metode pemrograman berorientasi objek dengan Tool Unified Modeling Language (UML), dan menerapkan algoritma IDA* pada game labirin untuk pathfinding musuh.

  b.

  Design Tahap design merupakan tahap perancangan dari pembangunan game labirin yang akan dibuat untuk identifikasi dan mengatur class-class di konsep

  object oriented.

  c.

  Coding Setelah tahap perancangan sistem selanjutnya dilakukan konversi rancangan sistem ke dalam kode-kode bahasa pemrograman yang digunakan yaitu Java. Setelah lolos tahap testing, maka dilakukan refactoring, yaitu meninjau kembali semua kode program, dilihat keefektifannya, jika ada kode program yang tidak efektif akan dilakukan penulisan kode program ulang tanpa mengubah kerja dari modul.

  d.

  Testing Pengujian aplikasi dilakukan untuk memastikan bahwa aplikasi yang dibuat telah sesuai dengan desainnya dan semua fungsi dapat dipergunakan dengan baik tanpa ada kesalahan.

1.6 Sistematika Penulisan

  Sistematika penulisan laporan penelitian ini disusun untuk memberikan gambaran umum tentang penelitian dalam Tugas Akhir yang dijalankan. Sistematika penulisan Tugas Akhir ini adalah sebagai berikut :

  BAB 1 PENDAHULUAN Bab ini membahas tentang latar belakang masalah, identifikasi masalah, maksud dan tujuan, batasan masalah, metodologi penelitian, dan sistematika penulisan. BAB 2 TINJAUAN PUSTAKA Bab ini membahas berbagai konsep dasar teori yang berkaitan dengan topik penelitian yang dilakukan dan hal-hal yang berguna dalam proses analisis permasalahan yaitu tentang pembuatan aplikasi game. Kecerdasan buatan yang dalam hal ini algoritma IDA* dan IDA* SNC. Konsep lainnya yaitu OOP (object

  oriented programming), UML (unified modeling language), Java.

  BAB 3 ANALISIS DAN KEBUTUHAN ALGORITMA Bab ini membahas mengenai analisis dan kebutuhan algoritma pada game labirin, analisis bagaimana penerapan algoritma IDA* dengan SNC pada game labirin yang akan diterapkan untuk pathfinding NPC (non playable character). Dalam tugas akhir ini analisis dan kebutuhan perangkat lunak dibangun dengan konsep object oriented.

  BAB 4 IMPLEMENTASI DAN PENGUJIAN Bab ini menjelaskan tentang implementasi dari analisis yang telah dilakukan, serta pengujian dari implementasi algoritma IDA* dengan SNC yang telah dibuat. Melakukan pengujian terhadap aplikasi dengan algoritma yang telah diimplementasikan menggunakan pengujian skenario. BAB 5 KESIMPULAN DAN SARAN Bab ini berisi kesimpulan dari pengujian dan implementasi algoritma IDA* dan IDA* SNC berdasarkan tujuan yang ingin dicapai sebelumnya dan memberikan masukan atau saran dari masalah-masalah yang ditemukan selama proses penelitian terhadap algoritma IDA*.

BAB 2 TINJAUAN PUSTAKA

2.1 Kecerdasan Buatan

  Kecerdasan buatan atau Artificial Intelligence (AI) merupakan ilmu dan rekayasa yang membuat mesin mempunyai intelligensi tertentu khususnya program komputer yang „cerdas‟. Artificial Intelligence (AI) didefinisikan sebagai kecerdasan yang dimiliki oleh suatu entitas buatan, yang dapat berpikir seperti manusia, bertindak seperti manusia, berpikir rasional, atau bertindak rasional. Kecerdasan diciptakan dan dimasukkan ke dalam suatu mesin (komputer) agar dapat melakukan pekerjaan seperti yang dapat dilakukan manusia. Dengan semakin berkembangnya hardware dan software, saat ini berbagai produk AI telah banyak digunakan dan diaplikasikan kedalam kehidupan sehari-hari.

  Implementasi dari artificial intelligence saat ini umum ditemui dalam bidang-bidang seperti berikut [6] : a.

  Computer Vision

  Computer Vision merupakan implementasi artificial intelligence yang

  memungkinkan sebuah sistem komputer mengenali gambar sebagai inputnya. Contohnya adalah mengenali dan membaca tulisan yang ada didalam gambar.

  b.

  Fuzzy Logic

  Fuzzy Logic merupakan implementasi artificial intelligence yang banyak

  terdapat pada alat-alat elektronik dan robotika. Dimana alat-alat elektronik atau robotika tersebut mampu berpikir dan bertingkah laku sebagaimana layaknya manusia.

  c.

  Game

  Game merupakan implementasi artificial intelligence yang berguna untuk

  meniru cara berpikir seorang manusia dalam bermain game. Contohnya adalah program Perfect Chessmate yang mampu berpikir setara dengan seorang grandmaster catur. d.

  General Problem Solving

  General Problem Solving merupakan implementasi artificial intelligence

  yang berhubungan dengan pemecahan suatu masalah terhadap suatu situasi yang akan diselesaikan oleh komputer. Biasanya permasalahan tersebut akan diselesaikan secara trial and error sampai sebuah solusi dari sebuah masalah didapatkan. Contohnya adalah program Eureka yang dapat memecahkan model linier programming.

  e.

  Speech Recognition

  Speech Recognition merupakan implementasi artificial intelligence yang

  berguna untuk mengenali suara manusia dengan cara dicocokkan dengan acuan yang telah diprogramkan sebelumnya. Contohnya adalah suara dari user dapat diterjemahkan menjadi sebuah perintah bagi komputer.

  f.

  Expert System

  Expert System merupakan implementasi artificial intelligence yang

  berguna untuk meniru cara berfikir dan penalaran seorang ahli dalam mengambil keputusan berdasarkan situasi yang ada. Dengan expert system seorang user dapat melakukan konsultasi kepada komputer, seolah-olah user tersebut berkonsultasi langsung kepada seorang ahli. Contohnya adalah program aplikasi yang mampu meniru seorang ahli medis dalam mendeteksi demam berdarah berdasarkan keluhan-keluhan pasiennya.

  Teknik pemecahan masalah yang ada didalam AI dibagi menjadi empat, yaitu [7] : a.

  Searching

  Searching merupakan teknik menyelesaikan masalah dengan cara

  merepresentasikan masalah ke dalam state dan ruang masalah serta menggunakan strategi pencarian untuk menemukan solusi.

  b.

  Reasoning

  Reasoning merupakan teknik menyelesaikan masalah dengan cara

  merepresentasikan masalah ke dalam basis pengetahuan (knowledge base) menggunakan logic atau bahasa formal. c.

  Planning

  Planning merupakan teknik menyelesaikan masalah dengan cara memecah

  masalah kedalam sub-sub masalah dan menyelesaikan sub-sub masalah satu demi satu.

  d.

  Learning

  Learning merupakan teknik menyelesaikan masalah dengan

  mengotomatisasi mesin untuk menemukan aturan yang diharapkan bisa berlaku umum untuk data-data yang belum pernah diketahui.

  Pemilihan teknik yang digunakan dalam penyelesaian masalah tergantung dari karakteristik permasalahan yang akan diselesaikan. Misalnya implementasi kecerdasan buatan pada game yang sering diterapkan yaitu pada pathfinding. Penggunaan pathfinding paling sering pada game adalah untuk mempengaruhi pergerakan dan pengambilan keputusan yang diterapkan pada non-player

  

character. Sedangkan teknik untuk pemecahan masalah pathfinding dalam game

menggunakan teknik pencarian atau searching.

2.2 Pencarian Jalur / Rute

  Pencarian jalur / rute (pathfinding) adalah salah satu bidang penerapan yang sering ditangani oleh kecerdasan buatan khususnya dengan menggunakan algoritma pencarian [3]. Penerapan yang dapat dilakukan dengan pathfinding antara lain adalah pencarian rute dalam suatu game dan pencarian jalan/rute pada suatu peta. Algoritma pencarian yang dipakai harus dapat mengenali jalan dan elemen peta yang tidak dapat dilewati. Sebuah algoritma pathfinding yang baik dapat bermanfaat untuk mendeteksi halangan/rintangan yang ada pada medan dan menemukan jalan menghindarinya, sehingga jalan yang ditempuh lebih pendek daripada yang seharusnya bila tidak menggunakan algoritma pathfinding. Lihat ilustrasi pada Gambar 2.1.

Gambar 2.1 Penentuan rute tanpa pathfinding

  Keterangan : = rintangan / penghalang = start = goal = jalan yang dilalui

  Pada Gambar 2.1, dari start menuju goal, tanpa algoritma pathfinding, unit hanya akan memeriksa lingkungan sekitarnya saja (dilambangkan dengan daerah di dalam bulat biru). Unit tersebut akan maju terus ke atas untuk mencapai tujuan, baru setelah mendekati adanya halangan, lalu berjalan memutar untuk menghindarinya.

Gambar 2.2 Penentuan rute dengan pathfinding

  Keterangan : = rintangan / penghalang = start = goal = jalan yang dilalui = daerah penghalang

  Sebaliknya, penentuan rule dengan algoritma pathfinding pada Gambar 2.2 akan memprediksi ke depan mencari jalan yang lebih pendek menghindari halangan (dilambangkan garis biru) untuk mencapai tujuan, tanpa pernah mengirim unit ke dalam

  „perangkap‟ halangan. Oleh karena itu peran algoritma

  

pathfinding sangat berguna untuk memecahkan berbagai permasalahan dalam

penentuan rute.

2.3 Game Labirin

  Menurut Heni dan Beckerman (2006,p1), game adalah bagian pokok dalam warisan manusia, dimainkan di berbagai kebudayaan dan dinikmati oleh semua golongan umur. Game seperti catur telah ada dari zaman dahulu. Konsep

  

game komputer sekarang mengikuti ide dari board game, cerita meniru dari film

  dan mensimulasikan kehidupan nyata. Menurut Andang Ismail terdapat dua pengertian game (permainan). Pertama, game (permainan) adalah sebuah aktifitas bermain yang murni mencari kesenangan tanpa mencari menang atau kalah. Kedua, permainan diartikan sebagai aktifitas bermain yang dilakukan dalam

  • – rangka mencari kesenangan dan kepuasan, namun ditandai pencarian menang kalah.

  Game Labirin (Maze Game) adalah permainan video deskripsi pertama

  kali digunakan oleh jurnalis selama tahun 1980-an untuk menggambarkan setiap permainan seluruh lapangan adalah labirin dengan berbagai dinding rintangan di dalamnya. Selama proses penentuan jalur tersebut, jika menemuai jalan buntu maka akan dilakukan proses backtrack sampai kembali menemukan jalur yang tepat untuk mencapai tujuan. Dalam game labirin dibutuhkan tindakan yang cepat pemain untuk menghindar dari musuh dan menavigasi labirin pada waktu yang terbatas [12]. Saat ini game labirin yang berkembang dapat dimainkan dalam bentuk 2D dan 3D. Contoh permainan genre maze adalah labirin Rogue dimainkan di terminal teks 28x40 pada sistem Unix Versi 7 tahun 1980, setiap tingkat terdiri dari 9 kamar, dengan tema penjara. Selain labirin Rogue, permainan paling terkenal dari genre ini adalah Pac-Man dan Snake.

Gambar 2.3 Game Pac-man [1]

  Game pac-man adalah salah satu contoh game yang memiliki gendre

maze. Game pac-man memiliki game play yang sederhana yaitu pemain harus

  menggerakkan karakter pacman untuk menghabiskan titik-titik yang ada dalam labirin sampai tak tersisa satu pun dan menghindari beberapa musuh yang mengejar karakter pacman.

2.4 Metode-metode Pencarian

  Salah satu teknik untuk menyelesaikan masalah penggunaan pathfinding dalam game yaitu menggunakan teknik pencarian atau searching. Metode pencarian secara umum dibagi menjadi 2 kelompok, yaitu blind atau uninformed

  

search (pencarian buta atau tidak dibekali informasi) dan heuristic atau informed

search (pencarian dengan panduan atau berbekal informasi). Setiap metode

  memiliki karakteristik yang saling membedakan satu sama lain dengan kelebihan dan kekurangan masing-masing, yang bisa diukur performansinya dengan empat kriteria berikut [7] : a.

  Completeness, yaitu apakah metode pencarian tersebut menjamin ditemukannya solusi jika solusinya memang ada.

  b.

  Time complexity, yaitu berapa lama waktu yang diperlukan selama proses pencarian.

  c.

  Space complexity, yaitu berapa banyak memori yang diperlukan selama proses pencarian.

  d.

  Optimality, yaitu apakah metode pencarian tersebut menjamin ditemukannya solusi yang terbaik jika ada beberapa solusi yang berbeda.

  Metode pencarian sangat penting untuk menyelesaikan permasalahan karena setiap state atau keadaan menggambarkan langkah-langkah untuk menyelesaikan permasalahan. Dalam sebuah game, metode pencarian akan menentukan apa yang harus dilakuan dimana setiap state menggambarkan kemungkinan posisi pada saat tertentu.

  2.4.1 Pencarian Buta (Blind Search)

  Dinamakan percarian buta (Blind Search) / Uninformed Search, karena pada metode ini tidak dibekali informasi awal untuk proses pencarian, dan proses pencarian dilakukan berdasarkan aturan tertentu. Informasi yang ada hanyalah definisi goal state itu sendiri sehingga algoritma dapat mengenali goal state. Apabila tidak ada informasi maka pencarian buta dalam kerjanya akan memeriksa

  

node-node secara tidak terarah dan kurang efisien untuk kebanyakan kasus karena

banyaknya node yang dikembangkan.

  Metode yang tergolong blind search diantaranya : Breadth First Search (BFS), Uniform Cost-Search (UCS), Depth First Search (DFS), Depth Limited

  

Search (DLS), Iterative Deepening Search (IDS), dan Bidirectional Search

  (BDS). Metode blind search biasanya digunakan pada pencarian yang memiliki ruang masalah yang kecil. Jika ruang masalahnya sudah besar sebaiknya digunakan metode informed search agar pada saat melakukan pencarian dapat lebih terarah dengan informasi-informasi yang diberikan [7].

  2.4.2 Pencarian Terbimbing (Heuristic Search)

  Metode heuristik merupakan metode pencarian yang mempunya informasi tentang biaya untuk mencapai goal state dari current state. Informasi ini adalah suatu fungsi yang disebut dengan fungsi heuristik. Metode heuristik menggunakan pendekatan nilai perkiraan untuk membantu algoritma dalam melakukan pencarian dan tidak harus valid setiap waktu. Metode heuristik dewasa ini banyak berkembang. Telah banyak algoritma yang menerapkan metode heuristik dalam melakukan proses pencarian, metode yang umum dikenal adalah A*. Beberapa contoh algoritma pencarian lain yang menggunakan metode heuristic search adalah Best First Search, Generate and Test, Hill Climbing, dan Greedy Search [7].

2.5 Algoritma Iterative Deepening A* (IDA*)

  Algoritma IDA* (IDA star/ IDA bintang) merupakan varian dari algoritma A* [2]. Prinsip kerja algoritma IDA* menggunakan kelebihan dari algoritma A* dan algoritma Iterative Deepening Search (IDS). Kelebihan algoritma A* yaitu biaya yang diperhitungkan didapat dari biaya sebenarnya ditambah dengan biaya perkiraan. Sedangkan kelebihan algoritma IDS menggabungkan kelebihan

  

Breadth First Search (complete dan optimal) dan kelebihan Depth First Search

  (membutuhkan sedikit memori) [9]. IDS merupakan algoritma Blind Search yang melakukan pencarian secara iteratif menggunakan penelusuran Depth Limited

  

Search (DLS) dimulai dengan batasan limit 0 [8]. Jika belum ditemukan solusi,

  maka dilakukan iterasi ke-2 dengan batasan limit 1. Demikian seterusnya sampai ditemukan solusi yang paling dangkal. Berikut adalah ilustrasi penelusuran IDS.

  1. Misalkan simpul awal adalah A dan simpul tujuan adalah F, maka penelusuran awal pencarian IDS dimulai dari simpul A pada limit 0. Pada Gambar 2.4, lingkaran dengan tanda panah merah menunjukkan simpul yang sedang diperiksa. Sedangkan lingkaran berwarna hijau menunjukkan bahwa pencarian simpul A sudah selesai dilakukan.

  Limit 0

A A

  1

  2 Gambar 2.4 Penelusuran Iterative Deepening Search (IDS) Limit 0 2.

  Namun karena simpul A bukan simpul tujuan, maka ulangi pencarian dari status awal. Sekarang pencarian dimulai dari limit ke-1 dengan mengekspansi suksesor dari simpul A kemudian lakukan pencarian dari simpul anak kiri ke simpul anak kanan. Lihat Gambar 2.5.

  Limit 1 A A A A B C B B B C C C

  1

  2

   3

  4 Gambar 2.5 Penelusuran Iterative Deepening Search (IDS) Limit 1 3.

  Karena pada limit 1 belum juga menemukan simpul tujuan, maka pencarian diulang kembali dari status awal secara iteratif dan sekarang dimulai dari limit ke-2 dengan simpul A diekspansi, simpul B juga diekspansi dan lakukan penelusuran ke suksesor D dan E, sampai akhirnya simpul C juga diekspansi. Setelah simpul C diekspansi, akhirnya simpul tujuan yaitu simpul F ditemukan. Oleh karena itu pencarian berhenti setelah simpul tujuan ditemukan. Lihat Gambar 2.6.

  Limit 2 A A A B B B C C C D E F G D E F G D E F G

   1

  2

  3 A A A B C B C C B

D D E F G D E F G

E F G

   4

   5

  6 Gambar 2.6 Penelusuran Iterative Deepening Search (IDS) Limit 2 Berdasarkan langkah-langkah pencarian IDS, batasan limit (kedalaman) pada setiap iterasi pencarian IDS inilah yang diterapkan pada algoritma IDA* dengan batasan yang berupa f-limit. Jika jalur solusi belum ditemukan, setiap iterasi mengembalikan nilai f-limit baru yang akan digunakan sebagai batasan pencarian untuk iterasi berikutnya. Nilai f-limit itu sendiri diperoleh dari gabungan biaya sebenarnya dan biaya perkiraan, yang secara matematika dinyatakan sebagai :

  f(n i ) = g(n) + c(n,n i ) + h(n i )

  … (2.1) Dengan :

  n = simpul saat ini n i = suksesor dari simpul n

g(n) = biaya (cost) dari n a (simpul awal) ke simpul n sepanjang jalur pencarian

c(n,n ) = biaya dari simpul n ke simpul n i i h(n i ) = perkiraan biaya minimum dari simpul n i ke simpul tujuan

f(n i ) = total biaya dari n a (simpul awal) ke n t (simpul tujuan) melalui simpul n

  Algoritma IDA* adalah algoritma pencarian yang menggunakan fungsi heuristik, yaitu fungsi yang menghitung biaya perkiraan dari simpul tertentu menuju simpul tujuan. IDA* bersifat complete (pasti menemukan jalur dari simpul asal ke simpul tujuan) dan optimal (jalur yang ditemukan adalah jalur terbaik dengan biaya minimun) asalkan fungsi heuristiknya admissible [7]. Salah satu fungsi heuristik admissible yang sering dikenal yaitu Manhattan Distance. Perhitungan nilai heuristik untuk simpul ke-n menggunakan Manhattan Distance adalah sebagai berikut :

  h(n i ) = (abs|currentX

  • – targetX| + abs|currentY – targetY|) … (2.2)

   Dengan :

  h(n i ) = perkiraan biaya minimum dari simpul n ke simpul tujuan

   currentX = posisi X simpul awal currentY = posisi Y simpul awal targetX = posisi X simpul tujuan targetY = posisi Y simpul tujuan

  Adapun langkah-langkah manual pencarian IDA* adalah sebagai berikut : 1. Tentukan simpul awal (n a ) dan simpul tujuan (n t ).

  ≤ f-limit ? i. Iya, lakukan langkah 5 dari simpul saat ini. ii.

  d

  Sedangkan untuk kompleksitas ruang dan waktu algoritma IDA* sama dengan kompleksitas ruang dan waktu pada algoritma IDS yaitu kompleksitas ruang sebesar O(db) dan kompleksitas waktu sebesar O(b

  8. Ulangi pencarian dari status awal (restart) mulai dari langkah 5-8 dengan menggunakan nilai batasan f-limit baru. Lakukan sampai simpul tujuan ditemukan.

  7. Inisialisasi kembali nilai next-f menjadi ∞.

  6. Setelah perulangan selesai, set nilai next-f sebagai nilai f-limit baru.

  Tidak, nilai next-f tetap.

  Iya, set nilai f(n i ) sebagai next-f. ii.

  Tidak, lakukan langkah 5d. 5d. Apakah f(n i ) < next-f ? i.

  Tidak, lakukan langkah 5c. 5c. Apakah f(n i )

  2. Hitung nilai f(n

  Iya, maka pencarian berhenti. ii.

  ) ≤ f-limit ? i.

  i

  ) adalah simpul tujuan dan f(n

  i

  5. Ekspansi simpul n dengan lakukan perulangan berikut ini untuk setiap suksesor n i dari simpul n : 5a. Hitung nilai f(n i ) 5b. Apakah f(n

  4. Inisialisasi next-f = ∞.

  3. Jadikan nilai f(n a ) sebagai f-limit.

  a ).

  ), dimana b adalah faktor percabangan dan d adalah kedalaman pencarian [8]. Ini artinya karena dilakukan secara iteratif, algoritma IDA* membangkitkan simpul-simpul yang sama secara berulang-ulang, sehingga penghematan memori harus dibayar dengan kompleksitas waktu tinggi. Untuk memperkuat pemahaman algoritma IDA*, perhatikan Gambar 2.7.

Gambar 2.7 adalah contoh kasus pencarian rute terpendek dari kota S (initial

  

state) ke kota G (goal state). Terdapat 10 kota yang dinyatakan oleh simpul-

  simpul dalam suatu graph dua arah. Setiap angka pada busur menyatakan jarak sebenarnya antara satu kota dengan kota lainnya. Nilai h(n i ) adalah fungsi heuristik yaitu jarak garis lurus dari simpul n ke kota G dalam satuan kilometer. Pada tahap awal dari setiap langkah, simpul S akan dibangkitkan, kemudian dibangkitkan suksesor-suksesornya satu per satu sampai f-limit tertentu. Dan pada akhirnya, semua simpul dihapus dari memori.

  

Jarak Galis Lurus Kota n ke Kota G

n S A B C G H J K L M

h(n)

  80 74 85 80 40 100 30 20 70

Gambar 2.7 Masalah Pencarian Rute Terpendek

  Penyelesaikan masalah rute terpendek menggunakan algoritma IDA* adalah sebagai berikut.

1. Tentukan simpul awal dan simpul tujuan.

  Simpul awal (n a ) = S Simpul tujuan (n t ) = G 2. ) simpul awal.

  a

  Hitung f(n

  f(S) = g(S) + c(S,S) + h(S) = 0 + 0 + 80

  = 80

  3. a ) sebagai f-limit Jadikan nilai f(n

  f-limit = 80 4.

  Inisialisasi next-f = ∞.

  5.

  i dari simpul n (kiri ke kanan).

  Lakukan perulangan untuk setiap suksesor n Suksesor adalah simpul anak yang akan dikunjungi berikutnya. Simpul S mempunyai 3 simpul suksesor, maka lakukan perulangan sebanyak 3 kali.

  Lihat Gambar 2.8. suksesor 1 dari simpul S

  a. = A

  i

  n b. ) dari simpul suksesor.

  i

  Hitung f(n

  f(A) = g(S) + c(S,A) + h(A) = 0 + 10 + 74 = 84

  c.

  Karena f(A) > f-limit dan f(A) < next-f, maka f(A) dijadikan sebagai next-f.

  f(A) <

  ∞, maka next-f = f(A) = 84 suksesor 2 dari simpul S a. i = B n b. i ) dari simpul suksesor.

  Hitung f(n

  f(B) = g(S) + c(S,B) + h(B) = 0 + 35 + 85 = 120

  c.