190 likes | 326 Views
AI pada Game Development [Learning]. Agung Toto Wibowo http://gameprogramming.blog.ittelkom.ac.id/blog/ Bourg, David M., dan Seeman, Glenn, ” AI for Game Developers “, O'Reilly, 2004
E N D
AI pada Game Development [Learning] Agung Toto Wibowo http://gameprogramming.blog.ittelkom.ac.id/blog/ Bourg, David M., dan Seeman, Glenn, ”AI for Game Developers “, O'Reilly, 2004 Russell, Stuart and Norvig, Peter, “Artificial Intelligence a Modern Approach – Second Edition”, Prentice Hall, 2003
Learning pada game • Learning : belajardari data sebelumnya, bisa history • Fungsiuntukmengontrolstrategi, pergerakan NPC • Beberapaalgoritma yang bisadipergunakan • Fuzzy Logic (knowledge based) • Bayesian • Neural Network
Fuzzy Logic • Digunakanuntuk : mengontrol NPC, menilai/ mengklasifikasikanancamanpemain, penentuantingkat, dansebagainya • Contohpadaperhitunganancamantimberdasarjarak, danukuran. • Jarakbisadibagimenjadidekat, jauh, dansangatjauh • Ukuranbisadibagimenjadikecil, sedang, menengah, danbesar • Tingkat ancamanmusuhbisadibagimenjadibukanancaman, ancamansedang, danancamantinggi
Himpunan Fuzzy • Variabel Fuzzy • Variabeldalamsuatusistem fuzzy. Contoh : beratbadan, tinggibadan, dsb • Himpunan Fuzzy (Fuzzy set) • Himpunan fuzzy yang mewakilisuatukondisipadasuatuvariabel fuzzy. • Contoh : • Variabelsuhuterbagimenjadi 3 himpunan fuzzy, yaitu : panas, hangat, dingin. • Variabelnilaiterbagimenjadi : tinggi, sedang, rendah • Himpunan fuzzy memiliki 2 atribut, yaitu : • - Linguistik, yaitupenamaansuatu group yang mewakilisuatukondisi, misalnya • panas, hangat, dingin • - Numeris, yaituukurandarisuatuvariabelseperti : 17,19, 21, 33, dst
Himpunan Fuzzy • HimpunanSemesta • keseluruhannilai yang bolehdioperasikandalamsuatuvariabel fuzzy. • Contoh: • Semestauntukvariabelberatbadan : [1, 150] • Semestauntukvariabelsuhu : [0,100]. • Domain • Domain himpunan fuzzy adalahkeseluruhannilai yang diijinkandalamSemestadanboleh • dioperasikandalamsuatuhimpunan fuzzy. • Contoh :
FungsiKeanggotaan : Fungsi Linier [x]= 0; x a (x-a)/(b-a); a x b 1; x b [x]= (b-x)/(b-a); a x b 0; x b
FungsiKeanggotaan: Segitiga [x] = 0; x a atau x c (x-a)/(b-a); a x b (c-x)/(c-b); b x c
FungsiKeanggotaan: Trapesium [x]= 0; x a atau x d (x-a)/(b-a); a x b 1; b x c (d-x)/(d-c); c x d
FungsiKeanggotaan: Sigmoid [x;a,b,c]sigmoid = 0; x a 2 ((x - a)/(c - a))2; a x b 1 - 2((c - x)/(c - a))2; b x c 1; x c
FungsiKeanggotaan: Phi [x;a,b,c]phi = [x;c-b,c-b/2,c]sigmoid; x c [x;c,c+b/2,c+b]sigmoid; x > c
Fuzzy Logical Operator double FuzzyAND(double A, double B) { return MIN(A, B); } double FuzzyOR(double A, double B) { return MAX(A, B); } double FuzzyNOT(double A) { return 1.0 - A; }
Contoh : MenentukanAncaman Fuzzy Set Jarak Fuzzy Set Kekuatan
Rule Matrix Proses : • Fuzzification derajatkeanggotaan • Rule Evaluation inferensi rule darikonsekuenkeantisenden • Defuzzyfication penentuanhasil fuzzy • Contoh : Jarak = 55, Kekuatan 18 Rule MatrikAncaman
More Fuzzy : • Baca referensi AI, metode-metode Fuzzy yang lain sepertiMamdani, Sugeno, Tsukamoto
Bayes Rule P(h|D) = P(D|h) P(h) / P(D) h:hypothesisD: dataP(h): probabilitasindependendari hP(D): probabilitasindependendari DP(D|h): probabilitaskondisional D jikadiberikan hP(h|D): probabilitaskondisional h jikadiberikan D h = arg max P(h|D) map hH = arg max P(D|h) P(h)/P(D) hH = arg max P(D|h) P(h) {P(D) konstan} hH
Naïve Bayes • Aksiapa yang dilakukanjikapemainberturutanmelakukan “Menendang, Memukul, danMemukul”?? • Dihitungsemuaprobabilitasnyaterlebihdahulu : • P(memukul) = 5/12 • P(jurus) = 3/12 • P(menendang) = 4/12 • Hitungprobabilitas lain yang terkaitdengan P(B|A) contohpadaaksi 1, aksi 2, dan aksi3.
Naïve Bayes • Aksi yang dilakukan : menendang, memukul, memukul (T1P2P3) • Probabilitasmenendangpadaaksi 4 P(Th| T1P2P3) = P(T1|Th) P(P2|Th) P(P3|Th) P(Th) = 1/4 * 1/4 * 2/4 * 4/12 • Probabilitaspukulpadaaksi 4 P(Ph| T1P2P3) = P(T1|Ph) P(P2|Ph) P(P3|Ph) P(Ph) = 2/5 * 3/5 * 1/5 * 5/12 • Probabilitasjuruspadaaksi 4 P(Jh| T1P2P3) = P(T1|Jh) P(P2|Jh) P(P3|Jh) P(Jh) = 1/3 * 1/3 * 2/3 * 3/12 Note : T=Tendang, P = Pukul, J=Jurus Seharusnyadibagidengan P(D), tapikarena P(D) konstant, makadiabaikan.