Jelajahi eBook
Kategori
Jelajahi Buku audio
Kategori
Jelajahi Majalah
Kategori
Jelajahi Dokumen
Kategori
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 alphabeta. 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 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. 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 sumbersumber yang memerlukan dana intensif. Jepang adalah yang pertama kali melakukan itu. Negara ini mengembangkan program yang sangat berambisi dalam penelitian kecerdasan buatan. Catur Jawa Permainan catur jawa adalah permainan tradisional yang sudak laman digunakan oleh orangorang 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.
BAB III Implementasi Alpha beta pada Catur Jawa Untuk membuat atau mengimplementasikan metode alpha beta pada permainan catur jawa, maka minimal ada 4 komponen/fungsi yang diperlukan untuk membuat game ini. a. Tempat untuk proses game yang terdiri dari papan catur dan tomboltombol, 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; 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]; numChild == er VALUE;} 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; }
BAB IV Hasil Analisis Dari hasil permainan di atas, penulis hanya memberikan permainan catur jawa dalam ukuran 33. Sedangkan dalam program yang sesungguhnya, terdapat ukuran papan 55 dan 99. 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. BAB V 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. 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 6. http://informatika.org/~rinaldi