iv
Universitas Kristen Maranatha
ABSTRAK
Engine catur telah menjadi medan riset banyak peneliti AI dunia, banyak
aspek dari sebuah engine catur dapat diimplementasi dengan berbagai
metode alternatif, namun terdapat algoritma yang umumnya diterapkan,
yaitu algoritma pencarian minmax dengan alpha beta pruning. Selain dari
algoritma pencarian, struktur data yang dipakai juga bermacam-macam,
salah satu struktur data yang menarik untuk dijadikan materi riset adalah
struktur data bitboard.
Untuk lebih mengerti secara lebih jelas mengenai sebuah engine catur,
penulis membuat sendiri engine catur, terutama engine catur yang
menggunakan bitboard sebagai representasi papan catur.
Dalam proses pengembangan engine catur, penulis mendapati bahwa
selain efektifitas suatu algoritma yang diterapkan dalam sebuah engine
catur, optimasi juga merupakan bagian yang penting, mengingat
banyaknya kemungkinan langkah yang dapat dihasilkan dari sebuah
posisi papan catur, oleh karena itu, optimasi juga menjadi bagian penting
dalam tulisan ini.
Hasil yang dicapai dari pengembangan engine catur ini adalah bahwa
hasil riset dan aplikasi yang diperoleh dari hasil riset ini dapat menjadi
dasar bagi pengembangan engine catur lain.
v
Universitas Kristen Maranatha
ABSTRACT
A chess engine has been a research ground for many AI researchers of
the world, many aspects of a chess engine can be implemented with
various methods, though there is a common algorithm applied, which is
minmax with alpha beta pruning. Beside searching algorithm, data
structure used is also varies, one of which is an interesting research
material is bitboard.
To understand better about chess engine, writer develops a chess
engine, especially a bitboard based chess engine.
During the developement of the chess engine, writer realises that besides
effectiveness of an algorithm, optimation also plays an important role,
considering the magnitude of possibilities of move of a chess board
position. That is why optimation is also an important part of this writing.
Result of this chess engine developement research is research note and
application produced that can underly other chess engine developement.
vi
Universitas Kristen Maranatha
DAFTAR ISI
KATA PENGANTAR ... i
Lembar Pernyataan Persetujuan Publikasi Karya Ilmiah ... ii
Surat Pernyataan Orisinalitas Karya ... iii
ABSTRAK ... iv
ABSTRACT ... v
DAFTAR ISI ... vi
DAFTAR GAMBAR ... x
DAFTAR PROGRAM ... xi
DAFTAR TABEL ... xii
BAB I. PERSYARATAN PRODUK ... 1
I.1. Pendahuluan ... 1
I.1.1. Tujuan ... 2
I.1.2. Ruang Lingkup Proyek ... 2
I.1.3. Definisi, Akronim, dan Singkatan ... 2
I.1.4. Sistematika Penulisan ... 4
I.2. Gambaran Keseluruhan ... 5
I.2.1. Prespektif Produk ... 5
I.2.2. Fungsi Produk ... 5
I.2.3. Karakteristik Pengguna ... 5
vii
Universitas Kristen Maranatha
I.2.5. Asumsi dan Ketergantungan ... 6
I.2.6. Penundaan Persyaratan ... 6
BAB II. SPESIFIKASI PRODUK ... 7
II.1. Persyaratan Antarmuka Eksternal ... 7
II.1.1. Antarmuka dengan Pengguna ... 7
II.1.2. Antarmuka Perangkat Keras ... 7
II.1.3. Antarmuka Perangkat Lunak ... 8
II.1.4. Antarmuka Komunikasi ... 8
II.2. Fitur Produk Perangkat Lunak ... 8
II.2.1. Input Posisi Papan Catur ... 8
II.2.2. Kalkulasi Nilai Evaluasi ... 9
II.2.3. Menghasilkan Kemungkinan Langkah Berikut ... 9
II.2.4. Memilih Langkah Terbaik ... 10
II.3. Algoritma Inti ... 10
BAB III. DESAIN PERANGKAT LUNAK ... 13
III.1. Pendahuluan ... 13
III.1.1. Identifikasi ... 13
III.1.2. Overview Sistem... 13
III.2. Keputusan Desain Perangkat Lunak Secara Keseluruhan ... 14
III.2.1. Struktur Data yang Dipakai ... 14
III.2.2. Penerapan Algoritma Minmax ... 14
III.3. Desain Arsitektur Perangkat Lunak ... 15
III.3.1. Komponen Perangkat Lunak ... 15
III.3.2. Konsep Eksekusi ... 16
viii
Universitas Kristen Maranatha
BAB IV. Pengembangan Sistem ... 25
IV.1. Perencanaan Tahap Implementasi ... 25
IV.1.1. Pembagian Modul/Prosedur/Class Implementasi ... 25
IV.1.2. Keterkaitan antar Modul/Prosedur/Class ... 26
IV.2. Perjalanan Tahap Implementasi ... 27
IV.2.1. Top Down/ Bottom Up Implementasi ... 27
IV.2.2. Ulasan Source code ... 27
IV.2.3.2. Move Generation ... 44
IV.2.4. Ulasan Realisasi Fungsionalitas ... 45
BAB V. TESTING DAN EVALUASI SISTEM... 46
V.1. Rencana Pengujian Sistem Terimplementasi ... 46
V.1.1. TestCase ... 46
V.1.2. Uji Fungsionalitas Modul/Class ... 52
V.2. Perjalanan Metodologi Pengujian ... 52
V.2.1. BlackBox ... 52
V.2.1. WhiteBox ... 56
V.2.2. Optimasi ... 56
V.3. Ulasan Hasil Evaluasi ... 60
ix
Universitas Kristen Maranatha VI.2. Keterkaitan antara Kesimpulan dengan Hasil Evaluasi ... 61
VI.3. Keterkaitan antara Saran dengan Hasil Evaluasi ... 62
VI.4. Rencana Perbaikan/Implementasi terhadap Saran yang Diberikan ... 62
DAFTAR PUSTAKA ... 63
x
Universitas Kristen Maranatha
DAFTAR GAMBAR
Gambar II-1 Contoh Pohon Pencarian[7] ... 12
Gambar III-1 Class Diagram Komponen Perangkat Lunak ... 15
Gambar III-2 Use Case Sistem ... 17
Gambar III-3 Activity diagram kalkulasi nilai evaluasi ... 19
Gambar III-4 Activity Diagram generasi langkah ... 20
Gambar III-5 Activity diagram pemilihan langkah terbaik ... 21
Gambar III-6 Activity diagram input posisi papan catur ... 22
Gambar III-7 Sequence Diagram ... 22
Gambar III-8 Desain Antar Muka ... 24
Gambar IV-1 Ilustrasi Keterkaitan antar Modul ... 26
Gambar V-1 TestCase 1 ... 46
Gambar V-2 TestCase 2 ... 47
Gambar V-3 TestCase 3 ... 48
Gambar V-4 TestCase 4 ... 48
Gambar V-5 TestCase 5 ... 49
Gambar V-6 TestCase 6 ... 49
Gambar V-7 TestCase 7 ... 50
Gambar V-8 TestCase 8 ... 50
Gambar V-9 TestCase 9 ... 51
Gambar V-10 TestCase 10 ... 51
xi
Universitas Kristen Maranatha
DAFTAR PROGRAM
Program II-1 Pseudocode minmax[7] ... 11
Program IV-1 Cuplikan Program ClassPieceMove ... 27
Program IV-2 Cuplikan Program ClassBitboard ... 29
Program IV-3 Cuplikan Program Properti dalam Class MoveGeneration 30 Program IV-3 Cuplikan Program Properti dalam Class MoveGeneration 31 Program IV-4 Cuplikan Program Utility Method dalam Class MoveGeneration ... 33
Program IV-5 Cuplikan Method bitToMove Versi Pertama ... 34
Program IV-6 Cuplikan Method bitToMove Versi Kedua ... 35
Program IV-7 Cuplikan Method bitToMove Versi Ketiga ... 36
Program IV-8 Cuplikan Method bitPosition ... 36
Program IV-9 Cuplikan method clearBB Versi Pertama ... 38
Program IV-10 Cuplikan method clearBB Versi Kedua ... 38
Program IV-11 Cuplikan method clearBB Versi Ketiga ... 39
Program IV-12 Cuplikan Program MoveGenerator dalam Class MoveGeneration ... 39
Program IV-13 Cuplikan Program Evaluation Function dalam Class MoveGeneration ... 41
xii
Universitas Kristen Maranatha
DAFTAR TABEL
Tabel III-1 Tabel penjelasan use case menghitung nilai evaluasi suatu
posisi ... 18
Tabel III-2 Tabel penjelasan use case menghasilkan kemungkinan langkah berikut ... 18
Tabel III-3 Tabel penjelasan use case memilih langkah terbaik ... 18
Tabel III-4 Tabel penjelaan use case input posisi papan catur ... 19
Tabel V-1 BlackBox ABHelper() ... 53
Tabel V-2 BlackBox positionEvaluation() ... 54
Tabel V-3 BlackBoxTesting Method generatePieceMove() ... 55
Tabel V-4 Tabel Waktu Eksekusi generatePieceMove() 1. ... 57
Tabel V-5 Tabel Waktu Eksekusi generatePieceMove() 2. ... 57
Tabel V-6 Waktu Eksekusi generatePieceMove() 3. ... 58
Tabel V-7 Tabel Pengujian Waktu Eksekusi Method positionEvaluation() 1. ... 58
xiii
14
1
Universitas Kristen Maranatha
BAB I. PERSYARATAN PRODUK
I.1. Pendahuluan
Permainan catur telah lama menjadi media untuk menguji-coba algoritma pencarian,
terutama dalam bidang intelegensia buatan. Permainan catur termasuk ke dalam
permainan dengan perfect information, maksudnya segala aspek dalam permainan
dapat diamati oleh pemain, dan tidak terdapat unsur acak, sehingga dalam permainan
catur, langkah-langkah yang terjadi dapat ditebak atau dikalkulasi.
Walaupun demikian, permainan catur menjadi kasus yang sangat menarik untuk
menguji-coba teknik-teknik dalam intelegensia buatan, hal tersebut dikarenakan, dalam
permainan catur yang memiliki papan permainan dengan 64 posisi dan 32 bidak
memiliki variasi posisi sebesar 10120 (Marshall Brain – HowStuffWorks) dan kelas
kompleksitas EXPTIME[1], sehingga penyelesaian dengan teknik brute-force tidaklah
efektif.
Permainan catur sebagai permainan yang bersifat turn-based, maka akan cocok
apabila menggunakan pendekatan algoritma minmax untuk menyelesaikan
permasalahan dalam catur. Namun mengingat besarnya pohon pencarian yang
mungkin dihasilkan, maka akan sangat memungkinkan untuk melakukan alpha beta
pruning pada pohon pencarian tersebut.
Selain algoritma yang diterapkan, struktur data untuk representasi papan catur juga
bervariasi. Dua struktur data yang umum digunakan adalah struktur data array dan
2
2
Universitas Kristen Maranatha
I.1.1. Tujuan
Tujuan pengembangan sistem cerdas ini adalah sebagai berikut :
1. Menerapkan algoritma pencarian minmax dengan kasus permainan catur.
Penerapan algoritma minmax akan disertai dengan alpha betapruning.
2. Memanfaatkan bitboard sebagai struktur data untuk merepresentasikan papan catur.
3. Menganalisa efektifitas penerapan algoritma minmax.
4. Menganalisa efisiensi penerapan struktur data bitboard.
I.1.2. Ruang Lingkup Proyek
Ruang lingkup proyek akan mencakup penerapan algoritma minmax pada kasus
permainan catur dengan representasi papan berupa bitboard. Apabila dirinci, maka
proyek akan dititikberatkan pada :
1. Penerapan praktis algoritma minmax pada kasus permainan catur.
2. Penerapan bitboard guna merepresentasikan papan permainan.
3. Analisa performa bitboard, beserta kekurangan serta kelebihan bitboard.
I.1.3. Definisi, Akronim, dan Singkatan
No Istilah Definisi
1 AI Artificial Intelligence (kecerdasan buatan), cabang ilmu komputer yang mempelajari program yang dapat menyelesaikan suatu masalah secara kreatif dengan meniru langkah-langkah yang mungkin diambil oleh manusia
2 Bishop Bidak mentri
3 Capture Istilah dalam permainan catur, dimana seorang pemain memakan bidak pemain lain
4 castling Perpindahan bidak raja dan bidak benteng sekaligus dengan tujuan melindungi raja
3
Aturan dalam permainan catur, dimana pion yang baru saja maju 2 petak dapat dimakan oleh pion yang berada pada baris yang sama dan kolom yang bersebelahan
7 Engine
Catur
Program komputer yang dapat bermain permainan catur
8 Engine
Pintar
Program atau sistem yang menerapkan algoritma AI sehingga dapat bertindak seperti manusia namun tanpa adanya operator manusia
9 King Bidak raja
10 Knight Bidak kuda
11 Pawn Bidak pion
12 Ply Istilah dalam teori permainan, dimana satu ply merupakan satu langkah yang dilakukan oleh satu pemain, selain itu dalam pohon pencarian, satu ply merupakan satu tingkat dalam pohon pencarian
13 promotion Memajukan pion sampai baris kedelapan, dan mengubahnya menjadi bidak lain
14 Pruning Teknik optimasi dalam proses pencarian pohon pencarian, dimana tidak semua node anak akan dibuka
15 Queen Bidak ratu
16 Rekursif Fungsi pemrograman atau matematik dimana dalam definisi fungsi terdapat penerapan fungsi itu sendiri
17 Rook Bidak benteng
18 Scanning Proses menelusuri sesuatu secara sekuensial sampai menemukan informasi yang dicari
19 Stack Struktur data yang menerapkan prinsip last in first out, dimana data terakhir yang dimasukkan dalam struktur
stack akan dikeluarkan dahulu
20 UI User Interface, antarmuka pengguna, berfungsi sebagai media perantara dan interaksi antara pengguna dengan sistem.
I.1.4. Sistematika Penulisan
Sistematika pembahasan Tugas Akhir ini adalah sebagai berikut:
4
4
Universitas Kristen Maranatha
Bab ini berisi uraian mengenai latar belakang penulisan Tugas Akhir, rumusan
persoalan, tujuan, batasan yang diacu, sistematika pembahasan serta gambaran
keseluruhan mengenai perangkat lunak yang akan dibuat.
2. Bab II – Spesifikasi Produk
Bab ini berisi uraian mengenai spesifikasi untuk produk mulai dari persyaratan
antarmuka sampai kepada fitur dari produk yang akan dibuat.
3. Bab III – Desain Perangkat Lunak
Bab ini berisi uraian mengenai analisis terhadap deskripsi perangkat lunak.
4. Bab IV – Pengembangan Sistem
Bab ini berisi uraian mengenai lingkungan implementasi, batasan implementasi,
metode impelementasi serta tahapan implementasi.
5. Bab V –Testing dan Evaluasi Sistem
Bab ini berisi uraian mengenai proses pengujian terhadap hasil implementasi.
6. Bab VI - Kesimpulan dan Saran
Bab ini berisi uraian mengenai kesimpulan yang dapat diambil dari pelaksanaan
5
langkah terbaik berikutnya yang diambil oleh seorang pemain catur dengan kondisi
papan permainan tertentu.
I.2.2. Fungsi Produk
Fungsi produk adalah sebagai alat riset algoritma AI pencarian, dalam hal ini algoritma
minmax dan penerapan bitboard. Produk akan menganalisa langkah – langkah yang
diambil oleh engine dalam mengambil keputusan tertentu, dan dengan demikian akan
memperdalam pemahaman akan metode pencarian minmax.
I.2.3. Karakteristik Pengguna
Pengguna program dapat berupa pihak – pihak yang tertarik dengan bidang ilmu AI,
peneliti, cendekiawan statistika.
I.2.4. Batasan – Batasan
Batasan dalam pengembangan sistem ini adalah sebagai berikut :
1. Batasan Perangkat Lunak
Sistem Operasi : Microsoft Windows XP SP2 atau Linux Mint 5
Bahasa Pemrograman : Java
Editor : Netbeans 6.1, editplus, notepad++, dan gedit
2. Batasan Perangkat Keras
Processor : Intel Pentium Dual Core T2390 1.86GHz
RAM : 2 GB DDR2
6
6
Universitas Kristen Maranatha
3. Batasan Aplikasi
Tidak terdapat basis data langkah-langkah opening.
Tidak menggunakan end-gametable.
Penerapan algoritma diutamakan pada bagian mid-game.
Generasi langkah dilakukan hanya pada langkah-langkah semi legal, dan tidak
mendukung generasi langkah khusus seperti castling, en passant, dan
promotion.
I.2.5. Asumsi dan Ketergantungan
Beberapa asumsi dalam pengembangan aplikasi ini adalah :
1. Input diberikan oleh pengguna dengan format yang benar.
2. Langkah terbaik yang ditawarkan oleh sistem dihasilkan dari perhitungan
algoritmik minmax dan tidak berarti merupakan langkah terbaik riil.
3. Pemrosesan dilakukan dalam batasan perangkat keras yang ada sebagai acuan
uji kasus.
I.2.6. Penundaan Persyaratan
Penundaan persyaratan dalam proyek ini adalah optimasi selain alpha beta pruning
61
Universitas Kristen Maranatha
BAB VI. KESIMPULAN DAN SARAN
VI.2. Keterkaitan antara Kesimpulan dengan Hasil Evaluasi
Dari ketiga metode evaluasi yang diterapkan, dapat ditarik kesimpulan sebagai berikut :
1. Penerapan algoritma minmax yang disertai dengan alpha beta pruning telah
tercapai.
2. Penerapan bitboard sebagai struktur data untuk merepresentasikan papan catur
telah diimplementasikan dalam engine catur yang dikembangkan.
3. Efektifitas algoritma pencarian minmax sangat dipengaruhi kedalaman
pencarian, dan ketepatan fungsi evaluasi. Dengan optimasi yang dilakukan
menggunakan hanya alpha beta pruning dan parameter yang dikalkulasi dalam
fungsi evaluasi, bersama dengan hasi; evaluasi pada bagian V.2.1.1, maka
dapat disimpulkan algoritma yang diterapkan dalam engine catur telah efektif.
4. Efisiensi sebuah engine catur yang memanfaatkan struktur data bitboard sangat
dipengaruhi oleh jumlah looping yang dibutuhkan untuk mengolah struktur data
tersebut, sehingga penting melakukan optimasi yang dapat meminimalisasi
jumlah looping yang terjadi. Optimasi - optimasi telah dilakukan dalam engine
catur ini, seperti yang dibahas dalam cuplikan program 5 sampai program
62
Universitas Kristen Maranatha
VI.3. Keterkaitan antara Saran dengan Hasil Evaluasi
Sebuah engine catur merupakan sistem yang kompleks dan terdiri dari banyak bagian,
sehingga penerapan sebagian dari aspek-aspek yang terdapat dalam sebuah engine
catur tidak cukup untuk menyokong efektifitas dan efisiensi engine catur, sehingga perlu
diterapkan beberapa hal lain, seperti yang disebutkan dibawah ini :
1. Generator langkah legal.
2. Transposition table.
3. Move ordering.
4. Quiescence search.
5. Rotated bitboard.
VI.4. Rencana Perbaikan/Implementasi terhadap Saran yang Diberikan
Guna menerapkan saran yang disebutkan dalam bagian sebelumnya, maka hal yang
sebaiknya diterapkan terlebih dahulu adalah generator langkah legal dan rotated
bitboard.
Dengan adanya generator langkah legal, diharapkan efektifitas dari engine catur dapat
meningkat, karena fitur generator langkan legal akan menambah kemampuan engine
catur untuk mendeteksi langkah – langkah yang mengarah pada checkmate maupun
draw . Dengan menggunakan rotated bitboard, maka kecepatan generasi langkah dan
63
Universitas Kristen Maranatha
DAFTAR PUSTAKA
[1] Fraenkel, A.S(1981). Computing a Perfect Strategy for nxn Chess Requires Time Exponential in N. Berlin : Springer
[2] Fierz,M(2005). Strategy Game Programming. Diakses: April 2009, http://fierz.ch
[3] Hyatt,R(1999).Chess program board representations. Diakses 3 Oktober 2009,
http://www.cis.uab.edu/hyatt/boardrep.html
[4] Laramee, F(2000). Chess Programming. Diakses: 21 April 2009,
http://gamedev.net/reference/programming/features/chess6
[5] Pettersson, J(2006). Quiescent search and the horizon effect. Diakses: 21 April
2009, http://mediocrechess.blogspot/2006/12/guide-quiescent-search-and-horizon.html
[6] Pinto,P(2002). Minimax Explained. Diakses: 21 April 2009,
http://ai-depot.com/articles/minimax-explained
[7] Russel, S.J & Norvig, P. (1995). Artificial Intelligence : A Modern Approach (2nd ed).
New Jersey : Pearson Hall.
[8] Schroder,E(2009). Programmer Stuff: Chess Programming. Diakses: 21 April 2009,
http://members.home.nl/matador/chess840.htm
[9] Verhelst,P(2004). Computer Chess Programming. Diakses: 21 April 2009,