Analisis Dan Implementasi Kecerdasan Buatan Pada Permainan Checker Menggunakan Algoritma Minimax Dengan Negascout

(1)

ANALISIS DAN IMPLEMENTASI KECERDASAN BUATAN

PADA PERMAINAN CHECKER MENGGUNAKAN

ALGORITMA MINIMAX DENGAN NEGASCOUT

SKRIPSI

MUHAMMAD AIDIL AKBAR

061401020

PROGRAM STUDI S1 ILMU KOMPUTER

DEPARTEMEN ILMU KOMPUTER

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS SUMATERA UTARA

MEDAN

2011


(2)

ANALISIS DAN IMPLEMENTASI KECERDASAN BUATAN

PADA PERMAINAN CHECKER MENGGUNAKAN

ALGORITMA MINIMAX DENGAN NEGASCOUT

SKRIPSI

Diajukan untuk melengkapi tugas dan memenuhi syarat mencapai gelar Sarjana Komputer

MUHAMMAD AIDIL AKBAR

061401020

PROGRAM STUDI S1 ILMU KOMPUTER

DEPARTEMEN ILMU KOMPUTER

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS SUMATERA UTARA

MEDAN

2011


(3)

PERSETUJUAN

Judul : ANALISIS DAN IMPLEMENTASI KECERDASAN

BUATAN PADA PERMAINAN CHECKER MENGGUNAKAN ALGORITMA MINIMAX DENGAN NEGASCOUT

Kategori : SKRIPSI

Nama : MUHAMMAD AIDIL AKBAR

Nomor Induk Mahasiswa : 061401020

Program Studi : SARJANA (S1) ILMU KOMPUTER Departemen : ILMU KOMPUTER

Fakultas : MATEMATIKA DAN ILMU PENGETAHUAN

ALAM (FMIPA) UNIVERSITAS SUMATERA UTARA

Diluluskan di Medan, Komisi Pembimbing :

Pembimbing 2 Pembimbing 1

M. Andri B, ST, M.CompSc, MEM Drs. Marihat Situmorang, M.Kom NIP 197510082008011011 NIP 196312141989031001

Diketahui/Disetujui oleh

Program Studi S1 Ilmu Komputer Ketua,

Prof. Dr. Muhammad Zarlis NIP 195707011986011003


(4)

PERNYATAAN

ANALISIS DAN IMPLEMENTASI KECERDASAN BUATAN PADA PERMAINAN CHECKER MENGGUNAKAN

ALGORITMA MINIMAX DENGAN NEGASCOUT

SKRIPSI

Saya mengakui bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.

Medan,

Muhammad Aidil Akbar 061401020


(5)

PENGHARGAAN

Puji syukur penulis sampaikan kehadirat Allah SWT, yang telah memberikan rahmat dan hidayah-Nya serta segala sesuatu dalam hidup, sehingga penulis dapat menyelesaikan penyusunan skripsi ini, sebagai syarat untuk memperoleh gelar Sarjana Komputer, Program Studi S1 Ilmu Komputer Departemen Ilmu Komputer Universitas Sumatera Utara.

Ucapan terima kasih penulis sampaikan kepada Drs. Marihat Situmorang, M.Kom selaku pembimbing pertama dan M. Andri B, ST, M.CompSc, MEM selaku pembimbing kedua yang telah banyak meluangkan waktunya dalam memberikan masukan-masukan kepada penulis. Ucapan terima kasih juga ditujukan kepada Prof. Dr. Iryanto, M.Si dan Dra. Mardiningsih, M.Si yang telah bersedia menjadi dosen penguji yang telah banyak memberikan kritik dan saran agar skripsi ini mendekati kesempurnaan. Ucapan terima kasih juga ditujukan kepada Ketua dan Sekretaris Departemen Ilmu Komputer, Prof. Dr. Muhammad Zarlis dan Syahriol Sitorus, S.Si, MIT, Dekan dan Pembantu Dekan Fakultas Matemarika dan Ilmu Pengerahuan Alam Universitas Sumatera Utara, semua dosen serta pegawai di Program Studi S1 Ilmu Komputer Departemen Ilmu Komputer FMIPA USU.

Tidak lupa penulis ucapkan terima kasih kepada keluarga tercinta, Ayahanda H. Arzil Alwi dan Ibunda Hj. Mahraini Rangkuti yang memberikan dukungan, doa, dan semangat tanpa henti. Untuk abang dan kakak penulis, M. Abduh Aswin, S.Kom dan Khairiah, S.E. Terima kasih penulis ucapkan kepada teman-teman yang selalu memberikan dukungan, Rury Handayani, Anggarani Novitasari, Wenty Suma, Izhari Ishak Aksa, Alfarisi, Surya Wijaya serta teman-teman RCS dan seluruh teman-teman yang tidak disebutkan namanya. Sekali lagi penulis mengucapkan terima kasih kepada semua pihak yang membantu dalam penyelesaian skripsi ini yang tidak dapat disebutkan satu persatu, terima kasih atas ide, saran dan motivasi yang diberikan.


(6)

ABSTRAK

Checker ialah suatu permainan papan yang menggunakan keterampilan murni dari dua pemain yang mengikuti sejumlah aturan-aturan dalam permainan, dan berusaha untuk memenangkan permainan dengan cara memakan semua bidak lawan dalam papan atau dengan membuat semua bidak lawan tidak dapat melakukan gerakan. Penulis membangun aplikasi permainan Checker berbasis Kecerdasan Buatan menggunakan algoritma Minimax dengan Negascout. Negascout mengefisienkan waktu eksekusi program dan memungkinkan agen untuk berpikir secara cerdas. Aplikasi ini dikembangkan dengan menggunakan metode perancangan UML dan bahasa pemrograman Java.


(7)

ANALYSIS AND IMPLEMENTATION OF ARTIFICIAL INTELLIGENCE IN CHECKER USING MINIMAX ALGORITHM

WITH NEGASCOUT

ABSTRACT

Checker is a board game that uses pure skill between two players which follow certain rules in the game, and each player tries to win the game by eliminating all the opponent’s pieces in a board or by making all the pieces of the opponent can not move. Checker game application based on Artificial Intelligence using Minimax algorithm with Negascout. Negascout allows efficient program execution time and causes agents to think intelligently. This application is developed using UML and Java programming language.


(8)

DAFTAR ISI

Halaman

Persetujuan ii

Pernyataan iii

Penghargaan iv

Abstrak v

Abstract vi

Daftar Isi vii

Daftar Tabel ix

Daftar Gambar x

Bab 1 Pendahuluan 1

1.1 Latar Belakang 1

1.2 Rumusan Masalah 3

1.3 Batasan Masalah 3

1.4 Tujuan Penulisan Tugas Akhir 4

1.5 Manfaat Penulisan Tugas Akhir 4

1.6 Metodologi Penelitian 4

1.7 Sistematika Penulisan 5

Bab 2 Tinjauan Pustaka 6

2.1 Kecerdasan Buatan 6

2.1.1 Tujuan Akhir Kecerdasan Buatan 7

2.2 Agen Cerdas 8

2.2.1 Karakteristik Lingkungan Agen 8

2.3 Permainan Checker 11

2.3.1 Papan dalam Permainan Checker 11

2.3.2 Bidak dalam Permainan Checker 11

2.3.3 Metode Permainan 12

2.3.4 Bidak Pion 12

2.3.5 Bidak Raja 14

2.3.6 Gerakan Menangkap Secara Umum 15

2.3.7 Kemenangan Permainan 16

2.3.8 Permainan Seri 16

2.4 Pohon Permainan 17

2.5 Algoritma Minimax 19

2.6 Negascout 22

2.6.1 Pemotongan Alpha 23

2.6.2 Pemotongan Beta 24

2.6.3 Pemotongan Alpha Beta 24


(9)

Bab 3 Analisis dan Perancangan 26

3.1 Fungsi Evaluasi pada Checker 26

3.1.1 Nilai Bidak 27

3.1.2 Nilai Melompat 27

3.1.3 Nilai Posisi 27

3.1.4 Nilai Penobatan Raja 28

3.2 Pohon Permainan dan Nilai Evaluasi 28

3.3 Analisis Algoritma Minimax 32

3.4 Analisis Algoritma Negascout 34

3.4.1 Pseudo Code 36

3.4.2 Kinerja Algoritma 37

3.5 Pemodelan Visual Menggunakan UML 37

3.5.1 Identifikasi Use Case Diagram 36

3.5.1.1 Use Case Permainan Baru 39

3.5.1.2 Use Case Pindah Bidak 41

3.5.1.3 Use Case Help About 43

3.5.1.4 Use Case Keluar Permainan 45

3.5.2 Perancangan Class Diagram Checker 46

Bab 4 Implementasi dan Pengujian 49

4.1 Implementasi 49

4.1.1 Konfigurasi Perangkat Keras 49

4.1.2 Konfigurasi Perangkat Lunak 50

4.1.3 Hasil Eksekusi Aplikasi 50

4.2 Pengujian Agen Cerdas 55

4.2.1 Sampel Posisi Pertama 55

4.2.2 Sampel Posisi kedua 58

4.2.3 Sampel Posisi Ketiga 61

4.2.4 Pengujian Waktu Pencarian 64

Bab 5 Kesimpulan dan Saran 65

5.1 Kesimpulan 65

5.2 Saran 66


(10)

DAFTAR TABEL

Halaman

Tabel 3.1 Proses menghitung nilai evaluasi 31

Tabel 3.2 Analisis algoritma Mimimax 33

Tabel 3.3 Analisis algoritma Negascout 35

Tabel 3.4 Tabel pseudo code Negascout 36

Tabel 3.5 Dokumentasi Naratif Use Case Permainan Baru 39 Tabel 3.6 Dokumentasi Naratif Use Case Pindah Bidak 41 Tabel 3.7 Dokumentasi Naratif Use Case Help About 43 Tabel 3.8 Dokumentasi Naratif Use Case Keluar Permainan 45 Tabel 3.9 Penjelasan Kelas-Kelas Pada Class Diagram Checker 48 Tabel 4.1 Pohon Permainan untuk Sampel Pertama 56 Tabel 4.2 Proses Minimax untuk Sampel Pertama 57 Tabel 4.3 Pohon Permainan untuk Sampel kedua 59

Tabel 4.4 Proses Minimax untuk Sampel Kedua 60

Tabel 4.5 Pohon Permainan untuk Sampel Ketiga 62 Tabel 4.6 Proses Minimax untuk Sampel Ketiga 63 Tabel 4.7 Pengujian waktu pada algoritma Minimax 64 Tabel 4.8 Pengujian waktu pada algoritma Negascout 64


(11)

DAFTAR GAMBAR

Halaman Gambar 1.1 Papan dan Bidak dalam Checker, serta posisi awal permainan 2 Gambar 2.1 Agen berinteraksi dengan lingkungan 8 Gambar 2.2 Bentuk papan Checker dan kondisi awal permainan 12

Gambar 2.3 Bidak pion 13

Gambar 2.4 Gerakan sederhana pion 13

Gambar 2.5 Gerakan menangkap pion 13

Gambar 2.6 Bidak raja 14

Gambar 2.7 Gerakan sederhana raja 14

Gambar 2.8 Gerakan menangkap raja 15

Gambar 2.9 Gerakan beberapa lompatan 15

Gambar 2.10 Contoh pohon permainan tic-tac-toe 18 Gambar 2.11 Langkah pemain pada algoritma Minimax 20 Gambar 2.12 Langkah lawan pada algoritma Minimax 20 Gambar 2.13 Illustrasi cara kerja algoritma Minimax 21 Gambar 2.14 Pohon permainan dengan pemotongan alpha 23 Gamabr 2.15 Pohon permainan dengan algoritma Negascout 25 Gambar 3.1 Strategi perpindahan bidak Checker 27

Gambar 3.2 Kondisi permainan pada Checker 29

Gambar 3.3 Pohon permainan pada Checker 29

Gambar 3.4 Pohon dengan nilai evaluasi pada setiap langkah 30 Gambar 3.5 Pohon dengan nilai evaluasi pada leaf node 31 Gambar 3.6 Proses perubahan nilai node dengan algoritma Minimax 32 Gambar 3.7 Pohon permainan menggunakan algoritma Negascout 34

Gambar 3.8 Use case diagram Checker 38

Gambar 3.9 Activity diagram Permainan Baru 40

Gambar 3.10 Activity diagram Pindah Bidak 42

Gambar 3.11 Activity diagram Help About 44

Gambar 3.12 Activity diagram Keluar Permainan 46

Gambar 3.13 Class diagram Checker 47

Gambar 4.1 Tampilan awal aplikasi permainan Checker 50 Gambar 4.2 Tampilan langkah yang mungkin untuk bidak yang telah dipilih 52 Gambar 4.3 Tampilan ketika agen mendapat giliran melangkah 53

Gambar 4.4 Tampilan jendela New Game 53

Gambar 4.5 Tampilan akhir dari permainan ketika bidak lawan telah habis 54

Gambar 4.6 Tampilan About The Checker 54

Gambar 4.7 Sampel posisi pertama 55

Gambar 4.8 Sampel posisi kedua 58


(12)

ABSTRAK

Checker ialah suatu permainan papan yang menggunakan keterampilan murni dari dua pemain yang mengikuti sejumlah aturan-aturan dalam permainan, dan berusaha untuk memenangkan permainan dengan cara memakan semua bidak lawan dalam papan atau dengan membuat semua bidak lawan tidak dapat melakukan gerakan. Penulis membangun aplikasi permainan Checker berbasis Kecerdasan Buatan menggunakan algoritma Minimax dengan Negascout. Negascout mengefisienkan waktu eksekusi program dan memungkinkan agen untuk berpikir secara cerdas. Aplikasi ini dikembangkan dengan menggunakan metode perancangan UML dan bahasa pemrograman Java.


(13)

ANALYSIS AND IMPLEMENTATION OF ARTIFICIAL INTELLIGENCE IN CHECKER USING MINIMAX ALGORITHM

WITH NEGASCOUT

ABSTRACT

Checker is a board game that uses pure skill between two players which follow certain rules in the game, and each player tries to win the game by eliminating all the opponent’s pieces in a board or by making all the pieces of the opponent can not move. Checker game application based on Artificial Intelligence using Minimax algorithm with Negascout. Negascout allows efficient program execution time and causes agents to think intelligently. This application is developed using UML and Java programming language.


(14)

BAB 1

PENDAHULUAN

1.1 Latar Belakang

Kecerdasan buatan merupakan salah satu bidang ilmu komputer yang didefinisikan sebagai kecerdasan yang dibuat untuk suatu sistem dengan menggunakan algoritma-algoritma tertentu sehingga sistem tersebut seolah-olah dapat berpikir seperti manusia (Ben Coppin, 2004).

Permainan papan (board game) merupakan jenis permainan yang dimainkan di atas papan dimana bidak diletakkan di atasnya. Bidak dalam permainan ini mampu berpindah tempat ataupun dimakan oleh bidak lawan, sesuai dengan peraturan yang berlaku pada permainan. Pada umumnya permainan ini berbasis strategi, dimana tujuan akhir dari permainan adalah menghabiskan bidak lawan atau membuat bidak lawan tidak dapat bergerak.

Checker ialah suatu permainan papan dengan menggunakan keterampilan murni dari dua pemain yang mengikuti sejumlah aturan-aturan dalam permainan, dan berusaha untuk memenangkan permainan dengan cara memakan semua bidak lawan dalam papan atau dengan membuat semua bidak lawan tidak dapat melakukan gerakan.

Papan Checker tersusun oleh 64 persegi bergantian antara sisi gelap dan terang, yang disusun ke dalam satu kumpulan persegi yang terdiri dari 8 baris dan 8 kolom. Papan Checker resmi dari World Checker/Draught Federation (WCDF) memiliki warna hijau dan putih untuk mewakili sisi gelap dan sisi terang. Pada awal


(15)

permainan, setiap pemain memiliki 12 bidak pion. Bidak pion hanya mampu bergerak maju secara diagonal, ketika bidak pion mencapai baris depan terjauh maka bidak pion berubah menjadi bidak raja. Bidak raja mampu bergerak maju atau mundur secara diagonal.

Gambar 1.1 Papan dan bidak dalam Checker, serta posisi awal permainan

Checker merupakan permainan klasik pertama yang dimainkan sepenuhnya oleh komputer. Christopher Strachey (1952) ialah seorang yang menulis program pertama untuk permainan Checker. Schaeffer (1997) memberikan peningkatan pada program ini, dalam pengembangannya ini ia menciptakan Chinook. Chinook ialah juara dunia program Checker. Program Chinook menggunakan algoritma Minimax dengan Alpha Beta Pruning dalam melakukan pencarian pada permainan (Stuart Russel, Peter Norvig, 2003).

Dalam suatu permainan sederhana, terdapat algoritma yang digunakan untuk mencari langkah terbaik dari situasi sekarang. Algoritma yang paling terkenal ialah algoritma Minimax. Algoritma Minimax ialah suatu metode yang sangat bermanfaat untuk permainan dua pemain sederhana. Metode ini digunakan untuk memilih langkah terbaik yang diberikan, dimana kedua pemain saling berusaha untuk memenangkan permainan. Setiap pemain mengetahui langkah-langkah yang mungkin diberikan pada situasi permainan saat ini. Sehingga untuk setiap langkah dan semua langkah selanjutnya akan dapat diketahui (M. Tim Jones, 2008).


(16)

Negascout merupakan algoritma perbaikan dari Alpha Beta Pruning yang digunakan pada algoritma Minimax. Negascout menghasilkan jendela pencarian yang lebih kecil dari pada Alpha Beta Pruning. Pemikiran dasar di belakang Negascout ialah langkah yang dilakukan setelah langkah pertama akan menghasilkan pemotongan (Ian Milington, 2006).

Mencermati hal-hal di atas, maka penulis tertarik untuk melakukan studi dengan judul “Analisis dan Implementasi Kecerdasan Buatan pada Permainan Checker Menggunakan Algoritma Minimax dengan Negascout”. Dengan menggunakan algoritma Negascout, maka diharapkan mampu memaksimalkan waktu yang diperlukan sistem dalam melakukan eksekusi pencarian pada permainan.

1.2 Rumusan Masalah

Berdasarkan latar belakang di atas maka rumusan masalahnya adalah bagaimana menganalisis dan menerapkan algoritma Minimax dengan Negascout pada permainan Checker.

1.3 Batasan Masalah

Penulis membuat batasan masalah yaitu:

1. Algoritma yang akan dibahas hanya Minimax dan Negascout, penulis tidak membandingkan algoritma ini dengan algoritma yang lain.

2. Algoritma ini hanya akan menelusuri sampai 12 langkah permainan ke depan. 3. Kecerdasan buatan yang diciptakan tidak mampu melakukan pembelajaran.

1.4 Tujuan Penulisan

Tujuan dari penelitian ini adalah untuk memperoleh desain dan penerapan algoritma Minimax dengan Negascout pada permainan Checker.


(17)

1.5 Manfaat Penulisan

Hasil penelitian ini diharapkan dapat digunakan sebagai:

1. Sarana yang dapat memberikan kejelasan tentang bagaimana cara kerja algoritma Minimax dengan Negascout pada permainan Checker.

2. Sebagai alat bantu yang dapat memicu timbulnya strategi baru yang dapat memenangkan permainan Checker.

1.6 Metodologi Penelitian

Langkah-langkah yang ditempuh dalam menyelesaikan penelitian sebagai berikut: 1. Studi literatur

Pada tahap ini penulis mencari literatur dengan rincian sebagai berikut: a. Mencari referensi mengenai kecerdasan buatan.

b. Mencari referensi mengenai algoritma Minimax dan Negascout. 2. Analisis sistem

Pada tahap ini dilakukan analisis bagaimana menerapkan algoritma Minimax dengan Negascout pada permainan Checker.

3. Perancangan dan implementasi algoritma

Pada tahap ini dilakukan perancangan sesuai dengan hasil dari analisis sistem dan dilanjutkan dengan menerapkan hasil analisis dan perancangan ke dalam sistem.

4. Pengujian

Pada tahap ini dilakukan pengujian sistem apakah berjalan sesuai dengan tujuan penelitian.

5. Kesimpulan dan saran

Pada tahap ini dilakukan penarikan kesimpulan dan saran sesuai dengan analisis dan penerapan yang dilakukan dalam penelitian.


(18)

1.7 Sistematika Penulisan

Sistematika penulisan dibagi menjadi lima bab, yaitu sebagai berikut:

BAB 1: PENDAHULUAN

Berisikan penjelasan tentang Latar Belakang, Rumusan Masalah, Batasan Masalah, Tujuan Penulisan, Manfaat Penulisan, dan Metodologi Penelitian.

BAB 2: TINJAUAN PUSTAKA

Bab ini membahas mengenai teori-teori yang mendukung penelitian.

BAB 3: ANALISIS DAN PERANCANGAN

Bab ini berisikan langkah-langkah penelitian yang dilakukan, serta analisis terhadap fokus permasalahan penelitian.

BAB 4: IMPLEMENTASI DAN PENGUJIAN

Bab ini berisikan implementasi dan pengujian aplikasi.

BAB 5: KESIMPULAN DAN SARAN


(19)

BAB 2

TINJAUAN PUSTAKA

2.1 Kecerdasan Buatan

Kecerdasan buatan merupakan salah satu bidang ilmu komputer yang didefinisikan sebagai kecerdasan yang dibuat untuk suatu sistem dengan menggunakan algoritma-algoritma tertentu sehingga sistem tersebut seolah-olah dapat berpikir seperti manusia (Ben Coppin, 2004).

Kecerdasan buatan merupakan cabang dari ilmu komputer yang dalam merepresentasi pengetahuan, lebih banyak menggunakan bentuk simbol-simbol dari pada bilangan, dan memproses informasi berdasarkan metode heuristik atau dengan berdasarkan sejumlah aturan ( Encyclopedia Britannica).

Dari beberapa pengertian di atas, maka dapat ditarik suatu kesimpulan bahwa kecerdasan buatan ialah salah satu bagian dari ilmu komputer yang mempelajari perancangan sistem komputer yang cerdas. Maksud dari sistem cerdas yaitu suatu sistem yang dapat memperlihatkan karakteristik yang ada pada tingkah laku manusia, seperti mengerti suatu bahasa, mempelajari, mempertimbangkan, dan memecahkan suatu masalah.

Kecerdasan buatan telah memberikan suatu kemampuan baru kepada komputer untuk memecahkan masalah yang lebih besar dan lebih luas, tidak hanya terbatas pada soal-soal perhitungan, penyimpanan data, pengambilan data atau pengendalian yang sederhana saja.


(20)

2.1.1 Tujuan Akhir Kecerdasan Buatan

Menurut Lenat dan Feigenbaum (1992), terdapat sembilan tujuan akhir dari kecerdasan buatan, yaitu:

1. Memahami pola pikir manusia, mencoba untuk mendapatkan pengetahuan ingatan manusia yang mendalam, kemampuan dalam memecahkan masalah, belajar, dan mengambil keputusan.

2. Otomatisasi, menciptakan sistem yang dapat menggantikan manusia dalam tugas-tugas intelegensi. Menggunakan sistem yang performanya sebaik manusia dalam melakukan pekerjaan.

3. Penguatan intelegensi, membangun sistem untuk membantu manusia agar mampu berpikir lebih baik dan lebih cepat.

4. Intelegensi manusia super, membangun sistem yang mempunyai kemampuan untuk melebihi intelegensi manusia.

5. Menyelesaikan permasalahan, sistem mampu menyelesaikan berbagai masalah yang luas.

6. Wacana koheren, mampu berkomunikasi dengan manusia menggunakan bahasa alami.

7. Belajar, mampu memperoleh data sendiri dan mengetahui bagaimana cara memperoleh data. Sistem mampu membuat hipotesis, penerapan atau pembelajaran secara heuristik dan membuat alasan dengan analogi.


(21)

9. Informasi, mampu menyimpan informasi dan mengetahui cara mengambil informasi.

2.2 Agen Cerdas

Agen adalah sesuatu yang dapat mengesan lingkungannya melalui sensors dan mengambil tindakan terhadap lingkungannya melalui actuators. Dengan adanya agen cerdas, maka diharapkan sistem mampu berpikir dan menentukan pilihan langkah yang tepat.

Gambar 2.1 Agen berinteraksi dengan lingkungan

Untuk setiap deretan persepsi yang mungkin, sebuah agen hendaklah memilih satu tindakan yang diharapkan memaksimalkan ukuran kemampuannya, dengan adanya bukti yang diberikan oleh deretan persepsi dan apapun pengetahuan terpasang yang dimiliki agen itu. Maka agen harus mampu melakukan atau memberi tindakan yang benar. Tindakan yang benar adalah tindakan yang menyebabkan agen mencapai tingkat yang paling berhasil (Stuart Russel, Peter Norvig, 2003).

2.2.1 Karakteristik Lingkungan Agen

Berikut adalah beberapa karakteristik lingkungan agen oleh Stuart Russel dan Peter Norvig (2003):


(22)

Apabila sensor pada suatu agen dapat mengakses seluruh keadaan pada lingkungan, maka lingkungan itu dapat dikatakan fully observable terhadap agen. Lebih efektif lagi lingkungan dikatakan fully observable jika sensor dapat mendeteksi seluruh aspek yang berhubungan dengan pilihan aksi yang akan dilakukan. Lingkungan yang fully observable biasanya sangat memudahkan, karena agen tidak perlu mengurus keadaan internal untuk terus melacak keadaan lingkungan. Suatu lingkungan bisa menjadi partially observable akibat ada gangguan dan ketidakakurasian sensor ataupun karena ada bagian keadaan yang hilang dari data sensor. Permainan Checker bersifat fully observable karena seluruh keadaan pada papan permainan dan bidak-bidak yang ada semua dapat dipersepsi dengan baik.

2. Deterministic – stochastic

Apabila keadaan lingkungan selanjutnya sepenuhnya bergantung pada keadaan sekarang dan juga tindakan yang akan dilakukan oleh agen, maka lingkungan tersebut bersifat deterministic. Sedangkan stochastic adalah kebalikan dari deterministic, dimana keadaan selanjutnya tidak bergantung pada keadaan sekarang dan juga tindakan yang akan dilakukan oleh agen. Apabila lingkungan bersifat deterministic terkecuali untuk tindakan dari agen, maka lingkungan tersebut bersifat strategic. Permainan Checker bersifat deterministic karena keadaan selanjutnya bergantung pada keadaan sekarang.

3. Episodic – sequential

Untuk lingkungan yang bersifat episodic, pengalaman agen dibagi-bagi menjadi beberapa episode pendek. Tiap episode terdiri dari apa yang dirasakan agen dan kemudian melakukan satu tindakan tertentu. Kualitas dari tindakan agen hanya tergantung pada episode itu saja, karena tindakan selanjutnya tidak tergantung pada tindakan apa yang akan dilakukan di episode sebelumnya. Lingkungan episodic lebih sederhana karena agen tidak perlu memikirkan langkah-langkah pada keadaan selanjutnya. Sedangkan pada lingkungan sequential, tindakan saat sekarang dapat mempengaruhi tindakan selanjutnya. Permainan Checker bersifat sequential karena agen berpikir untuk


(23)

langkah-langkah selanjutnya dan seluruh langkah-langkah yang akan diambil oleh agen saling bergantung.

4. Static – dynamic

Apabila lingkungan dapat berubah saat agen sedang mengambil keputusan, maka lingungan tersebut bersifat dynamic, sebaliknya bersifat static. Lingkungan yang bersifat static lebih mudah dihadapi karena agen tidak perlu memperhatikan lingkungannya saat dia sedang mengambil tindakan, maupun waktu yang terus berjalan. Apabila lingkungan tidak berubah seiring waktu berjalan, namun menyebabkan nilai kemampuan agen berubah-ubah, maka lingkungan tersebut bersifat semidynamic. Permainan Checker bersifat static karena saat agen mengambil tindakan, lingkungan tidak berubah dan juga tidak mempengaruhi nilai kemampuan agen.

5. Discrete – continuous

Apabila kesan dan tindakan yang akan diterima dan dilakukan oleh agen telah ditetapkan dengan jelas, maka lingkungan tersebut bersifat discrete. Catur bersifat discrete, karena langkah yang akan diambil terbatas dan tertentu. Sedangkan pengendara taxi bersifat continuous, karena kecepatan dan lokasi pada taksi untuk suatu jangka tertentu mempunyai nilai yang terus-menerus berubah. Permainan Checker bersifat discrete karena seluruh kesan dan tindakan telah jelas ditetapkan sesuai dengan peraturan permainan.

6. Single agent – multiagent

Agen pemecah permainan teka teki silang berada pada lingkungan yang bersifat single agent. Agen pemain catur berada pada lingkungan yang bersifat multiagent. Ada hal lain yang memberikan perbedaan lingkungan agen, yaitu akan hal apakah agen memberikan bantuan kepada agen lain atau apakah agen akan memaksimalkan kemampuannya bergantung pada prilaku agen lain. Permainan Checker bersifat multiagent karena memikirkan langkah yang akan diambil oleh lawan.


(24)

Dengan memahami karakteristik lingkungan pada agen cerdas yang akan dirancang, maka pembuatan agen cerdas dapat dilakukan dengan lebih baik .

2.3 Permainan Checker

Checker ialah suatu permainan papan dengan menggunakan keterampilan murni dari dua pemain yang mengikuti sejumlah aturan-aturan dalam permainan, dan berusaha untuk memenangkan permainan dengan cara memakan semua bidak lawan dalam papan atau dengan membuat semua bidak lawan tidak dapat melakukan gerakan.

2.3.1 Papan dalam Permainan Checker

Papan Checker tersusun oleh 64 persegi bergantian antara sisi gelap dan terang, yang disusun ke dalam satu kumpulan persegi yang terdiri dari 8 baris dan 8 kolom dan dibatasi oleh garis netral. Papan Checker resmi dari World Checker/Draught Federation (WCDF) ialah berwarna hijau dan putih untuk mewakili sisi gelap dan terang.

Persegi-persegi hijau dengan jumlah 32 yang terdapat pada papan Checker ialah daerah yang digunakan dalam permainan. Papan Checker menandai semua persegi hijau dimulai dari angka 1 sampai dengan 32, dengan tujuan sebagai notasi resmi permainan dan digunakan untuk merekam permainan.

2.3.2 Bidak dalam Permainan Checker

Bidak resmi yang digunakan oleh WCDF ialah bidak berbentuk lingkaran, dengan warna merah dan putih untuk mewakili sisi gelap dan terang.

Pada awal permainan, seorang pemain harus memiliki 12 bidak berwarna gelap, dan pemain lainnya harus memiliki 12 bidak berwarna terang. Bidak berwarna


(25)

gelap harus terletak pada 12 persegi pertama dimulai dari kiri ke kanan yaitu pada 1 sampai 12, dan bidak berwarna terang akan berada pada 12 persegi terakhir yaitu pada 21 sampai 32. Lihat gambar 2.2 untuk mengetahui bentuk papan dan bidak pada permainan Checker, serta kondisi awal permainan.

Gambar 2.2 Bentuk papan Checker dan kondisi awal permainan

2.3.3 Metode Permaian

Metode dalam permainan Checker adalah sebagai berikut:

1. Untuk memulai suatu permainan, pemain harus memilih secara acak warna dari bidak yang akan mereka mainkan. Untuk permainan berikutnya, mereka akan bertukaran warna.

2. Kedua pemain mendapat giliran melakukan suatu langkah pada bidak mereka. Pemain dengan bidak berwarna merah selalu memulai permainan dengan melakukan langkah pertama, dan kemudian dibalas putih.

3. Bidak-bidak hanya dapat melakukan langkah pada persegi berwarna hijau, tidak akan pernah pada persegi berwarna putih.


(26)

2.3.4 Bidak Pion

Bidak pion adalah bidak yang pertama didapat pada saat memulai permainan. Lihat gambar 2.3 untuk mengetahui bentuk dari bidak pion.

Gambar 2.3. Bidak pion

Aturan-aturan pada bidak pion adalah sebagai berikut:

1. Gerakan sederhana dari pion ialah bergerak satu langkah maju secara diagonal, menuju persegi hijau yang kosong dan bedekatan.

Gambar 2.4. Gerakan sederhana pion

2. Suatu gerakan menangkap dari pion adalah perpindahan bidak dari satu persegi hijau menuju suatu persegi hijau kosong diagonal di depannya, jika persegi diagonal depan terdekatnya ditempati oleh bidak lawan, maka posisi akhir dari pion berada pada persegi hijau kosong yang searah diagonal depan dari bidak lawan yang dilewatinya. Ketika selesai melakukan lompatan maka bidak yang tertangkap akan dihapus dari papan.

Gambar 2.5. Gerakan menangkap pion.

3. Ketika suatu pion mencapai baris depan terjauh atau dikenal dengan baris raja. Maka pion akan berubah menjadi raja, dan ia akan melengkapi giliran


(27)

permainan. Pion dinobatkan menjadi raja ditandai dengan meletakkan mahkota di atasnya sebelum langkah berikutnya dilakukan.

2.3.5 Bidak Raja

Bidak raja ialah bidak yang didapat ketika suatu pion mencapai baris depan terjauh atau baris raja. Lihat gambar 2.6 untuk mengetahui bentuk dari bidak raja.

Gambar 2.6. Bidak Raja

Aturan-aturan pada bidak raja adalah sebagai berikut:

1. Gerakan sederhana dari raja menyerupai langkah pada pion, tetapi raja memiliki kekuatan untuk melakukan langkah mundur. Raja mampu bergerak satu langkah maju atau mundur secara diagonal, menuju persegi hijau yang kosong dan berdekatan.

Gambar 2.7. Gerakan sederhana raja

2. Gerakan menangkap dari raja termasuk kemampuan untuk menangkap mundur. Seperti gerakan menangkap dari pion, gerakan menangkap pada raja ialah perpindahan raja dari satu persegi hijau menuju suatu persegi hijau kosong diagonal terdekatnya (maju atau mundur), jika persegi diagonal terdekatnya ditempati oleh bidak lawan. Maka posisi akhir dari raja berada pada persegi hijau kosong yang searah diagonal dari bidak lawan yang


(28)

dilewatinya. Ketika selesai melakukan lompatan maka bidak yang tertangkap akan dihapus dari papan.

Gamber 2.8. Gerakan Menangkap dari raja

2.3.6 Gerakan Menangkap Secara Umum

Gerakan menangkap atau melompat adalah suatu gerak paksaan. Setiap lompatan yang menciptakan kemungkinan untuk melakukan gerakan melompat berikutnya harus berlanjut sampai semua lompatan selesai. Tidak ada pilihan untuk berhenti pada suatu bagian dari lompatan. Hanya satu pengecualian dalam hal ini adalah jika pion mencapai baris raja ketika melakukan lompatan, maka ia akan menjadi raja tetapi tidak dapat melakukan lompatan berikutnya sampai lawannya telah melakukan langkah. Raja yang baru harus menunggu giliran bermain berikutnya

Jika pemain menolak melakukan suatu lompatan, maka pemain akan dikeluarkan dari permainan. Namun, Jika terdapat dua atau lebih jalur untuk melompat, pemain harus memilih salah satu jalur yang mereka inginkan, langkah yang dipilih tidak harus yang memperoleh keuntungan terbanyak. Bidak-bidak yang telah dilompati akan dihapus dari papan setelah lompatan selesai.


(29)

Gambar 2.9. Gerakan beberapa lompatan 2.3.7 Kemenangan Permainan

Permainan dimenangkan jika telah terpenuhi salah satu dari ketentuan kemenangan permainan, ketentuan tersebut antara lain:

1. Permainan dimenangkan jika lawannya telah mengundurkan diri atau mengakui kekalahannya.

2. Permainan dimenangkan oleh pemain yang berhasil menghabisi semua bidak lawan.

3. Permainan dimenangkan jika lawan tidak memiliki langkah yang mungkin dilakukan, karena semua sisa bidak lawan telah terhambat dan tidak dapat melakukan langkah lagi.

2.3.8 Permainan Seri

Permainan dinyatakan seri jika telah terpenuhi salah satu dari ketentuan seri permainan, ketentuan tersebut antara lain:

1. Suatu permainan dinyatakan seri ketika kedua pemain setuju untuk menyatakan permainan mereka dengan hasil yang seimbang.

2. Ketika seorang pemain menyatakan suatu permainan seri, dan pemain lawan tidak setuju dengan hasil seri. Maka pemain yang menyatakan seri dapat


(30)

meminta wasit untuk menghitung 40 hitungan langkah. Hitungan dimulai dari langkah pertama pemain penyerang, setelah seorang pemain menyatakan seri. Hitungan hanya dilakukan pada gerakan pemain penyerang. Pemain penyerang harus menunjukkan kepada wasit posisi menguat dalam 40 langkah ini. Hitungan 40 langkah ini dapat diulang kapan saja ketika.

a. Pemain yang menyatakan seri menarik pernyataannya karena posisinya yang semakin menguat.

b. Terjadinya perubahan antara pion menjadi raja, dikarenakan pion telah mencapai baris raja.

c. Terjadinya penangkapan bidak dalam permainan.

Setelah 40 langkah diselesaikan dan menunjukkan suatu posisi menguat, pemain penyerang tetap harus menyelesaikan kemenangannya. Hitungan 40 langkah tetap mampu diminta lagi oleh pemain yang menyatakan seri.

2.4 Pohon Permainan

Pohon permainan merepresentasikan kepada kita kondisi-kondisi yang mungkin kita hadapi pada permainan dimulai dari kondisi yang sedang kita hadapi sekarang hingga beberapa kondisi ke depan. Sebuah pohon permainan merupakan representasi grafis dari contoh permainan. Pohon permainan menyediakan informasi akan pemain, hasil, strategi, dan pilihan langkah.

Pohon permainan dapat direpresentasikan dengan baik pada permainan yang berbasis giliran (turn-based game). Pohon permainan memiliki root yang merupakan representasi dari kondisi dimana langkah belum diambil, nodes pada pohon yang merepresentasikan keadaan-keadaan yang mungkin diambil pada permainan, dan arcs yang merepresentasikan langkah.

Penggunaan pohon permainan pada permainan yang dimainkan oleh dua pemain direpresentasikan dengan cara bergantian. Untuk edges dari tingkat pertama ke tingkat kedua merepresentasikan langkah-langkah yang dapat diambil oleh pemain pertama, sedangkan untuk edges dari tingkat kedua ke tingkat ketiga


(31)

merepresentasikan langkah-langkah yang dapat diambil oleh pemain kedua, dan begitu seterusnya.

Leaf nodes pada pohon permainan merepresentasikan keadaan akhir pada permainan, dimana permainan tersebut dimenangkan, dikalahkan ataupun seri. Pada permainan yang sederhana, untuk mencapai leaf nodes mungkin dapat direpresentasikan, tetapi untuk permainan yang rumit seperti Checker, pencapaian leaf nodes sangat tidak dimungkinkan karena percabangan pada pohon permainan yang sangat besar.

Gambar 2.10 Contoh pohon permainan tic-tac-toe (Ben Coppin, 2004)

Berikut adalah penjelasan pohon permainan tic-tac-toe pada Gambar 2.10:

1. Terdapat root yang merupakan keadaan awal dimana permainan belum dimulai dan langkah belum diambil.

2. Edges yang menghubungkan tingkat pertama (root) dengan tingkat kedua merupakan langkah pemain pertama dan begitu seterusnya. Sehingga pohon


(32)

permainan tersebut merepresentasikan langkah kedua pemain secara bergantian.

3. Untuk nodes pada pohon tersebut merepresentasikan keadaan-keadaan yang dapat diambil oleh pemain yang akan melangkah.

4. Percabangan pertama yang dihasilkan adalah 9, kemudian untuk percabangan berikutnya adalah 8, dan begitu seterusnya hingga mencapai keadaan akhir (leaf nodes).

2.5 Algoritma Minimax

Dalam suatu permainan sederhana, terdapat algoritma yang digunakan untuk mencari langkah terbaik dari situasi sekarang. Algoritma yang paling terkenal ialah algoritma Minimax. Algoritma Minimax ialah suatu metode yang sangat bermanfaat untuk permainan dua pemain sederhana. Metode ini digunakan untuk memilih langkah terbaik yang diberikan, dimana kedua pemain saling berusaha untuk memenangkan permainan. Setiap pemain mengetahui langkah-langkah yang mungkin diberikan pada situasi permainan saat ini. Sehingga untuk setiap langkah dan semua langkah selanjutnya akan dapat diketahui (M. Tim Jones, 2008).

Minimax merupakan algoritma yang digunakan untuk menentukan pilihan agar memperkecil kemungkinan kehilangan nilai maksimal. Algoritma ini dapat diterapkan dengan baik pada permainan yang melibatkan dua pemain yang saling bergantian seperti tic-tac-toe, othello, Checker, catur, go, dan permainan yang menggunakan strategi atau logika lainnya (Nadhira Ayuningtyas, 2008). Permainan tersebut memiliki karakteristik yang sama, yakni “permainan dengan informasi lengkap”. Setiap pemain mengetahui semua langkah yang mungkin dari pemain lawannya. Sehingga pemain bisa tetap “memantau” kondisi permainan sewaktu permainan sedang berlangsung.


(33)

Jika pemain memilih suatu langkah, maka pemain akan memilih langkah yang akan menghasilkan suatu posisi yang bagus. Kita dapat menganggap bahwa pemain akan memilih langkah yang akan menuntunnya pada posisi terbaik. dengan kata lain, ketika pemain mendapat giliran bermain maka pemain akan mencoba memaksimalkan nilainya, perhatikan gambar 2.11.

Gambar 2.11 Langkah pemain pada algoritma Minimax (Ian Milington, 2006)

Ketika lawan mendapat giliran bermain, pemain akan mengganggap bahwa lawan akan memilih langkah yang akan memberikan pemain posisi terburuk yang tersedia. Lawan sedang berusaha meminimalkan nilai dari pemain, perhatikan gambar 2.12.

Gambar 2.12 Langkah lawan pada algoritma Minimax (Ian Milington, 2006)

Algoritma Minimax merupakan salah satu implementasi dari pencarian DFS (Depth-First Search) dalam melakukan pencarian pada pohon. DFS akan menelusuri simpul paling dalam terlebih dahulu. Setelah simpul akar dibangkitkan, algoritma ini akan membangkitkan simpul pada tingkat kedua, yang akan dilanjutkan pada tingkat ketiga, dst.

Dalam repersentasi pohon pada algoritma Minimax, terdapat dua jenis node, yaitu node min dan node max. Max akan memilih langkah dengan nilai tertinggi dan min akan memilih langkah dengan nilai terendah. Untuk proses dan cara kerja


(34)

algoritma yang lebih jelasnya lagi, dapat dilihat pada gambar 2.13 yang merepresentasikan cara kerja algoritma Minimax.

Gambar 2.13 Illustrasi cara kerja algoritma Minimax (Ben Coppin, 2004)

Dari gambar 2.13, proses pencarian dimulai dari jalur paling kiri terlebih dahulu, sehingga DFS akan menelusuri simpul paling kiri bawah yaitu 5. Nilai 5 disimpan sebagai nilai maksimum sementara karena berada di tingkat max, kemudian DFS melakukan backtrack dan menelusuri simpul yang bertetangga dengan simpul 5 yaitu simpul 2. Karena nilai 5 lebih besar dari nilai 2, maka nilai 2 tidak disimpan. Lalu DFS akan melakukan backtrack ke tingkat min sehingga nilai 5 yang diperoleh akan disimpan sebagai nilai minimum sementara. Untuk simpul 1 dan 3, nilai 3 yang akan disimpan karena merupakan nilai maksimum di tingkat max. Saat mencapai tingkat min, sudah ada nilai minimum sementara yaitu 5, namun karena nilai 3 lebih kecil daripada nilai 5, maka nilai 5 akan digantikan dengan nilai 3. Nilai 3 akan disimpan sebagai nilai maksimum sementara di tingkat paling atas karena merupakan tingkat max. Lalu penelusuran jalur kanan akan dilakukan dengan cara yang sama seperti penelusuran jalur kiri sehingga diperoleh nilai 6. Karena nilai maksimum sementara pada tingkat paling atas adalah nilai 3, maka nilai 3 akan digantikan dengan nilai 6 karena nilai 6 lebih besar daripada nilai 3. Dengan demikian, jalur yang akan dipilih menggunakan algoritma Minimax adalah jalur sebelah kanan karena untuk


(35)

kondisi terburuknya, kita akan mendapatkan nilai 6 sedangkan jika kita memilih jalur kiri, kita hanya akan mendapatkan nilai 3.

Pada dasarnya, algoritma Minimax sangat handal untuk menyelesaikan segala masalah dalam pencarian langkah untuk permainan komputer dengan jumlah kemungkinan penyelesaian yang kecil. Tetapi, jika algoritma Minimax digunakan pada permainan dengan jumlah kemungkinan penyelesaian yang besar seperti pada permainan Checker, algoritma Minimax ini memerlukan waktu yang lama untuk membangun pohon penyelesaian.

Oleh karena itu, beberapa metode lanjutan dari algoritma Minimax telah dikembangkan untuk membatasi melonjaknya jumlah simpul dalam pembangunan pohon penyelesaian. Berbagai jenis metode telah ditemukan untuk meningkatkan kinerja algoritma Minimax, salah satunya adalah Negascout. Dengan menggunakan metode ini maka diharapkan sistem dapat bekerja lebih baik.

2.6 Negascout

Negascout adalah salah satu metode pencarian minimax dengan berasumsi bahwa langkah pertama yang diambil merupakan langkah terbaik, sedangkan sisanya merupakan langkah terburuk. Namun jika ternyata ada langkah yang lebih baik dari langkah pertama, maka akan terjadi proses research atau proses pencarian ulang (Aske Plaat, 1994).

Dalam memperkecil jendela pencarian agar mendapat jendela pencarian dengan lebar nol. Negascout akan memotong hampir semua cabang-cabang dari pohon, untuk membuat suatu pencarian yang sangat cepat. Tetapi sayangnya, ia akan memotong semua cabang-cabang berguna bersamaan dengan yang tidak berguna. Hal ini tidak berlaku jika algoritma dimulai dengan hasil yang benar. Suatu jendela nol dapat dilihat sebagai sebuah uji coba. Uji coba dilakukan jika nilai sebenarnya sama dengan nilai yang ditebak (Ian Milington, 2006).


(36)

Algoritma Negascout cukup efisien, tetapi melakukan pemeriksaan posisi papan lebih dari yang diperlukan. Pemotongan cabang memungkinkan algoritma untuk mengabaikan bagian dari pohon yang tidak mungkin berisi langkah terbaik. ini menghasilkan dua jenis pemotongan yaitu pemotongan alpha dan pemotongan beta.

2.6.1 Pemotongan Alpha

Gambar 2.14 menunjukkan suatu pohon permainan sebelum proses dilakukan. Untuk lebih mudah melihat bagaimana nilai-nilai diproses, kita akan menggunakan algoritma Minimax untuk ilustrasi ini.

Gambar 2.14 Pohon permainan dengan pemotongan alpha (Ian Milington, 2006)

Kita memulai proses dengan cara kerja algoritma Minimax. Jika seorang pemain memilih langkah A, maka lawannya akan memberikan tanggapan dengan langkah C, dan memberikan pemain nilai 5. Maka kita akan menaikkan nilai 5. Sekarang algoritma akan melihat nilai langkah pada B. Terlihat langkah pertama di B ialah E, yang memiliki nilai 4. Tidak peduli berapakah nilai dari F, karena lawan akan selalu memaksa pemain dengan nilai 4. Bahkan tanpa mengetahui nilai F, pemain dapat menyadari bahwa langkah B ialah salah, karena ia dapat memperoleh nilai 5 pada langkah A, dan pada langkah B akan mendapat nilai maksimum 4 atau bahkan lebih rendah.

Untuk melakukan pemotongan dengan cara ini, kita perlu melacak nilai terbaik yang pasti dapat kita capai. Bahkan, nilai ini membentuk batas bawah pada nilai yang


(37)

dapat kita capai. Kita mungkin menemukan urutan langkah yang lebih baik dalam pencarian, tapi kita tidak akan pernah menerima urutan langkah yang memberikan kita nilai yang lebih rendah. Batas bawah ini dinamakan nilai alpha dan pemotongannya dinamakan dengan pemotongan alpha.

2.6.2 Pemotongan Beta

Pemotongan beta bekerja dengan cara yang sama. Nilai beta terus melacak nilai batas tertinggi dari nilai apa yang kita harapkan. Kita memperbaharui nilai beta ketika kita menemukan suatu langkah yang dipaksakan oleh lawan.

Pada posisi itu kita tahu tidak ada nilai yang lebih besar dari beta. Jika kita menemukan urutan langkah yang bernilai lebih besar dari nilai beta maka kita dapat abaikan saja, karena kita tahu bahwa kita tidak akan pernah diberi kesempatan untuk mendapatkannya.

2.6.3 Pemotongan Alpha Beta

Bersamaan nilai-nilai dari alpha dan beta memberikan suatu jendela kemungkinan langkah. Pemain tidak akan pernah memilih untuk melakukan langkah yang nilainya lebih kecil dari alpha, dan lawan kita tidak akan pernah membiarkan kita melakukan langkah yang lebih besar dari beta. Nilai pada akhirnya harus terletak antara alpha dan beta. Ketika pencarian mulai dilakukan pada pohon, nilai-nilai dari alpha dan beta diperbaharui. Jika cabang dari pohon yang ditemukan di luar dari nilai-nilai ini, maka akan dilakukan pemotongan pada cabang.

2.6.4 Zero-Width Test

Pemotongan jenis alpha dan beta telah kita ketahui sejauh ini ialah terkadang disebut jenis “fail-soft". Jika gagal, maka ia akan mengembalikan nilai terbaik yang


(38)

diperolehnya sejauh ini. Pada dasarnya pemotongan alpha beta hanya akan mengembalikan baik nilai alpha ataupun nilai beta sebagai nilai jika gagal (tergantung apakah itu gagal tinggi atau gagal rendah). Informasi tambahan dalam jenis fail-soft dapat membantu menemukan suatu solusi. Hal ini memungkinkan kita untuk menebak nilai awal dan mengulangi pencarian dengan jendela yang lebih masuk akal (Zero-Width Test). Tanpa fail-soft, kita tidak akan tahu seberapa jauh gerakan yang kita tebak.

Pada dasarnya algoritma Negascout menggabungkan pencarian Minimax dengan pemotongan alpha beta dan pemanggilan zero-width test. Negascout tidak selebar pencarian dengan algoritma Minimax. Negascout menggunakan algoritma pemotongan alpha dan beta untuk melakukan uji coba tersebut.

Negascout bekerja dengan melakukan pemeriksaan secara menyeluruh pada langkah pertama dalam setiap posisi papan. Hal ini dilakukan pada suatu jendela pencarian luas, sehingga algoritma tidak gagal. Berturut-turut langkah diuji menggunakan suatu jalur berdasarkan nilai dari langkah pertama. Jika berhasil, maka akan diulangi pada jendela dengan lebar sebenarnya.

Gambar 2.15 Pohon permainan dengan algoritma Negascout (Ian Milington, 2006)


(39)

BAB 3

ANALISIS DAN PERANCANGAN

Kecerdasan buatan merupakan salah satu bidang ilmu yang penting pada ilmu komputer. Banyak permainan komputer yang memanfaatkan kecerdasan buatan untuk membuat permainan tersebut bertindak cerdas dengan memilih langkah terbaik pada permainan. Tetapi banyak orang yang memainkan permainan tersebut tidak mengerti cara kerja dari kecerdasan buatan itu sendiri. Oleh karena itu, penulis mencoba membuat suatu aplikasi permainan Checker yang memiliki kecerdasan buatan dan menjelaskan bagaimana cara kerja kecerdasan buatan pada permainan Checker.

3.1 Fungsi Evaluasi pada Checker

Dalam suatu pemainan yang berbasis giliran (turn based game), tugas dari fungsi evaluasi ialah untuk melihat kondisi permainan dan memberikan nilai dari sudut padang satu pemain (Ian Milington, 2006). Nilai dihitung pada kedua sisi pemain dan fungsi memberikan nilai positif untuk sisi pemain yang sedang melangkah dan nilai negatif untuk pemain yang tidak sedang melangkah. Nilai evaluasi ialah nilai balik yang diberikan oleh fungsi evaluasi.

Penulis memberikan beberapa nilai evaluasi yang digunakan dalam aplikasi permainan Checker. Setiap nilai evaluasi memiliki tujuan masing-masing yang merupakan strategi dalam permainan. Nilai-nilai tersebut adalah sebagai berikut.


(40)

3.1.1 Nilai Bidak

Setiap langkah yang dilakukan oleh bidak pion akan memberikan nilai +0. Tetapi setiap langkah yang dilakukan bidak raja akan memperoleh nilai +5. Hal ini diberikan karena bidak raja memiliki peluang yang lebih besar dalam menghabisi bidak lawan.

3.1.2 Nilai Melompat

Strategi utama dalam permainan Checker ialah strategi untuk memaksimalkan proses memakan bidak lawan. Karena kondisi menang diperoleh jika semua bidak lawan telah habis. Hal ini menyebabkan nilai melompat memiliki nilai yang paling besar pada permainan. Setiap gerakan melompat penulis memberikan nilai +100.

3.1.3 Nilai Posisi

Strategi lain yang digunakan ialah strategi perubah langkah bidak dalam permainan. Setiap kotak dalam permainan diberi suatu nilai yang akan digunakan untuk mengevaluasi langkah bidak.

Gambar 3.1 Strategi perpindahan bidak Checker (Nadhira Ayuningtyas, 2008)


(41)

Nilai-nilai pada gambar 3.1 merupakan nilai dari strategi posisi bidak dalam permainan Checker. Pada gambar tersebut dapat kita lihat bahwa nilai tertinggi terdapat pada kotak-kotak yang berada pada pinggir papan. Hal ini dikarenakan kotak pada pinggir papan merupakan kotak yang paling strategis, karena jika ada bidak pada kotak ini maka bidak tersebut tidak bisa dimakan oleh bidak lawan.

3.1.4 Nilai Penobatan Raja

Agar dapat lebih leluasa dalam memakan bidak lawan maka sedapat mungkin seorang pemain harus menciptakan bidak raja di pihaknya. Hal ini terjadi bila bidak pion mencapai baris depan terjauh (baris raja). Dengan menjadi raja, maka bidak mampu bergerak maju atau mundur baik dalam melangkah maupun dalam memakan bidak lawan sedangkan pion biasa hanya dapat berjalan maju saja. Penulis memberikan nilai +50 ketika terjadi kondisi penobatan raja.

3.2 Pohon Permainan dan Nilai Evaluasi

Pohon permainan ialah pohon yang menggambarkan kondisi-kondisi yang mungkin terjadi pada permainan, dimulai dari kondisi yang sedang dihadapi hingga beberapa kondisi ke depan. Pohon permainan merupakan representasi grafis dari contoh permainan.

Penulis akan membuat suatu pohon permainan untuk suatu kondisi permainan Checker dan membatasi akar pohon hanya sampai tingkat 3. Berikut ialah gambar kondisi permainan pada Checker.


(42)

Gambar 3.2 Kondisi permainan pada Checker

Dari kondisi gambar 3.2, penulis dapat membuat suatu pohon permainan yang dapat merepresentasikan contoh permainan. Pohon permainan harus sesuai dengan segala kondisi permainan yang berlaku mulai dari langkah-langkah yang boleh dilakukan sampai aturan-aturan permainan. Gambar 3.3 merupakan pohon permainan yang diperoleh dari kondisi permainan gambar 3.2.

Gambar 3.3 Pohon permainan pada Checker

Pada gambar 3.3 menjelaskan giliran bermain pada sisi merah. Sisi merah memiliki 5 kemungkinan langkah yaitu 11-15 (memindahkan bidak ada kotak 11 ke kotak 15), 11-16, 4-8, 10-14 dan 10-15. Jika sisi merah memilih langkah 11-15, maka ketika giliran sisi putih bermain ia memiliki 1 kemungkinan langkah yang sesuai dengan aturan permainan yaitu gerakan melompat 18-11, demikian seterusnya.


(43)

Setelah membangun suatu pohon permainan, maka penulis memberikan nilai evaluasi pada setiap langkah yang terjadi pada pohon permainan. Seperti yang telah kita ketahui bahwa nilai evaluasi dihitung dari sudut pandang satu pemain, dalam kondisi ini penulis mengevaluasi langkah dari sisi merah. Artinya nilai evaluasi dikali positif untuk langkah sisi merah dan nilai evaluasi dikali negatif untuk langkah sisi putih.

Gambar 3.4 Pohon dengan nilai evaluasi pada setiap langkah

Pada gambar 3.4 penulis mengganti setiap langkah pada pohon permainan, dengan nilai evaluasi pada langkah tersebut sesuai dengan nilai-nilai evaluasi yang telah penulis jelaskan pada pembahasan sebelumnya. Tabel 3.1 berisi penjelasan bagaimana nilai-nilai tersebut diperoleh.


(44)

Tabel 3.1 Proses menghitung nilai evaluasi Node

Langkah (m = merah,

p = putih)

Nilai Bidak Nilai Gerakan Melompat Nilai Posisi Nilai Penobatan Raja Nilai Akhir

a m(11-15) 0 0 -1 0 0+0-1+0 = -1

b m(11-16) 0 0 1 0 0+0+1+0 = 1

c m(4-8) 0 0 -1 0 0+0-1+0 = -1

d m(10-14) 0 0 0 0 0+0+0+0 = 0

e m(10-15) 0 0 -1 0 0+0-1+0 = -1

f p(18-11) 0 -100 -1 0 0-100-1+0 = -101

g p(19-12) 0 -100 -2 0 0-100-2+0 = -102

h p(18-14) 0 0 -1 0 0+0-1+0 = -1

i p(18-15) 0 0 0 0 0+0+0+0 = 0

j p(19-15) 0 0 1 0 0+0+1+0 = 1

k p(19-16) 0 0 -1 0 0+0-1+0 = -1

l p(18-9) 0 -100 -2 0 0-100-2+0 = -102

m p(19-10) 0 -100 0 0 0-100+0+0 = -100

Algoritma Minimax menggunakan penelusuran Depth-First Search (DFS) untuk menelusuri pohon permainan dan memberikan nilai pada setiap simpul yang telah dilaluinya. Agar algoritma bekerja sesuai dengan yang diharapkan, maka nilai- nilai evaluasi yang telah diperoleh harus berada pada leaf node pohon. Hal ini dapat dilakukan dengan menjumlahkan nilai-nilai evaluasi setiap node yang menuju leaf node tersebut.

Gambar 3.5 Pohon dengan nilai evaluasi pada leaf node

Pada gambar 3.5 tampak bahwa setiap nilai evaluasi telah berada pada leaf node. Sehingga algoritma minimax dapat berjalan pada pohon tersebut.


(45)

3.3 Analisis Algoritma Minimax

Algoritma Minimax merupakan salah satu implementasi dari pencarian DFS (Depth-First Search) dalam melakukan pencarian pada pohon. DFS akan menelusuri simpul paling dalam terlebih dahulu. Setelah simpul akar dibangkitkan, algoritma ini akan membangkitkan simpul pada tingkat kedua, yang akan dilanjutkan pada tingkat ketiga, dan seterusnya. Penulis akan menjelaskan cara kerja algoritma minimax dari contoh pohon permainan gambar 3.6.


(46)

Tabel 3.2 Analisis algoritma Minimax

Langkah Simpul Nilai Catatan

1 a ∞ Setiap node yang berada pada tingkat min, akan diberi nilai awal ∞, sehingga node min akan mencari nilai yang lebih

kecil dari ∞

2 f -∞ Node yang berada pada tingkat max, akan diberi nilai awal

-∞, sehingga node max akan mencari nilai yang lebih besar

dari -∞

3 f -102 -∞ < -102 (benar), update f = -102 4 f -102 -102 < -103 (salah), f = -102 5 f -102 -102 < -103 (salah), f = -102 6 a -102 ∞ > -102 (benar), update a = -102 7 root -102 -∞ < -102 (benar), update root = -102

Nilai root sementara disimpan sebagai nilai maksimun pemain.

8 b ∞

9 g -∞

10 g -101 -∞ < -101 (benar), update g = -101 11 g -101 -101 < -102 (salah), g = -101 12 g -101 -101 < -102 (salah), g = -101 13 b -101 ∞ > -101 (benar), update b = -101 14 root -101 -102 < -101 (benar), update root = -101

15 c ∞

16 h -∞

17 h 99 -∞ < 99 (benar), update h = 99

18 c 99 ∞ > 99 (benar), update c = 99

19 i -∞

20 i 97 -∞ < 97 (benar), update i = 97

21 c 97 99 > 97 (benar), update c = 97 (node Min, mencari nilai terkecil)

22 j -∞

23 j 98 -∞ < 98 (benar), update j = 98

24 c 97 97 > 98 (salah), c = 97

25 k -∞

26 k 100 -∞ < 100 (benar), update k = 100

27 c 97 97 > 100 (salah), c =97

28 root 97 -101 < 97 (benar), update root = 97

29 d ∞

30 l -∞

31 l -103 -∞ < -103 (benar), update l = -103 32 l -101 -103 < -101 (benar), update l = -101 33 l -101 -101 < -103 (salah)

34 d -101 ∞ > -101 (benar), update d = -101

35 root 97 97 < -101 (salah)

36 e ∞

37 m -∞

38 m -101 -∞ < -101(benar), update m = -101 39 m -99 -101 < -99 (benar), update m = -99 40 m -99 -99 < -101 (salah)

41 e -99 ∞ > -99 (benar), update e = -99

42 root 97 97 < -99 (salah), pencarian selesai dengan hasil akhir ialah 97.


(47)

3.4 Analisis Algoritma Negascout

Setelah mengetahui cara kerja dari algoritma Minimax, selanjutnya penulis akan menganalisis algoritma Negascout. Dalam menganalisis algoritma Negascout, penulis menggunakan contoh pohon permainan yang berbeda dengan sebelumnya. Hal ini disebabkan sebagian node pada pohon permainan gambar 3.6 hanyalah memiliki satu cabang saja. Jika algoritma Negascout digunakan untuk mencari pada pohon tersebut, maka tidak akan terlihat perbedaan antara algoritma Minimax dengan algoritma Negascout. Oleh sebab itu penulis menggunakan pohon permainan pada gambar 3.7 sebagai contoh yang akan dianalisis oleh algoritma Negascout.

Gambar 3.7 Pohon permainan menggunakan algoritma Negascout

Analisis lengkap dari pohon permainan diperlihatkan pada tabel 3.2 yang memperlihatkan bagaimana proses nilai berpindah pada pohon langkah demi langkah.


(48)

Tabel 3.3 Tabel analisis algoritma Negascout

Langkah Simpul Alpha Beta Catatan

1 a -∞ ∞ Nilai alpha dimulai dengan -∞ dan nilai beta dimulai dengan ∞.

2 b -∞ ∞ -

3 d -∞ ∞ -

4 d 5 ∞ Dalam tahap ini, kita telah menelusuri cabang-cabang dari simpul “d”, dan mendapat nilai terbaik ialah 5 (karena 5 > 4). Dimana nilai ini akan dinaikkan ke simpul “b”

5 b -∞ 5 Pada simpul min, kita mengharapkan nilai yang akan diperoleh ialah nilai yang lebih kecil dari 5. Sekarang kita harus menelusuri cabang-cabang dari simpul “e” untuk mencari nilai yang lebih rendah.

6 e -∞ 5 -

7 e 6 5 Pemotongan Beta

Nilai 6 diperoleh dari cabang pertama simpul “e”. Pemain Min akan menyadari bahwa ia akan mendapat nilai yang lebih baik jika memilih langkah “d” dari pada langkah “e”. Karena pada langkah “e”, Min akan mendapat nilai maksimum 6 sedangkan pada d akan mendapat nilai 5. Sekarang kita dapat mengabaikan cabang-cabang dari simpul “e” yang lain.

8 a 5 ∞ Nilai 5 telah dinaikkan ke akar “a”. Sekarang Max telah mengetahui bahwa sekarang nilai terbaiknya setidaknya ialah 5. Ia perlu mencari apakah ia dapat nilai yang lebih baik.

9 c 5 ∞ -

10 f 5 ∞ -

11 f 5 7 Pemotongan Null Window.

Nilai 7 diperoleh pada cabang pertama dari simpul “f”. Dalam negascout terjadi pemotongan null window yang artinya algoritma menebak bahwa 7 ialah nilai terbaik dari simpul “f”. Permotongan ini terjadi karena 7 > alpha.

12 c 7 5

13 g 7 5 Setelah menelusuri cabang-cabang dari simpul “g”, nilai yang diperoleh ialah 4. Ketika 4 dibandingkan dengan nilai beta. Ternyata 5 > 4. Sehingga pencarian selesai dengan nilai optimal yang diperoleh ialah 5.


(49)

3.4.1 Pseudo Code

Dengan menggunakan algoritma Minimax dengan Negascout, maka akan terciptalah suatu kecerdasan buatan dengan waktu pencarian optimal untuk suatu permainan. Negascout telah menjadi jantung bagi banyak software permainan terbaik di dunia. Program-program tersebut bahkan telah mampu mengalahkan pemain-pemain juara.

Tabel 3.4 Tabel pseudo code Negascout

1 FUNCTION negascout (p: POSITION; alpha, beta, depth: INTEGER) : INTEGER;

2 VAR i,t,m,n: INTEGER;

3 BEGIN

4 IF depth = d THEN RETURN (evaluate(p))

5 ELSE

6 BEGIN m := -INFINITY;

7 n := beta;

8 FOR i := 1 TO b DO

9 BEGIN t:= -negascout (p.i, -n, -max(alpha,m), depth+1);

10 IF t > m THEN

11 IF (n = beta) OR (depth >= d-2)

12 THEN m := t

13 ELSE m := -negascout (p.i, -beta, -t, depth+1);

14 IF m >= beta THEN RETURN (m);

15 n := max (alpha, m) +1;

16 END;

17 RETURN (m);

18 END;

19 END;

Keterangan pseudo code: p = kondisi papan

d = kedalaman maksimum dari pohon yang ditelusuri

b = lebar pohon (banyak langkah yang mungkin terjadi pada papan) evaluate(p ) = merupakan fungsi yang memberikan nilai evaluasi pada kondisi


(50)

3.4.2 Kinerja Algoritma

Algoritma Negascout memiliki banyak keuntungan dibandingkan dengan algoritma Minimax. Keuntugan itu ialah adanya pemotongan pada cabang yang tidak berguna dalam pohon permainan. Pemotongan-pemotongan tersebut antara lain pemotongan alpha, pemotongan beta dan pemotongan null window. Hal ini menyebabkan Negascout memiliki proses pencarian yang jauh lebih optimal.

Negascout akan memiliki waktu pencarian yang paling optimal, ketika Negascout mendapatkan langkah terbaik pada langkah pertama dilakukannya pencarian. Hal ini dikarenakan Negascout tidak melakukan pencarian ulang pada jendela yang telah dipotongnya.

3.5 Pemodelan Visual Menggunakan UML

Penulis menggunakan Unified Modeling Language (UML) dalam mendesain dan merancang aplikasi permainan Checker. UML yang akan digunakan ialah use case diagram, activity diagram, dan class diagram.

3.5.1 Identifikasi Use Case Diagram

Untuk mengetahui actor dan use case yang akan digunakan, maka dilakukan identifikasi actor dan identifikasi use case. Setelah mendapatkan actor dan use case, maka use case diagram dapat digambarkan.

Identifikasi actor dilakukan dengan menjawab pertanyaan-pertanyaan berikut, yaitu:

1. Siapa yang menggunakan sistem? Jawaban:


(51)

2. Siapa yang diperlukan untuk melaksanakan fungsi pada sistem? Jawaban:

Pemain.

3. Bagaimana pemakai menggunakan sistem? Jawaban:

Pemain menggunakan sistem dengan memindahkan bidak pada papan permainan untuk dapat bermain melawan agen. Pemain juga dapat memulai permainan baru dengan memilih tingkat kesulitan dan warna pemain. Pemain dapat melihat halaman about. Pemain dapat berhenti dari permainan dengan cara keluar dari aplikasi permainan.

Dengan demikian actor yang diperoleh adalah pemain. Untuk mendapatkan use case dari pemain, maka harus ditentukan hal-hal apa saja yang dapat dilakukan pemain pada sistem. Berikut adalah hal-hal yang dapat dilakukan oleh pemain:

1. Memulai permainan baru

2. Memindahkan bidak pada papan permainan 3. Melihat halaman about

4. Keluar dari aplikasi permainan

Berikut adalah use case diagram yang digambarkan berdasarakan actor dan use case yang telah diperoleh.


(52)

Gambar 3.8 Use case diagram Checker 3.5.1.1 Use Case Permainan Baru

Berikut ini merupakan tabel dokumentasi naratif dari setiap use case Permainan Baru.

Tabel 3.5 Dokumentasi Naratif Use Case Permainan Baru

Nama use case Permainan Baru

Aktor Pemain

Deskripsi Use case ini mendeksripsikan proses memulai suatu permainan baru.

Prakondisi Sudah masuk ke tampilan aplikasi permainan Checker.

Bidang khas suatu kejadian

Kegiatan Pemain Respons Sistem 1. Klik menu “File”

2 Pilih menu item “New Game”

3. Pilih tingkat kesulitan dan warna pemain

4. Klik tombol “New Game”

2. Tampilkan jendela “New Game”

5. Buat permainan baru dengan tingkat kesulitan dan warna pemain yang telah diberikan.

6. Tutup jendela “New Game"

Bidang alternatif Alt-4: tombol “Cancel”, maka jendela akan ditutup oleh sistem dan permainan dilanjutkan tanpa perubahan

Postkondisi Permainan dimulai dari awal dengan tingkat kesulitan dan warna yang sesuai dengan pilihan pemain.


(53)

Activity diagram untuk use case Permainan Baru adalah sebagai berikut.


(54)

3.5.1.2 Use Case Pindah Bidak

Berikut ini merupakan tabel dokumentasi naratif dari setiap use case Pindah Bidak.

Tabel 3.6 Dokumentasi Naratif Use Case Pindah Bidak

Nama Use case Pindah Bidak

Aktor Pemain

Deskripsi Use case ini mendeskripsikan proses memindahkan bidak pada papan permainan.

Prakondisi Sudah masuk ke tampilan aplikasi permainan Checker.

Bidang khas suatu kejadian

Kegiatan Pemain Respons Sistem 1. Klik bidak yang akan

dipindahkan.

3. Klik langkah yang akan dilakukan bidak

2. Tampil kemungkinan langkah bidak.

4. Update papan permainan sesuai dengan perpindahan bidak yang dilakukan pemain.


(55)

Activity diagram untuk use case Pindah Bidak adalah sebagai berikut.


(56)

3.5.1.2 Use Case Help About

Berikut ini merupakan tabel dokumentasi naratif dari setiap use case Help About.

Tabel 3.7 Dokumentasi Naratif Use Case Help About

Nama Use case Help About

Aktor Pemain

Deskripsi Use case ini mendeskripsikan proses menampilkan jendela About The Checker.

Prakondisi Sudah masuk ke tampilan aplikasi permainan Checker.

Bidang khas suatu kejadian

Kegiatan Pemain Respons Sistem 1. Klik menu “Help”

2. Klik menu item “About”

4. Klik tombol “Close”

3. Tampilkan jendela “About The Checker”

5. Tutup jendela “About The Checker”


(57)

Activity diagram untuk use case Help About adalah sebagai berikut.


(58)

3.5.1.2 Use Case Keluar Permainan

Berikut ini merupakan tabel dokumentasi naratif dari setiap use case Keluar Permainan.

Tabel 3.8 Dokumentasi Naratif Use Case Keluar Permainan

Nama Use case Keluar Permainan

Aktor Pemain

Deskripsi Use case ini mendeskripsikan proses keluar dari aplikasi permainan Checker

Prakondisi Sudah masuk ke tampilan aplikasi permainan Checker.

Bidang khas suatu kejadian

Kegiatan Pemain Respons Sistem 1. Klik menu “File”

2. Klik menu item “Exit”

3. Jendela aplikasi permainan Checker ditutup

Postkondisi Permainan berakhir dan jendela aplikasi permainan Checker ditutup.


(59)

Activity diagram untuk use case Keluar Permainan adalah sebagai berikut.

Gambar 3.12 Activity diagram Keluar Permainan

3.5.2 Perancangan Class Diagram Checker

Class diagram dirancang untuk menentukan objek-objek yang dibutuhkan untuk perancangan sistem. Setiap kelas memiliki attributes dan methods masing-masing sesuai dengan kebutuhan kelas tersebut. Dengan adanya class diagram, perancangan sistem jelas berbasis OOP (Object Oriented Programming).


(60)

(61)

Setiap kelas pada gambar 3.13 memiliki kegunaan masing-masing. Kegunaan kelas-kelas tersebut dijelaskan pada tabel berikut:

Tabel 3.9 Penjelasan Kelas-Kelas Pada Class Diagram Checker

Kelas Kegunaan

Main Kelas utama inisialisasi awal sistem. Semua kelas dieksekusi melalui kelas ini.

FileNewGame Menampilkan jendela “New Game”

FileHelpAbout Menampilkan jendela “About The Checker”

TheGame Kelas yang menampilkan permainan Checker. Semua aktifitas permainan Checker terletak pada kelas ini.

BoardMap Kelas turunan dari JLabel, untuk mempermudah penggantian gambar bidak pada papan Checker.

GameTreeSearch Kelas yang berisi algoritma pencarian Negascout yang dipakai untuk mencari langkah terbaik pada papan.

Board

Merepresentasikan papan pada sebuah array, dan dengan kelas ini proses-proses untuk memanipulasi papan dilakukan.

Map Merupakan kelas yang menampilkan alamat kotak pada papan permainan.

Bidak Kelas yang berisi bidak serta aturan-aturan langkah yang dimiliki oleh bidak.

EvaluateMove Memberikan nilai evaluasi permainan. Moves Berisi langkah-langkah bidak.

Move Merupakan kelas nilai balik dari GameTreeSearch, yang berisi perpindahan bidak dan nilai yang diperolehnya.


(62)

BAB 4

IMPLEMENTASI DAN PENGUJIAN

Implementasi dan pengujian sistem akan dijelaskan pada bab ini. Implementasi sistem harus sesuai dengan analisis dan perancangan sistem. Penjelasan tentang implementasi sistem dilakukan untuk mengetahui hasil dari aplikasi yang dirancang, dan pengujian sistem dilakukan untuk membuktikan kebenaran proses berpikir agen cerdas yang berjalan pada sistem.

4.1 Implementasi

Penulis menggunakan bahasa pemrograman Java berbasis Swing untuk implementasi aplikasi permainan Checker, dan menggunakan Integrated Development Environment (IDE) Netbeans 6.9.1. Penggunaan Netbeans bertujuan untuk memudahkan penulis dalam pembuatan aplikasi ini karena mampu menyimpan semua variabel-variabel yang telah diinisialisasi sehingga mudah untuk dipanggil, dan juga mampu memeriksa error pada source code tanpa melewati proses compile.

4.1.1 Konfigurasi Perangkat Keras

Pada pengimplementasian aplikasi permainan Checker, penulis menggunakan sebuah komputer yang mempunyai spesifikasi perangkat keras sebagai berikut:

1. Prosesor Intel Pentium 4 CPU 2.80 Ghz. 2. Memory 1.00 GB.


(63)

4. VGA HIS Radeon X1550.

4.1.2 Konfigurasi Perangkat Lunak

Pada pengimplementasian aplikasi permainan Checker, penulis menggunakan Sistem Operasi Windows XP Service Pack 2, 32 bit. Dengan menggunakan Java Standard Edition (SE) Development Kit 6 Update 22.

4.1.3 Hasil Eksekusi Aplikasi

Ketika aplikasi dieksekusi maka akan tampil satu jendela baru yaitu jendela “The Checker” yang merupakan aplikasi permainan Checker. Pemain mendapat kesempatan bermain sebagai sisi merah ketika aplikasi pertama kali dieksekusi. Pemain dengan sisi berwarna merah selalu memulai permainan dengan melakukan langkah pertama pada setiap permainan.

Gambar 4.1 Tampilan awal aplikasi permainan Checker

Berikut ialah penjelasan mengenai penomoran yang ada pada gambar 4.1. 1. Judul aplikasi (The Checker)


(64)

3. Menu Help 4. Status Permainan 5. Papan Permainan 6. Bidak merah

7. Bidak merah yang boleh digerakkan 8. Bidak putih

9. Catatan langkah

Status permainan akan berubah-ubah selama permainan berlangsung. Jika pemain mendapat giliran melangkah, maka status permainan ialah “Silahkan Melangkah”. Sedangkan jika agen yang mendapat giliran melangkah, maka status permainan ialah “Agen Sedang Berpikir”. Dengan adanya status permainan, maka pemain dapat mengetahui giliran bermainnya atau mengetahui bahwa agen sedang melakukan proses pencarian terhadap langkah yang akan dilakukannya.

Catatan langkah merupakan catatan berisi langkah-langkah yang telah dilakukan sebelumnya oleh pemain dan agen selama permainan berlangsung. Catatan ini berfungsi untuk evaluasi permainan atau untuk melihat langkah yang telah dilakukan sebelumnya.

Untuk melakukan langkah dalam permainan, pemain harus memilih bidak yang akan digerakkan. Bidak-bidak yang boleh digerakkan hanyalah bidak-bidak yang telah ditandai dengan kotak abu-abu. Bidak yang telah ditandai tersebut ialah bidak yang memiliki langkah sesuai dengan semua peraturan permainan. Gambar 4.2 ialah jendela yang akan terjadi jika pemain memilih bidak dengan kotak 11 untuk melakukan langkah.


(65)

Gambar 4.2 Tampilan langkah yang mungkin untuk bidak yang telah dipilh

Untuk menyelesaikan gerakan dari bidak, pemain harus memilih langkah yang akan dilakukan oleh bidak. Langkah tersebut ialah langkah yang tersedia pada kotak yang telah diberi tanda silang kuning. Pada gambar 4.2 terlihat bahwa pemain telah memilih bidak pada kotak 11, maka pada bidak tersebut langkah yang mungkin yaitu pindah ke kotak 15 atau 16. Agar menyelesaikan langkah bidak, pemain harus menekan kotak yang telah ditandai tersebut.

Setelah pemain selesai melakukan langkahnya, maka giliran melangkah akan berpindah kepada agen. Agen mendapat giliran melangkah ditandai dengan berubahnya status permainan menjadi “Agen Sedang Berpikir”.


(66)

Gambar 4.3 Tampilan ketika agen mendapat giliran melangkah

Menu File akan menampilkan menu item “New Game” dan “Exit”. Ketika menu item “Exit” ditekan maka aplikasi permainan Checker akan ditutup. Sedangkan ketika menu item “New Game” ditekan, maka akan keluar jendela “New Game”. Berikut ialah tampilan untuk jendela “New Game”.

Gambar 4.4 Tampilan jendela New Game

Seperti yang telah kita ketahui bahwa kondisi akhir dalam permainan ialah ketika pemain telah berhasil menangkap semua bidak lawan. Berikut ialah akhir dari permainan ketika sisi merah telah dikalahkan oleh sisi putih, karena semua bidak merah telah berhasil ditangkap.


(67)

Gambar 4.5 Tampilan akhir dari permainan ketika bidak lawan telah habis

Sisi merah dimainkan oleh pemain. Ketika sisi merah telah kalah, maka status permainan berubah menjadi “ANDA KALAH..!!”, sedangkan status permainan akan berubah menjadi “ANDA MENANG..!!” ketika pemain telah berhasil memenangkan permainan.

Menu Help akan menampilkan menu item “About”. Berikut ialah gambar jendela ketika menu item “About” ditekan.


(68)

4.2 Pengujian Agen Cerdas

Pengujian dilakukan untuk membuktikan bahwa algoritma Minimax dengan Negascout telah bekerja sesuai dengan rancangan pada agen cerdas. Pada pengujian ini penulis tidak menggunakan data yang terlalu besar, sehingga penulis hanya menggunakan posisi papan yang memiliki sedikit kemungkinan langkah dan penulis membatasi pengujian ini hanya akan menampilkan proses untuk 4 langkah permainan.

Untuk mempermudah menampilkan data pada tabel, maka penulis hanya menggunakan algoritma Minimax. Sehingga pada tabel tersebut tidak akan terjadi pemotongan yang seharusnya dilakukan dengan menggunakan Negascout.

Pengujian dilakukan dengan melakukan uji pada 3 buah sampel dengan posisi papan yang berbeda, kemudian dilakukan pendataan secara manual dengan menggunakan algoritma Minimax.

4.2.1 Sampel Posisi Pertama

Berikut merupakan posisi papan untuk sampel posisi pertama. Pada sampel ini agen bermain sebagai sisi merah dan mendapat giliran melangkah, agen harus mampu memilih langkah terbaik.


(69)

Pada sampel ini agen memilih untuk melangkah 4-8 (pindahkan bidak pada kotak 4 menuju kotak 8). Untuk menguji apakah langkah yang dipilih oleh agen telah sesuai dengan yang telah dirancang, maka akan dilakukan pengujian menggunakan tabel yang berisi aliran perubahan nilai yang terjadi.

Tabel 4.1 Pohon Permainan untuk Sampel Pertama

Tingkat

0 1 2 3 4

11-15 18-11

10-14

19-15 19-16 11-7 11-8 10-15 19-10

4-8 11-4

11-16 19-12

10-14 18-9 10-15 18-11

4-8 12-3

4-8

18-14 10-17 19-15

19-16

18-15 11-18 19-15

19-16

19-15 10-19 18-14

18-15

19-16 11-20 18-14

18-15

10-14 18-9

11-15 19-10 11-16 19-12

4-8

19-15 19-16 9-5 9-6

10-15 19-10

11-15 18-11 11-16 18-14 18-15 10-6 10-7 4-8 18-14 18-15 10-6 10-7


(70)

Tabel 4.2 Proses Minimax untuk Sampel Pertama Tingkat 0 (Max) 1 (Min) 2 (Max) 3 (Min) 4 (Max) 97

-103 -103

-103

-101 -103 -103 -103

-203 -203

-205 -205

-202 -202

-203 -203

-203 -203

-202 -202

97

98 98 100

98

97 97 99

97

99 99 99

100

99 99 99

100

-104 -104

-203 -203

-203 -203

-104

-102 -104 -104 -103

-101 -101

-203 -203

-101 -101 -100 -101 -101 -103 -103 -102 -103 -103

Tabel 4.2 telah menunjukkan bahwa langkah yang dipilih agen telah sesuai dengan yang ditampilkan pada tabel. Karena agen akan mendapatkan nilai 97 jika agen memilih langkah 4-8.


(71)

4.2.2 Sampel Posisi Kedua

Berikut merupakan posisi papan untuk sampel posisi kedua. Pada sampel ini agen bermain sebagai sisi merah dan mendapat giliran melangkah, agen harus mampu memilih langkah terbaik.

Gambar 4.8 Sampel posisi kedua

Pada sampel ini agen memilih untuk melangkah 27-31 (pindahkan bidak pada kotak 27 menuju kotak 31). Untuk menguji apakah langkah yang dipilih oleh agen telah sesuai dengan yang telah dirancang, maka akan dilakukan pengujian menggunakan tabel yang berisi aliran perubahan nilai yang terjadi.


(72)

Tabel 4.3 Pohon Permainan untuk Sampel Kedua

Tingkat

0 1 2 3 4

10-6 2-9

13-17 21-14 27-31 9-5 9-6 9-14 21-17 27-32 9-5 9-6 9-14 21-17

10-7 2-11

13-17 21-14

27-31 11-7 11-8 11-15 11-16 21-17 27-32 11-7 11-8 11-15 11-16 21-17 13-17 21-14-7

27-31 2-6

7-3

27-32 2-6

7-3 27-31

2-6 10-1 21-17

2-7 10-3 21-17

21-17 13-22 2-6

2-7

27-32

2-6 10-1 21-17

2-7 10-3 21-17

21-17 13-22 2-6


(73)

Tabel 4.4 Proses Minimax untuk Sampel Kedua

Tingkat

0 1 2 3 4

55

-48 -48

-195 -195

-48 -48 -47 -46 -46 -48 -48 -47 -46 -46

-57 -57

-196 -196

-57 -57 -57 -55 -57 -45 -57 -57 -57 -55 -57 -45

-158 -158

-158 -158

-150

-158 -158

-150 55

55 55 55

55 55 55

141 141 141

141

55

55 55 55

55 55 55

141 141 141

141

Tabel 4.4 telah menunjukkan bahwa langkah yang dipilih agen telah sesuai dengan yang ditampilkan pada tabel. Karena agen akan mendapatkan nilai 55 jika agen memilih langkah 27-31.


(74)

4.2.3 Sampel Posisi Ketiga

Berikut merupakan posisi papan untuk sampel posisi ketiga. Pada sampel ini agen bermain sebagai sisi merah dan mendapat giliran melangkah, agen harus mampu memilih langkah terbaik.

Gambar 4.9 Sampel posisi ketiga

Pada sampel ini agen memilih untuk melangkah 24-28 (pindahkan bidak pada kotak 24 menuju kotak 28). Untuk menguji apakah langkah yang dipilih oleh agen telah sesuai dengan yang telah dirancang, maka akan dilakukan pengujian menggunakan tabel yang berisi aliran perubahan nilai yang terjadi.


(75)

Tabel 4.5 Pohon Permainan untuk Sampel Ketiga

Tingkat

0 1 2 3 4

13-17 12-8 17-21 8-3 8-4 20-16 17-22 8-3 8-4 20-16 24-27 8-3 8-4 20-16 24-28 8-3 8-4 20-16 20-16

17-21 12-8 16-11 17-22 12-8

16-11 24-27 12-8

16-11 24-28 12-8

16-11 24-27 12-8 13-17 8-3 8-4 20-16 27-31 8-3 8-4 20-16 27-32 8-3 8-4 20-16 20-16

13-17 12-8 16-11 27-31 12-8

16-11 27-32 12-8

16-11 24-28 12-8 13-17 8-3 8-4 20-16 28-32 8-3 8-4 20-16 20-16

13-17 12-8 16-11 28-32 12-8


(76)

Tabel 4.6 Proses Minimax untuk Sampel Ketiga

Tingkat

0 1 2 3 4

2 -50 -50 -50 -50 -50 2 -52 -52 -52 0 -51 -51 -51 1 -50 -50 -50 2 2

2 2

2

0 0

0

1 1

1

2 2

2 1 1 -51 -51 -51 1 1 1 1 53 1 1 1 53 53

1 1

1

53 53

53

53 53

53 2 2 -50 -50 -50 2 2 2 2 54 54

2 2

2

54 54

54

Tabel 4.6 telah menunjukkan bahwa langkah yang dipilih agen telah sesuai dengan yang ditampilkan pada tabel. Karena agen akan mendapatkan nilai 2 jika agen memilih langkah 24-28.


(77)

4.2.4 Pengujian Waktu Pencarian

Pada pengujian waktu pencarian, penulis akan membandingkan waktu yang diperlukan sistem untuk mengeksekusi algoritma Minimax dengan algoritma Negascout. Keadaan papan yang akan dihitung ialah keadaan papan yang telah dibahas sebelumnya yaitu sampel posisi pertama, sampel posisi kedua, dan sampel posisi ketiga. Tingkat kedalaman yang akan dihitung ialah delapan, sembilan, sepuluh, sebelas, dan dua belas.

Dalam menghitung waktu yang diperlukan sistem, penulis menggunakan aplikasi NetBeans IDE 6.9.1. Ketika kita mengcompile suatu code menggunakan aplikasi NetBeans, maka akan tampak waktu yang diperlukan NetBeans untuk membangun code tersebut. Waktu inilah yang penulis gunakan sebagai acuan dalam pengujian.

Tabel 4.7 Pengujian waktu pada algoritma Minimax

Sampel 1 (detik) Sampel 2 (detik) Sampel 3 (detik)

Tingkat - 8 0 2 1

Tingkat - 9 1 4 2

Tingkat - 10 1 13 3

Tingkat - 11 2 49 7

Tingkat - 12 4 122 19

Tabel 4.8 Pengujian waktu pada algoritma Negascout

Sampel 1 (detik) Sampel 2 (detik) Sampel 3 (detik)

Tingkat - 8 0 0 0

Tingkat - 9 0 1 1

Tingkat - 10 0 1 1

Tingkat - 11 1 1 1


(78)

BAB 5

KESIMPULAN DAN SARAN

5.1 Kesimpulan

Berdasarkan hasil analisis dan pengujian yang telah dilakukan pada bab sebelumnya, maka kesimpulan yang dapat diambil adalah sebagai berikut:

1. Dalam merancang kecerdasan buatan pada permainan Checker terdapat dua bagian penting yang harus dicermati yaitu fungsi evaluasi dan algoritma penelusuran pada pohon permainan.

2. Algoritma Negascout memiliki pencarian yang lebih baik dari algoritma Minimax. Pemotongan pada Negascout dapat meminimalkan waktu yang diperlukan sistem dalam melakukan pencarian.

3. Dengan minimalnya waktu pencarian yang diperlukan sistem, maka kita dapat meningkatkan tingkat kedalaman yang dilakukan pada pencarian untuk lebih mengoptimalkan kerja agen.

4. Tingkat kedalaman yang dilakukan pada algoritma pencarian berbanding lurus dengan dengan tingkat kesulitan permainan. Semakin tinggi tingkat kedalaman yang dilakukan algoritma pencarian, maka semakin sulit agen tersebut dikalahkan.


(1)

Tabel 4.5 Pohon Permainan untuk Sampel Ketiga Tingkat

0 1 2 3 4

13-17 12-8 17-21 8-3 8-4 20-16 17-22 8-3 8-4 20-16 24-27 8-3 8-4 20-16 24-28 8-3 8-4 20-16 20-16

17-21 12-8

16-11

17-22 12-8

16-11

24-27 12-8

16-11

24-28 12-8

16-11 24-27 12-8 13-17 8-3 8-4 20-16 27-31 8-3 8-4 20-16 27-32 8-3 8-4 20-16 20-16

13-17 12-8

16-11

27-31 12-8

16-11

27-32 12-8

16-11 24-28 12-8 13-17 8-3 8-4 20-16 28-32 8-3 8-4 20-16 20-16

13-17 12-8

16-11

28-32 12-8


(2)

Tabel 4.6 Proses Minimax untuk Sampel Ketiga Tingkat

0 1 2 3 4

2 -50 -50 -50 -50 -50 2 -52 -52 -52 0 -51 -51 -51 1 -50 -50 -50 2 2

2 2

2

0 0

0

1 1

1

2 2

2 1 1 -51 -51 -51 1 1 1 1 53 1 1 1 53 53

1 1

1

53 53

53

53 53

53 2 2 -50 -50 -50 2 2 2 2 54 54

2 2

2

54 54


(3)

4.2.4 Pengujian Waktu Pencarian

Pada pengujian waktu pencarian, penulis akan membandingkan waktu yang diperlukan sistem untuk mengeksekusi algoritma Minimax dengan algoritma Negascout. Keadaan papan yang akan dihitung ialah keadaan papan yang telah dibahas sebelumnya yaitu sampel posisi pertama, sampel posisi kedua, dan sampel posisi ketiga. Tingkat kedalaman yang akan dihitung ialah delapan, sembilan, sepuluh, sebelas, dan dua belas.

Dalam menghitung waktu yang diperlukan sistem, penulis menggunakan aplikasi NetBeans IDE 6.9.1. Ketika kita mengcompile suatu code menggunakan aplikasi NetBeans, maka akan tampak waktu yang diperlukan NetBeans untuk membangun code tersebut. Waktu inilah yang penulis gunakan sebagai acuan dalam pengujian.

Tabel 4.7 Pengujian waktu pada algoritma Minimax

Sampel 1 (detik) Sampel 2 (detik) Sampel 3 (detik)

Tingkat - 8 0 2 1

Tingkat - 9 1 4 2

Tingkat - 10 1 13 3

Tingkat - 11 2 49 7

Tingkat - 12 4 122 19

Tabel 4.8 Pengujian waktu pada algoritma Negascout

Sampel 1 (detik) Sampel 2 (detik) Sampel 3 (detik)

Tingkat - 8 0 0 0

Tingkat - 9 0 1 1

Tingkat - 10 0 1 1

Tingkat - 11 1 1 1


(4)

BAB 5

KESIMPULAN DAN SARAN

5.1 Kesimpulan

Berdasarkan hasil analisis dan pengujian yang telah dilakukan pada bab sebelumnya, maka kesimpulan yang dapat diambil adalah sebagai berikut:

1. Dalam merancang kecerdasan buatan pada permainan Checker terdapat dua bagian penting yang harus dicermati yaitu fungsi evaluasi dan algoritma penelusuran pada pohon permainan.

2. Algoritma Negascout memiliki pencarian yang lebih baik dari algoritma Minimax. Pemotongan pada Negascout dapat meminimalkan waktu yang diperlukan sistem dalam melakukan pencarian.

3. Dengan minimalnya waktu pencarian yang diperlukan sistem, maka kita dapat meningkatkan tingkat kedalaman yang dilakukan pada pencarian untuk lebih mengoptimalkan kerja agen.

4. Tingkat kedalaman yang dilakukan pada algoritma pencarian berbanding lurus dengan dengan tingkat kesulitan permainan. Semakin tinggi tingkat kedalaman yang dilakukan algoritma pencarian, maka semakin sulit agen tersebut dikalahkan.


(5)

5.2 Saran

Beberapa saran yang dapat dijadikan pertimbangan dalam mengembangkan penelitian ini antara lain:

1. Perlu dibuat database yang berisi pengetahuan-pengetahuan dari agen. Sehingga dengan adanya database ini, agen mampu melakukan pembelajaran dari pengalaman sebelumnya dan menyimpan semua informasi pembelajaran tersebut ke dalam database.

2. Nilai random dapat diberikan pada fungsi evaluasi permainan. Hal ini dilakukan agar tipe permainan dari agen mampu bervariatif untuk setiap permainan.


(6)

DAFTAR PUSTAKA

Ayuningtyas, Nadhira. 2008. “Algoritma Minimax dalam Permainan Checker”. Dalam Strategi Algoritmik. Bandung, Indonesia: Institut Teknologi Bandung.

Coppin, Ben. 2004. Artificial Intelligence Illuminated. United States of America: Jones and Bartlett.

Millington, Ian. 2006. Artificial Intelligence For Games. United States of America: Morgan Kaufmann.

Stuart Russel and Peter Norvig. 2003. Artificial Inteligence A Modern Approach. Second Edition. United States of America: Prentice Hall.

Tim Jones, M. 2008. Artificial Intelligence A Systems Approach. Hingham Massachusetts: David Pallai.