Penerapan Algoritma Monte Carlo Tree Search pada Permainan Halma
DAFTAR PUSTAKA
Arneson, B., Hayward, R. B., & Henderson, P. 2010. Monte Carlo Tree Search in Hex.
IEEE Transactions on Computational Intelligence and AI in Games 2(4):
251-258.
Auer, P., Cesa-Bianchi, N., & Fischer, P. 2002. Finite-Time Analysis Of The Multiarmed Bandit Problem. Machine Learning 47(2-3): 235-256.
Bell, G. I. 2009. The Shortest Game of Chinese Checkers and Related Problems.
Integers : Electronic Journal of Combinatorial Number Theory 9(1):17-39.
Browne, C. B., Powley, E., Whitehouse, D., Lucas, S. M., Cowling, P. I., Rohlfshagen, P., & Colton, S. 2012. A Survey Of Monte Carlo Tree Search Methods. IEEE
Transactions on Computational Intelligence and AI in Games 4(1): 1-43.
Chaslot, G. 2010. Monte-Carlo Tree Search. Tesis. Universiteit of Maastricht.
Chaslot, G., Bakkes, S., Szita, I. & Spronck, P. 2008. Monte-Carlo Tree Search: A New Framework for Game AI. Proceedings of the Fourth Artificial Intelligence and
Interactive Digital Entertainment Conference, pp 216-217.
Chaslot, G., Winands, M., Uiterwijk, J., van den Herik, H., & Bouzy, B. 2007. Progressive Strategies for Monte-Carlo Tree Search. In Proceedings of the 10th
Joint Conference on Information Sciences (JCIS 2007), pp. 655-661.
Coppin, B. 2004. Artificial Intelligence Illuminated. Jones & Bartlett Learning: Massachusetts.
(2)
Elnaggar, A. A., Abdel, M., Gadallah, M., & El-Deeb, H. 2014. A Comparative Study Of Game Tree Searching Methods. International Journal of Advanced
Computer Science and Applications 5(5): 68-77.
Gelly, S., Kocsis, L., Schoenauer, M., Sebag, M., Silver, D., Szepesvári, C., & Teytaud, O. 2012. The Grand Challenge of Computer Go: Monte Carlo Tree Search and Extensions. Communications of the ACM 55(3): 106-113.
Indah, M. N. 2011. Aplikasi Permainan Halma Secara Multiplayer Dengan Metode Depth First Search. PETIR : Jurnal Pengkajian dan Penerapan Teknik Informatika 4(1):15-23.
Kocsis, L., & Szepesvári, C. 2006. Bandit Based Monte-Carlo Planning. European
Conference on Machine Learning, pp. 282-293
Lieyanda, V. 2011. Penerapan Algoritma Greedy untuk Permainan Halma. Makalah Strategi Algoritma. Institut Teknologi Bandung.
Magnuson, M. 2015. Monte Carlo Tree Search and Its Applications. Scholarly
Horizons: University of Minnesota, Morris Undergraduate Journal 2(2): 1-6.
Millington, I. & Funge, J. 2009. Artificial intelligence for games. 2nd Edition. Morgan Kaufmann: Amsterdam.
Nijssen, J. P. A. M. 2007. Playing Othello Using Monte Carlo. Strategies 22:1-9.
Russell, S. & Norvig, P. 1995. A Modern Approach. Artificial Intelligence. Prentice-Hall: New Jersey.
Salen, K. & Zimmerman, E. 2004. Rules of Play: Game Design Fundamentals. MIT press: London.
(3)
Schaeffer, J. 2000. The Games Computers (and People) Play. Advances in Computers
52:189-166.
Schwab, B. 2009. AI Game Engine Programming. Nelson Education: Canada.
Turocy, T. L. & von Stengel, B. 2001. Game Theory. CDAM Research Report.
Van der Kleij, A. A. J. 2010. Monte Carlo Tree Search And Opponent Modeling Through Player Clustering In No-Limit Texas Hold’em Poker. Tesis. University of Groningen, The Netherlands.
Walker, D. 2011.Halma, Grasshopper & Chinese Checkers. Traditional Board Game Series.
Winands, M. H., Bjornsson, Y., & Saito, J. T. 2010. Monte Carlo Tree Search in Lines of Action. IEEE Transactions on Computational Intelligence and AI in Games
(4)
BAB 3
ANALISIS DAN PERANCANGAN
3.1. Arsitektur Umum
Dalam penelitian ini digunakan arsitektur umum yang berfungsi untuk mengatur proses-proses yang berlangsung selama aplikasi permainan Halma dijalankan. Adapun arsitektur umum dari sistem yang akan dibangun dapat dilihat pada Gambar 3.1.
Gambar 3.1. Arsitektur Umum
Arsitektur umum pada Gambar 3.1 memperlihatkan user sebagai humanplayer
bermain sebagai pemain pertama yang memindahkan pion. Setelah pion user berpindah, maka kondisi permainan pun berubah. Kemudian AI menentukan langkah pion
Proses
Pencarian langkah pion dengan MCTS
Kondisi Permainan Saat itu
Tree Policy
Default Policy
Cari jalur langkah pion dengan DFS
AI memindahkan pion Backpropagation
FinalMove x
(5)
berdasarkan kondisi permainan saat itu dengan mencari setiap kemungkinan langkah yang tersedia.
Proses yang dilakukan AI untuk bermain dimulai dari proses pencarian langkah pion yang dilakukan oleh algoritma MCTS. Proses pencarian algoritma MCTS dilakukan secara berulang selama batas x yang ditentukan. Proses pencarian dimulai dari tree policy (selection dan expansion), default policy (simulation), kemudian
backpropagation. Setelah proses tersebut berakhir, maka dilakukan pemilihan final move dari hasil evaluasi MCTS yang diperoleh. Selanjutnya pencarian jalur langkah pion yang terpilih menuju posisi langkah terpilih ditentukan oleh algoritma DFS.
Permainan antara user dan AI terus berlangsung hingga akhir permainan. Akhir permainan Halma adalah saat salah satu pemain dapat menyusun seluruh pion ke daerah seberang. Jika hal itu terjadi, maka pemain tersebut dinyatakan sebagai pemenangnya.
3.2. Analisis
Tahap analisis merupakan tahapan yang menjelaskan cara kerja algoritma-algoritma yang digunakan untuk menyelesaikan permainan Halma.
3.2.1.Ilustrasi Permainan Halma
Ilustrasi permainan Halma digunakan untuk membantu dalam tahap analisis yang akan dilakukan. Pada penelitian ini, bentuk papan permainan Halma yang digunakan berbentuk persegi ukuran 16×16, seperti yang terdapat pada Gambar 2.6. Karena permainan Halma ini sangat bergantung pada posisi pion, maka bentuk papan permainan Halma tersebut dapat direpresentasikan pada bidang koordinat titik (x,y) yang menjadi titik posisi pion atau langkah yang akan diambil pion.
Pada Gambar 3.2 memperlihatkan ilustrasi dari permainan Halma yang direpresentasikan pada bidang titik koordinat. Papan permainan Halma disusun dari titik koordinat dari posisi paling awal (0,0) hingga posisi tujuan terjauh (15,15). Titik koordinat papapan permainan pada Gambar 3.2 disesuaikan dengan daerah asal dan daerah tujuan pion merah. Daerah tujuan pemain saling berseberangan dengan daerah asalnya. Daerah tujuan pemain diberi warna sesuai dengan pion pemain. Pada Gambar 3.2 juga memperlihatkan pion-pion yang berwarna merah dan kuning diberi label huruf yang berbeda-beda karena posisi setiap pion yang berbeda-beda.
(6)
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Gambar 3.2. Ilustrasi Permainan Halma Sebagian pada Bidang Koordinat
Terdapat 8 arah langkah yang dapat dilakukan pion Halma, seperti yang diperlihatkan pada Gambar 3.3. Arah langkah pion dapat dilakukan ke arah atas, bawah, kanan, kiri, kanan-atas, kanan-bawah, kiri-atas, dan kiri-bawah.
Gambar 3.3. Delapan Arah Langkah Pion Halma
Terdapat 3 jenis langkah pion Halma yang harus memenuhi kondisi berikut ini : 1. Langkah biasa, yaitu langkah ke segala arah sekali jika ada daerah kosong
disekitar pion.
2. Langkah lompatan sekali, jika hanya ada satu pion yang dapat dilompati.
A B D F
(7)
3. Langkah lompatan berkali-kali, dilakukan selama masih ada satu pion yang dapat dilompati. 15 14 13 12 11
10 A4 A5
9
8 A2 A3
7 A1
6 A10 A6
5 A9 A8
4 A7
3 2 1 0
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Gambar 3.4. Langkah-Langkah yang Dapat Dilakukan Pion A
Pada Gambar 3.4 diberikan contoh dari ketiga jenis langkah pion Halma yang dapat dilakukan pion A pada posisi (7,6). Langkah pion diberi label dengan kombinasi huruf sesuai dengan label huruf pion dan angka urut yang berbeda tiap posisi langkah pion. Ketiga jenis langkah pion A dikelompokkan pada Table 3.1.
Tabel 3.1. Keterangan Langkah Pion A Jenis Langkah Posisi Langkah Langkah biasa A1(6,7); A6(8,6); A8(7,5);
A9(6,5); A10(6,6)
Langkah lompatan sekali A2(7,8); A3(9,8); A7(9,4) Langkah lompatan berkali-kali A4(9,10); A5(11,10)
D B E F C A
(8)
3.2.2. Analisis Algoritma MCTS pada Permainan Halma
Algoritma MCTS digunakan untuk memilih pion yang ingin digerakkan dan menentukan langkah tujuan pion berdasarkan strategi yang digunakan. Strategi yang dimaksud adalah tree policy (penentuan skor permainan), default policy (penentuan langkah simulasi) dan pemilihan langkah akhir (finalmove). Strategi tersebut kemudian dimasukkan dalam proses pencarian algoritma MCTS.
3.2.2.1. Strategi Penentuan Skor Permainan
Penentuan skor permainan Halma dilakukan pada saat treepolicy yang meliputi tahap
selection dan expansion. Skor permainan ditentukan berdasarkan pada posisi pion. Semakin dekat posisi pion dengan posisi tujuan, maka semakin besar skor yang diberikan. Skor ini akan menentukan kemenangan yang diperoleh.
Pemberian skor permainan Halma tergantung pada daerah posisi pion dan jarak posisi pion dengan titik tujuan terjauh. Untuk menghitung jarak antara titik posisi pion dengan titik tujuan terjauh digunakan rumus perhitungan jarak titik pada bidang koordinat sebagai berikut.
Jp/l = √ x2 - x1 2 + (y2 - y1)2
Dimana : Jp/l = jarak posisi pion/langkah dengan titik tujuan terjauh (x1,y1) = posisi pion atau posisi langkah pion
x2,y2 = titik tujuan terjauh (15,15)
Penentuan skor permainan Halma mengikuti kondisi berikut ini : 1. Setiap pion yang berada di daerah tujuan diberi skor +450 2. Setiap pion yang berada di daerah asal diberi skor -450.
3. Jumlah pion diantara daerah asal dan tujuan dikalikan dengan +(450 - Jp2). 4. Jika seluruh pion sudah berada di daerah tujuan maka diberi skor +100000000.
3.2.2.2. Strategi Langkah Simulasi
Pada saat proses simulasi, langkah yang dilakukan berdasarkan default policy yang ditetapkan. Defaultpolicy langkah simulasi MCTS pada penelitian ini tidak dilakukan secara purerandom tetapi menggunakan strategi yang bersifat heuristik.
(9)
Setiap langkah permainan Halma saat simulasi akan diberikan weight
berdasarkan posisi dan langkah pion. Berikut ini ketentuan pemberian weight untuk langkah simulasi :
1. Jika posisi pion berada di daerah tujuan dan langkah yang akan dilakukan berada di luar daerah tujuan maka diberi weight -1000.
2. Jika posisi pion tidak berada di daerah tujuan dan langkah yang akan dilakukan berada di dalam daerah tujuan maka langkah tersebut diberi weight +1000. 3. Jika posisi pion berada di daerah tujuan dan langkah yang akan dilakukan
berada di daerah tujuan diberikan weight = 0.
4. Jika posisi pion tidak berada di daerah tujuan dan langkah pion tidak berada daerah tujuan maka weight yang diberikan menggunakan rumus berikut :
Jp2 - Jl
Dimana : Jp dan Jl mengikuti persamaan 3.1.
5. Jika tinggal satu pion yang tidak berada di daerah tujuan dan langkah yang dapat dilakukan pion berada di daerah tujuan, maka weight yang diberikan sebesar +100000000.
3.2.2.3. Proses Pencarian dengan Algoritma MCTS
Proses algoritma pencarian MCTS dilakukan secara berulang-ulang hingga batas yang ditentukan. Batasan dapat berupa jumlah iterasi, waktu, atau memori. Batasan yang digunakan dalam penelitian ini adalah jumlah iterasi. Semakin banyak jumlah iterasi maka semakin baik hasil evaluasi dari simulasi yang diperoleh. Namun, proses akan sedikit lebih lama sesuai dengan banyaknya kemungkinan state yang ada pada suatu permainan (Chaslot, 2010).
Analisa algoritma MCTS kali ini dilakukan pada contoh kondisi (state) permainan Halma yang dapat dilihat pada Gambar 3.5. Analisa cukup dilakukan untuk 2 pemain pada kondisi permainan sebagian saja, mengingat state permainan Halma yang sangat banyak. Gambar 3.5 mengilustrasikan state sebagian permainan Halma dengan jumlah pion tiap pemain 6 buah beserta titik koordinat dari sisi pion merah. Label huruf mewakili pion sedangkan label huruf dan angka mewakili langkah yang dapat diambil pion tersebut.
(10)
15 F8 A1 A2 A3
14 F7 F6 A8 A4
13 A6 A5
12 A7 B1 B2 B3
11 C1 C2 C3 B8 B4
10 D2 D3 B7 B6 B5
9 C4
8 D1 E2 D4
7 E8 D5 D6
6 E7 D11 D7
5 D10 D9 D8
4 3 2 1 0
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Gambar 3.5. State Permainan Halma Sebagian
Pencarian langkah pion pada permainan Halma melewati 4 tahap algoritma MCTS yaitu selection, expansion, simulation, dan backpropagation. Pada saat proses pencarian, algoritma MCTS membangun tree berdasarkan kondisi permainan saat itu. Setiap node merepresentasikan langkah-langkah yang dapat dilakukan pion. Berikut ini akan diuraikan keempat tahap pencarian algoritma MCTS tersebut untuk penentuan langkah pion pada permainan Halma :
1. Selection
Tahap pertama yaitu tahap selection, tree ditelusuri secara rekursif dan memilih node
yang belum dikunjungi secara random. Jika seluruh child node sudah pernah dikunjungi, maka dipilih child node yang memiliki skor terbesar secara random.
A F B D E C G I H J L K
(11)
= Root Node
C3
B3 D3 ...
A3
= Node Pion Merah
= Visited
Gambar 3.6. Penelusuran Node
Gambar 3.6 memperlihatkan node yang merepresentasikan sebagian langkah yang dapat dilakukan pion A, B, C, D, dan seterusnya. Pemilihan node terbaik berdasarkan skor yang tertinggi. Skor tersebut juga akan digunakan dalam perhitungan rumus UCB. Berikut ini perhitungan skor yang dilakukan untuk setiap node :
a. A3 (15,15)
- Skor pion di daerah tujuan = 2 × 450 = 900, yaitu pion A dan F - Skor pion di antara daerah asal dan tujuan, yaitu pion B, C, D, E.
B = 450 - JB 14,112 = 450- √ 15 - 14 2 + 15 - 11 22 = 450 - 17 = 433
C = 450 - JC 9,10 2 = 450- √ 15 - 9 2 + 15 - 10 2
2
= 450 - 61 = 389
D = 450 - JD 10,6 2 = 450- √ 15 - 10 2 + 15 - 6 2
2
= 450 - 106 = 344
E = 450 - JE 9,7 2 = 450- √ 15 - 9 2 + 15 - 7 2
2
= 450 - 100 = 350
- Maka jumlah skor node A3 = 900 + 433 + 389 + 344 + 350 = 2416.
b. B3 (15,12)
- Skor pion di daerah tujuan = 3 × 450 = 1350, yaitu pion A, B, dan F
- Skor pion di antara daerah asal dan tujuan yaitu pion C = 389, D = 344, dan E = 350.
- Maka jumlah skor node B3 = 1350 + 389 + 344 + 350 = 2433.
c. C3 (10,11)
- Skor pion di daerah tujuan = 2 × 450 = 900, yaitu pion A dan F. - Skor pion di antara daerah asal dan tujuan yaitu pion B = 433,
C3 = 450 - JC3 10,11 2 = 450- √ 15 - 10 2 + 15 - 11 2
2
(12)
D = 344, dan E = 350.
- Maka jumlah skor node C3 = 900 + 433 + 409 + 344 + 350 = 2436.
d. D3 (10,10)
- Skor pion di daerah tujuan = 2 × 450 = 900, yaitu pion A dan F.
- Skor pion di antara daerah asal dan tujuan yaitu pion B = 433, C = 389,
D3 = 450 - JD3 10,102 = 450- √ 15 - 10 2 + 15 - 10 2
2
= 450 - 50 = 400,
dan E = 350.
- Maka jumlah skor node D3 = 900 + 433 + 389 + 400 + 350 = 2472.
Setelah seluruh node dikunjungi dan dihitung setiap skornya, maka node D3 dipilih karena memiliki skor yang tertinggi sebesar 2471. Pemilihan node pada tree
dapat dilihat pada Gambar 3.7.
= Root Node
C3
B3 D3 ...
A3
= Node Pion Merah
= Node Selection = Visited
Gambar 3.7. Pemilihan Node D3
Perubahan state permainan setelah node D3 dipilih dapat dilihat pada Gambar 3.8. Perpindahan pion D berawal dari posisi asal (10,6) menuju posisi tujuan yaitu D3 dengan titik koordinat (10,10). Selain itu, Gambar 3.8 memperlihatkan titik koordinat dari sisi pion merah dan langkah-langkah yang diizinkan untuk pion kuning. Langkah-langkah pion kuning ini kemudian akan digunakan pada tahap selanjutnya.
(13)
15 G7
14 G5 G6
13 G4 G8
12 G3 G2 G1
11 H5 I9 H6
10 I6 H4
9 H3 I8
8 I4 J4 H1
7 I2 I1
6 J2
5
4 K5 K6 L7
3 L5 K4 K8
2 L4 K2 K1
1 K3 L2 L1 0
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Gambar 3.8. State Permainan Node D3 (10,10)
2. Expansion
Selanjutnya, tahap expansion menambahkan node baru pada node yang terpilih. Node
yang ditambahkan adalah langkah-langkah yang mungkin dilakukan oleh pemain selanjutnya. Berdasarkan state permainan pada Gambar 3.8, semua node langkah pion kuning akan ditambahkan ke node D3, termasuk node I2. Perhatikan Gambar 3.9.
= Root Node
C3
B3 D3 ...
A3
= Node Pion Merah
= Selected = Visited
I2 ...
...
= Node Pion Kuning
= Expanded
Gambar 3.9. Penambahan Node Baru
A F B D E C G I H J L K
(14)
Gambar 3.10 memperlihatkan state permainan node I2 beserta titik koordinat dari sisi pion kuning. Perpindahan pion I dari posisi awal (7,6) menuju posisi tujuan I2 (7,8). Selain itu, Gambar 3.10 menunjukkan sebagian kemungkinan langkah yang dapat dilakukan pion merah yang akan digunakan untuk analisa pada proses selanjutnya yaitu simulation.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
15 F3 A1 A2 A3 0
14 F2 F1 A8 A4 1
13 A6 A5 2
12 A7 B1 B2 B3 3
11 C1 C2 C3 D3 B8 B4 4
10 D8 C4 B7 B6 B5 5
9 C6 D6 D5 6
8 E1 E2 7
7 E7 I2 E3 8
6 E6 E5 E4 9
5 10
4 11
3 12
2 13
1 14
0 15
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Gambar 3.10. State Expansion Node Langkah I2 (7,8)
3. Simulation
Proses simulation dilakukan dari node yang ditambahkan. Proses simulation dilakukan hingga gerakan kedua. Sehingga jumlah langkah simulasi 3 kali untuk 2 pemain dan 7 kali untuk 4 pemain. Simulasi tidak memungkinkan untuk dilakukan hingga akhir permainan dikarenakan kemungkinan state permainan Halma yang sangat banyak. Pada Gambar 3.11 dapat dilihat proses simulation pada tree dengan 2 pemain.
A F B D E C G I H J L K
(15)
C3
B3 D3 ...
A3
H2 I2
...
= Simulation Move = Root Node
= Node Pion Merah
= Selected = Visited = Node Pion Kuning
= Expanded
Gambar 3.11. Langkah Simulasi hingga 2 kali Gerakan Pion Merah
Defaultpolicy saat proses simulation menggunakan strategi simulasi yang sudah
ditentukan sebelumnya. Hanya 4 langkah terbesar saja yang akan dipilih secara acak. Semua kemungkinan langkah disortir membesar kemudian dipilih secara acak 4 index
array yang terbesar. Misalnya, kemungkinan langkah ada 16, maka index array yang
dipilih adalah {12,13,14,15} secara acak.
Sebagai contoh analisis dalam menentukan 4 langkah terbaik akan dihitung untuk satu kemungkinan langkah pada setiap pion saja yaitu A7, B3, C4, D3, E3, F2 yang ditunjukkan pada Gambar 3.10, sebagai berikut :
a. Langkah A7 memiliki weight -1000 karena pion A berada didalam daerah tujuan dan langkah A7 keluar dari daerah tujuan.
b. Langkah B3 memiliki weight +1000 karena pion B berada diluar daerah tujuan dan langkan B3 memasuki daerah tujuan.
(16)
c. Langkah C4, D3, dan E1 memiliki weight yang menggunakan persamaan 3.2 dan perhitungan jarak pion menggunakan persamaan 3.1. Perhitungan weight
langkah-langkah tersebut adalah sebagai berikut.
- C (9,10) → C4 (11,10)
Jp= √ 15-9 2+ 15-10 2= √36+25= √61
Jl= √ 15-11 2+ 15-10 2= √16+25= √41=6,40
Maka, weight C4 = 61 + 6,40 = 65,40
- D (10,10) → D3 (11,11)
Jp= √ 15-10 2+ 15-10 2= √25+25= √50
Jl= √ 15-11 2+ 15-11 2= √16+16= √32=5,65
Maka, weight D3 = 50 + 5,65 = 55,65
- E (9,7) → E1 (8,8)
Jp= √ 15-9 2+ 15-7 2= √36+8= √44
Jl= √ 15-8 2+ 15-8 2= √49+49= √98=9,89
Maka, weight E1 = 44 + 9,89 = 53,89
d. Langkah F2 memiliki weight = 0 karena pion F berada di daerah tujuan dan langkah yang F2 berada di daerah tujuan.
Dari perhitungan yang telah dilakukan didapatkan weight untuk masing-masing langkah diurutkan dari yang terendah hingga tertinggi yaitu {A7, F2, E1, D3, C4, B3} = {-1000; 0; 46,83; 53,89; 65,40; 1000}. Maka diambil 4 langkah terbesar yaitu E1, D3, C4, B3, kemudian dipilih secara acak dari ke-4 langkah tersebut. Perhatikan Gambar 3.12, langkah acak yang dipilih adalah node langkah C4. State permainan untuk langkah simulasi pertama yang dipilih secara acak yaitu node C4 dapat dilihat pada Gambar 3.13, beserta titik koordinat baik dari sisi pion kuning dan pion merah. Perpindahan pion C berawal dari posisi (9,10) menuju posisi tujuan C4 (11,10). Selain itu, Gambar 3.13 memperlihatkan langkah-langkah yang diizinkan untuk pion kuning untuk dianalisis pada proses simulasi selanjutnya.
(17)
C3
B3 D3 ...
A3
H2 I2
...
D3
E1 C4 B3
= Simulation Move = Root Node
= Node Pion Merah
= Selected = Visited = Node Pion Kuning
= Expanded
Gambar 3.12. Langkah Simulasi Pertama Node C4 Dipilih secara Acak
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
15 G7 0
14 G5 G6 1
13 G4 G8 2
12 G3 G2 G1 B3 3
11 H6 4
10 H4 H5 5
9 J5 H8 H7 6
8 I5 J4 H1 7
7 I4 J1 8
6 J3 I2 I1 9
5 10
4 K5 K6 L6 11
3 L4 K4 K8 12
2 L3 K2 K1 13
1 K3 L2 L1 14
0 15
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Gambar 3.13. State Permainan Simulasi Pertama C (11,10)
A F B D E C G I H J L K
(18)
Perhitungan yang sama dilakukan untuk menentukan langkah pion kuning selanjutnya pada langkah G3, H1, I2, J3, K3, L3 yang dapat dilihat pada Gambar 3.13, sebagai berikut :
a. Langkah L3 memiliki weight = 0. b. Langkah K3 memiliki weight +1000.
c. Langkah G3, H1, I2, J3 memiliki weight yang menggunakan persamaan 3.2 dan perhitungan jarak pion menggunakan persamaan 3.1. Perhitungan weight
langkah-langkah tersebut adalah sebagai berikut.
- G (2,2) → G3 (3,3)
Jp= √ 15-2 2+ 15-2 2= √169+169= √338
Jl= √ 15-3 2+ 15-3 2 = √144+144= √288=16,97
Maka, weight G3 = 338 + 16,97 = 354,97
- H (6,6) → H1 (5,7)
Jp= √ 15-6 2+ 15-6 2= √81+81= √162
Jl= √ 15-5 2+ 15-7 2= √100+64= √164=12,80
Maka, weight H1 = 162 + 12,80 = 174,80
- I (7,8) → I2 (7,9)
Jp= √ 15-7 2+ 15-8 2= √64+49= √113
Jl= √ 15-7 2+ 15-9 2= √64+36= √100=10
Maka, weight I2 = 113 + 10 = 123
- J (6,7) → J3 (8,9)
Jp= √ 15-6 2+ 15-7 2= √81+64= √145
Jl= √ 15-8 2+ 15-9 2= √49+36= √85=9,21
Maka, weight J3 = 145 + 9,21 = 154,21
Dari perhitungan yang telah dilakukan, weight yang didapatkan untuk masing-masing langkah diurutkan dari yang terendah hingga tertinggi yaitu {L3, I2, J3, H1, G3,
(19)
K3} = {0, 123; 154,21, 174,80; 354,97; 1000}. Maka diambil 4 langkah terbesar yaitu J3, H1, G3, K3, kemudian dipilih secara acak dari ke-4 langkah tersebut. Perhatikan Gambar 3.14 langkah acak yang dipilih adalah node langkah G3.
C3
B3 D3 ...
A3
H2 I2
...
D3
... E1 B3
... J3 H1 G3
...
...
C4
K3
= Simulation Move = Root Node
= Node Pion Merah
= Selected = Visited = Node Pion Kuning
= Expanded
Gambar 3.14. Langkah Simulasi Kedua Node G3 Dipilih secara Acak
State permainan untuk langkah simulasi kedua yang dipilih secara acak yaitu
node langkah G3 dapat dilihat pada Gambar 3.15 beserta titik koordinat dari sisi pion merah. Perpindahan pion G berawal dari posisi (2,2) menuju posisi tujuan G3 (3,3). Selain itu, pada Gambar 3.15 memperlihatkan langkah-langkah yang dapat dilakukan pion merah beserta titik koordinat dari sisi pion merah dan pion kuning. Langkah-langkah pion merah akan dihitung untuk Langkah-langkah simulasi terakhir pion merah. Perhitungan langkah simulasi pion merah akan dilakukan untuk langkah A2, B1, C4, D10, E3, F4.
(20)
15 F5 F1 A2 A3
14 F4 F3 F2 A4
13 A7 A6 A5
12 B1 B2 B3
11 D1 C1 C2 C3 B8 B4
10 D10 D9 C4 B7 B6 B5
9 D6 D5 C5
8 D7 D8
7 E7 E3
6 E6 E5 E4
5 4 3 2 1 0
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Gambar 3.15. State Permainan Simulasi Kedua G (3,3)
Selanjutnya perhitungan yang sama untuk langkah simulasi ketiga untuk pion merah : a. Langkah B2 memiliki weight +1000
b. Langkah F4 memiliki weight -1000 c. Langkah A2 memiliki weight = 0
d. Langkah C4, D10, E3 dihitung menggunakan persamaan 3.1 dan 3.2 sebagai berikut.
- C (11,10) → C4 (12,10)
Jp= √ 15-11 2+ 15-10 2= √16+25= √41
Jl= √ 15-12 2+ 15-10 2= √9+25= √34=5,83
Maka, weight C4 = 41 + 5,83 = 46,83
- D (10,10) → D10 (8,10)
Jp= √ 15-10 2+ 15-10 2= √25+25= √50
A F B D E C G I H J L K
(21)
Jl= √ 15-8 2+ 15-10 2= √49+25= √74= 8,60
Maka, weight D10 = 50 + 8,60 = 58,60
- E (9,7) → E3 (10,7)
Jp= √ 15-9 2+ 15-7 2= √36+64= √100
Jl= √ 15-10 2+ 15-7 2= √25+64= √89=9,43
Maka, weight E3 = 100 + 9,43 = 109,43
Dari perhitungan yang telah dilakukan, weight yang didapatkan untuk masing-masing langkah diurutkan dari yang terendah hingga tertinggi yaitu {F4, A2, C4, D10, E3, B2} = {-1000; 0; 46,83, 58,60; 109,43; 1000}. Maka diambil 4 langkah terbesar yaitu C4, D10, E3, B2, kemudian dipilih secara acak dari ke-4 langkah tersebut. Perhatikan Gambar 3.16 langkah acak yang dipilih adalah node langkah D10.
C3
B3 D3 ...
A3
H2 I2
...
D3
... E1 B3
... J3 H1 G3
...
...
C4
K3
= Simulation Move = Root Node
= Node Pion Merah
= Selected = Visited = Node Pion Kuning
= Expanded
... ... C4 D10 E3 B2
(22)
Perubahan State permainan untuk langkah simulasi ketiga dapat dilihat pada Gambar 3.17. 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Gambar 3.17. State Permainan Langkah Simulasi Ketiga D10 (8,10)
Pada Gambar 3.17 memperlihatkan state permainan pada langkah simulasi ketiga. Perpindahan pion D berawal dari posisi (10,10) menuju posisi tujuan D10 (8,10). Setelah proses simulasi selesai dilakukan, kemudian dihitung skor permainan yang akan digunakan pada tahap backpropagation untuk pemain pion merah berdasarkan state
permainan pada Gambar 3.17 berikut :
- Skor pion di daerah tujuan = 2 x 450 = 900 yaitu pion A dan F
- Skor pion yang berada di antara daerah asal dan tujuan yaitu pion B = 433,
C = 450 - JC 11,10 2 = 450- √ 15 - 11 2 + 15 - 10 2
2
= 450 - 41 = 409,
D = 450 - JD 8,10 2 = 450- √ 15 - 8 2 + 15 - 10 2
2
= 450 - 74 = 376,
dan E = 350.
- Maka jumlah skor hasil simulasi node I2 = 900 + 433 + 409 +376+ 350 = 2468
A F B D E C G I H J L K
(23)
4. Backpropagation
Proses selanjutnya adalah backpropagation yaitu skor dari node-node yang disimulasikan dirata-ratakan untuk memperbaharui statistik skor hingga ke node parent-nya secara rekursif sampai node paling atas (tidak sampai root node). Maka didapatkan rata-rata skor akhir node D3̅̅̅̅ = ∑NWD3
D3 =
2468 + … + …
ND3 . Dimana ND3 adalah jumlah childnode yang dikunjungi dan ∑WD3 adalah jumlah skor yang didapat dari semua childnode D3.
Proses pembaharuan statistik skor dari childnode menuju nodeparent-nya dapat dilihat pada Gambar 3.18. Skor dari childnode I2 yang dihitung serta childnode lainnya juga diperbaharui hingga ke nodeparent-nya yaitu D3. Dari node D3, setiap skor dari
child node dirata-ratakan dan menjadi skor node parent D3. Setelah proses
backpropagation, proses pencarian algoritma MCTS kembali dilakukan berulang
hingga batasan yang ditentukan.
C3 B3 ... A3 ... 2468 ... ... ... ... ... 2468 2468 = Backpropagate Score = Root Node
= Node Pion Merah
= Selected = Visited = Node Pion Kuning
= Expanded
Gambar 3.18. Update Statistik Skor hingga ke Node Parent
3.2.2.4. Pemilihan Final Move
Setelah proses pencarian MCTS dilakukan berulang selama batas yang ditentukan, maka tahap terakhir adalah pemilihan finalmove dari rootnode berdasarkan childnode
(24)
yang memiliki skor evaluasi tertinggi, yang disebut juga dengan MaxChild. Pemilihan
finalmove pada node dengan skor tertinggi dapat dilihat pada Gambar 3.19.
= Root Node
C3
B3 D3 ...
A3
= Final Move
= Visited
8675
6789 8583 3567
Gambar 3.19. Pemilihan Final Move dengan Skor Tertinggi
3.2.3. Analisis Algoritma DFS
Jika langkah pion yang ditentukan algoritma MCTS merupakan langkah lompatan berkali-berkali. Maka jalur langkah yang ditempuh pion ditentukan oleh algoritma DFS. Pada penelitian ini tidak mencari jalur langkah terpendek yang dapat ditempuh pion dalam langkah lompatan berkali-kali.
Urutan pengecekan algoritma DFS dimulai dari arah atas, bawah, kanan, kiri, kanan-atas, kiri-atas, kanan-bawah, kiri-bawah. Pengecekan dilakukan untuk melihat langkah yang diizinkan yaitu langkah lompatan saja. Proses pencarian langkah lompatan berkali-kali dilakukan pada contoh kondisi Gambar 3.20, dimana pion A akan digerakkan menuju posisi A10.
A11 A12
A9 A6 A10
A1 A2
A7 A7
A6 A4
A5 A8
Gambar 3.20. Langkah Lompatan Berkali-kali Pion A
A
(25)
Berdasarkan Gambar 3.20, langkah-langkah yang dapat dilakukan pion A ditampilkan dengan label A1 hingga A12. Posisi langkah yang akan dipilih AI untuk melangkah untuk pion A adalah posisi A12, yang merupakan langkah lompatan berkali-kali. Proses pencarian jalur langkah pion A menuju posisi A12 menggunakan algoritma DFS digambarkan pada searchtree pada Gambar 3.21.
A
A7 A6
A6 A11 A12
A11 A12
A5
A8 A9
Gambar 3.21. Search Tree Algoritma DFS untuk Langkah A Menuju Posisi A12
Berikut ini penjelasan dari proses pencarian jalur langkah pion A menuju posisi A10 dengan algoritma DFS :
1. Dari posisi A sebagai rootnode bangkitkan childrennode sesuai dengan urutan pengecekan 8 arah. Ditemukan langkah lompatan berturut-turut dari A5, A7, dan A6 menjadi childrennode.
2. Dari root node kunjungi child node A5. Bangkitkan children node A5 sesuai urutan pengecekan. Ditemukan langkah lompatan A8.
3. Kunjungi node A8 dan bangkitkan childrennode-nya. Node A8 tidak memiliki
childrennode dan bukan solusi, maka kembali ke rootnode untuk mengunjungi
childnode selanjutnya yaitu node A7.
4. Ditemukan solusi pada node A7, bangkitkan children node-nya sesuai urutan pengecekan. Ditemukan langkah lompatan yaitu A6 dan A9.
(26)
5. Dari node A7 kunjungi node A6. Ditemukan solusi pada node A6 dan bangkitkan children node-nya sesuai urutan pengecekan. Ditemukan children node A11 dan A12.
6. Dari node A6 kunjungi node A11 dan bangkitkan childrennode nya. Node A11 tidak memiliki children node dan bukan solusi, maka kembali ke parentnode
A6 untuk mengunjungi node A12.
7. Node A12 tidak memiliki childrennode dan ditemukan solusi pada node A12. Dari proses pencarian yang digambarkan pada Gambar 3.21, didapatkan jalur penelusuran node yaitu A-A5-A8-A5-A-A7-A6-A11-A12, dari root node dipilih jalur langkah node A7, dimana jalur langkah yang akan ditempuh pion A menuju posisi A12 yaitu A-A7-A6-A11-A112, dapat dilihat pada Gambar 3.22.
A
Gambar 3.22. Jalur Langkah Lompatan Berkali-kali Pion A
3.3. Perancangan
Tahap perancangan sistem dilakukan sebagai tahap persiapan sebelum tahap penerapan dan pengujian sistem. Pada bagian ini penulis menguraikan bagan alir (flowchart) sistem, pemodelan visual menggunakan UML, dan perancangan antarmuka aplikasi.
3.3.1. Pemodelan Visual dengan UML
Dalam tahap pemodelan ini digunakan bahasa visual Unified Modelling Language
(UML), berupa diagram Use Case dan diagram Activity.
A
(27)
3.3.1.1. Diagram Use Case
Diagram Use Case mendeskripsikan sebuah interaksi antara satu atau lebih aktor dengan sistem yang akan dibuat. Berikut ini diagram UseCase dari sistem yang akan dibangun.
Gambar 3.23. Diagram Use Case
Diagram Use Case pada Gambar 3.23 memperlihatkan bahwa user dapat memilih permainan baru (NewGame), melihat cara bermain (HowtoPlay), dan melihat informasi aplikasi (About). Setelah memilih permainan baru, user kemudian memilih bermain dengan 2 pemain (TwoPlayers) atau 4 pemain (FourPlayers). User kemudian dapat bermain dengan AI sesuai dengan jumlah pemain yang dipilih.
Pada saat bermain, user dapat melihat langkah yang diizinkan. Agar AI dapat bermain, AI terlebih dahulu mengevaluasi langkah menggunakan algoritma MCTS. Kemudian AI melakukan pencarian jalur langkah oleh algoritma DFS. Langkah user juga dicek jalur langkahnya oleh AI.
3.3.1.2. Diagram Activity
Diagram Activity memodelkan urutan aktivitas dalam sebuah proses dalam sistem yang sedang dirancang. Manfaat dari diagram ini yaitu untuk membantu memahami proses secara keseluruhan. Pemodelan diagram Activity memodelkan aktifitas yang terjadi saat
user memilih New Game serta saat user dan AI bermain. Berikut ini adalah diagram
(28)
1. Diagram Activity NewGame dengan TwoPlayers
Diagram Activity ini menunjukkan bagaimana user memulai permainan baru dengan 2 pemain yaitu antara user dan AI.
Gambar 3.24. Diagram Activity New Game dengan Two Players
2. Diagram Activity NewGame dengan FourPlayers
Diagram Activity ini menunjukkan bagaimana user memulai permainan baru dengan 4 pemain yaitu antara 1 user dan 3 AI.
(29)
3. Diagram ActivityUser Bermain
Diagram Activity ini menggambarkan aktivitas saat giliran user bermain. User
bermain dengan memilih pion yang ingin digerakkan dan memilih posisi langkah pion yang ditampilkan oleh sistem. Kemudian AI mencari jalur langkah dan menggerakkan pion menuju posisi langkah yang dipilih user. Jika permainan berakhir, yaitu didapatkan pemenangnya, maka sistem akan menampilkan hasil permainan yaitu nama pemenang. Sedangkan, jika permainan belum berakhir maka sistem memberi giliran ke AI untuk bermain.
(30)
4. Diagram Activity AI Bermain
Diagram Activity ini menggambarkan aktivitas saat giliran AI bermain. AI bermain dengan mengecek kondisi permainan kemudian mengevaluasi setiap langkah yang tersedia dan menentukan posisi langkah pion. Kemudian AI mencari jalur langkah dan menggerakkan pion menuju posisi langkah yang dipilih AI. Jika permainan berakhir, maka sistem akan menampilkan hasil permainan yaitu nama pemenang. Sedangkan, jika permainan belum berakhir maka sistem memberi giliran ke user
untuk bermain.
(31)
3.3.2. Flowchart Aplikasi
Flowchart aplikasi memperlihatkan bagaimana proses interaksi yang dapat dilakukan
user terhadap aplikasi permainan yang dibuat.
Gambar 3.28. Flowchart Aplikasi
3.3.3. Perancangan Antarmuka
Pada tahap ini dilakukan perancangan antarmuka (interface) aplikasi permainan Halma. Antar muka aplikasi yang dirancang terdiri atas tampilan utama, tampilan game mode
dan tampilan bermain.
3.3.3.1. Tampilan Utama
Tampilan utama merupakan tampilan awal user membuka aplikasi permainan Halma. Tampilan ini memberikan beberapa tombol pilihan bagi user yaitu NewGame, Howto Play, dan About.
(32)
New Game
How to Play
About
HALMA
1
4
2
3
Gambar 3.29. Rancangan Tampilan Utama
Keterangan :
1. Gambar dengan tulisan ‘Halma’ menunjukkan nama aplikasi permainan.
2. Tombol ‘NewGame’ untuk memulai permainan baru dengan pilihan mode
permainan pada tampilan GameMode.
3. Tombol ‘HowtoPlay’ memperlihatkan cara bermain dan tujuan permainan.
4. Tombol ‘About’ memperlihatkan informasi mengenai pengembangan aplikasi.
3.3.3.2.Tampilan Game Mode
Tampilan Game Mode menampilkan dua tombol untuk memilih permainan dengan jumlah 2 atau 4 pemain. Selain itu, terdapat tombol Back untuk kembali ke tampilan utama. Rancangan tampilan Game Mode dapat dilihat pada Gambar 3.30.
(33)
Two Players
Four Players
Back
Game Mode
1
4
2
3
Gambar 3.30. Rancangan Tampilan Game Mode
Keterangan :
1. Gambar dengan tulisan ‘Game Mode’ menunjukkan nama tampilan.
2. Tombol ‘Two Players’ untuk memulai permainan dengan 1 AI
3. Tombol ‘Four Players’ untuk memulai permainan dengan 3 AI.
4. Tombol ‘Back’ untuk kembali ke tampilan utama.
3.3.3.3. Tampilan Game
Tampilan game merupakan tampilan saat permainan berlangsung, dapat dilihat pada Gambar 3.31. Tampilan ini dapat dibagi menjadi 2 bagian utama. Bagian pertama dari nomor 1 hingga 5, menampilkan papan permainan dan bagian kedua dari nomor 4 hingga nomor 11, menampilkan informasi pemain yang menampilkan informasi permainan yang terjadi pada setiap pemain berupa langkah, skor, dan sebagainya.
(34)
End Game 1
2
3 4 6
5 Total turns :
7
8
9
10 11
Gambar 3.31. Rancangan Tampilan Game
Keterangan :
1. Papan permainan Halma
2. Daerah asal pion merah / daerah tujuan pion kuning sebagai AI 1/3. 3. Daerah asal pion biru / daerah tujuan pion hijau.
4. Daerah asal pion kuning / daerah tujuan pion merah. 5. Daerah asal pion hijau / daerah tujuan pion biru.
6. Tampilan informasi pemain 1 dengan pion merah yaitu user. 7. Tampilan informasi pemain 2 dengan pion biru/kuning yaitu AI 1. 8. Tampilan informasi pemain 3 dengan pion kuning/hijau yaitu AI 2. 9. Tampilan informasi pemain 4 dengan pion hijau yaitu AI 3.
10.Tombol EndGame memberi pilihan untuk mengakhiri permainan. 11.Label yang menghitung total giliran permainan.
(35)
BAB 4
IMPLEMENTASI DAN PENGUJIAN
4.1.Implementasi
Tahap implementasi merupakan tahapan dalam membuat dan menjalankan aplikasi sesuai dengan hasil analisis dan perancangan sistem sebelumnya. Implementasi sistem dilakukan untuk mengetahui sistem yang dirancang dapat berjalan sesuai dengan yang diinginkan
4.1.1. Spesifikasi Perangkat Keras
Perangkat keras yang digunakan dalam membangun dan menjalankan aplikasi permainan Halma memiliki spesifikasi sebagai berikut :
1. Prosesor : Intel(R) Core(TM)i5-2410M CPU @ 2.30GHz 2. RAM : 2,7 GB
3. Harddisk : 500 GB 4. Monitor : 12”
5. Resolusi : 1366 x 768
4.1.2. Spesifikasi Perangkat Lunak
Aplikasi permainan Halma ini dibuat dengan bahasa program Java dan game engine LibGDX. Perangkat lunak yang digunakan dalam membangun dan menjalankan aplikasi permainan Halma adalah Netbeans IDE pada sistem operasi Windows 8.1 Pro 32 bit.
4.1.3. Hasil Eksekusi Aplikasi
Berikut ini akan dijelaskan hasil dari eksekusi aplikasi permainan Halma yang dijalankan pada Netbeans IDE 8.1.
(36)
4.1.3.1. Tampilan Utama
Saat mulai menjalankan aplikasi, akan muncul tampilan utama yang dapat dilihat pada Gambar 4.1. Tampilan ini berisi 3 pilihan menu yaitu New Game untuk memulai permainan baru, How to Play untuk mengetahui cara bermain, dan About untuk mengetahui informasi mengenai aplikasi.
Gambar 4.1. Tampilan Utama
4.1.3.2. Tampilan Game Mode
Tampilan Game Mode muncul setelah memilih tombol New Game pada tampilan utama. Pada tampilan ini user dapat memilih mode permainan dengan memilih menu
TwoPlayers untuk bermain dengan 1 AI atau FourPlayers untuk bermain dengan 3 AI.
Selain itu diberikan tombol Back untuk kembali ke tampilan utama. Tampilan Game Mode dapat dilihat pada Gambar 4.2.
(37)
Gambar 4.2. Tampilan Game Mode
4.1.3.3. Tampilan Game
Tampilan Game merupakan tampilan dimana user dan AI bermain. Untuk jumlah 2 pemain maka tampilan permainan seperti diperlihatkan pada Gambar 4.3 (a). Pion user
berwarna merah dan bermain dengan pion AI berwarna kuning yang letakknya saling berseberangan.
Sedangkan untuk jumlah 4 pemain, tampilan permainan seperti diperlihatkan pada Gambar 4.3 (b). Pion user tetap berwarna merah dan bermain dengan pion biru, kuning, dan hijau masing-masing milik AI. Info pemain ditampilkan 2 untuk 2 pemain dan 4 untuk 4 pemain. Selain itu, ditampilkan juga label Totalturns untuk menghitung jumlah giliran seluruh pemain, dan tombol End Game untuk mengakhiri permainan dengan menampilkan panel akhir permainan.
(38)
(a)
(b)
(39)
4.2. Pengujian
Tahap pengujian merupakan tahap dimana aplikasi dan AI akan diuji untuk mengetahui apakah sesuai dengan hasil analisis dan perancangan yang dilakukan sebelumnya.
4.2.1. Pengujian Proses Bermain
Pengujian ini dilakukan untuk menunjukkan proses bermain dari awal hingga akhir sehingga dapat diketahui proses bermain berjalan sesuai dengan yang diharapkan. Untuk memulai bermain user memilih menu New Game, kemudian memilih jumlah pemain. Pengujian proses bermain dilakukan untuk jumlah 2 pemain.
Pion user berwarna merah dan mendapatkan giliran yang pertama. Posisi pion
user berseberangan dengan pion kuning. Panel info yang diberi garis tepi sesuai warna pion pemain, menunjukkan giliran pemain saat itu. User memilih pion dengan mengklik kanan pada pion yang ingin dipindahkan. Maka langkah yang diizinkan untuk pion yang dipilih muncul dengan kotak berwarna biru muda, seperti diperlihatkan pada Gambar 4.4.
Gambar 4.4. Kotak Biru Menunjukkan Langkah yang Diizinkan
User memindahkan pion yang dipilih dengan mengklik kiri kotak biru. Perpindahan pion menuju kotak biru diperlihatkan pada Gambar 4.5.
(40)
Gambar 4.5. Pion User Berpindah
Pada Gambar 4.5 panel info Moves bertambah 1 setelah pemain melakukan langkah. Status saat giliran pemain adalah Playing sedangkan jika bukan giliran pemain maka status pemain adalah Waiting seperti yang diperlihatkan panel info pemain AI.
Total turns saat awal permainan dimulai dari 1. Selanjutnya pemain AI akan langsung
bermain dengan memindahkan pionnya, yang dapat dilihat pada Gambar 4.6.
Panel info pemain AI berubah dengan diberi warna garis tepi panel sesuai warna pion. Status pemain juga berubah menjadi Playing sedangkan status user menjadi
Waiting. Moves pada panel info pemain AI juga terhitung 1. Thinkingtime menghitung
waktu proses AI dalam menentukan langkah pion selama 54 ms. Total turns setiap giliran bertambah 1 sehingga Total turns menjadi 2.
(41)
Gambar 4.6. Giliran Pemain AI Memindahkan Pion
Kemudian permainan berlangsung pada giliran-giliran berikutnya. Pada Gambar 4.7 dapat dilihat langkah lompatan yang dilakukan pemain user dan AI.
Gambar 4.7. Langkah Lompatan Pion User dan AI
Pada Gambar 4.7 dapat dilihat informasi pada panel info pemain juga berubah.
(42)
time pemain AI berubah menjadi 66 ms, menunjukkan proses menentukan langkah pion bertambah lama. Total turns menjadi 5 yang artinya total giliran hingga pemain selanjutnya adalah giliran ke-5.
Setelah beberapa giliran hingga pertengahan permainan, dapat dilihat pada Gambar 4.8 sebaran pion pemain AI mengarah ke daerah tujuan. Hal ini dikarenakan penentuan langkah pion AI menggunakan algoritma MCTS sesuai dengan strategi perhitungan jarak yang mengarah ke titik tujuan terjauh.
Gambar 4.8. Sebaran Pion AI Mengarah ke Daerah Tujuan
Pada Gambar 4.8 menunjukkan Moves ke 24 dengan total giliran 49, pion AI dan user sudah berada di tengah papan permainan. AI cenderung meninggalkan pion dibelakangnya dan lebih memilih langkah terjauh. Thinking time AI saat tengah permainan juga semakin lama yaitu 206 ms. Hal ini menunjukkan semakin banyak langkah yang tersedia semakin lama pula waktu proses algoritma MCTS
Saat permainan berlangsung user dapat mengakhiri permainan dengan mengklik tombol EndGame. Maka akan muncul dialog konfirmasi ingin mengakhiri permainan atau tidak, dapat dilihat pada Gambar 4.9.
(43)
Gambar 4.9. Dialog Konfirmasi End Game
Jika user ingin mengakhiri permainan maka panel akhir permainan akan muncul dan menentukan pemenang dari score jumlah pion di daerah tujuan paling banyak. Pada Gambar 4.10 menunjukkan pemain user sebagai pemenangnya karena pion user di daerah tujuan ada 9 lebih banyak dari jumlah pion pemain AI yaitu 8. Total turns saat permainan diakhiri pada giliran ke 127.
Sedangkan jika permainan berakhir saat salah satu pemain dapat memindahkan seluruh pion ke daerah tujuan maka panel akhir permainan muncul dengan menampilkan nama pemain tersebut beserta Total turns selama bermain. Perhatikan Gambar 4.11.
(44)
Gambar 4.10. Panel Akhir Permainan Halma Belum Selesai
(45)
4.2.2. Pengujian Batas Jumlah Iterasi MCTS
Batas iterasi proses algoritma MCTS yang digunakan dalam penelitian ini adalah jumlah iterasi. Pengujian batas iterasi dilakukan untuk melihat total giliran paling sedikit yang diperoleh dari jumlah iterasi yang diuji. Pengujian dilakukan 10 kali antara AI dengan AI masing-masing untuk tiap jumlah iterasi 70, 100, 250, dan 500 pada mode permainan Two Players dan Four Players. Hasil pengujian batas iterasi dapat dilihat pada Tabel 4.1.
Tabel 4.1. Hasil Pengujian Batas Iterasi (a) Two Players dan (b) Four Players (a)
Jumlah Iterasi
Total Giliran pada Pengujian
1 2 3 4 5 6 7 8 9 10 70 185 176 157 163 182 173 173 207 178 168 100 169 148 150 190 178 132 142 159 158 194 250 152 144 143 136 142 127 137 121 127 134 500 162 141 128 149 135 113 143 128 145 124
(b) Jumlah
Iterasi
Total Giliran pada Pengujian
1 2 3 4 5 6 7 8 9 10 70 338 324 280 335 312 291 384 317 310 322 100 256 275 288 315 315 281 321 274 298 295 250 242 253 281 265 259 228 225 260 236 291 500 236 192 243 245 215 234 241 260 234 213
Berdasarkan Tabel 4.1 semakin besar jumlah iterasi, maka semakin sedikit total giliran yang diperoleh. Dari seluruh pengujian yang dilakukan, diperoleh total giliran terpendek untuk mode permainan Two Players dan Four Players masing-masing sebanyak 113 dan 192 dari jumlah iterasi 500. Sehingga jumlah iterasi sebanyak 500 kali digunakan MCTS sebagai AI dalam menentukan langkah pion Halma untuk menghadapai user sebagai humanplayer.
(46)
4.2.3. Pengujian Kemampuan AI terhadap User
Pengujian kemampuan antara user sebagai human player dan AI yang menggunakan algoritma MCTS dalam menyelesaikan permainan Halma dilakukan 10 kali masing-masing untuk mode permainan TwoPlayers dan FourPlayers. Batas iterasi MCTS yang digunakan berupa jumlah iterasi sebanyak 500 kali. Hasil pengujian untuk mode permainan TwoPlayers dapat dilihat pada Tabel 4.2.
Tabel 4.2. Hasil Pengujian Kemampuan AI terhadap User pada Mode Two Players
No. User AI Total Giliran
1. Kalah Menang 132
2. Kalah Menang 116
3. Kalah Menang 132
4. Menang Kalah 153
5. Menang Kalah 157
6. Menang Kalah 147
7. Kalah Menang 152
8. Kalah Menang 150
9. Menang Kalah 133
10. Kalah Menang 118
Dari Tabel 4.2 user hanya memiliki peluang untuk memenangkan permainan sebesar 40% dan peluang AI memenangkan permainan sebesar 60%. Total giliran terlama diperoleh dari kemenangan AI sebanyak 152. Total giliran terpendek diperoleh dari kemenangan AI sebanyak 116 giliran. Total giliran terpendek yang diperoleh tidak berbeda jauh dengan total giliran terpendek yang diperoleh pada pengujian batas iterasi sebelumnya yaitu 113.
Pengujian selanjutnya dilakukan untuk mode permainan Four Players antara satu user dan tiga AI. Dengan menggunakan batas iterasi yang sama, hasil pengujian tersebut dapat dilihat pada Tabel 4.3.
(47)
Tabel 4.3. Hasil Pengujian Kemampuan AI terhadap User pada Mode Four Players
No. User AI Total Giliran
1. Kalah Menang 248
2 Menang Human 265
3 Kalah Menang 259
4 Kalah Menang 248
5 Menang Kalah 265
6 Kalah Menang 195
7 Kalah Menang 244
8 Kalah Menang 262
9 Kalah Menang 246
10. Kalah Menang 223
Dari Tabel 4.3, user memiliki lebih sedikit peluang untuk memenangkan permainan sebesar 20%. Hal ini dikarenakan jumlah pemain AI yang dihadapi lebih banyak dari mode TwoPlayers. Sehingga peluang pemain AI memenangkan permainan sebesar 80%. Total giliran terlama diperoleh dari kemenangan AI sebanyak 265 giliran. Total giliran terpendek sebanyak 195 giliran diperoleh dari kemenangan AI. Total giliran terpendek tidak berbeda jauh dengan total giliran terpendek yang diperoleh pada pengujian batas iterasi sebelumnya yaitu 192.
Total giliran yang didapat dari pengujian-pengujian yang dilakukan bisa dipengaruhi dari kemampuan human player atau pemain AI lainnya dalam bermain. Langkah-langkah yang diambil human player dapat membantu atau mencegah AI memperoleh total giliran terpendek. Hal ini tentu tidak lepas dari kemampuan algoritma MCTS itu sendiri dalam menentukan langkah pion pada permainan Halma.
(48)
BAB 5
KESIMPULAN DAN SARAN
5.1. Kesimpulan
Berdasarkan hasil pembahasan dari penelitian yang telah dilakukan, maka dapat diambil kesimpulan sebagai berikut :
1. Algoritma Monte Carlo Tree Search (MCTS) dapat diterapkan untuk menentukan langkah pion Halma sehingga permainan Halma dapat diselesaikan dengan jumlah 2 pemain atau 4 pemain.
2. Strategi pemberian skor dan strategi langkah simulasi berdasarkan posisi pion dan jarak posisi pion dengan posisi tujuan terjauh cukup efektif digunakan saat proses algoritma MCTS mencari langkah terbaik pion Halma.
3. Berdasarkan pengujian yang dilakukan, AI dapat menyelesaikan permainan Halma dengan total giliran terpendek sebanyak 113 giliran untuk 2 pemain dan 192 giliran untuk 4 pemain.
4. Berdasarkan pengujian yang dilakukan, AI dapat memenangkan permainan lebih banyak dari pemain manusia.
5.2. Saran
Saran yang dapat penulis berikan untuk penelitian selanjutnya adalah :
1. Penyelesaian permainan Halma dengan algoritma MCTS dapat dibandingkan dengan algoritma pencarian klasik lain seperti algoritma Alpha-Beta.
2. Algoritma MCTS diharapkan dapat diterapkan pada varian permainan Halma dengan kompleksitas yang lebih tinggi, misalnya untuk jumlah 6 pemain dengan bentuk papan permainan bintang segi enam.
3. Sebaiknya digunakan strategi pemberian skor dan strategi langkah simulasi yang lebih baik sehingga AI dapat memperoleh kemenangan lebih banyak dengan total giliran yang lebih singkat.
(49)
2.1.Game
Game atau permainan merupakan sebuah sistem yang melibatkan pemain dalam suatu permasalahan dengan aturan tertentu sehingga menciptakan hasil yang dapat diukur (Salen & Zimmerman, 2003). Sebagai sistem, game menyediakan situasi dimana pemain dapat berinteraksi. Game memerlukan satu atau lebih pemain untuk menyelesaikan suatu permasalahan yang dibuat. Permasalahan dalam game dibuat dengan berbagai bentuk yang dapat diselesaikan secara kerjasama atau kompetitif. Bagian penting lainnya dari game adalah aturan yang dibuat untuk memberi batas apa yang pemain bisa lakukan dan yang tidak. Pada akhir permainan, pemain menerima hasil menang / kalah atau skor dalam bentuk angka.
Russel & Norvig (1995) mendeskripsikan sebuah game sebagai jenis masalah pencarian dengan komponen-komponen berikut:
a. The initial state¸ yaitu keadaan awal permainan, posisi pemain dan pemain yang
pertama melangkah.
b. Set of operators, yang mendefinisikan langkah-langkah yang diizinkan untuk pemain.
c. Terminal test, yang menentukan akhir dari permainan. Keaadaan permainan
berakhir disebut juga terminal state.
d. Utility function atau payoff function, yang memberikan nilai numerik untuk hasil suatu game. Hasil game berupa menang, kalah, atau seri diwakili berturut-turut dengan nilai +1, -1, 0.
2.1.1. Game Theory
Gametheory adalah ilmu yang mempelajari pengambilan keputusan oleh pemain dalam
sebuah game. Keputusan yang diambil pemain harus berpotensi mempengaruhi kepentingan pemain lainnya. Konsep game theory menyediakan bahasa untuk
(50)
merumuskan, membangun, menganalisa, dan memahami skenario yang strategis. Objek penelitian dari game theory adalah game, yang merupakan model baku dari situasi interaktif dengan melibatkan beberapa pemain (Turocy & von Stengel, 2001).
Menurut Milington dan Funge (2009), game theory mengklasifikasi game
berdasarkan kriteria berikut ini : a. Jumlah pemain
Dalam game theory, biasanya sebuah permainan dimainkan oleh minimal 2 pemain.
b. Tujuan
Sebagian besar game strategis bertujuan untuk mendapatkan kemenangan. Pemain dapat dikatakan menang jika pemain lainnya kalah. Hal ini disebut juga
zero-sum game yaitu kemenangan seorang pemain adalah kekalahan bagi pemain lainnya. Sedangkan untuk non zero-sum game, semua pemain dapat menang atau kalah.
c. Informasi
Sebuah game disebut perfect information jika keadaan permainan dari awal hingga akhir diketahui sepenuhnya oleh setiap pemain. Sedangkan keadaan permainan yang hanya sebagian dapat diamati oleh pemain disebut dengan
imperfectinformation.
Konsep game theory dapat ditemukan pada permainan yang berbasis giliran seperti yang terdapat pada jenis permainan papan. Contoh dari jenis permainan ini adalah Catur, Checkers, Go, dan Halma. Permainan-permainan ini memenuhi kriteria dalam game theory yaitu two-player, zero-sum, dan perfect information. Sehingga analisa dapat dilakukan dengan mudah menggunakan teknik pencarian.
2.2.Kecerdasan Buatan dalam Game
Aplikasi kecerdasan buatan atau artificial intelligence pada awalnya fokus pada penyelesaian masalah dan game. AI dalam game berkaitan dengan bagaimana sistem bertindak dan bagaimana hasil yang diperoleh. Game menggunakan AI agar unsur-unsur yang dikendalikan komputer muncul dengan membuat keputusan cerdas ketika di dalam game terdapat beberapa pilihan untuk situasi tertentu, yang hasilnya relevan, efektif, dan berguna (Schwab, 2009).
(51)
Gambar 2.1. Model AI dalam Game (Millington & Funge, 2009)
Berdasarkan Gambar 2.1. tugas AI dalam game dibagi menjadi 3 bagian yaitu kemampuan untuk memindahkan karakter (movement), kemampuan untuk membuat keputusan (decision making), dan kemampuan untuk berpikir taktis atau strategis
(strategy). Dua bagian pertama berisikan algoritma yang bekerja pada karakter-karakter
dasar, dan bagian terakhir beroperasi secara keseluruhan. Ketiga bagian AI ini menjadi penunjang dalam merancang suatu game (Millington & Funge, 2009).
Membangun program untuk game dengan kinerja tinggi menjadi salah satu keberhasilan besar AI. Hal ini disebabkan sebagian besar keberhasilan telah tercapai dalam permainan papan tradisional seperti Backgammon, Catur, Checkers, Othello, dan
Scrabble, di mana komputer dapat bermain lebih baik dari pemain terbaik manusia. Keberhasilan tersebut dicapai oleh beberapa peneliti yang ingin menangani masalah yang menantang dengan penekanan pada hasil sistem (Schaeffer, 2000).
2.3.Game Tree Search
Salah satu teknik yang biasa digunakan game komputer khususnya game yang bersifat
zero-sum dan imperfect information adalah gametreesearch. Dalam game tree search, langkah dan hasil dari kondisi permainan dimodelkan dalam bentuk tree (van der Kleij, 2010). Sebagai contoh sederhana game tree parsial (sebagian) ditampilkan pada Gambar 2.2. untuk permainan Tic-Tac-Toe.
(52)
Gambar 2.2. Game Tree pada Game Tic-Tac-Toe
Game tree pada Gambar 2.2. menunjukkan hal berikut ini (Elnaggar, et al. 2014) :
Setiap node merepresentasikan sebuah state (keadaan) permainan.
Root node merepresentasikan state awal permainan.
Semua cabang yang diberikan node merepresentasikan semua langkah yang diizinkan untuk node tersebut.
Cabang node disebut juga dengan childnode sedangkan node yang merupakan asal dari cabang node disebut juga dengan parentnode.
Node yang tidak memiliki turunan disebut leafnode.
Berdasarkan ilustrasi pada Gambar 2.2, pemain X melakukan langkah pertamanya, maka dari itu state permainan disesuaikan dengan gametree. Terdapat lima kotak yang tersedia, maka ada lima langkah yang dapat dilakukan pemain X. Dengan demikian kelima edges (garis penghubung) menghubungkan root ke node lainnya yang mewakili state permainan yang dicapai dengan setiap langkah yang dibuat. Pemain X dan pemain O bermain secara bergantian hingga leafnode, dimana salah satu pemain mengisi tiga kotak berturut-turut, dicapai. Leafnode pada gametree parsial ini ditandai
dengan “Win” atau “Lose” sesuai dengan perspektif pemain X (van der Kleij, 2010).
Tic-Tac-Toe merupakan game yang berbasis giliran, maka sistem hanya berubah
(53)
langkah yang pemain dapat lakukan. Dalam beberapa permainan (seperti Halma), ada ratusan hingga ribuan langkah yang mungkin pemain dapat lakukan. Hal ini dikarenakan banyaknya node dan jumlah langkah berbeda yang dapat diambil oleh setiap pemain. Beberapa posisi papan dapat mencapai kondisi dimana tidak terdapat lagi langkah yang memungkinkan. Kondisi ini disebut terminal position dan menyatakan akhir dari sebuah permainan (Millington & Funge, 2009).
Umumnya, game tree dapat digambarkan dalam bentuk abstrak tanpa mengikutkan diagram papan. Game tree ini hanya menampilkan nilai yang dimiliki setiap node dan simbol-simbol pendukung lainnya.
Gambar 2.3. Game Tree dalam Bentuk Abstrak (Millington & Funge, 2009)
2.4.Monte Carlo Tree Search (MCTS)
Monte Carlo Tree Search (MCTS) merupakan algoritma pencarian best-first yang
menggabungkan metode Monte Carlo dengan searchtree (Magnuson, 2015). Metode
Monte Carlo merupakan metode yang menggunakan simulasi acak secara berulang
untuk mendapatkan hasil yang terbaik. Dalam MCTS, simulasi acak digunakan untuk memperluas game tree. Kemudian game tree digunakan untuk menentukan langkah selanjutnya. Berbeda dengan teknik pencarian klasik lainnya (seperti Minimax), metode MCTS tidak memerlukan sebuah fungsi evaluasi posisional tetapi berdasarkan explorasi acak pada ruang pencarian (Chaslot, et al. 2008).
Algoritma MCTS ini telah banyak diterapkan pada beberapa jenis permainan. Menurut Chaslot (2010), sebuah permainan harus memenuhi kondisi berikut sehingga MCTS dapat digunakan :
(54)
Skor permainan dibatasi, artinya ada definisi yang jelas antara menang, kalah, dan seri.
Informasi permainan diberikan, artinya semua aturan dan keadaan papan diketahui oleh semua pemain.
Simulasi dibatasi berakhir relatif cepat, dengan kata lain panjang permainan dibatasi.
Algoritma MCTS membangun searchtree secara iterative hinggga batasan yang ditetapkan (berupa waktu, memori, atau jumlah iterasi) tercapai. Sehingga pencarian dihentikan dan mengembalikan hasil terbaik dari root. Setiap node dalam tree
merepresentasikan state dari domain yang dihubungkan ke child node yang merepresentasikan ke tindakan yang mengarah ke state berikutnya. Proses pencarian MCTS dilakukan dengan 4 tahap utama yaitu selection, expansion, simulation, dan
backpropagation. Tahap pencarian algoritma MCTS tersebut dapat dikelompokkan
pada 2 policy berikut ini (Browne, et al. 2012) :
1. Treepolicy, yaitu strategi dalam memilih dan membuat leafnode dari node-node
yang tersedia pada gametree (selection dan expansion).
2. Default policy, yaitu strategi dalam melakukan simulasi dari node yang
diberikan untuk menghasilkan nilai estimasi (simulation)
Tahap backpropagation sendiri tidak menggunakan policy atau strategi, tetapi memperbaharui statistik node untuk menambah informasi dalam treepolicy.
Gambar 2.4. Proses Pencarian MCTS (Browne, et al. 2012)
Pohon pencarian MCTS tumbuh asimetris dan berkembang secara berulang dengan melakukan 4 tahap sebagai berikut (Chaslot, 2010) :
(55)
1. Selection
Pada tahap selection, tree ditelusuri mulai dari rootnode dengan menggunakan strategi
selection di setiap node untuk memilih tindakan selanjutnya. Strategi selection
digunakan untuk menyeimbangkan antara exploitasi node dengan nilai estimasi tertinggi dan explorasi node dengan nilai perkiraan yang tidak pasti. Exploitasi artinya pencarian tree diperdalam ke child node yang terbaik. Sedangkan explorasi berarti bahwa lebih banyak childnode yang digunakan dalam rangka meningkatkan kepastian
childnode yang terbaik.
Dalam penelitian ini, salah satu strategi selection yang efektif digunakan adalah algoritma Upper Confidence Bounds applied to Trees (UCT). Algoritma UCT menggunakan rumus Upper Confidence Bounds (UCB) dalam tahap selection. Rumus ini disusun oleh Auer dkk. (2002) dan pertama kali diterapkan pada tahap pemilihan
node MCTS oleh Kocsis dan Szepesvari (2006). Algoritma UCT memilih node terbaik berdasarkan hasil perhitungan rumus UCB terdapat pada persamaan 2.1.
UCB = WNi i + C√
lnN Ni Dimana : Wi = skor permainan
Ni = jumlah kunjungan childnodei
C= konstanta explorasi = √2
N = jumlah kunjungan nodeparent.
2. Expansion
Pada tahap expansion, dilakukan penambahan node baru ke search tree sebagai child
dari node yang ditemukan pada tahap sebelumnya. Node ini harus sesuai dengan langkah yang diizinkan untuk dieksplorasi.
3. Simulation
Selanjutnya, simulasi atau disebut juga playout dilakukan dari node yang baru ditambahkan. Simulasi dapat dilakukan secara pure-random atau menggunakan beberapa strategi random yang sederhana. Strategi simulasi acak dapat menggunakan fungsi heuristic untuk memberikan weight pada langkah yang paling menjanjikan.
(56)
4. Backpropagation
Setelah simulasi mencapai akhir permainan, hasil dari simulasi kemudian diperbarui pada tree. Dimulai dari node baru yang disimulasikan hingga ke parent node. Kunjungan node bertambah satu dan rasio menang/kalah diubah sesuai dengan rata-rata hasil yang dikeluarkan.
Setelah proses MCTS dilakukan berulang dan batasan yang ditentukan tercapai, selanjutnya dilakukan adalah pemilihan final move dalam permainan sebenarnya. Mekanisme pemilihan finalmove dapat dilakukan dengan 3 cara berikut ini (Chaslot, et al. 2007) :
1. MaxChild, pemilihan childnode dengan skor tertinggi.
2. RobustChild, pemilihan childnode paling sering dikunjungi
3. Max-RobustChild, pemilihan childnode dengan skor tertinggi dan paling sering dikunjungi.
2.5.Depth-First Search (DFS)
Algoritma pencarian yang biasa digunakan adalah algoritma Depth-First Search. Disebut depth-first karena proses pencarian ini mengikuti jalur terdalam lebih dahulu sebelum pindah ke jalur berikutnya. Teknik pencarian ini termasuk dalam teknik pencarian buta (blind search) karena tidak ada informasi yang diberikan pada ruang pencarian (Coppin, 2004). Prinsip algoritma ini diilustrasikan pada Gambar 2.5.
(57)
Berdasarkan Gambar 2.5, proses DFS dilakukan pada semua childnode sebelum dilakukan pencarian ke node-node yang selevel. Pencarian dimulai dari root node Ake level yang lebih tinggi. Proses ini diulangi terus hingga ditemukan solusi yaitu node J. Sehingga urutan penelusuran node menjadi A-B-D-G-D-H-D-B-A-C-E-I-E-J.
Keuntungan dari metode DFS ada 2 yaitu tidak membutuhkan memori yang besar dan dapat menemukan solusi tanpa harus menguji lebih banyak lagi ruang keadaan. Sedangkan kelemahan dari metode DFS yaitu memungkinkan tidak ditemukan tujuan yang diharapkan. Selain itu metode ini hanya akan mendapat 1 solusi pada setiap pencarian (Russel & Norvig, 1995).
2.6.Halma
Permainan Halma ditemukan oleh Dr. George Howard Monks diantara tahun 1883 dan 1884. Saudara George, Robert Monks pada tahun 1883 atau 1884 menulis surat kepada
saudaranya dan mendeskripsikan permainan Inggris ‘Hoppity’. G.W. Monks
mengambil beberapa ketentuan dari Hoppity dan membangun Halma. Dr. Thomas Hill sekitar tahun 1818, membantu dalam merancang permainan ini. Dr. Thomas Hill menamakan permainan ini ‘Halma’ yang berasal dari bahasa Yunani yang artinya melompat (Walker, 2011). Papan permainan Halma awal ditemukan berbentuk persegi, dapat dilihat pada Gambar 2.6.
(58)
Permainan Halma dapat dimainkan oleh 2 atau 4 pemain. Setiap pemain memiliki jumlah pion 13 buah dengan warna yang berbeda-beda. Objektif dari permainan Halma adalah memindahkan semua pion dari tempat asal ke tempat tujuan yang terletak di seberangnya. Pemain yang dinyatakan menang adalah permain pertama yang berhasil memindahkan semua pion ke daerah tujuan. Aturan cara bermain Halma adalah sebagai berikut (Lieyanda, 2011) :
Mulai melangkahkan pion dengan arah yang diizinkan secara bergiliran.
Pion boleh hanya bergerak satu langkah ke kotak kosong ke arah kiri atas, kiri bawah, kanan atas, kanan bawah, samping kanan, samping kiri, atau melompati pion di depannya.
Lompatan dapat terus dilakukan selama masih ada pion yang dapat dilompati.
Langkahkan pion menuju ke arah segitiga seberang dan disusun secara tepat agar area segitiga terisi dengan penuh.
Pemenang adalah yang paling cepat memindahkan semua pion ke segitiga seberang.
2.7.Penelitian Terdahulu
Penelitian pada permainan Halma sebelumnya dilakukan oleh Bell (2009) untuk mencari permainan dengan giliran terpendek menggunakan teknik pencarian Breadth
First Iterative Deepening A*. Hasilnya permainan terpendek dapat dilakukan dalam 30
putaran. Pada penelitian lainnya, Indah (2011) menggunakan algoritma Depth First
Search (DFS) hanya untuk mendeteksi langkah-langkah yang dibolehkan. Sedangkan,
Lieyanda (2011) merancang AI dengan mengimplementasikan algoritma Greedy pada permainan Halma berdasarkan lompatan terjauh atau pion belakang. Penggunaan algoritma Greedy pada permainan Halma tidak memberikan hasil yang cukup optimal. Penelitian mengenai penerapan algoritma MCTS pada jenis permainan papan dilakukan oleh Gelly dkk. (2012). Algoritma MCTS berhasil diterapkan pada permainan Go sehingga dapat mengalahkan pemain Go profesional. Sedangkan pada penelitian lain (Nijssen, 2007), algoritma MCTS cukup dapat bermain pada permainan
Othello, namun tidak pada level yang lebih tinggi. Penelitian lainnya, menunjukkan algoritma MCTS dapat lebih baik dari algoritma Alpha-Beta pada permainan Lines of Action (LOA) (Winands, et al. 2010) dan Hex (Arneson, et al. 2010).
(59)
Tabel 2.1. Penelitian Terdahulu
No. Peneliti (Tahun) Metode dan Kasus Keterangan 1. Meilia Nur Indah
(2011)
Algoritma DFS pada permainan Halma bentuk bintang.
Algoritma DFS hanya digunakan untuk mendeteksi langkah-langkah yang dibolehkan 2. Vivi Lieyanda
(2011)
Algoritma Greedy pada permainan Halma bentuk bintang.
Algoritma Greedy tidak memberikan hasil yang cukup optimal.
3. George I. Bell (2009)
Algoritma Breadth First Iterative Deepening A*
pada permainan Halma dan variannya.
Permainan terpendek dapat dilakukan dalam 30 putaran.
4. Sylvain Gelly, et al. (2012)
Algoritma MCTS pada permainan Go.
Algoritma MCTS dapat mengalahkan pemain Go
profesional. 5. Pim Nijssen (2007) Algoritma MCTS pada
permainan Othello.
Algoritma MCTS cukup dapat bermain pada permainan Othello. 6. Mark H.M.
Winands, et al. (2010)
Algoritma MCTS pada permainan Lines of Action
(LOA).
Algoritma MCTS dapat mengungguli algoritma
Alpha-Beta terkuat. 7. Broderick Arneson,
et al. (2010)
Algoritma MCTS pada permainan Hex.
Algoritma MCTS dapat setara dengan algoritma
Alpha-Beta terbaik
Berbeda dengan penelitian sebelumnya, penulis ingin merancang permainan Halma yang dapat dimainkan oleh satu user melawan satu atau tiga AI yang menggunakan algoritma MCTS. Algoritma DFS akan digunakan untuk menentukan jalur langkah pion baik user maupun AI. Dari penelitian ini, diharapkan AI dapat menyelesaikan permainan Halma dengan baik.
(60)
BAB 1 PENDAHULUAN
1.1.Latar Belakang
Dalam ilmu komputer, Artificial Intelligence atau AI adalah salah satu bidang yang penting untuk dipelajari. Objek awal penelitian AI yang sangat dikenal adalah permainan. AI dirancang dalam suatu permainan agar komputer dapat memainkan permainan dengan cerdas sesuai dengan tujuan permainan tersebut. Penerapan AI pada permainan telah banyak dilakukan oleh para peneliti pada berbagai jenis permainan. Khususnya untuk jenis permainan papan, seperti penelitian yang telah dilakukan pada permainan Catur, Go, dan Checkers. Penelitian tersebut memberikan hasil yang memuaskan, yang berarti AI dapat bermain lebih baik dari pemain manusia (Schaeffer, 2010).
Dalam game theory, permainan papan yang bersifat zero-sum dan perfect
information biasanya menggunakan algoritma pencarian pada pohon permainan untuk
mencari langkah pion yang terbaik. Salah satu algoritma pohon pencarian yang dikenal baik dalam permainan adalah algoritma Minimax. Pada permainan Catur, algoritma Minimax, dapat berjalan dengan optimal, tetapi tidak cukup optimal untuk permainan Go dikarenakan kompleksitas permainan Go yang tinggi (Chaslot, 2010).
Algoritma baru kemudian diusulkan yaitu algoritma Monte Carlo Tree Search
(MCTS). Algoritma MCTS adalah algoritma yang memilih langkah terbaik berdasarkan hasil simulasi permainan. Algoritma MCTS dapat diterapkan pada beberapa jenis permainan seperti jenis permainan papan. Hasil yang paling baik sejauh ini telah diperoleh pada permainan Go, dimana algoritma MCTS mengungguli semua teknik pencarian klasik lain (Chaslot, et al. 2008). Seperti penelitian yang dilakukan oleh Gelly, et al. (2012) algoritma MCTS berhasil diterapkan pada permainan Go
dengan melakukan beberapa peningkatan pada algoritma MCTS. Pada penelitian lain, algoritma ini berhasil diterapkan pada permainan Othello (Nijssen, 2007), Hex
(61)
Algoritma MCTS pada penelitian ini, penulis ingin terapkan pada permainan papan lainnya yaitu Halma. Permainan Halma cukup dikenal dan digemari oleh masyarakat karena konsep permainannya yang mudah dimengerti dan tidak memiliki terlalu banyak peraturan. Pemain hanya perlu memindahkan seluruh pion miliknya dari daerah asal ke daerah tujuan. Langkah pion bisa berupa satu langkah biasa ke segala arah dan langkah lompatan sekali atau lompatan berkali-kali jika ada satu pion disebelahnya. Pemain yang lebih dahulu memindahkan seluruh pion ke daerah lawan dinyatakan sebagai pemenang.
Permainan Halma termasuk permainan yang memiliki kompleksitas yang tinggi dikarenakan banyaknya kemungkinan langkah yang dapat dilakukan pion. Permasalahan lainnya adalah langkah penyelesaian permainan Halma sangat bergantung pada posisi pion lawan. Oleh karena itu, diperlukan suatu pendekatan untuk menyelesaikan permasalahan tersebut.
Penelitian pada permainan Halma sebelumnya, Indah (2011) menggunakan algoritma Depth First Search (DFS) hanya untuk mendeteksi langkah-langkah yang dibolehkan. Penelitian lainnya, Lieyanda (2011) merancang AI dengan mengimplementasikan algoritma Greedy pada permainan Halma berdasarkan lompatan terjauh atau pion belakang. Penggunaan algoritma Greedy pada permainan Halma tidaklah memberikan hasil yang cukup optimal. Sedangkan, Bell (2009) mencari permainan dengan giliran terpendek pada permainan Halma menggunakan teknik pencarian Breadth First Iterative Deepening A*. Hasilnya permainan terpendek dapat dilakukan dalam 30 putaran.
Pada penelitian kali ini, penulis ingin merancang permainan Halma yang dapat dimainkan oleh satu user sebagai human player melawan satu atau tiga AI yang menggunakan algoritma MCTS. Algoritma lain juga akan digunakan dalam membantu menyelesaikan permainan Halma ini. Dengan melakukan penelitian ini, diharapkan algoritma MCTS dapat menentukan langkah pion Halma dengan baik sehingga seluruh pion dapat mengisi daerah tujuan lebih dahulu dari pemain lainnnya.
1.2.Rumusan Masalah
Rumitnya penyelesaian dalam permainan Halma, dimana langkah penyelesaian sangat tergantung pada posisi pion dan pion pihak lawan. Sehingga diperlukan satu pendekatan lain untuk menyelesaikan permasalahan tersebut.
(1)
DAFTAR ISI
Hal.
PERSETUJUAN ii
PERNYATAAN iii
UCAPAN TERIMA KASIH iv
ABSTRAK vi
ABSTRACT vii
DAFTAR ISI viii
DAFTAR TABEL xi
DAFTAR GAMBAR xii
BAB 1 PENDAHULUAN 1
1.1.Latar Belakang 1
1.2.Rumusan Masalah 2
1.3.Batasan Masalah 3
1.4.Tujuan Penelitian 3
1.5.Manfaat Penelitian 3
1.6.Metodologi Penelitian 3
1.7.Sistematika Penulisan 4
BAB 2 LANDASAN TEORI 5
2.1.Game 5
2.1.1.Game Theory 5
2.2.Kecerdasan Buatan dalam Game 6
2.3.Game Tree Search 7
2.4.Monte Carlo Tree Search (MCTS) 9
2.5.Depth-First Search (DFS) 12
(2)
2.7.Penelitian Terdahulu 14
BAB 3 ANALISIS DAN PERANCANGAN 16
3.1.Arsitektur Umum 16
3.2.Analisis 17
3.2.1. Ilustrasi Permainan Halma 17
3.2.2. Analisis Algoritma MCTS pada Permainan Halma 20
3.2.2.1. Strategi Penentuan Skor Permainan 20
3.2.2.2. Strategi Langkah Simulasi 20
3.2.2.3. Proses Pencarian dengan Algoritma MCTS 21
3.2.2.4. Pemilihan Final Move 35
3.2.3. Analisis Algoritma DFS 36
3.3.Perancangan 38
3.3.1. Pemodelan Visual dengan UML 38
3.3.1.1. Diagram Use Case 39
3.3.1.2. Diagram Activity 39
3.3.2. Flowchart Aplikasi 43
3.3.3. Perancangan Antarmuka 43
3.3.3.1. Tampilan Utama 43
3.3.3.2. Tampilan Game Mode 44
3.3.3.3. Tampilan Game 45
BAB 4 IMPLEMENTASI DAN PENGUJIAN 47
4.1.Implementasi 47
4.1.1. Spesifikasi Perangkat Keras 47
4.1.2. Spesifikasi Perangkat Lunak 47
4.1.3. Hasil Eksekusi Aplikasi 47
4.1.3.1. Tampilan Utama 48
4.1.3.2. Tampilan Game Mode 48
4.1.3.3. Tampilan Game 49
4.2.Pengujian 51
(3)
4.2.2. Pengujian Batas Jumlah Iterasi MCTS 57
4.2.3. Pengujian Kemampuan AI terhadap User 58
BAB 5 KESIMPULAN DAN SARAN 60
5.1. Kesimpulan 60
5.2. Saran 60
(4)
DAFTAR TABEL
Hal.
Tabel 2.1. Penelitian Terdahulu 15
Tabel 3.1. Keterangan Langkah Pion A 19
Tabel 4.1. Hasil Pengujian Batas Iterasi (a) Two Players dan (b) Four Players 57 Tabel 4.1. Hasil Pengujian Kemampuan AI terhadap User pada Mode Two Players 58 Tabel 4.2. Hasil Pengujian Kemampuan AI terhadap User pada Mode Four Players 59
(5)
DAFTAR GAMBAR
Hal.
Gambar 2.1. Model AI dalam Game 7
Gambar 2.2. Game Tree pada Game Tic-Tac-Toe 8
Gambar 2.3. Game Tree dalam Bentuk Abstrak 9
Gambar 2.4. Proses Pencarian MCTS 10
Gambar 2.5. Ilustrasi Depth-First Search 12
Gambar 2.6. Bentuk Permainan Halma 13
Gambar 3.1. Arsitektur Umum 16
Gambar 3.2. Ilustrasi Permainan Halma Sebagian pada Bidang Koordinat 18
Gambar 3.3. Delapan Arah Langkah Pion Halma 18
Gambar 3.4. Langkah-Langkah yang Dapat Dilakukan Pion A 19
Gambar 3.5. State Permainan Halma Sebagian 22
Gambar 3.6. Penelusuran Node 23
Gambar 3.7. Pemilihan Node D3 24
Gambar 3.8. State Permainan Node D3 (10,10) 25
Gambar 3.9. Penambahan Node Baru 25
Gambar 3.10. State Expansion Node Langkah I2 (7,8) 26 Gambar 3.11. Langkah Simulasi hingga 2 Kali Gerakan Pion A 27 Gambar 3.12. Langkah Simulasi Pertama Node C4 Dipilih secara Acak 29 Gambar 3.13. State Permainan Simulasi Pertama C (11,10) 29 Gambar 3.14. Langkah Simulasi Kedua Node G3 Dipilih secara Acak 31 Gambar 3.15. State Permainan Simulasi Kedua G (3,3) 32 Gambar 3.16. Langkah Simulasi Ketiga Node D10 Dipilih secara Acak 33 Gambar 3.17. State Permainan Langkah Simulasi Ketiga D10 (8,10) 34 Gambar 3.18. Update Statistik Skor hingga ke Node Parent 35 Gambar 3.19. Pemilihan Final Move dengan Skor Tertinggi 36 Gambar 3.20. Langkah Lompatan Berkali-kali Pion A 36
(6)
Gambar 3.21. Search Tree Algoritma DFS untuk Langkah A Menuju Posisi A12 37 Gambar 3.22. Jalur Langkah Lompatan Berkali-kali Pion A 38
Gambar 3.23. Diagram Use Case 39
Gambar 3.24. Diagram Activity New Game dengan Two Players 40 Gambar 3.25. Diagram Activity New Game dengan Four Players 40
Gambar 3.26. Diagram Activity User Bermain 41
Gambar 3.27. Diagram Activity AI Bermain 42
Gambar 3.28. Flowchart Aplikasi 43
Gambar 3.29. Rancangan Tampilan Utama 44
Gambar 3.30. Rancangan Tampilan Game Mode 45
Gambar 3.31. Rancangan Tampilan Game 46
Gambar 4.1. Tampilan Utama 48
Gambar 4.2. Tampilan Game Mode 49
Gambar 4.3. Tampilan Game dengan (a) 2 Pemain dan (b) 4 Pemain 50 Gambar 4.4. Kotak Biru Menunjukkan Langkah yang Diizinkan 51
Gambar 4.5. Pion User Berpindah 52
Gambar 4.6. Giliran Pemain AI Memindahkan Pion 53
Gambar 4.7. Langkah Lompatan Pion User dan AI 53
Gambar 4.8. Sebaran Pion Mengarah ke Daerah Tujuan 54
Gambar 4.9. Dialog Konfirmasi End Game 55
Gambar 4.10. Panel Akhir Permainan Halma Belum Selesai 56 Gambar 4.11. Panel Akhir Permainan Halma Hingga Selesai 56