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
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
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,
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,
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.
ABSTRAK
ANALYSIS AND IMPLEMENTATION OF ARTIFICIAL INTELLIGENCE IN CHECKER USING MINIMAX ALGORITHM
WITH NEGASCOUT
ABSTRACT
DAFTAR ISI
Halaman
Persetujuan ii
Pernyataan iii
Penghargaan iv
Abstrak v
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
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
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
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
ABSTRAK
ANALYSIS AND IMPLEMENTATION OF ARTIFICIAL INTELLIGENCE IN CHECKER USING MINIMAX ALGORITHM
WITH NEGASCOUT
ABSTRACT
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.
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).
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
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
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
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.
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.
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):
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.
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
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.
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.
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.
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
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
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.
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.
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.
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).
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.
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)
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).
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.
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
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
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.
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
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.
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
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
Tabel 3.1 Proses menghitung nilai evaluasi
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
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.
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 -∞
Nilai root sementara disimpan sebagai nilai maksimun pemain. (node Min, mencari nilai terkecil)
22 j -∞
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
Tabel 3.3 Tabel analisis algoritma Negascout
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
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;
9 BEGIN t:= -negascout (p.i, -n, -max(alpha,m), depth+1);
10 IF t > m THEN
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
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:
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
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
Activity diagram untuk use case Permainan Baru adalah sebagai berikut.
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.
Activity diagram untuk use case Pindah Bidak adalah sebagai berikut.
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”
Activity diagram untuk use case Help About adalah sebagai berikut.
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
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
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.
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.
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)
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.
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.
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
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.
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.
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
Tabel 4.2 Proses Minimax untuk Sampel Pertama
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
Tabel 4.4 Proses Minimax untuk Sampel Kedua
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
Tabel 4.6 Proses Minimax untuk Sampel Ketiga
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
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.
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.
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.