• Tidak ada hasil yang ditemukan

Implementasi Algoritma MTD (F) Untuk Menentukan Solusi Pad Board Game 2048

N/A
N/A
Protected

Academic year: 2017

Membagikan "Implementasi Algoritma MTD (F) Untuk Menentukan Solusi Pad Board Game 2048"

Copied!
55
0
0

Teks penuh

(1)

1

1.1 Latar Belakang Masalah

Permainan 2048 adalah permainan yang diciptakan oleh pengembang web yang berasal dari Italia yaitu Gabriele Cirulli pada bulan Maret 2014. Permainan tersebut cukup mudah dimainkan karena tinggal menggeser ke kiri, kanan, atas atau bawah untuk menggabungkan kotak-kotak bernomor tertentu supaya membentuk hasil akhir 2048 [1]. Permainan 2048 dirilis untuk berbagai platform sehingga banyak orang yang dapat memainkannya. Saat ini banyak orang menggunakan berbagai macam cara untuk menyelesaikan permainan tersebut. Berbagai algoritma sudah diimplementasikan untuk menyelesaikannya, seperti dengan menggunakan algoritma greedy, backtracking [2], dan minimax [3]. Dari hasil implementasi tersebut didapatkan bahwa algoritma greedy kurang optimal dalam menyelesaikan permainan 2048 karena dari 11 kali percobaan tidak bisa mendapatkan angka 2048 namun cepat dalam mengambil langkah sedangkan untuk algoritma backtracking dapat menyelesaikan permainan 2048 dalam 1 kali percobaan namun dengan waktu 23 menit 18 detik. Untuk algoritma minimax hasilnya ditentukan dari kedalaman dalam pencarian, semakin dalam mencari semakin besar kemungkinan untuk dapat menyelesaikan permainan 2048 namun membutuhkan waktu yang lebih lama sesuai kedalaman pencariannya. Untuk itu diperlukan penelitian terhadap algoritma lainnya untuk menyelesaikan permainan 2048.

(2)

permainan komputer seperti catur, othello, dan checkers, algoritma MTD(f) mempunyai performa rata-rata lebih baik daripada algoritma-algoritma optimasi minimax lainnya seperti Alpha-Beta dan negascout [5], sehingga algoritma MTD(f) memungkinkan dapat menyelesaikan permainan 2048.

Dari uraian tersebut, maka akan dilakukan penelitian untuk mengimplementasikan algoritma MTD(f) dalam menyelesaikan permainan 2048. Diharapkan dengan mengimplementasikan algoritma MTD(f) dapat diketahui kemampuan algoritma MTD(f) untuk menyelesaikan permainan 2048.

1.2 Rumusan Masalah

Sebagai hasil kajian dari uraian latar belakang, maka berikut adalah beberapa rumusan masalah yang teridentifikasi yaitu :

1) Bagaimana mengimplementasikan algoritma MTD(f) pada permainan 2048?

2) Bagaimana kemampuan algoritma MTD(f) dalam menyelesaikan permainan 2048?

1.3 Maksud dan Tujuan

Berdasarkan masalah yang ada, maka maksud dari tugas akhir ini adalah untuk mengimplementasikan algoritma MTD(f) pada permainan 2048. Sedangkan tujuan yang akan dicapai adalah mengukur tingkat akurasi dan kecepatan algoritma MTD(f) untuk menyelesaikan permainan 2048.

1.4 Batasan Masalah

(3)

1) Permainan bergenre board game 2) Papan permainan berukuran 4x4 kotak

3) Permainan dimainkan oleh algoritma MTD(f) untuk menentukan langkah dalam permainan 2048

4) Pemodelan dan perancangan sistem menggunakan pemodelan berbasis objek dengan UML

5) Bahasa pemrograman yang digunakan adalah C# 6) Permainan 2048 disimulasikan dalam platform desktop

1.5 Metodologi Penelitian

Metode penelitian yang digunakan adalah metode penelitian dan pengembangan (research and development), yaitu metode penelitian yang bertujuan menghasilkan produk tertentu serta menguji efektivitas produk tersebut. Langkah-langkah yang akan dilakukan pada penelitian ini adalah melalui metode pengumpulan data, pembuatan perangkat lunak, pengujian perangkat lunak dan kesimpulan dari pengujian yang telah dilakukan.

Gambar 1.1 Metodologi Penelitian

1.5.1 Metode Pengumpulan Data

(4)

1.5.2 Metode Pembangunan Perangkat Lunak

Metode pembangunan perangkat lunak yang digunakan adalah metode Extreme Programming [6].

Gambar 1.2 Metode Pembangunan Perangkat Lunak Extreme Programming

Proses-proses pada Gambar 1.2 dapat dijelaskan sebagai berikut: 1) Planning

(5)

2) Design

Perancangan aplikasi untuk mengimplementasikan algoritma MTD(f) pada permainan 2048 berbasis objek menggunakan UML.

3) Coding

Menulis kode program dari hasil perancangan ke dalam Bahasa pemrograman Java.

4) Test

Menguji algoritma yang telah diterapkan pada permainan 2048 dengan mengukur tingkat akurasi dan kecepatan algoritma MTD(f) dalam menyelesaikan permainan 2048.

1.5.3 Pengujian Perangkat Lunak

Pengujian perangkat lunak dilakukan untuk menguji tingkat akurasi dan kecepatan dari algoritma MTD(f) yang telah diimplementasikan pada permainan 2048. Permainan 2048 akan dimainkan oleh algoritma MTD(f) sebanyak 10 kali tiap tingkat kedalaman pencarian. Tingkat kedalaman pencarian yang akan diuji adalah lima tingkat dari tingkat kedalaman nol sampai empat. Kemudian dihitung jumlah permainan yang bisa mencapai angka 2048 pada tiap tingkat kedalaman pencarian. Sehingga untuk mendapatkan hasil akurasi algoritma MTD(f) dengan membandingkan banyaknya jumlah permainan yang bisa mencapai angka 2048 dengan banyaknya permainan yang telah dilakukan. Sedangkan untuk kecepatannya dihitung berdasarkan waktu yang dibutuhkan untuk menyelesaikan permainan 2048.

1.5.4 Kesimpulan

(6)

1.6 Sistematika Penulisan

Sistematika penulisan tugas akhir ini disusun untuk memberikan gambaran umum tentang penelitian yang dijalankan. Sistematika tugas akhir ini adalah sebagai berikut:

BAB 1 PENDAHULUAN

Bab ini menguraikan tentang latar belakang masalah, rumusan masalah, maksud dan tujuan, batasan masalah, metodologi penelitian, serta sistematika penulisan.

BAB 2 LANDASAN TEORI

Bab ini membahas tentang permainan, permainan 2048, kecerdasan buatan,algoritma minimax, algortima alphabeta prunning, algoritma MTD(f), objek-oriented programming, unified modelling language, C# dan Visual Studio.

BAB 3 ANALISIS DAN PERANCANGAN SISTEM

Bab ini membahas analisis masalah, analisis algoritma MTD(f), analisis kebutuhan fungsional dan kebutuhan nonfungsional serta melakukan perancangan sistem yang akan dibangun.

BAB 4 IMPLEMENTASI DAN PENGUJIAN SISTEM

Bab ini membahas implementasi dari tahapan analisis dan perancangan sistem ke dalam perangkat lunak dan hasil uji dari analisis algoritma MTD(f) pada permaianan 2048.

BAB 5 KESIMPULAN DAN SARAN

(7)

7

2.1 Permainan

Pada bagian ini akan dijelaskan mengenai definisi permainan dan jenis-jenis permaianan.

2.1.1 Definisi Permainan

Permainan (Game) terdiri atas sekumpulan peraturan yang membangun situasi bersaing dari dua sampai beberapa orang atau kelompok dengan memilih strategi yang dibangun untuk mengoptimalkan kemenangan sendiri atau meminimalkan kemenangan lawan. Peraturan menentukan kemungkinan tindakan untuk setiap pemain, sejumlah keterangan diterima setiap pemain sebagai aturan dalam bermain, sejumlah kemenangan atau kekalahan dalam berbagai situasi [7]. Permainan umumnya menyediakan sistem penghargaan, misalnya nilai (score) yang dihitung berdasarkan tingkat keberhasilan yang dicapai dalam menyelesaikan tugas-tugas yang ada di dalam permainan tersebut. Sistem elektronik yang digunakan untuk menjalankan permainan disebut platform, contohnya adalah komputer dan konsol permainan (game console).

(8)

dinamakan pengendali (controller). Pengendali ini pada umumnya terdiri dari sejumlah tombol-tombol dan kendali arah yang masing-masing bagian memiliki fungsi tersendiri. Fungsi dari alat pengendali tersebut untuk mengendalikan maupun berinteraksi dengan gambar yang ada di layar.

2.1.2 Jenis Permainan

Permainan dari tahun pertama dibuat sampai sekarang semakin banyak jenis dan teknologi yang digunakan semakin canggih. Dari semua permainan yang telah dibua tdi dunia, permainan tersebut dikelompokkan menjadi beberapa jenis. Beberapa contoh jenis-jenis permainan yang sering dimainkan dan dikelompokkan sebagai berikut:

1) Action Game (Permainan Aksi)

Jenis permainan ini memiliki fitur utama berupa banyaknya aksi di mana pemain harus memiliki keterampilan dengan reaksi yang cepat untuk menghindari musuh atau menghindari rintangan. Pengembang permainan jenis ini perlu memastikan permainan yang dibuat dimaksimalkan sehingga pemain memiliki pengalaman dalam bermain yang baik, dan tidak terganggu oleh waktu proses yang lama. Contohnya adalah Metal Gear Solid

2) Adventure Game (Permainan Bertualang)

(9)

3) Fighting Game (Permainan Bertarung)

Jenis permainan ini pada umumnya pemain bertarung dengan lawan tandingnya dengan cara memukul, menendang, atau menggunakan jurus sampai lawan tandingnya kalah. Contohnya adalah Tekken, Mortal Kombat, dan lain-lain.

4) Sport Game (Permainan Olahraga)

Permainan jenis ini berupa kompetisi antara dua pemain atau lebih, di mana pemain dapat berupa individual atau kelompok. Contoh permainan jenis ini adalah sepakbola, bola basket, tenis, bilyard, dan lain-lain. Permainan ini tergantung seberapa lama waktu yang dibutuhkan dalam satu pertandingan. Contohnya adalah Pro Evolution Soccer.

5) Role Playing Game (Permainan Beralur)

Permainan ini seringkali berupa multi-player (Lebih dari satu pemain) di mana setiap pemain memiliki karakter dengan kemampuan, kekuatan, dan kelemahan yang berbeda. Pemain saling berkompetisi, berinteraksi, dan bertempur satu sama lain. Tampilan grafik yang berbeda untuk setiap karakter pemain dan memiliki storyline (alur cerita) yang mendebarkan sehingga memberikan pengalaman yang menarik dan berbeda di dalam bermain. Contohnya adalah Final Fantasy.

6) Strategy Game (Permainan Strategi)

Jenis permainan ini pada umumnya pemain menggunakan taktik dan strategi untuk melawan dan menghancurkan musuhnya dengan membangun tentara dan alat perang menggunakan sumber daya yang ada secara bijaksana dan teliti. Contohnya adalah Command & Conquer.

7) Platform Game

(10)

permainan ini hampir serupa dengan permainan aksi, tetapi aksi yang dilakukan tidak secepat permainan aksi. Contohnya adalah Sonic The Hedgehog & Mario Bros.

8) Puzzle Game (Permainan Teka-teki)

Permainan ini pada umumnya membuat pemain menggunakan kemampuan berpikirnya sebagai pengganti keterampilan reaksi yang cepat karena terdapat rahasia yang perlu dipecahkan. Permainan ini lebih bersifat statis dibanding permainan aksi. Pembuatan permainan jenis ini seringkali ditunjang dengan algoritma kecerdasan buatan. Contohnya adalah 7 Wonders of The Ancient World, Zuma, dan lain-lain.

9) Simulation Game (Permainan Simulasi)

Jenis Permainan ini memberikan pengalaman atau interaksi secara mirip dengan kendaraan aslinya, meskipun terkadang kendaraan tersebut masih berupa contoh atau bahkan fiktif, tapi ada penekanan khusus pada detail dan pengalaman nyata menggunakan kendaraan tersebut. Contohnya adalah Gran Turismo, Sim City dan lain-lain.

10) Board Game (Permainan Papan)

(11)

2.2 Permainan 2048

Pada bagian ini akan menjelaskan sejarah permainan 2048 dan aturan permainan 2048.

2.2.1 Sejarah Permainan 2048

Permainan 2048 merupakan permainan untuk pemain tunggal yang diciptakan pada bulan Maret 2014 oleh seorang programmer asal Italia yang bernama Gabriele Cirulli. Ketika pertama kali dirilisnya permainan ini, permainan ini langsung melesat ke peringkat 1 dunia dalam hanya waktu seminggu dan mencapai lebih dari 4 juta download dan hal tersebut merupakan rekor yang cukup fantastis. Pada kenyataannya, permainan ini

hanyalah sebuah proyek “iseng” yang dikerjakan oleh programmer Italia

tersebut yang hanya ingin mencoba apakah ia mampu membuat sebuah permainan dari awal dan ia berhasil menyelesaikan pembuatannya hanya dalam waktu seminggu. Permainan ini juga bukanlah yang pertama kali diciptakan, sebelumnya juga pernah ada permainan berjudul Three! yang memiliki tampilan serta cara bermain yang mirip, dan juga permainan 1024 yang cara bermainnya sama persis, hanya saja dengan tujuan permainan yang sedikit berbeda [1].

(12)

2.2.2 Aturan Permainan 2048

Untuk aturan cara bermain permainan 2048 adalah sebagai berikut [1]:

1) Permainan 2048 dimainkan di papan abu-abu 4×4.

2) Di atasnya terdapat beberapa kotak dengan warna berbeda yang bergeser ketika pemain menekan empat tombol arah di keyboard.

3) Kotaknya dapat bergerak sejauh mungkin sampai bertemu kotak lain atau pinggir papan.

4) Apabila dua kotak bernomor sama bergabung saat bergeser, keduanya akan bergabung dan menghasilkan kotak baru yang nomornya merupakan hasil penjumlahan nomor di dua kotak yang bergabung tadi.

5) Misal pada Gambar 2 kotak yang bernilai 2 bisa digabung saat pemain menggeserkan ke arah kiri atau kanan dan akan menghasilkan kotak yang bernilai 4 seperti pada Gambar 2.1. 6) Kotak yang baru ini tidak bisa bergabung dengan kotak lain

dengan arah yang sama.

7) Di setiap pergeseran akan ada satu kotak baru bernomor 2 atau 4 yang muncul secara acak pada ruang kosong di papan. 8) Pemain baru menang ketika sebuah kotak bernomor 2048

muncul di papan.

9) Saat pemain tidak bisa bergerak lagi maka permainan berakhir.

10)Skor didapatkan dari hasil penggabungan kotak.

2.3 Kecerdasan Buatan

(13)

Intelegensi merupakan bagian kemampuan komputasi untuk mencapai tujuan di dalam dunia. Ada beberapa macam jenis dan derajat intelegensi untuk manusia, binatang dan beberapa mesin. Kecerdasan buatan berhubungan dengan penggunaan komputer untuk melaksanakan tugas atau menyelesaikan masalah yang memerlukan kecerdasan atau kepintaran. Pada umumnya komputer memerlukan aplikasi atau perangkat lunak untuk melaksanakan tugas atau menyelesaikan masalah, maka aplikasi atau perangkat lunak yang berdasarkan teknologi Kecerdasan buatan di perlukan.

Agar komputer bisa bertindak seperti apa yang dapat dilakukan manusia, maka komputer juga harus diberi bekal pengetahuan dan mempunyai kemampuan untuk menalar. Untuk itu kecerdasan buatan akan mencoba untuk memberikan beberapa metode untuk membekali komputer agar bisa menjadi mesin yang pintar. Dari beberapa perspektif, kecerdasan buatan dapat dipandang sebagai berikut [8]:

1) Perspektif kecerdasan, AI adalah bagaimana membuat mesin yang cerdas dan dapat melakukan hal-hal yang sebelumnya hanya dapat dilakukan manusia.

2) Perspektif bisnis, AI adalah sekelompok alat bantu (tools) yang berdayaguna dan metodologi yang menggunakan alat-alat bantu tersebut untuk menyelesaikan masalah-masalah bisnis.

3) Perspektif pemrograman, AI meliputi studi tentang pemrograman simbolik, pemecahan masalah, dan proses pencarian (search). 4) Perspektif penelitian, riset tentang AI dimulai pada awal tahun

1960an, percobaan pertama adalah membuat program permainan catur, membuktikan teori, dan general problem solving.

2.4 Algoritma Minimax

(14)

catur. Pada dasarnya, algoritma minimax sangat andal untuk menyelesaikan segala masalah dalam pencarian langkah untuk permainan komputer dengan jumlah kemungkinan penyelesaian yang kecil, seperti pada permainan tic-tac-toe. Secara teori, algoritma minimax didefinisikan sebagai berikut:

“Untuk setiap permainan satu-lawan satu, ada sebuah nilai yang bernilai V dan strategi yang dipilih oleh tiap pemain sedemikian sehingga dengan strategi dari pemain-2, pemain-1 dapat memperoleh nilai terbaik V dan sebaliknya dengan strategi dari pemain-1, pemain-2 dapat memperoleh nilai terbaik –V, sehingga:

1) Jika diberikan strategi dari pemain ke-2, maka langkah penyelesaian terbaik dari pemain pertama adalah V.

2) Jika diberikan strategi dari pemain pertama, maka langkah penyelesaian terbaik dari pemain kedua adalah –V”.

Singkatnya, pemain pertama memberikan langkah penyelesaian yang bernilai V terhadap permainan pemain kedua, dan sebaliknya, pemain kedua memberikan langkah peyelesaian bernilai –V. Pemikiran inilah yang mendasari asal usul penamaan algoritma Minimax, dimana pemain yang satu berjuang untuk mendapat nilai maksimum, sedangkan lawannya berjuang untuk mendapat nilai minimum [9].

Cara kerja algoritma Minimax:

1) Misalkan ada 2 pemain yang terlibat, kita namakan MAX dan MIN

2) Lakukan pencarian atau penulusuran dari simpul yang paling dalam

3) setelah simpul yang paling dalam ditelusuri akan dilakukan pencarian tingkat kedua, ketiga dan seterusnya .

4) Pencarian dilakukan secara rekursif

5) lakukan pembandingan nilai MAX dan MIN

6) Nilai MIN dan MAX yang telah dibandingkan akan disimpan pada temp sementara

(15)

Gambar 2.2 Pohon Pencarian Minimax

(16)

yang akan diperoleh jika langkah tersebut dipilih. Pada Gambar 2.3 adalah pseudocode dari algoritma minimax.

function minimax(node, depth, turn)

if depth = 0 or node is a terminal node return the heuristic value of node

if turn == player1 bestValue := -∞

foreach child of node

val := minimax(child, depth - 1, player2) bestValue := max(bestValue, val);

return bestValue

else

bestValue := +∞

for each child of node

val := minimax(child, depth - 1, player1) bestValue := min(bestValue, val);

return bestValue

Gambar 2.3 Pseudocode Algoritma Minimax

Contoh implementasi algoritma minimax: misalkan ada sebuah permainan sederhana yang dengan hanya ada satu langkah, untuk tiap pemain dengan kemungkinan situasi seperti pada Tabel 2.1.

Tabel 2.1 Contoh Nilai Akhir Pergerakan MAX dan MIN

MAX MIN Nilai Evaluasi

A C 12

A D -2

B C 5

B D 6

(17)

D, yang mengakibatkan nilai evaluasi -2 (kemenangan bagi MIN). Bagaimanapun juga, jika MAX melakukan gerakan B, dia pasti akan menang karena pergerakan MIN yang terbaik hanya akan menghasilkannilai evaluasi terbaik sebesar 5 saja. Jadi, dengan menggunakan algoritma minimax, MAX akan selalu memilih untuk melakukan langkah B, walaupun dia sebenarnya akan mendapatkan kemenangan yang lebih baik jika melakukan A dan MIN melakukan kesalahan dengan memilih langkah C.

2.5 Algoritma Alphabeta Prunning

(18)

Gambar 2.4 Pohon Pencarian AlphaBeta Prunning

Diperlihatkan, pada pohon tersebut, bahwa terdapat pemotongan pencarian dengan menggunakan algoritma ini. Pada algoritma ini, terdapat dua nilai yang diatur, yaitu alpha dan beta, yang merepresentasikan nilai minum dari max yang diyakini dan nilai maksimum dari min yang diyakini. Nilai awal alpha adalah tak hingga negatif dan nilai awal beta adalah tak hingga positif. Sebagai hasil dari proses rekursif, area pencarian akan semakin kecil. Ketika beta menjadi lebih kecil dari alpha, akan berarti posisi saat itu tidak dapat menjadi hasil terbaik permainan untuk kedua pemain dan pencarian tidak perlu dilakukan lebih jauh. Pada Gambar 2.5 dapat dilihat pseudocode dari algoritma alphabeta.

function alphabeta(node, depth, α, β, maximizingPlayer)

if depth = 0 or node is a terminal node return the heuristic value of node if maximizingPlayer

v := -∞

for each child of node

v := max(v, alphabeta(child, depth - 1, α, β, FALSE))

α := max(α, v) if β ≤ α

(19)

return v else

v := ∞

for each child of node

v := min(v, alphabeta(child, depth - 1, α, β, TRUE))

β := min(β, v) if β ≤ α

break (* α cut-off *) return v

Gambar 2.5 Pseudocode Algoritma Alphabeta

2.6 Algortima MTD(f)

Algoritma MTD(f) adalah sebuah algoritma optimasi Minimax baru yang lebih sederhana dan lebih sangkil daripada beberapa pendahulunya [4]. Nama dari algoritma ini adalah kependekan dari MTD(n,f), yang disingkat dari Memory-enhanced Test Driver with node n and value f. MTD adalah nama dari sekumpulan driver program yang mencari pohon Minimax menggunakan pemanggilan zero-window AlphaBeta. Dalam beberapa percobaan permainan komputer seperti catur, othello, dan checkers, algoritma ini mempunyai performa rata-rata lebih baik daripada Negascout (variasi dari AlphaBeta yang diimplementasikan dalam hampir semua permainan catur, checkers, dan othello). Salah satu program catur terkuat, Cilkchess milik MIT yang menggunakan metode komputasi pararel, juga menggunakan MTD(f) sebagai algoritma pencariannya menggantikan Negascout yang digunakan oleh program catur pendahulunya, StarSocrates. Algoritma MTD(f) terdiri dari 10 baris kode saja, yaitu seperti pada Gambar 2.6.

function MTDF(root, f, d) g := f

upperBound := +∞ lowerBound := -∞

while lowerBound < upperBound

(20)

β:= g+1

else β := g

g := AlphaBeta (root, β-1, β, d)

if g < β then

upperBound := g

else

lowerBound := g

return g

Gambar 2.6 Psuedo Code Algoritma MTD(f)

Algoritma MTD(f) tersebut memanggil fungsi Alpha Beta berkali kali dengan metode zero-window pencarian Alpha-Beta, tidak seperti Negascout yang menggunakan pencarian wide-window. Pemanggilan Alpha Beta mengembalikan batas dari nilai evaluasi Minimax. Batas dari nilai itu kemudian disimpan dalam upperbound (batas atas) dan lowerbound (batas bawah), membentuk sebuah interval yang melingkupi nilai Minimax yang sebenarnya pada pencarian dengan kedalaman tertentu. Positif dan negatif tak hingga adalah kependekan dari nilai diluar interval pada daun pohon. Ketika batas atas dan batas bawahnya bernilai sama atau batas bawah telah melampaui nilai batas atas, maka nilai Minimax telah ditemukan.

(21)

Efisiensi dari MTD(f) berasal dari pencarian Alpha-Beta dengan zero-window, dan menggunakan sebuah nilai batas yang baik (variabel Beta) untuk melakukan pencarian zero-window tersebut. Dalam versi yang sebelumnya, Alpha-Beta dipanggil dengan pencarian wide-window seperti ini AlphaBeta(root, -INFINITY, +INFINITY, depth), yang memastikan nilai kembaliannya berada dalam interval Alpha dan Beta. Sedangkan dalam algoritma MTD(f), digunakan pencarian zero-window, jadi untuk setiap pemanggilan Alpha-Beta akan mengembalikan batas bawah dan batas atas dari nilai Minimax berturut-turut. Pencarian dengan zero-window memberikan lebih banyak jalan pintas, tetapi lebih sedikit informasi, yaitu hanya batas dari nilai minimax saja.

2.7 Object Oriented Programming (OOP)

(22)

Karakteristik dari objek identitas berarti bahwa data diukur mempunyai nilai tertentu yang membedakan entitas dan disebut objek. Suatu paragraf dari dokumen, suatu windows dari workstation, dan raja putih dari buah catur adalah contoh dari objek. Objek dapat kongkrit, seperti halnya arsip dalam sistem, atau konseptual seperti kebijakan penjadualan dalam multiprocessing pada sistem operasi. Setiap objek mempunyai sifat yang melekat pada identitasnya. Dua objek dapat berbeda walaupun bila semua atributnya identik Klasifikasi berarti bahwa suatu kegiatan mengumpulkan data (atribut) dan perilaku (operasi) yang mempunyai struktur data sama ke dalam satu grup yang disebut kelas. Paragraf, window, buah catur adalah contoh dari kelas. Kelas merupakan abstraksi yang menjelaskan sifat penting pada suatu aplikasi dan mengabaikan yang lain. Setiap kelas menunjukan suatu kumpulan infinite yang mungkin dari objek. Suatu objek dapat dikatakan sebagai instans dari kelas, setiap instansi dari kelas mempunyai nilai individu untuk setiap nama atribut dan operasi, tetapi memiliki bersama atribut dan operasi dengan instansi lain dalam kelas.

Karakteristik Metodologi Berorientasi Objek Metodologi pengembangan sistem berorientasi objek mempunyai tiga karateristik utama yaitu [10]:

1) Encapsulation

Encapsulation (pengkapsulan) merupakan dasar untuk pembatasan ruang lingkup program terhadap data yang diproses. Data dan prosedur atau fungsi dikemas dalam bersama-sama dalam suatu objek, sehingga prosedur atau fungsi lain dari luar tidak dapat mengaksesnya. Data terlindung dari prosedur atau objek lain kecuali prosedur yang berada dalam objek itu sendiri.

2) Inheritance

(23)

induknya langsung. Atribut dan metoda dari objek induk diturunkan kepada anak objek, demikian seterusnya. Pendefinisian objek dipergunakan untuk membangun suatu hirarki dari objek turunannya, sehingga tidak perlu membuat atribut dan metoda lagi pada anaknya, karena telah mewarisi sifat induknya.

3) Polymorphism

Polymorphism (polimorfisme) yaitu konsep yang menyatakan bahwa sesuatu yang sama dapat mempunyai bentuk dan perilaku berbeda. Polimorfisme mempunyai arti bahwa operasi yang sama mungkin mempunyai perbedaan dalam kelas yang berbeda.

2.8 Unified Modeling Language (UML)

UML adalah sebuah bahasa yang telah menjadi standar dalam industri untuk menvisualisasi, menspesifikasi, merancang dan mendokumentasi sistem piranti lunak. Unified Modelling Language (UML) menawarkan sebuah standar untuk merancang model sebuah sistem. Tujuan UML adalah :

1) Memberikan model yang siap pakai, bahasa pemodelan visual yang ekspresif untuk mengembangkan dan saling menukar model dengan mudah dan dimengerti secara umum. 2) Memberikan bahasa pemodelan yang bebas dari berbagai

bahasa pemrograman dan proses rekayasa.

(24)

yang digunakan atau dihasilkan dalam proses pengembangan perangkat. Contohnya adalah source code yang dihasilkan oleh proses pemrograman.

Diagram-diagram pada UML akan dijelaskan sebagai berikut [11]: 1) Use Case Diagram

Use case diagram menggambarkan fungsionalitas yang diharapkan

dari sebuah sistem. Yang ditekankan adalah “apa” yang diperbuat sistem, dan bukan “bagaimana”. Use Case dilakukan oleh satu aktor yang digambarkan dengan simbol orang yang dihubungkan dengan garis yang menunjukan hubungan komunikasi. Setiap Use Case harus diberi nama yang menyatakan apa hal yang dicapai dari hasil interaksi dengan Aktor. Nama Use Case boleh terdiri dari beberapa kata dan tidak boleh ada Use Case yang memiliki nama yang sama.

Gambar 2.8 Contoh Usecase Diagram

2) Class Diagram

(25)

sistem. Class Diagram bersifat statik (tidak berubah) yang akan menunjukan apa itu interaksi tapi tidak menjelaskan apa yang terjadi ketika mereka melakukan interaksi.

Gambar 2.9 Contoh Class Diagram

3) Activity Diagram

(26)

Gambar 2.10 Contoh Activity Diagram

4) Sequence Diagram

Sequence Diagram merupakan gambaran interaksi antar objek di dalam dan di sekitar sistem berupa pesan yang digambarkan terhadap waktu. Diagram ini secara khusus berasosiasi dengan use case. Sequence Diagram juga digunakan untuk menggambarkan

(27)

Gambar 2.11 Contoh Sequence Diagram

2.9 C#

C# (dibaca: C sharp) merupakan sebuah bahasa pemrograman yang berorientasi objek yang dikembangkan oleh Microsoft sebagai bagian dari inisiatif kerangka .NET Framework. Bahasa pemrograman ini dibuat berbasiskan bahasa C++ yang telah dipengaruhi oleh aspek-aspek ataupun fitur bahasa yang terdapat pada bahasa-bahasa pemrograman lainnya seperti Java, Delphi, Visual Basic, dan lain-lain) dengan beberapa penyederhanaan. Menurut standar ECMA-334 C# Language Specification, nama C# terdiri atas sebuah huruf Latin C (U+0043) yang diikuti oleh tanda pagar yang menandakan angka # (U+0023). Tanda pagar # yang digunakan memang bukan tanda kres dalam seni musik (U+266F), dan tanda pagar # (U+0023) tersebut digunakan karena karakter kres dalam seni musik tidak terdapat di dalam keyboard standar. [12]

Standar European Computer Manufacturer Association (ECMA) mendaftarkan beberapa tujuan desain dari bahasa pemrograman C#, sebagai berikut:

(28)

2) Bahasa pemrograman C# ditujukan untuk digunakan dalam mengembangkan komponen perangkat lunak yang mampu mengambil keuntungan dari lingkungan terdistribusi.

3) Portabilitas programmer sangatlah penting, khususnya bagi programmer yang telah lama menggunakan bahasa pemrograman C dan C++.

4) Dukungan untuk internasionalisasi (multi-language) juga sangat penting.

5) C# ditujukan agar cocok digunakan untuk menulis program aplikasi baik dalam sistem klien-server (hosted system) maupun sistem embedded (embedded system), mulai dari perangkat lunak yang sangat besar yang menggunakan sistem operasi yang canggih hingga kepada perangkat lunak yang sangat kecil yang memiliki fungsi-fungsi terdedikasi.

6) Meskipun aplikasi C# ditujukan agar bersifat 'ekonomis' dalam hal kebutuhan pemrosesan dan memori komputer, bahasa C# tidak ditujukan untuk bersaing secara langsung dengan kinerja dan ukuran perangkat lunak yang dibuat dengan menggunakan bahasa pemrograman C dan bahasa rakitan.

7) Bahasa C# harus mencakup pengecekan jenis (type checking) yang kuat, pengecekan larik (array), pendeteksian terhadap percobaan terhadap penggunaan Variabel-variabel yang belum diinisialisasikan, portabilitas kode sumber, dan pengumpulan sampah (garbage collection) secara otomatis.

2.10 Visual Studio

(29)

Studio mencakup kompiler, SDK, Integrated Development Environment (IDE), dan dokumentasi (umumnya berupa MSDN Library). Kompiler yang dimasukkan ke dalam paket Visual Studio antara lain Visual C++, Visual C#, Visual Basic, Visual Basic .NET, Visual InterDev, Visual J++, Visual J#, Visual FoxPro, dan Visual SourceSafe [13].

(30)
(31)

77

Pada bagian ini akan dikemukakan kesimpulan dari skripsi yang berjudul

Implementasi Algoritma MTD(f) Untuk Menentukan Solusi Pada Board Game 2048” dan saran yang bersifat membangun.

5.1 Kesimpulan

Berdasarkan dari hasil penelitian, analisis perancangan sistem dan implementasi serta pengujian yang dilakukan dari algoritma MTD(f) untuk menyelesaikan permainan 2048, maka diperoleh kesimpulan bahwa algoritma MTD(f) dapat diterapkan pada permainan 2048 namun untuk mendapatkan tile 2048 agar bisa memenangkan permainan 2048 membutuhkan kedalaman pencarian minimal pencarian level tiga dan membutuhkan waktu sekitar 13 menit 59 detik. Tingkat akurasi pada algoritma MTD(f) pada pencarian dengan kedalaman level nol, satu dan dua adalah 0%, sedangkan pada level tiga adalah 20%, level empat adalah 30% dan level lima adalah 60%.

5.2 Saran

(32)
(33)

IMPLEMENTASI ALGORITMA MTD(F) UNTUK

MENENTUKAN SOLUSI PADA BOARD GAME 2048

SKRIPSI

Disusun untuk Menempuh Ujian Akhir Sarjana

RIZQIANA TRINENDA 10109418

PROGRAM STUDI TEKNIK INFORMATIKA

FAKULTAS TEKNIK DAN ILMU KOMPUTER

(34)

v

DAFTAR ISI

(35)

vi

(36)

vii

4.1 Implementasi Sistem ... 63

4.1.1 Implementasi Perangkat Keras ... 63

4.1.2 Implementasi Perangkat Lunak ... 64

4.1.3 Implementasi Antarmuka ... 64

4.2 Pengujian Sistem ... 65

4.2.1 Rencana Pengujian ... 66

4.2.2 Pengujian Black Box ... 66

4.2.3 Pengujian Algoritma ... 67

4.2.3.1 Hasil Pengujian Kedalaman Level 0 ... 67

4.2.3.2 Hasil Pengujian Kedalaman Level 1 ... 68

4.2.3.3 Hasil Pengujian Kedalaman Level 2 ... 69

4.2.3.4 Hasil Pengujian Kedalaman Level 3 ... 70

4.2.3.5 Hasil Pengujian Kedalaman Level 4 ... 71

4.2.3.6 Hasil Pengujian Kedalaman Level 5 ... 72

4.2.4 Hasil Pengujian ... 73

BAB 5 KESIMPULAN DAN SARAN ... 77

5.1 Kesimpulan ... 77

5.2 Saran ... 77

(37)

79

[1] K. Lu, "Game Theory of 2048," Math 89s: Game Theory and Democracy, 2014.

[2] Stepen, "Perbandingan Algoritma Greedy & Bactracking Dalam Penyelesaian Permainan 2048," Makalah IF2211 Strategi Algoritma , 2014. [3] V. Vryniotis, "Using Artificial Intelligence to solve the 2048 Game (JAVA

code) | Datumbox," 14 November 2014. [Online]. Available: http://blog.datumbox.com/using-artificial-intelligence-to-solve-the-2048-game-java-code/. [Accessed 20 September 2015].

[4] A. Plaat, "MTD ( f ) A Minimax Algorithm faster than NegaScout," Erasmus University, Rotterdam, 1997.

[5] M. Shalihin, I. Arwani and E. M. Adam, "Penerapan Algoritma Minimax Dengan Optimasi Mtd(F) Pada Permainan Dam-Daman," Informatika, 2014. [6] R. S. Pressman, Software Engineering: A Practitioner’s Approach, Seventh

Edition, New York: McGraw-Hill, 2010.

[7] J. V. Neumann and O. Morgenstern, Theory of Games and Economic Behavior, Third Edition, New Jersey: Princeton, 1953.

[8] S. Russell and P. Norvig, Artificial Intelligence A Modern Approach, Third Edition, New Jersey: Pearson, 2010.

[9] A. Ilman, "Penerapan Algoritma Minimax Dengan Optimasi Mtd(F) Pada Permainan Catur," Makalah IF2251 Strategi Algoritmik, 2008.

[10] J. Lewis and W. Loftus, Java Software Solution Foundations of Programming Design, Sixth Edition, New Jersey: Pearson, 2008.

[11] D. A. Uston, Theory and Problems of Software Engineering, New York: McGraw-Hill, 2002.

(38)

https://msdn.microsoft.com/en-us/library/z1zx9t92.aspx. [Accessed 18 12 2015].

(39)

Rizqiana Trinenda

Teknik Informatika – Universitas Komputer Indonesia Jl. Dipatiukur 112-114 Bandung

E-mail : rizqiana.trinenda@

ABSTRAK

Permainan 2048 adalah permainan yang diciptakan oleh pengembang web yang berasal dari Italia yaitu Gabriele Cirulli pada bulan Maret 2014. Permainan tersebut cukup mudah dimainkan karena tinggal menggeser ke kiri, kanan, atas atau bawah untuk menggabungkan kotak-kotak bernomor tertentu supaya membentuk hasil akhir 2048. Berbagai algoritma sudah diimplementasikan untuk menyelesaikannya, seperti dengan menggunakan algoritma greedy, backtracking, dan minimax. Dari hasil implementasi tersebut didapatkan bahwa algoritma greedy kurang optimal dalam menyelesaikan permainan 2048 karena dari 11 kali percobaan tidak bisa mendapatkan angka 2048 namun cepat dalam mengambil langkah sedangkan untuk algoritma backtracking dapat menyelesaikan permainan 2048 dalam 1 kali percobaan namun dengan waktu 23 menit 18 detik. Untuk algoritma minimax hasilnya ditentukan dari kedalaman dalam pencarian, semakin dalam mencari semakin besar kemungkinan untuk dapat menyelesaikan permainan 2048 namun membutuhkan waktu yang lebih lama sesuai kedalaman pencariannya. Untuk itu masih diperlukan penelitian terhadap algoritma lainnya untuk menyelesaikan permainan 2048.

Algoritma yang diteliti adalah algoritma MTD(f). Berdasarkan dari hasil penelitian, analisis perancangan sistem dan implementasi serta pengujian yang dilakukan dari algoritma MTD(f) untuk menyelesaikan permainan 2048, maka diperoleh kesimpulan bahwa algoritma MTD(f) dapat diterapkan pada permainan 2048 namun untuk mendapatkan tile 2048 agar bisa memenangkan permainan 2048 membutuhkan kedalaman pencarian minimal pencarian level tiga dan membutuhkan waktu sekitar 13 menit 59 detik. Tingkat akurasi pada algoritma MTD(f) pada pencarian dengan kedalaman level nol, satu dan dua adalah 0%, sedangkan pada level tiga adalah 20%, level empat adalah 30% dan level lima adalah 60%.

Kata kunci : Algoritma, MTD(F), minimax, permainan, 2048, pencarian

1. PENDAHULUAN

Permainan 2048 adalah permainan yang diciptakan oleh pengembang web yang berasal dari Italia yaitu Gabriele Cirulli pada bulan Maret 2014. Permainan tersebut cukup mudah dimainkan karena tinggal menggeser ke kiri, kanan, atas atau bawah untuk menggabungkan kotak-kotak bernomor tertentu supaya membentuk hasil akhir 2048 [1]. Permainan 2048 dirilis untuk berbagai platform sehingga banyak orang yang dapat memainkannya. Saat ini banyak orang menggunakan berbagai macam cara untuk menyelesaikan permainan tersebut. Berbagai algoritma sudah diimplementasikan untuk menyelesaikannya, seperti dengan menggunakan algoritma greedy, backtracking [2], dan minimax [3]. Dari hasil implementasi tersebut didapatkan bahwa algoritma greedy kurang optimal dalam menyelesaikan permainan 2048 karena dari 11 kali percobaan tidak bisa mendapatkan angka 2048 namun cepat dalam mengambil langkah sedangkan untuk algoritma backtracking dapat menyelesaikan permainan 2048 dalam 1 kali percobaan namun dengan waktu 23 menit 18 detik. Untuk algoritma minimax hasilnya ditentukan dari kedalaman dalam pencarian, semakin dalam mencari semakin besar kemungkinan untuk dapat menyelesaikan permainan 2048 namun membutuhkan waktu yang lebih lama sesuai kedalaman pencariannya. Untuk itu diperlukan penelitian terhadap algoritma lainnya untuk menyelesaikan permainan 2048.

(40)

Diharapkan dengan mengimplementasikan algoritma MTD(f) dapat diketahui kemampuan algoritma MTD(f) untuk menyelesaikan permainan 2048.

1.1 Permainan 2048

Permainan 2048 merupakan permainan untuk pemain tunggal yang diciptakan pada bulan Maret 2014 oleh seorang programmer asal Italia yang bernama Gabriele Cirulli. Ketika pertama kali dirilisnya permainan ini, permainan ini langsung melesat ke peringkat 1 dunia dalam hanya waktu seminggu dan mencapai lebih dari 4 juta download dan hal tersebut merupakan rekor yang cukup fantastis. Pada kenyataannya, permainan ini

hanyalah sebuah proyek “iseng” yang dikerjakan

oleh programmer Italia tersebut yang hanya ingin mencoba apakah ia mampu membuat sebuah permainan dari awal dan ia berhasil menyelesaikan pembuatannya hanya dalam waktu seminggu. Permainan ini juga bukanlah yang pertama kali diciptakan, sebelumnya juga pernah ada permainan berjudul Three! yang memiliki tampilan serta cara bermain yang mirip, dan juga permainan 1024 yang cara bermainnya sama persis, hanya saja dengan tujuan permainan yang sedikit berbeda [1].

Gambar 1 Permainan 2048 warna berbeda yang bergeser ketika pemain menekan empat tombol arah di keyboard. 3) Kotaknya dapat bergerak sejauh mungkin

sampai bertemu kotak lain atau pinggir papan.

4) Apabila dua kotak bernomor sama bergabung saat bergeser, keduanya akan bergabung dan menghasilkan kotak baru yang nomornya merupakan hasil penjumlahan nomor di dua kotak yang bergabung tadi.

5) Misal pada Gambar 2 kotak yang bernilai 2 bisa digabung saat pemain menggeserkan ke arah kiri atau kanan dan akan menghasilkan kotak yang bernilai 4.

baru bernomor 2 atau 4 yang muncul secara acak pada ruang kosong di papan.

8) Pemain baru menang ketika sebuah kotak bernomor 2048 muncul di papan.

9) Saat pemain tidak bisa bergerak lagi maka permainan berakhir.

10)Skor didapatkan dari hasil penggabungan kotak.

1.3 Algoritma Alphabeta Prunning

Dalam algoritma minimax, pencarian dilakukan pada seluruh bagian pohon, sementara sebagian pohon tidak seharusnya diperiksa. Alpha-beta pruning merupakan modifikasi dari algoritma

minimax, yang akan mengurangi jumlah node yang dievaluasi oleh pohon pencarian. Pencarian untuk node berikutnya akan dipikirkan terlebih dahulu. Algoritma ini akan berhenti mengevaluasi langkah ketika terdapat paling tidak satu kemungkinan yang ditemukan dan membuktikan bahwa langkah tersebut lebih buruk jika dibandingkan dengan langkah yang diperiksa sebelumnya. Sehingga, langkah berikutnya tidak perlu dievaluasi lebih jauh. Dengan algoritma ini hasil optimasi dari suatu algoritma tidak akan berubah [5]. Pada algoritma ini, terdapat dua nilai yang diatur, yaitu alpha dan beta, yang merepresentasikan nilai minum dari max yang diyakini dan nilai maksimum dari min yang diyakini. Nilai awal alpha adalah tak hingga negatif dan nilai awal beta adalah tak hingga positif. Sebagai hasil dari proses rekursif, area pencarian akan semakin kecil. Ketika beta menjadi lebih kecil dari alpha, akan berarti posisi saat itu tidak dapat menjadi hasil terbaik permainan untuk kedua pemain dan pencarian tidak perlu dilakukan lebih jauh. Pada Gambar 2 dapat dilihat pseudocode dari algoritma

alphabeta.

function alphabeta(node, depth, α, β, maximizingPlayer) if depth = 0 or node is a terminal node

(41)

optimasi Minimax baru yang lebih sederhana dan lebih sangkil daripada beberapa pendahulunya [4]. Nama dari algoritma ini adalah kependekan dari MTD(n,f), yang disingkat dari Memory-enhanced Test Driver with node n and value f. MTD adalah nama dari sekumpulan driver program yang mencari pohon Minimax menggunakan pemanggilan zero-window AlphaBeta. Dalam beberapa percobaan permainan komputer seperti catur, othello, dan checkers, algoritma ini mempunyai performa rata-rata lebih baik daripada Negascout (variasi dari

AlphaBeta yang diimplementasikan dalam hampir semua permainan catur, checkers, dan othello). Salah satu program catur terkuat, Cilkchess milik MIT yang menggunakan metode komputasi pararel, juga menggunakan MTD(f) sebagai algoritma pencariannya menggantikan Negascout yang digunakan oleh program catur pendahulunya, StarSocrates. Algoritma MTD(f) terdiri dari 10 baris kode saja, yaitu seperti pada Gambar 3.

function MTDF(root, f, d) g := f

upperBound := +∞

lowerBound := -∞

while lowerBound < upperBound if g = lowerBound then

Gambar 3 Psuedo Code Algoritma MTD(f)

Algoritma MTD(f) tersebut memanggil fungsi

Alpha Beta berkali kali dengan metode zero-window

pencarian Alpha-Beta, tidak seperti Negascout yang menggunakan pencarian wide-window. Pemanggilan

Alpha Beta mengembalikan batas dari nilai evaluasi Minimax. Batas dari nilai itu kemudian disimpan dalam upperbound (batas atas) dan lowerbound (batas bawah), membentuk sebuah interval yang melingkupi nilai Minimax yang sebenarnya pada pencarian dengan kedalaman tertentu. Positif dan negatif tak hingga adalah kependekan dari nilai diluar interval pada daun pohon. Ketika batas atas dan batas bawahnya bernilai sama atau batas bawah telah melampaui nilai batas atas, maka nilai Minimax telah ditemukan.

Gambar 4 Pohon Pencarian MTD(F)

2. ISI PENELITIAN

2.1 Analisis Masalah

Berdasarkan penelitian yang dilakukan oleh Stephen dari Institut Teknologi Bandung yang menerapkan algoritma greedy dan backtracking pada permainan 2048 [2] dan Vasilis Vryniotis yang menerapkan algoritma minimax pada permainan 2048 [3], didapatkan bahwa algoritma greedy kurang optimal dalam menyelesaikan permainan 2048 karena dari 11 kali percobaan tidak bisa mendapatkan angka 2048 namun cepat dalam mengambil langkah sedangkan untuk algoritma backtracking dapat menyelesaikan permainan 2048 dalam 1 kali percobaan namun dengan waktu 23 menit 18 detik. Untuk algoritma minimax hasilnya ditentukan dari kedalaman dalam pencarian, semakin dalam mencari semakin besar kemungkinan untuk dapat menyelesaikan permainan 2048 namun membutuhkan waktu yang lebih lama sesuai kedalaman pencariannya. Untuk itu diperlukan penelitian terhadap algoritma lainnya untuk menyelesaikan permainan 2048.

2.2 Analisis Permainan 2048

Permainan 2048 merupakan permainan yang dimainkan sendiri. Pada tugas akhir ini permainan akan dilakukan oleh algoritma yang akan diteliti yaitu MTD(f) untuk menentukan solusi dalam menyelesaikan permaian 2048. Permainan 2048 dimainkan dengan cara digeser ke kiri, kanan, atas dan bawah. Permainan akan berakhir bila tidak ada kotak yang bisa digeser atau digabungkan lagi. Permainan akan dimenangkan bila berhasil mendapatkan kotak yang bernilai 2048. Secara acak angka 2 atau 4 akan muncul bila sudah digeser. Bila ada kotak yang sama nilainya dan posisinya bersebelahan maka nilainya bisa digabungkan. Data masukkan untuk lawan data masukkan berupa angka 2 dan 4 dengan kemungkinan muncul untuk angka 2 adalah 90% dan angka 4 adalah 10%. Sedangkan untuk data masukkan pemain yaitu berupa arah untuk menggeser ke kiri, kanan, atas dan bawah . Bila salah satu arah tidak bisa digeser maka aplikasi tidak akan merespon dan papan permainan tidak berubah.

(42)

dihitung dengan jumlah dari nilai linier pada papan dikalikan dengan nilai dari barisan geometri dengan rasio < 1. Dapat juga ditulis sebagai berikut:

(1) penyelesaian permainan 2048 dengan menggunakan algoritma MTD(f). Permainan 2048 dimainkan pada sebuah papan permainan dengan ukuran 4x4 sehingga total kotaknya adalah 16. Papan permainan tersebut direpresentasikan dalam matriks 4x4.

0,0 0,1 0,2 0,3

1,0 1,1 1,2 1,3

2,0 2,1 2,2 2,3

3,0 3,1 3,2 3,3

Gambar 6 Matriks Papan Permainan

Algoritma MTD(f) akan diimplementasikan sebagai pemain yang akan memaksimalkan skor yang didapat. Algoritma MTD(f) memanggil algoritma AlphaBeta pruning dalam pencarian solusinya.

1024 512 256 128

2 8 4 128

4 4 2 2

16

Gambar 7 Keadaan awal Papan Permainan

Kemudian dicari langkah selanjutnya dengan menggunakan algoritma MTD(f) untuk mendapatkan nilai evaluasi tiap langkah. Tiap langkah yang telah dicari dapat dilihat pada tabel

Tabel 2 Hasil Pencarian Langkah Kanan Iterasi

Tabel 3 Hasil Pencarian Langkah Atas Iterasi

Tabel 4 Hasil Pencarian Langkah Bawah Iterasi

Pada tabel diatas telah dilakukan pencarian menggunakan algoritma MTD(f). Variabel G adalah nilai pencarian dari pemanggilan fungsi alphabeta, variabel beta nilai beta pada MTD(f) untuk nilai upperbound pada fungsi alphabet, sedangkan lowerbound dan upperbound adalah batas atas dan batas bawah dari algoritma MTD(f) dalam melakukan pencarian. Kemudian didapatkan nilai tiap perpindahan sebagai berikut : Kiri = 1172, Kanan = 1172, Atas = 1184 dan Bawah =1172. Dari hasil tersebut didapatkan bahwa langkah selanjutnya adalah ke atas

2.5 Pengujian Sistem

(43)

menyelesaikan permainan 2048.

Tabel 5 Hasil Pengujian Kedalaman Level 0

Percoba

Tabel 6 Hasil Pengujian Kedalaman Level 1

Percobaan

Tabel 7 Hasil Pengujian Kedalaman Level 2

Percobaan

Tabel 8 Hasil Pengujian Kedalaman Level 3

Percobaan

Tabel 10 Hasil Pengujian Kedalaman Level 5

Percobaan

Hasil pengujian yang telah dilakukan sepuluh kali pada setiap level kedalaman dapat dilihat pada gambar.

Gambar 8 Hasil Pengujian Berdasarkan Max Tile

(44)

Gambar 10 Hasil Pengujian Berdasarkan Waktu

3. PENUTUP

3.1 Kesimpulan

Berdasarkan dari hasil penelitian, analisis perancangan sistem dan implementasi serta pengujian yang dilakukan dari algoritma MTD(f) untuk menyelesaikan permainan 2048, maka diperoleh kesimpulan bahwa algoritma MTD(f) dapat diterapkan pada permainan 2048 namun untuk mendapatkan tile 2048 agar bisa memenangkan permainan 2048 membutuhkan kedalaman pencarian minimal pencarian level tiga dan membutuhkan waktu sekitar 13 menit 59 detik. Tingkat akurasi pada algoritma MTD(f) pada pencarian dengan kedalaman level nol, satu dan dua adalah 0%, sedangkan pada level tiga adalah 20%, level empat adalah 30% dan level lima adalah 60%.

3.2 Saran

Dalam implementasi algoritma MTD(f) pada permainan 2048 ini masih jauh dari sempurna dan masih banyak kekurangan. Oleh karena itu perlu dilakukan analisis yang lebih dalam. Adapun saran yang dapat diberikan oleh peneliti pada penelitian ini adalah menerapkan algoritma lainnya yang dapat diterapkan pada permainan 2048 agar bisa lebih cepat dan akurat untuk menyelesaikan permainan 2048.

DAFTAR PUSTAKA

[1] K. Lu, "Game Theory of 2048," Math 89s: Game Theory and Democracy, 2014.

[2] Stepen, "Perbandingan Algoritma Greedy & Bactracking Dalam Penyelesaian Permainan 2048," Makalah IF2211 Strategi Algoritma ,

2014.

[3] V. Vryniotis, "Using Artificial Intelligence to solve the 2048 Game (JAVA code) | Datumbox," 14 November 2014. [Online]. Available:

http://blog.datumbox.com/using-faster than NegaScout," Erasmus University, Rotterdam, 1997.

[5] M. Shalihin, I. Arwani and E. M. Adam, "Penerapan Algoritma Minimax Dengan Optimasi Mtd(F) Pada Permainan Dam-Daman," Informatika, 2014.

[6] R. S. Pressman, Software Engineering: A

Practitioner’s Approach, Seventh Edition, New

York: McGraw-Hill, 2010.

[7] J. V. Neumann and O. Morgenstern, Theory of Games and Economic Behavior, Third Edition, New Jersey: Princeton, 1953.

[8] S. Russell and P. Norvig, Artificial Intelligence A Modern Approach, Third Edition, New Jersey: Pearson, 2010.

[9] A. Ilman, "Penerapan Algoritma Minimax Dengan Optimasi Mtd(F) Pada Permainan Catur," Makalah IF2251 Strategi Algoritmik,

2008.

[10] J. Lewis and W. Loftus, Java Software Solution Foundations of Programming Design, Sixth Edition, New Jersey: Pearson, 2008.

[11] D. A. Uston, Theory and Problems of Software Engineering, New York: McGraw-Hill, 2002. [12] Microsoft, "Introduction to the C# Language

and the .NET Framework," Microsoft, [Online]. Available: https://msdn.microsoft.com/en-us/library/z1zx9t92.aspx. [Accessed 18 12 2015].

[13] Microsoft, "Visual Studio," Microsoft,

[Online]. Available:

(45)

Rizqiana Trinenda

Teknik Informatika – Universitas Komputer Indonesia Jl. Dipatiukur 112-114 Bandung

E-mail : rizqiana.trinenda@yahoo.co.id

ABSTRACT

The 2048 game is a game created by web developers coming from Italy, namely Gabriele Cirulli in March 2014. The game is fairly easy to play because it just move left, right, up or down to merge certain numbered boxes in order to form 2048. Various algorithms have been implemented to solve the game, such as greedy algorithm, backtracking, and minimax. The result of implementation showed that greedy algorithm not optimal at completing the game 2048 because of in the 11 trials could not get the numbers 2048, but quickly in taking the step while backtracking algorithm can finish the game 2048 in the first time trial but with a time of 23 minutes 18 seconds. For minimax algorithm results are determined from the depths in the search, the more searching the more likely to be able to complete the game 2048, but it took much longer appropriate depth search. For that reason, research is still needed on other algorithms to complete the game 2048.

The algorithm that studied is MTD (f) algorithm. Based on the results of the study, analysis of system design and implementation as well as tests performed on the algorithms MTD (f) to finish the 2048 game, it could be concluded that the algorithm MTD (f) can be applied to the 2048 game, but to get the tile in 2048 in order to win the 2048 game requires search the depths of at least level three and takes about 13 minutes 59 seconds. The level of accuracy of the algorithm MTD (f) on a search with a depth of level zero, one and two is 0%, whereas on level three is 20%, level four is 30%, and level five is 60%.

Keywords: algorithm, MTD (F),minimax, game, 2048, searching incorporate a specific numbered squares that make up the final result in 2048 [1]. The game was

released in 2048 for various platforms so that many people can play it. Today many people use various ways to finish the game. Various algorithms have been implemented to solve, such as by using a greedy algorithm, backtracking [2], and minimax [3]. The implementation of the results showed that less than optimal greedy algorithm in completing the game in 2048 because of the 11 trials could not get the numbers in 2048, but quickly in taking the step while backtracking algorithm can finish the game in 2048 in the first time trial but with a time of 23 minutes 18 seconds. For minimax algorithm results are determined from the depths in the search, the more in looking the more likely to be able to complete the game in 2048, but it took much longer appropriate depth search. It required a study of other algorithms to complete the game in 2048. The algorithm that will be examined is the algorithm MTD (f). Algorithm MTD (f) development is one of the minimax algorithm. MTD (f) stands for Memory-enhanced Test Driver with node n and value f. In his research, Aske PLAAT [4] states that the algorithm MTD (f) algorithm is the most efficient minimax than previous minimax algorithms. In some experiments computer games such as chess, othello, and checkers, algorithms MTD (f) have average performance is better than the algorithms optimization minimax such as Alpha-Beta and negascout [5], so the algorithm MTD (f) possible the algorithm MTD (f) to finish the game in 2048.

1.1 The 2048 Game

(46)

1024 that the way to play the game exactly the same, just with a slightly different game goal [1].

Figure 1 The 2048 Game

1.2 Rules Of The Game 2048 another box or skirting boards.

4) If the two boxes of the same number to join the current shift, the two will merge and produce a new box number is the sum of the two numbers in the box to join earlier. 5) For example in Figure 2 boxes are worth 2

could be merged when a player shift to the left or right and will generate valuable box 4. 6) The new box is not able to join the other

boxes in the same direction.

7) In every shift there will be a new box numbered 2 or 4 that appear randomly on the empty space on the board.

8) The new player wins when a 2048 numbered boxes appear on the board.

9) When a player can not move anymore, the game ends.

10) Score obtained from the merger of the box.

1.3Alphabeta PrunningAlgorithm

In minimax algorithm, a search is performed on all parts of the tree, while most trees should not be checked. Alpha-beta pruning is a modification of the minimax algorithm, which will reduce the number of nodes that are evaluated by the search tree. The search for the next node will be considered first. This algorithm will stop evaluating steps when there is at least a possibility of being discovered and proved that such a step worse than the measures examined earlier. Thus, the next step does not need to be evaluated further. With this algorithm optimization results of an algorithm will not change [5]. In this algorithm, there are two values that set, namely alpha and beta, which represents the value

positive infinity. As a result of a recursive process, the search area will be smaller. When beta becomes smaller than alpha, will mean that the current position can not be the best outcome for both the game and the players do not need to search further. In Figure 2 can be seen pseudocode of the algorithm Alphabeta.

function alphabeta(node, depth, α, β, maximizingPlayer) if depth = 0 or node is a terminal node

Figure 2 Pseudocode Alphabeta Algorithm

1.4 MTD(f) Algorithm

MTD(f) algorithm is a new Minimax optimization algorithm that is simpler and more sangkil than some of its predecessors [4]. The name of the algorithm is short for MTD (n, f), which is abbreviated from Memory-enhanced Test Driver with node n and value f. MTD is the name of a set of drivers looking for a program that uses the calling tree Minimax zero-window Alphabeta. In some experiments computer games such as chess, othello, and checkers, this algorithm has average performance is better than Negascout (variation of Alphabeta implemented in almost all of the game of chess, checkers and othello). One of the strongest chess program, Cilkchess MIT that uses parallel computing method, also using MTD (f) as a search algorithm replaces Negascout used by his predecessor chess program, StarSocrates. Algorithm MTD (f) consists of 10 lines of code alone as in Figure 3.

function MTDF(root, f, d) g := f

upperBound := +∞

lowerBound := -∞

while lowerBound < upperBound if g = lowerBound then β:= g+1

else β := g

(47)

lowerBound := g return g

Figure 3 Psuedo Code MTD(f) Algorithm

Algorithm MTD(f) calling Alpha Beta function many times by the method of zero-Alpha-Beta search window, unlike Negascout that uses wide-window search. Dialing Alpha Beta returns the limit of the value of evaluation Minimax. Limit of the value is then stored in the upperbound (upper limit) and lowerbound (lower limit), forming an interval that covers the actual value of Minimax in search of a particular depth. Positive and negative infinity stands for values outside the interval on the leaves of trees. When the upper limit and lower limit of the same value or lower limit value has exceeded the upper limit, then the value of Minimax has been found.

Figure 4 MTD(F) Searching Tree

2. THE CONTENT OF RESEARCH

2.1 Problem Analysis

Based on research conducted by Stephen Bandung Institute of Technology applying greedy algorithm and backtracking in the game in 2048 [2] and Vasilis Vryniotis that implement the algorithm minimax on a game in 2048 [3], it was found that the greedy algorithm less than optimal in completing the game in 2048 because of 11 times trial can not get the numbers in 2048, but quickly in taking the step while backtracking algorithm can finish the game in 2048 in the first time trial but with a time of 23 minutes 18 seconds. For minimax algorithm results are determined from the depths in the search, the more in looking the more likely to be able to complete the game in 2048, but it took much longer appropriate depth search. It required a study of other algorithms to complete the game in 2048.

2.2 Analysis of The 2048 Game

The 2048 game is a game played alone. In this final game will be done by an algorithm that will be examined, namely MTD (f) to determine a solution in resolving permaian 2048. 2048 Games played by sliding to the left, right, top and bottom. The game ends when no boxes that can be shifted or merged again. The game will be won when it managed to get

be combined. Entries for opponents enter the data in the form of figures 2 and 4 with the possibility of appearing to number 2 is 90% and the number 4 is 10%. As for the players enter the data in the form of direction to pan left, right, top and bottom. If one direction can not be moved so the application will not respond and the game board unchanged.

2.3 Value Evaluation

2.4 Analysis of MTD(f) Algorithm

In this section we will discuss about the completion of the game in 2048 using the algorithm MTD (f). 2048 The game is played on a game board with the size 4x4 box so the total is 16. The game board is represented by a 4x4 matrix.

0,0 0,1 0,2 0,3

1,0 1,1 1,2 1,3

2,0 2,1 2,2 2,3

3,0 3,1 3,2 3,3

Figure 6 Board Game Matriks

MTD(f) algorithm would be implemented as a player that will maximize scores. Algorithm MTD (f) algorithm call Alphabeta pruning in the search for a solution.

1024 512 256 128

2 8 4 128

4 4 2 2

16

(48)

Each step has been sought can be seen in the following table:

Table 1 Left Step Search Results

Iteration G Beta Lowerbound Upperbound

1 0 0 -∞ +∞

Table 2 Right Step Search Results

Iteration G Beta Lowerbound Upperbound

1 0 0 -∞ +∞

Table 3 Up Step Search Results

Iteration G Beta Lowerbound Upperbound

1 0 0 -∞ +∞

1184 0 1184 +∞ 2 1184 1185 1184 +∞ 1184 1185 1184 1184

Table 4 Down Step Search Results

Iteration G Beta Lowerbound Upperbound

1 0 0 -∞ +∞ the MTD (f) to the value upperbound on the function of the alphabet, while lowerbound and upperbound is the upper limit and lower limit of the algorithm MTD (f) in the search. Then each displacement value obtained as follows: Left = 1172, 1172 = Right, Up and Down = 1184 = 1172. From the results obtained that the next step is to up.

2.5 Testing System

Testing algorithm is performed to test the accuracy and speed of the algorithm MTD (f) which has been implemented in 2048. The game 2048 game will be played by the algorithm MTD (f) as many as 10 times each search depth level. Then count the number of games that could be reached in 2048 at each level of the depth of the search. So as to get the accuracy of the algorithm MTD (f) by comparing the number of games that could be reached in 2048 with the number of games that have been made. Search will be made until a greater degree of accuracy

Table 5 Results of Testing Depth Level 0

Trial Status Largest

Tile

Table 6 Results of Testing Depth Level 1

Trial Status Largest Tile (HH:mm:ss.SSS) Time Score

Table 7 Results of Testing Depth Level 2

Trial Status Largest

Tile

Table 8 Results of Testing Depth Level 3

Trial Status Largest

Tile

Table 9 Results of Testing Depth Level 4

Trial Status Largest

(49)

Table 10 Results of Testing Depth Level 5

Trial Status Largest

Tile 10 Succeed 2048 01:21:23.320 20344

2.6 Testing Result

The results of testing that was done ten times at each depth level can be seen in the picture.

Figure 8 Testing Results Based on Max Tile

Figure 9 Testing Results Based on Score

Figure 10 Testing Results Based on Time

3. FINAL

3.1 Conclusion

Based on the results of the study, analysis of system design and implementation as well as tests

In the algorithm implementation MTDf) on the game in 2048 is still far from perfect and there are still many shortcomings. Therefore it is necessary to do a deeper analysis. The advice can be given by the researchers in this study is to apply other algorithms that can be applied to the game in 2048 in order to more quickly and accurately to complete the game in 2048.

REFERENCES

[1] K. Lu, "Game Theory of 2048," Math 89s: Game Theory and Democracy, 2014.

[2] Stepen, "Perbandingan Algoritma Greedy & Bactracking Dalam Penyelesaian Permainan 2048," Makalah IF2211 Strategi Algoritma ,

2014.

[3] V. Vryniotis, "Using Artificial Intelligence to solve the 2048 Game (JAVA code) | Datumbox," 14 November 2014. [Online]. Available: http://blog.datumbox.com/using- artificial-intelligence-to-solve-the-2048-game-java-code/. [Accessed 20 September 2015]. [4] A. Plaat, "MTD ( f ) A Minimax Algorithm

(50)

Daman," Informatika, 2014.

[6] R. S. Pressman, Software Engineering: A Practitioner’s Approach, Seventh Edition, New York: McGraw-Hill, 2010.

[7] J. V. Neumann and O. Morgenstern, Theory of Games and Economic Behavior, Third Edition, New Jersey: Princeton, 1953.

[8] S. Russell and P. Norvig, Artificial Intelligence A Modern Approach, Third Edition, New Jersey: Pearson, 2010.

[9] A. Ilman, "Penerapan Algoritma Minimax Dengan Optimasi Mtd(F) Pada Permainan Catur," Makalah IF2251 Strategi Algoritmik,

2008.

[10] J. Lewis and W. Loftus, Java Software Solution Foundations of Programming Design, Sixth Edition, New Jersey: Pearson, 2008.

[11] D. A. Uston, Theory and Problems of Software Engineering, New York: McGraw-Hill, 2002. [12] Microsoft, "Introduction to the C# Language

and the .NET Framework," Microsoft, [Online]. Available: https://msdn.microsoft.com/en-us/library/z1zx9t92.aspx. [Accessed 18 12 2015].

[13] Microsoft, "Visual Studio," Microsoft,

[Online]. Available:

Gambar

Gambar 1.2 Metode Pembangunan Perangkat Lunak Extreme Programming
Gambar 2.1 Permainan 2048
Gambar 2.3 Pseudocode Algoritma Minimax
Gambar 2.4 Pohon Pencarian AlphaBeta Prunning
+7

Referensi

Dokumen terkait

Kaitannya dengan perlindungan hukum terhadap pemilik asal tanah dalam pelaksanaan jual beli yang dilakukan oleh tergugat I, II, III dan IV maka perlindungan hukum

Metode elemen hingga adalah suatu metode numerik yang cocok di gunakan dengan komputer digital, dengan metode ini suatu elastic kontinum dibagi – bagi

Dalam memahami makna kepemilikan yang dirumuskan Taqiyuddin An-Nabhani, dimana Ismail Yusanto menjelaskan dengan menggunakan bahasa yang lebih sederhana, dimana

Hasil penelitian ini juga mendukung penelitian yang dilakukan oleh Prasetyono &amp; Kompyurini (2007) ini menunjukkan bahwa terdapat pengaruh langsung maupun

Menurut Fasli Jalal dan Dedi Supriadi “ Manajemen Berbasis Sekolah adalah bentuk alternatif sekolah sebagai hasil dari desentralisasi dalam bidang pendidikan .”

Berdasarkan hasil analisis tanah, karakteristik morfologi dan fisika profil tanah serta karakteristik kimia tanah di lokasi penelitian (Profil Gle Gapui), maka dapat

dilakukan dalam internalisasi 9 pilar karakter tersebut menggunakan model pembelajaran Pendidikan Holistik Berbasis Karakter (PHBK) yang berdasarkan teori