• Tidak ada hasil yang ditemukan

ARTIFICIAL INTELLIGENCE PADA GAME CATUR JAWA DENGAN MENGGUNAKAN METODE ALPHA-BETA

N/A
N/A
Protected

Academic year: 2021

Membagikan "ARTIFICIAL INTELLIGENCE PADA GAME CATUR JAWA DENGAN MENGGUNAKAN METODE ALPHA-BETA"

Copied!
5
0
0

Teks penuh

(1)

ARTIFICIAL INTELLIGENCE PADA GAME CATUR JAWA

DENGAN MENGGUNAKAN METODE ALPHA-BETA

Ayub Firsoni Dance – NRP : 7406.030.057

Program Study Teknik Informatika, Politeknik Elektronika Negeri Surabaya,

Institute Teknologi Sepuluh November, Surabaya

Email : ayub_dance@yahoo.com

Abstrak

Algoritma Alpha Beta merupakan algoritma yg sangat terkenal dalam pengambilan

keputusan khususnya pada game. Dimana dengan algoritma ini, komputer bisa mengambil

keputusan terbaik dalam menangani permasalahan yang ada.

Masalah yang akan diangkat disini adalah penggunaan Artificial Intelligence pada

game Catur Jawa. Dengan menggunakan Algoritma Alpha Beta, Pohon Solusi akan dibuat di

awal permainan, sehingga komputer akan memilih langkah yang akan menuntunnya ke hasil

akhir berupa kemenangan atau setidaknya seri.

Kata Kunci : Algoritma Alpha Beta, Artificial Intelligence, Game Catur Jawa, Pohon Solusi

Abstract

Alpha Beta algorithm is a very well-known algorithm in decision-making, especially

in games. Where with this algorithm, the computer can take the best decisions in dealing with

existing problems. Issues to be raised here is the use of Artificial Intelligence in Chess Java

game. By using Alpha Beta Algorithm, Tree Solutions will be made early in the game, so the

computer will select the steps that would lead her to the end result of victory or at least a

series.

Keywords: Alpha Beta Algorithm, Artificial Intelligence, Java Chess Game, Tree Solutions

1.

Pendahuluan

Istilah kecerdasan buatan atau AI

adalah suatu tiruan atau buatan yang bisa

berpikir secara cerdas.Maksud dari kata

“cerdas” disini adalah kepandaian dan

ketajaman dalam berpikir, seperti halnya

otak manusia dalam menyelesaikan suatu

masalah.Kecerdasan buatan ini dapat

diterapkan atau diimplementasikan ke

dalam berbagai bentuk aplikasi.

Bentuk implementasi yang paling

mudah untuk diukur tingkat keberhasilan

(kecerdasan buatan) dan cukup digemari

oleh sebagian besar publik yaitu pada

games

atau

permainan.

Salah

satu

algoritma yang dapat diimplementsaikan

sebagai kecerdasan buatan dalam sebuah

permainan adalah algoritma alpha-beta.

Lebih khusus lagi, algoritma alpha-beta

sangat baik diterapkan pada permainan

yang melibatkan 2 orang dan bermain

bergantian, misalnya pada permainan

catur, othello, backgammon, catur jawa,

dan

lain

sebagainya.

Metode

pendekatannya pun hampir sama dengan

minimax, namun ada satu hal yang

membuatnya mampu memangkas biaya

kalkulasi yang cukup besar.

Bila algoritma minimax lebih

menggunakan algoritma BFS sebagai

metode pembangkitan node, algoritma

(2)

alpha-beta

lebih

condong

ke

arah

algoritma branch bound. Ide utama dari

algoritma ini adalah jika suatu langkah

sudah terbukti cukup buruk, maka tidak

perlu membuang waktu untuk sesuatu

yang tidak mengubah hasil akhir.

Adapun beberapa Karakteristik dan

Batasan Game untuk Game Playing, yaitu:

1.

Dimainkan oleh 2 (dua) pemain:

manusia

dan

komputer.

Para

pemain

saling

bergantian

melangkah.

2.

Perfect Information Game: kedua

pemain sama-sama memiliki akses

pada

informasi

yang

lengkap

tentang

keadaan

permainan,

sehingga tidak ada informasi yang

tertutup bagi lawan mainnya.

3.

No Determined by Chances. Tidak

melibatkan

faktor

probabilitas,

misalnya dengan menggunakan

dadu.

4.

No Phsychological Factors. Tidak

melibatkan faktor psikologi, seperti

"gertakan" (misalnya Poker)

5.

No

Oversight

Errors.

Smart

Opponent.

Lawan

diasumsikan

pintar juga, jadi jangan mengharap

lawan khilaf, sehingga terjadi salah

langkah.

Game Catur Jawa ini adalah salah

satu bentuk implementasi dari kecerdasan

buatan.Dengan

dibantu

menggunakan

metode Alpha-Beta, game Catur Jawa ini

bisa menjadi sebuah contoh aplikasi untuk

dapat mengukur sejauh mana kemampuan

dari

kecerdasan

buatan

yang

telah

dibuat.Dan

dalam

pengembangannya,

pembuatan gamenya sendiri menggunakan

bahasa

pemrograman

java.Hal

ini

dikarenakan, dapat dijalankan di beberapa

platform / sistem operasi computer.

2.

Artificial Intelligence

Kecerdasan buatan (artificial

intelligence) merupakan inovasi baru di

bidang ilmu pengetahuan. Mulai ada sejak

muncul komputer modern, yakni pada

1940 dan 1950. Ini kemampuan mesin

elektronika baru menyimpan sejumlah

besar info, juga memproses dengan

kecepatan

sangat

tinggi

menandingi

kemampuan manusia.

Pentingnya kecerdasan buatan

menjadi nyata bagi negara-negara yang

berperan sejak tahun 1970. Para

pemimpin negara yang mengakui

potensialnya

kecerdasan

buatan

mengharap mendapat persetujuan jangka

panjang untuk sumber-sumber yang

memerlukan dana intensif. Jepang adalah

yang pertama kali melakukan itu. Negara

ini mengembangkan program yang

sangat berambisi dalam penelitian

kecerdasan buatan.

3.

Catur Jawa

Permainan

catur

jawa

adalah

permainan tradisional yang sudak lama

digunakan oleh orang-orang indonesia.

Permainan

yang

sederhana

yang

dimainkan oleh 2 orang secara bergantian.

Dengan hanya berbekal kertas dan pensil,

lalu mereka memainkan permainan ini

dengan menggunakan 2 simbol, yaitu

tanda X dan 0.

Pada kesempatan ini, pemain

bukan bermain dengan pemain lain, tetapi

akan bermain dengan komputer. Komputer

dengan kemampuan berpikir yang disebut

kecerdasan buatan akan dibuat untuk

menandingi kemampuan berpikir manusia.

4.

Implementasi Alpha beta pada catur

jawa

Untuk

membuat

atau

mengimplementasikan metode alpha beta

pada permainan catur jawa, maka minimal

(3)

ada 4 komponen/fungsi yang diperlukan

untuk membuat game ini.

a.

Tempat untuk proses game yang

terdiri dari papan catur dan

tombol-tombol, atau secara keseluruhan

bisa dikatakan interface.

b.

Tempat dimana proses alpha beta

berlangsung

c.

Tempat dimana proses pencarian

node berlangsung

d.

Tempat

pengecekan

untuk

menentukan siapa yang menang

Berikut adalah contoh sederhana dari

implementasinya :

Pembuatan button-button sebagai papan

dimana game dimainkan :

public final void new_game() {

board_easy.setBackground(Color.yellow); board_easy.setLayout(new GridLayout(3, 3));

for (int i = 0; i < 9; i++) {

b[i] = new JButton();

b[i].setBackground(Color.ORANGE); b[i].setFont(new java.awt.Font("Chiller", 1, 30)); board[i] = 0; b[i].addActionListener(new MoveListener(i)); board_easy.add(b[i]); } }

Berikut merupakan listing dari alpha

betanya :

public class AI extends Thread {

MoveNode bestNode; static byte PLAYER; byte max = Byte.MIN_VALUE; int threadsStop = 0;

public AI(byte board[], byte player) {

AI.PLAYER = (byte)(player * -1);

MoveNode top = new MoveNode (board,player);

MoveNode c; int i = 0;

while((c = top.getChild()) != null) { new RunThread(c).start(); threadsStop++; } try { while(threadsStop != 0) {} } catch(Exception e){} }

public byte[] getBoard() {return bestNode.getBoard();}

public class RunThread extends Thread {

MoveNode top; int depth = 0;

public RunThread(MoveNode in) {top = in;}

public void run() { byte val = minimaxAB(top,true,Byte.MIN_VALUE,Byte.MAX_ VALUE); if(val >= max) { max = val; bestNode = top;} threadsStop--; }

public byte minimaxAB(MoveNode m, boolean mini, byte alpha, byte beta)

{ if(m.isLeaf()) return m.value(); MoveNode child; if(mini) { if(depth == easy.MAX_DEPTH) return beta; depth++; while((child =

m.getChild()) != null && !(alpha > beta)) { byte val = minimaxAB(child, !mini,alpha,beta); depth--; if(val < beta) beta = val; } return beta; } else { if(depth > easy.MAX_DEPTH) return alpha; depth++; while((child =

m.getChild()) != null && !(alpha > beta)) { byte val = minimaxAB(child, !mini,alpha,beta); depth--; if(val > alpha) alpha = val; } return alpha; } } } }

Dan inilah proses pencarian node dalam

tree guna membantu AI mencari peluang:

public class MoveNode

{

byte board[]; byte score;

boolean leaf = false; int next = -2;

MoveNode child[] = new MoveNode[25]; int numChild = 0;

(4)

int player; int winner;

public MoveNode(byte board[], int player) { this.board = board; if (player == easy.PLAYER_ONE) { this.player = easy.PLAYER_TWO;} if (player == easy.PLAYER_TWO) { this.player = easy.PLAYER_ONE;} winner = easy.checkWin(board); if (winner != 0) {leaf = true;} }

public byte[] getBoard() {return board;}

public MoveNode getChild() {

if (next == -2 && !leaf) {generateMoves();} next++; if (numChild == 0 || numChil next || leaf) {return null;} return child[next]; }

public void generateMoves() {

byte b[] = (byte[]) board; next = -1;

for (int i = 0; i < board.length; i++)

{

if (b[i] == 0) {

b[i] = (byte) player;

child[numChild] = new

MoveNode((byte[]) b.clone(), player); b[i] = 0;

numChild++; }

} }

public byte value() {

if (winner == AI.PLAYER) {return Byte.MAX_VALUE;

else if (winner == 0 || winner == easy.TIE)

{return 0;} else

{return Byte.MIN_VALUE;} }

public boolean isLeaf() {return leaf;}

public void setLeaf(boolean leaf) {this.leaf = leaf;}

}

Berikut adalah proses pengecekan siapa

yang menang :

public static byte checkWin(byte b[]) {

byte top[] = new byte[3]; byte mid[] = new byte[3];

public MoveNode(byte board[], int

if (player == easy.PLAYER_ONE) this.player = easy.PLAYER_TWO;} if (player == easy.PLAYER_TWO)

this.player = easy.PLAYER_ONE;}

winner = easy.checkWin(board);

public MoveNode getChild() {

2 && !leaf)

if (numChild == 0 || numChild ==

public void generateMoves()

byte b[] = (byte[]) board;

for (int i = 0; i < board.length;

b[i] = (byte) player;

child[numChild] = new

MoveNode((byte[]) b.clone(), player);

er == AI.PLAYER) {return Byte.MAX_VALUE;}

else if (winner == 0 || winner ==

{return Byte.MIN_VALUE;}

boolean leaf)

Berikut adalah proses pengecekan siapa

public static byte checkWin(byte b[])

byte bot[] = new byte[3];

int numLeft = 0;

for (int i = 0; i < 9; i++) { if (i < 3) { top[i] = b[i]; } else if (i < 6) { mid[(i) % 3] = b[i]; } else { bot[(i) % 3] = b[i]; } if (b[i] == 0) { numLeft++; } }

if (top[0] == top[1] && top[1] == top[2] && top[0] != 0)

{return top[0];}

if (mid[0] == mid[1] && mid[1] == mid[2] && mid[0] != 0)

{return mid[0];}

if (bot[0] == bot[1] && bot[1] == bot[2] && bot[0] != 0)

{return bot[0];}

// if (top[0] == mid[1] && mid[1] == bot[2] && bot[2] != 0)

{return bot[2];}

if (top[2] == mid[1] && mid[1] == bot[0] && bot[0] != 0)

{return bot[0];}

//

if (top[0] == mid[0] && mid[0] == bot[0] && mid[0] != 0)

{return mid[0];}

if (top[1] == mid[1] && mid[1] == bot[1] && mid[1] != 0)

{return mid[1];}

if (top[2] == mid[2] && mid[2] == bot[2] && mid[2] != 0)

{return mid[2];} // if (numLeft == 0) { return easy.TIE; } return 0; }

Dari proses diatas bisa dihasilkan program

seperti berikut :

5.

Hasil Analisis

Dari hasil permainan di atas,

penulis hanya memberikan permainan

catur jawa dalam ukuran 3x3. Sedangkan

dalam

program

yang

sesungguhnya,

terdapat ukuran papan 5x5 dan 9x9.

byte bot[] = new byte[3];

(int i = 0; i < 9; i++)

{ top[i] = b[i]; } else if (i < 6)

{ mid[(i) % 3] = b[i]; }

{ bot[(i) % 3] = b[i]; }

if (top[0] == top[1] && top[1] ==

if (mid[0] == mid[1] && mid[1] ==

if (bot[0] == bot[1] && bot[1] ==

{return bot[0];}

--- if (top[0] == mid[1] && mid[1] ==

if (top[2] == mid[1] && mid[1] ==

{return bot[0];}

--- if (top[0] == mid[0] && mid[0] ==

if (top[1] == mid[1] && mid[1] ==

if (top[2] == mid[2] && mid[2] ==

---

{ return easy.TIE; }

Dari proses diatas bisa dihasilkan program

Dari hasil permainan di atas,

penulis hanya memberikan permainan

catur jawa dalam ukuran 3x3. Sedangkan

dalam

program

yang

sesungguhnya,

terdapat ukuran papan 5x5 dan 9x9.

(5)

Proses yang terlama sebenarnya

terjadi pada saat pencarian node. Ini akan

memakan

waktu.

Dan

jika

ukuran

papannya semakin besar, maka proses

pencarian node pun akan semakin besar.

Hal ini dikarenakan banyaknya papan

catur dan kemungkinan- kemungkinan

yang dihasilkan computer.

6.

Kesimpulan

1.

Algoritma alpha beta merupakan

algoritma yang sangat bagus dan

cocok untuk pengambilan keputusan

oleh AI.

2.

Semakin akurat fungsi heuristic yang

digunakan,

semakin

baik

pula

pengambilan

keputusan

yang

dilakukan oleh AI.

3.

Dengan menggunakan algoritma alpha

beta untuk AI dalam permainan

catur jawa, pemain (manusia) tidak

akan pernah menang melawan AI

tersebut.

7.

Daftar Pustaka

1. Luger, George F. 2005. ”Artificial

Intelligence: Structures and Strategies

for Complex Problem Solving 5th”.

Harlow, London. Addison-Welsey

2. Khoirush Sholih Ridhwaana Akbar,

2007, ALGORITMA MINIMAX

DALAM

PENGAMBILAN

KEPUTUSAN PADA PERMAINAN

TIC-TAC-TOE, Bandung

3. Nico Saputro dan Erdo Dirgagautama,

2003, PENERAPAN ALGORITMA

GENETIK

PADA

PERMAINAN

CATUR JAWA, Bandung

4. http://id.wikipedia.org/wiki/Java

5. http://ai-depot.com

Referensi

Dokumen terkait

Pelayanan kesehatan pada Kecelakaan Kerja atau penyakit akibat kerja sebagaimana dimaksud dalam Pasal 25 ayat 2 huruf a, dilakukan oleh fasilitas kesehatan milik pemerintah,

Nilai A akan diperoleh apabila laboratorium peserta uji profisiensi melaporkan semua senyawa-senyawa kimia berbahaya sesuai dengan yang ditambahkan ke dalam matrik

Anggota Komite yang masih atau yang sudah tidak menjabat lagi sebagai Anggota Komite, wajib menjaga kerahasiaan dokumen, data dan informasi perusahaan yang diperoleh sewaktu

Penelitian ini bertujuan untuk mengetahui gambaran biaya satuan dan kualitas hidup penderita gagal ginjal kronik yang menggunakan tindakan hemodialisis di Rumah Sakit Tebet

peraturan, menyerahkan surat ijin tidak mengikuti perkuliahan dari Program studi kepada dosen atau Bagian akademik, penanggung jawab mata kuliah selambat-lambatnya

Berdasarkan hasil analisis data yang telah dilakukan, maka dapat disimpulkan bahwa terdapat hubungan negatif dan signifikan antara kecerdasan emosional dengan

Dengan demikian, pemaafan yang dilakukan tidak hanya sekedar berdamai pada perasaan negatif atau yang disebut dengan pemaafan sepihak (McCullough, 2000), tapi juga

Keunggulan model pembelajaran Advance Organizer diperoleh dengan menggunakan suatu organizer (kerangka umum). Peta konsep adalah bentuk spasial konsep- konsep