SKRIPSI
Diajukan untuk Menempuh Ujian Akhir Sarjana
ASEP SUKIRMAN 10109138
PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS TEKNIK DAN ILMU KOMPUTER
v
ABSTRACT ... ii
KATA PENGANTAR ... iii
DAFTAR ISI ... v
DAFTAR GAMBAR ... viii
DAFTAR TABEL ... ix
DAFTAR SIMBOL ... x
DAFTAR LAMPIRAN ... xii
BAB 1 PENDAHULUAN ... 1
1.1. Latar Belakang Masalah ... 1
1.2. Perumusan Masalah ... 2
1.3. Maksud dan Tujuan ... 3
1.3.1. Maksud ... 3
1.3.2. Tujuan ... 3
1.4. Batasan Masalah ... 3
1.5. Metode Penelitian ... 3
1.5.1. Metode Pengumpulan Data ... 4
1.5.2. Metode Pembangunan Perangkat Lunak ... 4
1.6. Sistematika Penulisan ... 5
BAB 2 TINJAUAN PUSTAKA ... 7
2.1. Nine Men’s Morris ... 7
2.1.1. Pengenalan Nine Men’s Morris ... 7
2.1.2. Peraturan Permainan... 8
2.1.3. Strategi Nine Men’s Morrin ... 10
2.2. Kecerdasan Buatan ... 11
2.3. Agen Cerdas... 12
vi
2.6. OOP (Object Oriented Programming) ... 19
2.7. Pemodelan Dengan UML ... 20
2.7.1. Diagram – Diagram UML ... 21
2.8. Java ... 25
BAB 3 ANALISIS DAN KEBUTUHAN ALGORITMA ... 27
3.1. Analisis Masalah ... 27
3.2. Analisis Game ... 27
3.2.1. Gameplay ... 27
3.3. Analisis Masukan ... 28
3.3.1. Fungsi Evaluasi Nine Men’s Morris ... 29
3.4. Analisis Algoritma Negascout ... 33
3.5. Analisis Kebutuhan Non Fungsional ... 41
3.5.1. Analisis Kebutuhan Perangkat Lunak ... 41
3.5.2. Analisis Kebutuhan Perangkat Keras... 41
3.5.3. Analisis Pengguna ... 41
3.6. Analisis Kebutuhan Fungsional ... 42
3.6.1. Use Case Diagram ... 42
3.6.1.1. Definisi Aktor ... 42
3.6.1.2. Definisi Use Case ... 43
3.6.1.3. Use Case Scenario ... 43
3.6.2. Activity Diagram ... 46
3.6.3. Class Diagram ... 48
3.6.4. Sequence Diagram ... 48
3.7. Perancangan Sistem ... 50
3.7.1. Perancangan Komponen Permainan Nine Men’s Morris ... 51
3.7.2. Perancangan Struktur Menu ... 51
vii
4.1.1. Implementasi Perangkat Keras ... 55
4.1.2. Implementasi Perangkat Lunak ... 55
4.1.3. Implementasi Antarmuka ... 56
4.2. Pengujian Sistem ... 57
4.2.1. Rencana Pengujian ... 57
4.2.2. Pengujian Black Box ... 57
4.2.3. Pengujian White Box ... 58
4.2.4. Pengujian Algoritma Negascout Pada Nine Men’s Morris ... 63
BAB 5 KESIMPULAN DAN SARAN ... 69
5.1. Kesimpulan ... 69
5.2. Saran ... 69
71
[1] Adams, E 2010, Fundamentals of Game Design (2nd edition), New Riders, Berkeley.
[2] Ayuningtyas, Nadhira. 2008. Algoritma minimax dalam permainan checkers. Dalam Strategi Algoritmik. Bandung, Indonesia: Institut Teknologi Bandung.
[3] Bruin, D.A., Wim,Pijls., Aske,Plaat.1994. Solution Trees as a Basis for Game Tree Search. Technical Report EUR-CS-94-04, Department of Computer Science, Erasmus University Rotterdam.
[4] Chandler, Heather M & Chandler, R 2011, Fundamentals of Game Development, Jones & Bartlett Learning, LLC.
[5] Effendi, Aditya Kurniawan., Delima, Rosa. & Chrismanto, Antonius Rachmat. 2012. Implementasi Algoritma Negascout Untuk Permainan Checkers. Universitas Kristen Duta Wacana.
[6] Ismail, Andang 2006, Education Games: Menjadi Cerdas dan Ceria dengan Permainan Edukatif, Pilar Media, Yogyakarta.
[7] Jones, M., Dkk. 2008. Artificial Intelligence : A System Approach. Infinity Science Press LLC:Massachusetts.
[8] Kevin Winata. 2012. Penerapan Algoritma Alpha-Beta Pruning pada Permainan Nine Men’s Morris. Institut Teknologi Bandung.
[9] Millington, Ian. 2006. Artificial Intelligence For Games. United States of America.
[10] Munawar. 2005, Pemodelan Visual dengan UML, Graha Ilmu, Yogyakarta. [11] Petcu Simona Alexandra, Holban Stefan. 2008. Nine Men's Morris:
Evaluation Function. Politehnica of Timisoara.
[12] Russell, Stuart J & Norvig, Peter 1995, Artificial Intelligence: A Modern Approach, Prentice Hall.
iii
Puji dan syukur penulis panjatkan ke hadirat Allah SWT, karena atas rahmat dan karunia-Nya, sehingga penyusunan skripsi dengan judul “Implementasi Algoritma Negascout Untuk Menentukan Langkah Pemain Lawan Pada Permainan Nine Men’s Morris” dapat diselesaikan dengan baik untuk menyelesaikan program sarjana strata satu (S1) di Program Studi Teknik Informatika, Universitas Komputer Indonesia Bandung.
Atas semua bantuan yang telah diberikan, baik secara langsung maupun tidak langsung, penulis ingin ucapkan terima kasih yang sebesar - besarnya kepada :
1. Allah SWT yang telah memberikan rahmat, kasih dan hidayah-Nya sehingga dapat diselesaikannya penelitian dan skripsi ini.
2. Keluarga tercinta terutama kedua orang tua, Bapak dan Ibu, atas doa dan dukungan yang tidak pernah berhenti, baik secara moril dan materil, serta sebagai alasan penulis untuk terus berjuang menyelesaikan pendidikan ini. 3. Yth. Rasim, M.T., selaku pembimbing yang telah memberikan pengarahan
dan masukan-masukan yang berharga kepada penulis dalam penyusunan Skripsi ini.
4. Yth. Ednawati Rainarli, S.Si., M.Si., selaku Dosen Reviewer yang memberikan bimbingan dan kesempatan dalam penyusunan skripsi ini.
5. Yth. Rani Sutanto, S.Kom., selaku dosen wali kelas IF-4 angkatan 2009 . 6. Yth. Irawan Afrianto, S.T., M.T., selaku Ketua Program Studi Teknik
Informatika Universitas Komputer Indonesia.
7. Rekan-rekan mahasiswa Program Studi Teknik Informatika angkatan 2009 khususnya rekan-rekan mahasiswa dari kelas IF-4.
iv
senantiasa menerima kritik dan saran yang membangun demi pengembangan ke arah yang lebih baik. Akhir kata, penulis berharap semoga skripsi ini dapat memberikan manfaat.
Wassalamu alaikum, Wr. Wb.
Bandung, Agustus 2014
1 1.1. Latar Belakang Masalah
Permainan papan (board game) adalah sebuah permainan di mana
bidak-bidak diletakkan, dipindahkan ataupun dimakan oleh bidak-bidak lawan di atas papan
dengan peraturan yang berlaku pada permainan tersebut. Permainan papan ada
yang murni berbasis strategi adapun yang berbasis kesempatan ataupun gabungan
dari kedua hal tersebut dan biasanya mempunyai suatu tahap kemenangan yang
ingin dicapai oleh para pemain. Permainan papan juga mempunyai berbagai jenis yang dibedakan oleh ukuran papan dan jumlah pemain. Berdasarkan jumlah
pemain ada permainan papan yang dimainkan oleh dua pemain[4]. Salah satu
permainan papan yang dimainkan oleh dua pemain adalah nine men’s morris.
Permainan papan dengan dua pemain agar dapat dimainkan oleh satu pemain
diperlukan sebuah kecerdasan.
Permainan itu diperlukan sebuah kecerdasan yang memungkinkan
komputer untuk bermain melawan manusia. Cabang ilmu yang menirukan
kecerdasan manusia adalah kecerdasan buatan atau Artificial Intelligence (AI).
Salah satu permainan yang menggunakan AI adalah nine men’s morris. Nine
men’s morris adalah sebuah permainan yang sudah sangat tua, bahkan salah satu
yang tertua sepanjang sejarah. Permainan ini banyak ditemukan di berbagai
negara. Papan tertua yang pernah ditemukan berada di Mesir, diperkirakan berasal
dari 1400 SM. Nama nine men’s morris sendiri tercipta ketika permainan ini
mencapai Inggris, jauh setelah permainan ini tercipta, yaitu pada masa middle
ages. Pada zaman inilah nine men’s morris meraih popularitas di antara kalangan
masyarakat. Pada permainan ini, untuk mengalahkan lawan seorang pemain harus
membentuk “mill” (atau disebut juga “morris”) yaitu garis lurus horizontal atau vertikal dengan tiga bidak berwarna sama.
Adapun penelitian pada permainan nine men’s morris yang dilakukan
penelitian yang dilakukan oleh Kevin Winata dengan menerapkan algoritma
aplha-beta prunning pada permainan nine men’s morris yang menggunakan
alpha-beta prunning dengan kedalaman terbatas. Kedalaman tersebut ditentukan
oleh user atau programmer. Semakin besar kedalamannya, maka AI akan semakin
kuat dengan kemungkinan menang semakin besar. Namun ketika kedalaman
tersebut semakin besar, waktu berpikir AI akan semakin lama dalam menentukan
keputusan[8].
Pada penelitian yang membandingkan algoritma alpha-beta prunning
dengan algoritma negascout pada permainan checkers. Algoritma negascout
menghasilkan node yang lebih sedikit dan waktu pencarian yang lebih cepat
dibanding algoritma alpha-beta prunning[5]. Algoritma Negascout belum pernah
diterapkan untuk menentukan langkah lawan (AI) dalam membentuk “mill” dan
mencegah pemain membentuk “mill” pada permainan nine men’s morris. Dimana algoritma negascout merupakan algoritma perbaikan dari alpha-beta pruning
yang digunakan pada algoritma minimax dengan mempersempit ruang pencarian
(minimal search window), dengan semakin sempitnya selisih nilai alpha dan beta,
maka semakin besar kemungkinan terjadinya pemotongan pencarian. Sehingga
akan mempercepat waktu berpikir AI dalam mengambil keputusan. Algoritma
negascout menghasilkan jendela pencarian yang lebih kecil dari pada alpha-beta
pruning[9].
Berdasarkan latar belakang yang telah dijelaskan maka penelitian tugas
akhir ini berjudul “Implementasi Algoritma Negascout Untuk Menentukan
Langkah Pemain Lawan Pada Permainan Nine Men’s Morris”.
1.2. Perumusan Masalah
Berdasarkan uraian di latar belakang yang telah diuraikan, maka yang
menjadi pokok permasalahan adalah Bagaimana mengimplementasikan algoritma
Negascout untuk menentukan langkah pemain lawan pada permainan Nine Men’s
1.3. Maksud dan Tujuan
Berdasarkan permasalahan yang diteliti, maka maksud dan tujuan dari
penulisan tugas akhir ini.
1.3.1. Maksud
Maksud dari penelitian ini adalah mengimplementasikan algoritma
Negascout pada AI permainan Nine Men’s Morris.
1.3.2. Tujuan
Tujuan yang ingin dicapai dari penelitian ini implementasi algoritma
Negascout pada permainan nine men’s morris untuk menentukan langkah pemain
lawan dalam mengambil keputusan.
1.4. Batasan Masalah
Batasan masalah yang ditentukan dalam penelitian ini adalah sebagai
berikut :
1. Permainan yang akan dibangun hanya berupa prototype.
2. Permainan dibangun berbasis desktop dan dimainkan secara offline.
3. Permainan Nine Men’s Morris dimainkan oleh 1 pemain dan 1 komputer.
4. Algoritma yang digunakan untuk gerakan pemain lawan adalah Algoritma
Negascout.
5. Permainan tidak menggunakan batasan waktu.
6. Tidak ada tingkatan kesulitan.
7. Model analisis perancangan yang digunakan adalah analisis perancangan dan
pengembangan perangkat lunak berorientasi obyek, dengan menggunakan
pemodelan Unified Modeling Language (UML).
8. Implementasi algoritma dalam penelitian ini menggunakan bahasa
pemrograman Java.
1.5. Metodologi Penelitian
Metodologi yang digunakan dalam penulisan tugas akhir ini adalah
1.5.1. Metode Pengumpulan Data
Metode pengumpulan data yang digunakan dalam penelitian ini dengan
menggunakan studi literature. Dimana pengumpulan data dengan cara
mengumpulkan literatur, jurnal, paper dan bacaan-bacaan mengenai permainan
Nine Men’s Morris dan algoritma Negascout yang ada kaitannya dengan judul penelitian.
1.5.2. Metode Pembangunan Perangkat Lunak
Metode dalam pembuatan perangkat lunak menggunakan paradigma
perangkat lunak secara Prototype. Prototyping adalah salah satu pendekatan
dalam rekayasa perangkat lunak yang secara langsung mendemonstrasikan
bagaimana sebuah perangkat lunak atau komponen-komponen perangkat lunak
akan bekerja dalam lingkungannya sebelum tahapan konstruksi aktual dilakukan.
Model ini dimulai dengan pengumpulan kebutuhan. Pendekatan prototyping
model digunakan jika pemakai hanya mendefenisikan objektif umum dari
perangkat lunak tanpa merinci kebutuhan input, pemrosesan dan outputnya,
sementara pengembang tidak begitu yakin akan efisiensi algoritma, adaptasi
sistem operasi, atau bentuk antarmuka manusia-mesin yang harus diambil.
Adapun tahapan-tahapan dalam pembuatan perangkat lunak selama proses
penelitian dengan menggunakan model Prototype adalah sebagai berikut pada gambar 1.1 :
Gambar 1.1 Ilustrasi model Prototype[13]
1. Pengumpulan Kebutuhan
Pada tahap ini dilakukan pengumpulan apa saja yang dibutuhkan dalam
negascout, serta komponen-komponen yang dibutuhkan dalam membangun
aplikasi.
2. Perancangan
Pada tahap ini dilakukan analisis dan perancangan sistem, baik itu analisis
kebutuhan fungsional ataupun non fungsional seperti analisis data, analisis
berorientasi objek yang terdiri dari perancangan use case diagram, activity
diagram, sequence diagram, statechart diagram, dan class diagram. Serta
perancangan antarmuka dan perancangan pesan. Dan setelah itu perancangan
sistem dan perangkat lunak ditranslasikan ke dalam aplikasi perangkat lunak
dengan menggunakan bahasa pemrograman java. Sehingga hasil dari tahap
ini adalah aplikasi perangkat lunak yang sesuai dengan perancangan sistem
dan perangkat lunak yang telah dibuat.
3. Evaluasi Prototipe
Pada tahap ini dilakukan pengujian pada aplikasi perangkat lunak serta
memastikan bahwa semua bagian sudah diuji. Hal ini dilakukan untuk
mengetahui kesalahan dan meminimalisirnya serta memastikan perangkat
lunak yang dihasilkan sesuai yang diinginkan.
1.6. Sistematika Penulisan
Sistematika penulisan penelitian ini disusun untuk memberikan gambaran umum tentang penelitian yang dijalankan. Sistematika penulisan tugas akhir ini
adalah sebagai berikut :
BAB 1 PENDAHULUAN
Bab ini berisikan tentang latar belakang permasalahan pengimplementasian
algoritma Negascout pada permainan nine men’s morris, perumusan masalah,
maksud dan tujuan, batasan masalah, metodologi penelitian serta sistematika
penulisan.
BAB 2 LANDASAN TEORI
Bab ini berisikan tentang konsep dasar dan teori yang mendukung dalam
pembangunan permainan, seperti pengertian permainan nine men’s morris,
negascout, pemrograman berorientasi objek, UML (Unified Modeling Language),
dan Java.
BAB 3 ANALISIS DAN KEBUTUHAN ALGORITMA
Bab ini berisikan tentang analisis masalah, analisis game, analisis masukan,
analisis algoritma negascout, analisis kebutuhan non fungsional, analisis
kebutuhan fungsional serta perancangan pada game yang akan dibangun.
BAB 4 IMPLEMENTASI DAN PENGUJIAN
Bab ini berisikan implementasi antarmuka permainan nine men’s morris dan
pengujian sistem yang telah dibangun.
BAB 5 KESIMPULAN DAN SARAN
Bab ini berisi kesimpulan yang merupakan rangkuman dari hasil pengujian
perangkat lunak dan saran yang perlu diperhatikan bagi pengembangan perangkat
7
2.1. Nine Men’s Morris
Nine men’s morris merupakan salah permainan papan dengan 2 pemain, untuk lebih jelasnya dapat dilihat pada pengenalan nine men’s morris, peraturan nine men’s morris dan strategi nine men’s morris.
2.1.1. Pengenalan Nine Men’s Morris
Nine Men’s Morris adalah sebuah permainan yang sudah sangat tua,
bahkan salah satu yang tertua sepanjang sejarah. Permainan ini banyak ditemukan
di berbagai negara. Papan tertua yang pernah ditemukan berada di Mesir,
diperkirakan berasal dari 1400 SM. Nama Nine Men’s Morris sendiri tercipta
ketika permainan ini mencapai Inggris, jauh setelah permainan ini tercipta, yaitu
pada masa Middle Ages. Pada zaman inilah Nine Men’s Morris meraih
popularitas di antara kalangan masyarakat.
Permainan ini juga memiliki banyak versi. Nine Men’s Morris memiliki 9
bidak untuk masing-masing pemain. Ada empat permainan sejenis yang memiliki
aturan mirip tapi jumlah bidaknya berbeda, yaitu Three Men’s Morris, Six Men’s
Morris, Eleven Men’s Morris, dan Twelve Men’s Morris. Selain itu, ada juga
varian dengan aturan Nine Men’s Morris yang dimodifikasi, contohnya Misere,
Diagonals, dan No Fly.
Ada berbagai nama lain untuk Nine Men’s Morris. Contohnya, di Jerman
disebut Mühle, di Perancis disebut Jeu De Moulin atau Merelles, di India
disebut Sujjua, di Cina disebut Sam K'i, di Mexico disebut Picaria, dan masih
banyak lagi. Hal ini menunjukan opularitas Nine Men’s Morris yang melintasi
Papan yang digunakan berupa 3 buah persegi berbeda ukuran dengan yang
lebih kecil berada di dalam persegi yang lebih besar. Titik tengah sisi sebuah
persegi terhubung dengan titik tengah sisi dua persegi lain dengan sebuah garis.
Bidak, yang berjumlah 9 dengan warna biasanya masing-masing hitam dan putih,
diletakkan pada perpotongan antara dua garis[8]. Adapun papan permainan dari nine men’s morris dapat dilihat pada gambar 2.1 :
Gambar 2.1 Contoh Papan Permainan Nine Men’s Morris
2.1.2. Peraturan Permainan
Pada permainan Nine Men’s Morris, untuk mengalahkan lawan seorang
pemain harus membentuk “mill” (atau disebut juga “morris”) yaitu garis lurus dengan tiga bidak berwarna sama. Jika mill berhasil terbentuk, pemain berhak mengambil bidak pemain lain yang tidak berada di dalam garis mill.
Hanya ada dua kemungkinan bentuk mill yang dapat diraih. Kemungkinan
pertama yaitu tiga bidak yang berada pada sisi yang sama dari persegi ketiga atau
persegi kedua. Kemungkinan lain adalah tiga bidak yang berada pada garis
pemisah dengan arah mata angin yang sama[8]. Adapun contoh terbentuknya mill
Gambar 2.2 Contoh Terbentuknya Mill
Permainan ini terdiri dari tiga fase dan pada ketiganya pemain dapat
membentuk mill dan mengambil bidak pemain lawan.
1) Fase Pertama : Meletakkan Bidak
Pada fase ini, masing-masing pemain secara bergantian meletakkan bidaknya
pada papan. Jika seorang pemain berhasil membentuk mill, pemain tersebut
boleh mengambil bidak pemain lawan di papan. Fase ini berakhir ketika
seluruh bidak telah diletakkan pada papan permainan atau diambil pemain
lain.
2) Fase Kedua : Menggerakkan Bidak
Pada fase ini, pemain dapat menggeser bidaknya secara bergiliran sesuai
dengan garis yang ada. Kedua pemain dapat saling berlomba untuk
membentuk mill atau menghalangi lawan membentuk mill.
3) Fase Ketiga : Flying
Fase ketiga dimulai ketika seorang pemain hanya tinggal memiliki tiga bidak.
Dalam fase ini pemain tersebut dapat memindahkan bidaknya ke posisi
manapun di dalam papan.
Permainan berakhir berdasarkan tiga kondisi, yaitu :
1) Kondisi pertama adalah salah satu pemain tidak bisa menggerakkan bidaknya
kemanapun, maka pemain itu dinyatakan kalah. Contoh kondisi pertama dapat
Gambar 2.3 Pemain Hitam Tidak Bisa Bergerak
2) Kondisi kedua adalah jika seorang pemain memiliki kurang dari tiga bidak,
maka pemain itu dinyatakan kalah.
3) Kondisi ketiga adalah ketika posisi seluruh bidak terulang, maka permainan
dinyatakan seri.
2.1.3. Strategi Permainan
Ada beberapa strategi yang umum digunakan oleh para pemain dalam
memenangkan permainan Nine Men’s Morris :
1. Lokasi yang strategis
Pada fase pertama, sangat penting untuk meletakkan para bidak di posisi yang
strategis (mudah untuk digerakkan, tidak terhalang), dan tidak berfokus untuk
membuat mill. Contoh posisi yang strategis adalah titik tengah di kotak
terdalam, dimana bidak dapat bergerak pada tiga arah. Namun meletakkan
bidak condong ke salah satu kotak juga tidak direkomendasi, distribusi bidak harus merata.
2. Menghalangi pemain lain
Keunikan permainan ini adalah mill yang dibentuk dapat digunakan
berkali-kali. Ketika seorang pemain sudah membentuk sebuah mill, dia bisa
memindahkan bidaknya ke tempat lain pada giliran berikutnya, dan
mengembalikannya ke tempat semula pada giliran selanjutnya, dan mill akan
erbentuk kembali. Maka dia berhak mengambil dua bidak pada tiga giliran
meletakkan bidaknya sendiri di posisi yang ditinggalkan pada giliran kedua.
Taktik ini disebut dengan blocking. Atau jika blocking tidak memungkinkan,
pemain tersebut juga bisa mencoba membentuk mill sendiri, sehingga pemain
lawan harus memilih antara melanjutkan membentuk mill atau melakukan
blocking.
3. Double mill
Double mill dibentuk dengan dua mill yang bersisian sedemikian rupa
sehingga pemain dapat menggerakkan bidak dari sebuah mill yang sudah
terbentuk ke posisi yang menyebabkan mill lain terbentuk. Double mill adalah
kondisi yang sangat menguntungkan bagi seorang pemain, karena dia bisa
mengambil bidak lawan pada setiap giliran. Double mill harus menjadi
prioritas blocking pemain lawan[8].
2.2. 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[2]. Terdapat beberapa 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
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.
8. Otonomi, mempunyai sistem intelegensi yang beraksi atas inisiatif sendiri.
9. Informasi, mampu menyimpan informasi dan mengetahui cara mengambil
informasi[6].
2.3. Agen Cerdas
Agen adalah sesuatu yang dapat mengesan lingkungannya melalui
sensorsdan mengambil tindakan terhadap lingkungannya melalui actuators.
Dengan adanya agen cerdas, maka diharapkan sistem mampu berpikir dan
menentukan pilihan langkah yang tepat[7]. Terdapat beberapa karakteristik
lingkungan agen yaitu sebagai berikut :
1. Fully observable – partially observable
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 nine men’s
morris 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
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 nine men’s morris
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 nine men’s morris bersifat sequential karena
agen berpikir untuk langkah- langkah selanjutnya dan seluruh 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 nine men’s morris
bersifat static karena saat agen mengambil tindakan, lingkungan tidak
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 nine men’s morris 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 nine men’s morris bersifat multiagent karena
memikirkan langkah yang akan diambil oleh lawan[12].
2.4. Pohon Permainan
Pohon permainan mempresentasikan kepada pemain kondisi - kondisi
yang mungkin dihadapi pada permainan dimulai dari kondisi yang sedang dihadapi sekarang hingga beberapa kondisi ke depan. Sebuah pohon permainan
merupakan representasi grafis dari contoh permainan. Pohon permainan
menyediakan informasi pemain, hasil, strategi, dan pilihan langkah.
Pohon permainan dapat direpresentasikan dengan baik pada permainan
yang dilakukan secara giliran (turn-based-game). Pohon permaian memiliki root
yang merupakan representasi dari kondisi langkah yang belum diambil, node pada
pohon mempresentasikan keadaan-keadaan yang mungkin diambil pada
permainan, dan Arcs yang mempresentasikan langkah.
Pengguna pohon permainan pada permainan yang dimainkan oleh dua
pemain direpresentasikan dengan cara bergantian. Untuk edges dari tingkat
oleh pemain pertama, sedangkan untuk edges dari tingkat kedua ketingkat ketiga
mempresentasikan langkah-langkah yang diambil oleh pemain kedua, dan begitu
seterusnya.
Leaf node pada pohon permainan mempresentasikan keadaan akhir pada
permainan, Diana pemain tersebut dimenangkan, dikalahkan ataupun seri. Pada
permainan sederhana, untuk mencapai leaf node mungkin dapat direpresentasikan,
tetapi untuk permainan yang rumit seperti Damdaman, pencapaian leaf node angat
tidak memungkinkan karena percabangan pada pohon permainan yang sangat
besar.
Gambar 2.4 Contoh Pohon Permainan Tic Tac Toe[1]
Berikut penjelasan pohon permainan tictactoe pada gambar 2.4:
1. Terdapat root yang merupakan keadaan awal Dimana pemain belum mulai
bermain dan langkah belum diambil.
2. Edges yang menghubungkan tingkat pertama (root) dengan tingkat kedua
merupakan langkah pemain pertama dan begitu seterusnya. Sehingga ohon
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
2.5. Algoritma Negascout
Negascout merupakan optimalisasi minimax dengan mempersempit ruang
pencarian (minimal search window), dengan semakin sempitnya selisih nilai alpha
dan beta maka semakin besar kemungkinan terjadinya pemotongan pencarian.
Negascout memiliki dasar bahwa langkah-langkah setelah langkah pertama akan
menghasilkan pemotongan, maka mengevaluasi semua langkah adalah sia-sia.
Negascout akan mengecek dengan null window terlebih dahulu yang dinotasikan
dengan m dan n dimana m adalah batas atas dan n adalah batas bawah, null
window memiliki batas atas dan bawah yang berselisih satu. Ketika sebuah node
memiliki nilai yang lebih tinggi dari m maka akan dilakukan pencarian ulang
dengan menggunakan window yang lebih besar untuk mengetahui nilai yang
terbaik[1]. Pada gambar 2.5 dapat dilihat pseudocode algoritma Negascout.
Gambar 2.5 Pseudo-code algoritma Negascout[5]
Keterangan pseudo code:
p = kondisi papan
d = kedalaman maksimum dari pohon yang ditelusuri
b = lebar pohon (banyak langkah yang mungkin terjadi pada papan)
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);
evaluate(p) = merupakan fungsi yang memberikan nilai evaluasi pada kondisi
papan “p”.
Gambar 2.5 merupakan pseudocode untuk algoritma Negascout,
berdasarkan algoritma diatas dapat dijelaskan cara kerja algoritma negascout
sebagai berikut, statement pertama sama seperti alpha-beta, yaitu jika posisi p
adalah node leaf maka negascout akan mengembalikan nilai fungsi evaluasi
(baris 4). Selain itu variable m dan n diinisialisasi dengan -∞ dan beta (baris 6 dan
7). Kemudian negascout akan melakukan "scout" pada node anak dari p dari kiri
ke kanan. Node anak paling kiri akan dicari dengan menggunakan
interval(-beta,-alpha) dan anak lainnya dicari dengan zero-width window (-m-1, -m) yang sudah
diisi pada baris 15 sesudah melakukan pencarian anak paling kanan, karena null
window ini tidak memiliki elemen, maka pencarian pasti akan gagal. Arah dari
kegagalan ini menunjukkan apakah node tersebutdapat dipotong atau tidak.
Jika null window gagal karena t > m (baris 10), negascout harus mengecek
kembali node tersebut dengan search window yang lebih lebar untuk mengetahui
nilai aslinya. Hanya terdapat dua kasus dimana tidak diperlukan pencarian ulang
yaitu, ketika n=beta (baris 11), dan negascout's "fail-soft refinement"selalu
mengembalikan nilai minimax yang benar pada dua level terbawah. Pada kasus
lainnya pencarian ulang harus dilakukan dengan menggunakan search window
baru yaitu (-beta,-t) (baris 13).
Kondisi untuk pemotongan (baris 14) sama seperti alpha-beta : jika m
≥beta maka semua node anak lain dapat diabaikan[5].
2.5.1. Pemotongan Alpha
Gambar 2.6 menunjukan satu pohon permainan sebelum proses
pemotongan dilakukan. Untuk lebih mudah melihat bagaimana nilai nilai di
Gambar 2.6 Pohon Permainan dengan Proses Pemotongan Alpha [3] Untuk proses pertama, sama halnya dengan algoritma Minimax. Jika
pemain memilih langkah A, maka lawan akan membiarkan respons dengan
langkah C, dan memberikan pemain nilai 5. Maka nilai 5 naik pada tingkat min.
Jika pemain memilih langkah B maka lawan akan melangkah ke E, sehingga
pemain akan mendapat nilai 4. Setelah melihat kondisi demikian pemain akan
menyadari nilai yang didapatkan lebih rendah dari nilai sementara di tingkat max.
Sehingga pemain akan menyimpulkan ini adalah langkah yang salah.
Untuk melakukan pemotongan dengan cara ini, perlu dilakukan pencarian
nilai terbaik yang pasti akan tercapai. Bahkan, nilai ini membentuk batas bawah
pada nilai yang akan tercapai. Sehingga urutan langkah yang lebih baik dapat
ditemukan dalam pencarian, namun nilai yang paling rendah akan mustahil untuk
didapatkan. Batas bawah ini dinamakan nilai alpha dan pemotongannya
dinamakan dengan pemotongan alpha.
2.5.2. Pemotongan Beta
Pemotongan beta bekerja dengan cara yang sama. Nilai beta terus melacak
nilai batas tertinggi dari nilai yang diharapkan. Nilai beta berubah ketika
ditemukan satu langkah yang dipaksakan oleh lawan.
Pada posisi itu pemain mengetahui tidak ada nilai yang lebih besar dari
beta. Jika urutan langkah yang bernilai lebih besar dari nilai beta ditemukan maka
dari kondisi ini dapat diabaikan, karena kesempatan untuk mendapatkannya lebih
2.5.3. Pemotongan Alpha Beta
Bersamaan nilai – nilai dari alpha dan beta memberikan satu jendela
kemungkinan langkah. Pemain etika pernah memilih untuk melakukan langkah
yang dinilainya lebih kecil dari alpaha, dan lawan tidak akan pernah membiarkan
ada 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 nilai -
nilai ini, maka akan dilakukan pemotongan pada cabang.
2.6. OOP (Object Oriented Programming)
Objek adalah kesatuan entitas yang memiliki sifat dan tingkah laku. Dalam
kehidupan sehari-hari, objek adalah benda, baik benda berwujud nyata seperti
manusia, hewan, mobil, komputer, handphone, pena, ataupun benda yang tidak
nyata atau konsep, seperti halnya tabungan bank, sistem antrian, sistem internet
banking, dan sebagainya. Jadi pengertian OOP adalah konsep yang membagi
program menjadi objek-objek yang saling berinteraksi satu sama lain. Objek
adalah benda, baik benda yang berwujud nyata maupun benda yang tidak nyata
(konsep). Jika kita menggunakan OOP maka akan ada enam keuntungan yang
dapat diperoleh, yaitu [10] :
1. Alami (Natural)
2. Dapat diandalkan (Reliable)
3. Dapat digunakan kembali (Reusable)
4. Mudah untuk perawatan (Maintainable)
5. Dapat diperluas (Extendable)
6. Efisiensi waktu
Berikut ini beberapa bahasa pemrograman yang sudah menggunakan konsep
OOP, adalah :
1. C++
2. Visual C++
3. Visual Basic
2.7. Pemodelan Dengan UML
UML (Unified Modeling Language) adalah salah satu alat bantu yang
sangat handal di dunia pengembangan sistem yang berorientasi obyek[10]. Hal ini
disebabkan karena UML menyediakan bahasa pemodelan visual yang
memungkinkan bagi pengembang sistem untuk membuat cetak biru atas visi
mereka dalam bentuk yang baku, mudah dimengerti serta dilengkapi dengan
mekanisme yang efektif untuk berbagi dan mengkomunikaskan rancangan mereka
dengan yang lain.
UML merupakan kesatuan dari bahasa pemodelan yang dikembangkan
oleh Booch, Object Modeling Technique (OMT) dan Object Oriented Software
Engineering (OOSE). Metode Booch dari Grady Booch sangat terkenal dengan
nama metode Design Object Oriented. Metode ini menjadikan proses analisis dan
design ke dalam empat tahapan iterative, yaitu: identifikasi kelas-kelas dan
obyek-obyek, identifikasi semantic dari hubungan obyek dan kelas tersebut, perincian
interface dan implementasi. Keunggulan metode Booch adalah pada detail dan
kayanya dengan notasi dan elemen. Pemodelan Object Modeling Technique yang
dikembangkan Rumbaugh didasarkan pada analisis terstruktur dan permodelan
entity-relationship. Tahapan utama dalam metodologi ini adalah analisis, design
sistem, design obyek dan implementasi. Keungulan metode ini aladah dalam
penotasian yang mendukung semua konsep Object Oriented Software
Engineering. Metode Object Oriented Software Engineering Jacobson lebih
memberikan penekanan pada use case. Object Oriented Software Engineering
memiliki tiga tahapan yaitu membuat model requirement dan analisis, design dan
implementasi, dan model pengujian. Keungulan metode ini adalah mudah
dipelajari karena memiliki notasi yang sederhana namun mencakup seluruh
tahapan dalam rekayasa perangkat lunak.
Dengan UML, metode Booch, Object Modeling Technique dan Object
Oriented Software Engineering digabungkan dengan membuang elemen-elemen
yang tidak praktis ditambah dengan elemen-elemen dari metode lain yang lebih
efektif dan elemen-elemen baru yang belum ada pada metode terdahulu sehingga
2.7.1. Diagram – Diagram UML
Didalam UML terdapat beberapa macam diagram yang dapat
menggambarkan suatu sistem, berikut adalah beberapa diagram yang terdapat di
dalam UML.
1. Use Case dan Use Case Diagram
Use case adalah deskripsi fungsi dari sebuah sistem dari perspektif
pengguna. Use case bekerja dengan cara mendeskripsikan tipikal antara
pengguna sebuah sistem dengan sistemnya sendiri melalui sebuah cerita
bagaimana sebuah sistem dipakai. Urutan langkah-langkah yang menerangkan
antara pengguna dan sistem disebut scenario. Setiap scenario
mendeskripsikan urutan kejadian. Setiap urutan diinisialisasi oleh orang,
sistem yang lain, perangkat keras atau urutan waktu. Dengan demikian secara
singkat bisa dikatakan, use case adalah serangkaian scenario yang
digabungkan bersama-sama oleh tujuan umum pengguna.
Use case diagram adalah penggambaran interaksi pengguna sistem (actor)
dengan kasus (use case) yang telah disesuaikan dengan langkah-langkah
(scenario). Diagram use case menunjukan 3 aspek dari system yaitu actor, use
case dan sistem, sub sistem boundary. Actor mewakili perang orang, sistem
yang lain atau alat ketika berkomunikasi dengan use case.
2. Class Diagram
Class dalam notasi UML digambarkan dengan kotak. Class adalah sebuah
spesifikasi yang jika diinstansiasi akan menghasilkan sebuah obyek dan
merupakan inti dari pengembangan dan desain berorientasi obyek. Class
menggambarkan keadaan (atribut atau properti) suatu sistem, sekaligus
menawarkan layanan untuk memanipulasi keadaan tersebut (metoda atau
fungsi).
Class mempunyai beberapa bagian yang menjelaskan isi dari class:
a. Attribute adalah property dari sebuah class. Attribute ini melukiskan batas
nilai yang mungkin ada pada obyek class. Sebuah class mungkin
b. Operation adalah sesuatu yang bisa dilakukan oleh sebuah class atau class
yang lain dapat lakukan untuk sebuah class.
c. Responsibility adalah keterangan tentang apa yang akan dilakukan class
yaitu apa yang akan dicapai oleh attribute dan operation.
3. Statechart diagram
Menelusuri individu-individu obyek melalui keseluruhan daur hidupnya,
menspesifikasikan semua urutan yang mungkin dari pesan-pesan yang akan
diterima obyek tersebut, bersama-sama dengan tanggapan atas pesan-pesan
tersebut.
Statechart diagram menggambarkan transisi dan perubahan keadaan (dari
satu state ke state lainnya) suatu obyek pada sistem sebagai akibat dari
stimulasi yang diterima [10]. Pada umunya statechart diagram
menggambarkan class tertentu (satu class dapat memiliki lebih dari satu
statechart diagram).
Simbol UML untuk state diagram adalah segiempat yang tiap pojoknya
dibuat rounded, Titik awalnya menggunakan lingkaran solid yang diarsir dan
diakhiri dengan mata.
4. Activity Diagram
Activity Diagram adalah teknik untuk mediskripsikan logika procedural,
proses bisnis dan aliran kerja dalam banyak kasus [10]. Activity diagram
mempunyai peran seperti halnya flowchart, akan tetapi perbedaannya dengan
flowchart adalah activity diagram bisa mendukung perilaku parallel sedangkan
flowchart tidak bisa.
Activity diagram tidak menunjukan apa yang terjadi, tetap tidak
menunjukan siapa yang melakukan apa. Activity diagram menggambarkan
berbagai alir aktivitas dalam sistem yang sedang dirancang, bagaimana
masing-masing alir berawal, decision yang mungkin terjadi dan bagaimana
mereka berakhir, Activity diagram juga dapat menggambarkan proses parallel
yang mungking terjadi pada beberapa eksekusi. Simbol-simbol yang sering
5. Sequence Diagram
Sequence diagram digunakan untuk menggambarkan perilaku pada sebuah
scenario. Diagram ini menunjukan sejumlah contoh obyek dan message pesan
yang diletakan diantara obyek-obyek ini dalam use case.
Sequence diagram menggambarkan interaksi antar obyek di dalam dan di
sekitar sistem berupa message yang digambarkan terhadap waktu [10].
Sequence diagram terdiri atas dimensi vertical (waktu) dan dimensi horizontal
(obyek-obyek yang terkait). Sequence diagram biasa digunakan untuk
menggambarkan scenario atau rangkaian langkah-langkah yang dilakukan
sebagai respons dari sebuah event untuk menghasilkan output tertentu.
Diawali dari apa yang men-trigger aktivitas tersebut, proses dan perubahan
apa saja yang terjadi secara internal dan output apa yang dihasilkan.
Komponen utama sequence diagram terdiri atas obyek yang dituliskan
dengan kotak segiempat bernama. Message diwakili oleh garis dengan tanda
panah dan waktu yang ditunjukan dengan progress vertical. Penjelasan dari
komponen utama sequence diagram yaitu :
a. Obyek atau Participant
Obyek atau participant diletakan di dekat bagian atas diagram dengan
urutan dari kiri ke kanan. Mereka diatur dalam urutan guna
menyederhanakan diagram. Setiap participant terhubung dengan garis
titik-titik yang disebut lifeline. Sepanjang lifeline ada kotak yang disebut
activation. Activation mewakili sebuah eksekusi operation dari
participiant. Panjang kotak ini berbanding lurus dengan durasi activation.
b. Message
Sebuah message bergerak dari satu participant ke participant yang lain
dan dari satu lifeline ke lifeline yang lain. Sebuah participant bisa
mengirim sebuah message kepada dirinya sendiri.
c. Time
Time adalah diagram yang mewakili waktu pada arah vertical. Waktu
dijalankan terlebih dahulu dibandingkan message yang lebih dekat ke
bawah.
6. Collaboration diagram
Collaboration diagram adalah perluasan dari obyek diagram. Obyek
diagram menunjukan obyek-obyek dan hubungannya satu dengan yang lain.
Collaboration diagram menunjukan message-message obyek yang dikirimkan
satu sama lain [10].
Collaboration diagram juga menggambarkan interaksi antar obyek seperti
sequence diagram, tetapi lebih menekankan pada peran masing-masing obyek
dan bukan pada waktu penyampaian message. Setiap message memiliki
sequence number, dimana message dari level tertinggi memiliki nomor satu
Message dari level yang sama memiliki prefix yang sama.
Dengan collaboration diagram memungkinkan untuk memodelkan
pengiriman sebuah message ke banyak obyek pada class yang sama.
Demikian juga halnya untuk menunjukan adanya obyek aktif yang
mengendalikan aliran message.
7. Component diagram
Component diagram merepresentasikan dunia nyata item yaitu component
software. Component diagram menggambarkan struktur dan hubungan antar
komponen piranti lunak, termasuk ketergantungan (dependency) diantaranya.
Component software adalah modul berisi code, baik berisi source code
maupun binary code, baik library maupun executable, baik yang muncul
pada compile time, link time, maupun run time. Umumnya komponen
terbentuk dari beberapa class dan atau package, tapi dapat juga dari
komponen-komponen yang lebih kecil. Komponen dapat juga berupa
interface, yaitu kumpulan layanan yang disediakan sebuah komponen untuk
komponen lain. Component diagram mengandung component, interface dan
8. Deployment diagram
Deployment diagram menunjukan tata letak sebuah sistem secara fisik,
menampakan bagian-bagian software yang berjalan pada bagian-bagian
hardware [10].
Deployment diagram menyediakan gambaran bagaimana sistem secara
fisik akan terlihat. Sistem terdiri dari node-node dimana setiap node diwakili
untuk sebuah kubus. Garis yang menghubungkan antara dua kubus
menunjukan hubungan diantara kedia node tersebut. Tipe node bisa berupa
device yang berwujud hardware dan bisa juga processor (yang
mengeksekusi component) atau execution environment (software yang
menjadi host atau mengandung software yang lain).
2.8. Java
Java adalah bahasa pemrograman yang disusun oleh James Gosling yang
dibantu oleh rekan-rekannya seperti Patrick Naughton, Chris Warth, Ed Rank, dan
Mike Sheridan di suatu perusahaan perangkat lunak yang bernama Sun
Microsystems pada tahun 1991. Bahasa pemrograman ini mula-mula diinisialisasi
27 3.1. Analisis Masalah
Analisis masalah dilakukan untuk mengetahui masalah – masalah apa saja
yang terjadi dalam permainan nine men’s morris. Berdasarkan latar belakang
masalah dari mengevaluasi jurnal yang buat oleh Kevin Winata yang berjudul
“Penerapan Algoritma Alpha-Beta Pruning pada Permainan Nine Men’s Morris” yang menggunakan kedalaman terbatas. Kedalaman tersebut ditentukan oleh user
atau programmer. Semakin besar kedalamannya, maka AI akan semakin kuat
dengan kemungkinan menang semakin besar. Namun ketika kedalaman tersebut
semakin besar, waktu berpikir AI semakin lama dalam mengambil keputusan.
3.2. Analisis Game
Game yang akan dibangun adalah game nine men’s morris yang bergenre
board game. Game ini dibangun 2D dan dimainkan secara single player.
3.2.1. Gameplay
Permainan ini terdiri dari tiga fase dan pada ketiganya pemain dapat
membentuk mill dan mengambil bidak pemain lawan.
1) Meletakkan Bidak
Pada fase ini, masing-masing pemain secara bergantian meletakkan bidaknya
pada papan. Jika seorang pemain berhasil membentuk mill, pemain tersebut
boleh mengambil bidak pemain lawan di papan. Fase ini berakhir ketika
seluruh bidak telah diletakkan pada papan permainan atau diambil pemain
lain.
2) Menggeserkan Bidak
Pada fase ini, pemain dapat menggeser bidaknya secara bergiliran sesuai
dengan garis yang ada. Kedua pemain dapat saling berlomba untuk
3) Memindahkan Bidak
Fase ketiga dimulai ketika seorang pemain hanya tinggal memiliki tiga bidak.
Dalam fase ini pemain tersebut dapat memindahkan bidaknya ke posisi
manapun di dalam papan.
Permainan berakhir berdasarkan tiga kondisi, yaitu :
1) Kondisi pertama adalah salah satu pemain tidak bisa menggerakkan bidaknya
kemanapun, maka pemain itu dinyatakan kalah.
2) Kondisi kedua adalah jika seorang pemain memiliki kurang dari tiga bidak,
maka pemain itu dinyatakan kalah.
3) Kondisi ketiga adalah ketika posisi seluruh bidak terulang, maka permainan
dinyatakan seri.
3.3. Analisis Masukan
Pada bagian ini menjelaskan masukan yang diperlukan pada algoritma
nine men’s morris yaitu berupa strategi yang digunakan untuk memenangkan
permainan Nine Men‟s Morris :
1. Lokasi yang strategis
Pada fase ini sangat penting untuk meletakkan para bidak di posisi yang
strategis (mudah untuk digerakkan, tidak terhalang), dan tidak berfokus untuk
membuat mill. Contoh posisi yang strategis adalah titik tengah di kotak tengah, dimana bidak dapat bergerak pada empat arah. Namun meletakkan
bidak condong ke salah satu kotak juga tidak direkomendasi, distribusi bidak
[image:38.595.228.376.581.733.2]harus merata. Dapat dilihat lingkaran hitam dari gambar:
2. Menghalangi pemain lain
Keunikan permainan ini adalah mill yang dibentuk dapat digunakan
berkali-kali. Ketika seorang pemain sudah membentuk sebuah mill, dia bisa
memindahkan bidaknya ke tempat lain pada giliran berikutnya, dan
mengembalikannya ke tempat semula pada giliran selanjutnya, dan mill akan
terbentuk kembali. Maka dia berhak mengambil dua bidak pada tiga giliran
tersebut. Kondisi seperti ini harus dicegah oleh pemain lawannya, dengan cara
meletakkan bidaknya sendiri di posisi yang ditinggalkan pada giliran kedua.
Taktik ini disebut dengan blocking. Atau jika blocking tidak memungkinkan,
pemain tersebut juga bisa mencoba membentuk mill sendiri, sehingga pemain
lawan harus memilih antara melanjutkan membentuk mill atau melakukan
blocking.
3. Double mill
Double mill dibentuk dengan dua mill yang bersisian sedemikian rupa
sehingga pemain dapat menggerakkan bidak dari sebuah mill yang sudah
terbentuk ke posisi yang menyebabkan mill lain terbentuk. Double mill adalah
kondisi yang sangat menguntungkan bagi seorang pemain, karena dia bisa
mengambil bidak lawan pada setiap giliran. Double mill harus menjadi
prioritas blocking pemain lawan
Algoritma yang nantinya dibuat akan memanfaatkan strategi yang sudah
disebutkan di atas.
3.3.1. Fungsi Evaluasi pada Nine Men’s Morris
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[9]. 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.
1. Closed Morris
Merupakan jumlah mill yang baru terbentuk. Cohtoh dari closed morris dapat
[image:40.595.238.381.174.358.2]dilihat pada gambar 3.2, dimana bidak putik yang baru membentuk mill.
Gambar 3.2 Closed Morris
2. Number of Morrises
Merupakan total mill yang ada di papan.
3. Number of blocked opponent pieces
Merupakan jumlah bidak lawan yang terblokir. Dapat dilihat pada gambar
[image:40.595.236.383.474.619.2]3.2, dimana bidak hitam terblokir ketika giliran putih main.
Gambar 3.3 Bidak Terblokir
4. Number of pieces
Perbedaan jumlah bidak pemain dan lawan yang ada di papan.
5. Opened Morris
Jumlah mill yang terbuka, yaitu pada mill yang sudah terbentuk bidaknya
6. Number of 2 pieces configurations
Merupakan Jumlah 2-pieces configuration, yaitu konfigurasi dua bidak
berurutan yang memungkinkan terbentuk mill pada giliran berikutnya. Dapat
[image:41.595.262.414.196.346.2]dilihat pada gambar 3.3, dimana bidak putih dapat terbentuk mill.
Gambar 3.4 Jumlah 2-pieces Configuration
7. Number of 3 pieces configurations
Merupakan Jumlah 3-pieces configuration, yaitu konfigurasi dimana dapat
[image:41.595.263.417.439.589.2]terbentuk mill di dua tempat sehingga lawan tidak bisa melakukan blocking.
Gambar 3.5 Jumlah 3-pieces Configuration
8. Double Morris
Merupakan Jumlah Double Morris.
9. Winning configurations
Konfigurasi unggul, yaitu konfigurasi-konfigurasi tertentu yang berdasarkan
Karena permainan ini terdiri dari tiga fase yang berbeda dalam cara
bermain, maka fungsi evaluasi yang digunakan haruslah terpisah. Berikut fungsi
evaluasi setiap fase :
Berdasarkan percobaan yang dilakukan yang dilakukan oleh Petcu dan
Holban dimana beberapa program AI nine men’s morris dengan algoritma yang
sama tapi dengan fungsi penghitung skor yang berbeda. Berikut hasil dari
percobaan yang dilakukan oleh Petcu dan Holban dari setiap fase[11] :
1. Relasi yang diperhitungkan pada fase pertama adalah Meletakkan bidak
R1. Clossed Morris
R2. Number of Morrises
R3. Number of blocked opponent pieces
R4. Number of pieces
R5. Number of 2 pieces configurations
R6. Number of 3 pieces configurations
Fungsi penghitung skor/nilai evaluasi fase pertama =
(18*R1)+(26*R2)+(R3)+(6*R4)+(12*R5)+(7*R6)
2. Relasi yang diperhitungkan pada fase kedua adalah Menggeserkan bidak
R1. Clossed Morris
R2. Number of Morrises
R3. Number of blocked opponent pieces
R4. Number of pieces
R5. Opened Morris
R6. Double Morris
R7. Winning configuration
Fungsi penghitung skor/nilai evaluasi fase kedua =
(14*R1)+(43*R2)+(10*R3)+(8*R4)+7*R5)+(42*R6)+(1086*R7)
3. Relasi yang diperhitungkan pada fase ketiga adalah Memindahkan bidak
R1. Number of 2 pieces configurations
R2. Number of 3 pieces configurations
R3. Closed Morris
Fungsi penghitung skor/nilai evaluasi fase ketiga =
(10*R1)+(R2)+(16*R3)+(1190*R4)
3.4. Analisis Algoritma Negascout
Pada bagian ini akan dibahas tentang pemecahan permainan Nine Men’s
Morris menggunakan algoritma negascout. Seperti yang sudah dijelaskan di atas,
negascout memerlukan sebuah fungsi penghitung skor untuk mengukur tingkat
keuntungan suatu simpul.
Contoh kondisi permainan nine men’s morris pada fase kedua yaitu
menggeserkan bidak dan membatasi tingkat kedalaman hanya sampai tingkat 3.
Berikut ialah gambar kondisi permainan pada nine men’s morris dapat dilihat
pada gambar 3.6.
Gambar 3.6 Kondisi Fase Kedua Permainan Nine Men’s Morris Dari kondisi gambar 3.6 giliran bermain pada bidak hitam. Berikut suatu
pohon permainan yang sesuai dengan segala kondisi yang berlaku mulai dari
langkah-langkah yang boleh dilakukan sampai aturan-aturan permainan dapat
[image:43.595.247.412.351.518.2]dilihat pada table 3.1.
Tabel 3.1 Tabel Pohon Permainan Pada Nine Men’s Morris
Giliran Hitam Giliran Putih Giliran Hitam Giliran Putih
Node a Node b
11-15
Node e 6-11
7-6 13-12 13-20 15-16
Node f 8-12
Node g 10-11 3-10 9-10 13-12 13-20 15-16 Node h 10-18 3-10 9-10 13-12 13-20 15-11 15-16 Node i 17-12 13-20 15-11 15-16 Node j 17-16 13-12 13-20 15-11 Node k 22-19 13-12 13-20 15-11 15-16 21-22 23-22 Node c 13-12 Node l 10-18 3-10 5-13 9-10 11-10 11-15 12-13 Node m 14-13 11-15 23-14 Node n 17-16 5-13 11-15 12-13 12-17 Node o 22-19 5-13 11-15 12-13 21-22 23-22 Node d 13-20 Node p 8-12 5-13 7-8 11-15 20-13 20-19 Node q 10-18 3-10 5-13 9-10 11-10 11-15 20-13 20-19
14-13 20-19 23-14 Node s 17-12 5-13 11-15 20-13 20-19 Node t 17-16 5-13 11-15 20-13 20-19 Node u 22-19 5-13 11-15 20-13 21-22 23-22
Setelah membangun suatu pohon permainan, maka selanjutnya
memberikan nilai evaluasi pada setiap langkah yang terjadi pada pohon
permainan. Dapat dilihat table pohon dengan nilai evaluasi pada table 3.2.
Tabel 3.2 Tabel Pohon Dengan Nilai Evaluasi Pada Leaf Node
Giliran Hitam(MAX) Giliran Putih(MIN) Giliran Hitam(MAX) Giliran Putih(MIN)
Simpul a Simpul b
Simpul e
E1 = 40 E2 = 40 E3 = 30 E4 = 40
Simpul f
F1 = 40 F2 = 30 F3 = 50 F4 = 50
Simpul g
G1 = 50 G2 = 50 G3 = 50 G4 = 40 G5 =50
Simpul h
H1= 30 H2 = 30 H3 = 40 H4 = 30 H5 = 50 H6 = 40
Simpul i
I1 = 40 I2 = 60 I3 = 50
Simpul j
J1 = 40 J2 = 30 J3 = 50
Simpul k
K4 = 40 K5 = 40 K6 = 30
Simpul c
Simpul l
L1 = 98 L2 = 50 L3 = 40 L4 = 40 L5 = 40 L6 = 40
Simpul m M1 = 30
M2 = 50
Simpul n
N1 = 40 N2 = 40 N3 = 50 N4 = 40
Simpul o
O1 = 50 O2 = 50 O3 = 50 O4 = 50 O5 = 50
Simpul d
Simpul p
P1 = 30 P2 = 20 P3 = 30 P4 = 50 P5 = 50
Simpul q
Q1 = 67 Q2 = 30 Q3 = 30 Q4 = 30 Q5 = 30 Q6 = 50 Q7 = 50
Simpul r
R1 = 30 R2 = 50 R3 = 40
Simpul s
S1 = 50 S2 = 40 S3 = 60 S4 = 60
Simpul t
T1 = 40 T2 = 30 T3 = 50 T4 = 50
Simpul u
U1 = 40 U2 = 30 U3 = 50 U4 = 40 U5 = 40
Berikut adalah proses menghitung nilai evaluasi pada table 3.2 dapat
Tabel 3.3 Tabel Proses Menghitung Nilai Evaluasi
Node R1 R2 R3 R4 R5 R6 R7 Nilai Akhir
E1 14*0 43*0 10*4 8*0 7*0 42*0 1086*0 40
E2 14*0 43*0 10*4 8*0 7*0 42*0 1086*0 40
E3 14*0 43*0 10*3 8*0 7*0 42*0 1086*0 30
E4 14*0 43*0 10*4 8*0 7*0 42*0 1086*0 40
F1 14*0 43*0 10*4 8*0 7*0 42*0 1086*0 40
F2 14*0 43*0 10*3 8*0 7*0 42*0 1086*0 30
F3 14*0 43*0 10*5 8*0 7*0 42*0 1086*0 50
F4 14*0 43*0 10*5 8*0 7*0 42*0 1086*0 50
G1 14*0 43*0 10*5 8*0 7*0 42*0 1086*0 50
G2 14*0 43*0 10*5 8*0 7*0 42*0 1086*0 50
G3 14*0 43*0 10*5 8*0 7*0 42*0 1086*0 50
G4 14*0 43*0 10*4 8*0 7*0 42*0 1086*0 40
G5 14*0 43*0 10*5 8*0 7*0 42*0 1086*0 50
H1 14*0 43*0 10*3 8*0 7*0 42*0 1086*0 30
H2 14*0 43*0 10*3 8*0 7*0 42*0 1086*0 30
H3 14*0 43*0 10*4 8*0 7*0 42*0 1086*0 40
H4 14*0 43*0 10*3 8*0 7*0 42*0 1086*0 30
H5 14*0 43*0 10*5 8*0 7*0 42*0 1086*0 50
H6 14*0 43*0 10*4 8*0 7*0 42*0 1086*0 40
I1 14*0 43*0 10*4 8*0 7*0 42*0 1086*0 40
I2 14*0 43*0 10*6 8*0 7*0 42*0 1086*0 60
I3 14*0 43*0 10*5 8*0 7*0 42*0 1086*0 50
J1 14*0 43*0 10*4 8*0 7*0 42*0 1086*0 40
J2 14*0 43*0 10*3 8*0 7*0 42*0 1086*0 30
J3 14*0 43*0 10*5 8*0 7*0 42*0 1086*0 50
K1 14*0 43*0 10*4 8*0 7*0 42*0 1086*0 40
K2 14*0 43*0 10*3 8*0 7*0 42*0 1086*0 30
K3 14*0 43*0 10*5 8*0 7*0 42*0 1086*0 50
K4 14*0 43*0 10*4 8*0 7*0 42*0 1086*0 40
K5 14*0 43*0 10*4 8*0 7*0 42*0 1086*0 40
K6 14*0 43*0 10*3 8*0 7*0 42*0 1086*0 30
L1 14*1 43*1 10*4 8*0 7*0 42*0 1086*0 98
L2 14*0 43*0 10*5 8*0 7*0 42*0 1086*0 50
L3 14*0 43*0 10*4 8*0 7*0 42*0 1086*0 40
L4 14*0 43*0 10*4 8*0 7*0 42*0 1086*0 40
L5 14*0 43*0 10*4 8*0 7*0 42*0 1086*0 40
L6 14*0 43*0 10*4 8*0 7*0 42*0 1086*0 40
M1 14*0 43*0 10*3 8*0 7*0 42*0 1086*0 30
M2 14*0 43*0 10*5 8*0 7*0 42*0 1086*0 50
N1 14*0 43*0 10*4 8*0 7*0 42*0 1086*0 40
N2 14*0 43*0 10*4 8*0 7*0 42*0 1086*0 40
N3 14*0 43*0 10*5 8*0 7*0 42*0 1086*0 50
N4 14*0 43*0 10*4 8*0 7*0 42*0 1086*0 40
O1 14*0 43*0 10*5 8*0 7*0 42*0 1086*0 50
O2 14*0 43*0 10*5 8*0 7*0 42*0 1086*0 50
O3 14*0 43*0 10*5 8*0 7*0 42*0 1086*0 50
O4 14*0 43*0 10*5 8*0 7*0 42*0 1086*0 50
O5 14*0 43*0 10*5 8*0 7*0 42*0 1086*0 50
P1 14*0 43*0 10*3 8*0 7*0 42*0 1086*0 30
P3 14*0 43*0 10*3 8*0 7*0 42*0 1086*0 30
P4 14*0 43*0 10*5 8*0 7*0 42*0 1086*0 50
P5 14*0 43*0 10*5 8*0 7*0 42*0 1086*0 50
Q1 14*1 43*1 10*2 8*0 7*0 42*0 1086*0 67
Q2 14*0 43*0 10*3 8*0 7*0 42*0 1086*0 30
Q3 14*0 43*0 10*3 8*0 7*0 42*0 1086*0 30
Q4 14*0 43*0 10*3 8*0 7*0 42*0 1086*0 30
Q5 14*0 43*0 10*3 8*0 7*0 42*0 1086*0 30
Q6 14*0 43*0 10*5 8*0 7*0 42*0 1086*0 50
Q7 14*0 43*0 10*5 8*0 7*0 42*0 1086*0 50
R1 14*0 43*0 10*3 8*0 7*0 42*0 1086*0 30
R2 14*0 43*0 10*5 8*0 7*0 42*0 1086*0 50
R3 14*0 43*0 10*4 8*0 7*0 42*0 1086*0 40
S1 14*0 43*0 10*5 8*0 7*0 42*0 1086*0 50
S2 14*0 43*0 10*4 8*0 7*0 42*0 1086*0 40
S3 14*0 43*0 10*6 8*0 7*0 42*0 1086*0 60
S4 14*0 43*0 10*6 8*0 7*0 42*0 1086*0 60
T1 14*0 43*0 10*4 8*0 7*0 42*0 1086*0 40
T2 14*0 43*0 10*3 8*0 7*0 42*0 1086*0 30
T3 14*0 43*0 10*5 8*0 7*0 42*0 1086*0 50
T4 14*0 43*0 10*5 8*0 7*0 42*0 1086*0 50
U1 14*0 43*0 10*4 8*0 7*0 42*0 1086*0 40
U2 14*0 43*0 10*3 8*0 7*0 42*0 1086*0 30
U3 14*0 43*0 10*5 8*0 7*0 42*0 1086*0 50
U4 14*0 43*0 10*4 8*0 7*0 42*0 1086*0 40
U5 14*0 43*0 10*4 8*0 7*0 42*0 1086*0 40
Berikut adalah langkah – langkah algoritma negascout dengan pohon
[image:48.595.79.498.505.751.2]permainan yang ada di atas dapat dilihat pada table 3.4.
Tabel 3.4 Tabel Analisis Algoritma Negascout
Langkah Simpul Alpha Beta Catatan
1 a -∞ ∞ Nilai alpha dimulai dengan -∞ dan nilai
beta dimulai dengan ∞
2 b -∞ ∞ -
3 e -∞ ∞ -
4 e 40 ∞
Dalam tahap ini menelusuri
cabang-cabang dari simpul ‘e’ dan mendapat
nilai terbaik ialah 40 (karena 40 memiliki nilai lebih besar dari cabang lainnya)
5 b -∞ 40
Pada simpul min, nilai yang diharapkan adalah nilai yang lebih kecil dari 40. Sekarang harus menelusuri cabang-cabang dari simpul f,g,h,I,j dan k.
6 f -∞ 40 -
setelah mendapat nilai 50 maka terjadi pemotongan beta karena 50>40 8 b -∞ 40 Nilai tidak diupdate karena 40<50
9 g -∞ 40 -
10 g 50 40
Setelah menelusuri cabang-cabang dari simpul g, nilai yang didapat ialah 50, setelah mendapat nilai 50 maka terjadi pemotongan beta karena 50>40 11 b -∞ 40 Nilai tidak diupdate karena 40<50
12 h -∞ 40 -
13 h 50 40
Setelah menelusuri cabang-cabang dari simpul h, nilai yang didapat ialah 50, setelah mendapat nilai 50 maka terjadi pemotongan beta karena 50>40 14 b -∞ 40 Nilai tidak diupdate karena 40<50
15 i -∞ 40
16 i 60 40
Setelah menelusuri cabang-cabang dari simpul i, nilai yang didapat ialah 60, setelah mendapat nilai 60 maka terjadi pemotongan beta karena 60>40 17 b -∞ 40 Nilai tidak diupdate karena 40<60
18 j -∞ 40 -
19 j 50 40 Setelah menelusuri cabang-cabang dari simpul i, nilai yang didapat ialah 50 20 b -∞ 40 Nilai tidak diupdate karena 40<50
21 k -∞ 40 -
22 k 50 40
Setelah menelusuri cabang-cabang dari simpul k, nilai yang didapat ialah 50, setelah mendapat nilai 50 maka terjadi pemotongan beta karena 50>40
23 a 40 ∞
Nilai 40 telah dinaikan ke akar a. sekarang max telah mengetahui bahwa sekarang nilai terbaiknya ialah 40.
24 c -∞ ∞ -
25 l -∞ ∞ -
26 l 98 ∞ Setelah menelusuri cabang-cabang dari
simpul l, nilai yang didapat ialah 98
27 c -∞ 98 Update nilai pada simpul c
28 m -∞ 98 -
29 m 50 98 Setelah menelusuri cabang-cabang dari simpul m, nilai yang didapat ialah 50 30 c -∞ 50 Update nilai pada simpul c karena 50<98
31 n -∞ 50 -
33 c -∞ 50 Nilai tidak diupdate karena 50=50
34 o -∞ 50 -
35 o 50 50 Setelah menelusuri cabang-cabang dari simpul o, nilai yang didapat ialah 50 36 c -∞ 50 Nilai tidak diupdate karena 50=50
37 a 50 ∞
Update nilai pada simpul a, karena 50>40 (dimana 40 adalah hasil dari simpul b)
38 d -∞ ∞ -
39 p -∞ ∞ -
40 p 50 ∞ Setelah menelusuri cabang-cabang dari
simpul p, nilai yang didapat ialah 50
41 d -∞ 50 Update nilai pada simpul d
42 q -∞ 50 -
43 q 67 50
Setelah menelusuri cabang-cabang dari simpul q, nilai yang didapat ialah 67, setelah mendapat nilai 67 maka terjadi pemotongan beta karena 67>50 44 d -∞ 50 Nilai tidak diupdate karena 50<67
45 r -∞ 50 -
46 r 50 50 Setelah menelusuri cabang-cabang dari simpul r, nilai yang didapat ialah 50 47 d -∞ 50 Nilai tidak diupdate karena 50=50
48 s -∞ 50 -
49 s 60 50
Setelah menelusuri cabang-cabang dari simpul s, nilai yang didapat ialah 60, setelah mendapat nilai 60 maka terjadi pemotongan beta karena 60>50 50 d -∞ 50 Nilai tidak diupdate karena 50<60
51 t -∞ 50 -
52 t 50 50 Setelah menelusuri cabang-cabang dari simpul t, nilai yang didapat ialah 50 53 d -∞ 50 Nilai tidak diupdate karena 50=50
54 u -∞ 50 -
55 u 50 50 Setelah menelusuri cabang-c