230 likes | 416 Views
Ljetna škola znanosti u Višnjanu S 3 2009. Umjetna inteligencija - konstrukcija generatora poteza "Deep Red 2009" igre Dama. Sudionici: Una Pale Niko Simić Matko Zurak. Voditelji: Nino Antulov-Fantulin, Vedran Ivanac Fakultet elektrotehnike i računarstva Sveučilište u Zagrebu. Sadržaj.
E N D
Ljetna škola znanosti u Višnjanu S3 2009 Umjetna inteligencija - konstrukcija generatora poteza "Deep Red 2009" igre Dama Sudionici: Una Pale Niko Simić Matko Zurak Voditelji:Nino Antulov-Fantulin, Vedran IvanacFakultet elektrotehnike i računarstva Sveučilište u Zagrebu
Sadržaj • C++ i objektno orijentirana paradigma • Objektni model • Minimax algoritam • AlphaBeta podrezivanje • Generator poteza • Heuristika • Analiza • Zaključak
C++ i objektno orijentirana paradigma • C++ - viši programski jezik • izrada našeg projekta (igra Dama) • objektno orijentiran jezik ( povezanost s OOP) • objektni pogled na svijet prati čovjekov prirodni način razmišljanja – sve je objekt • svaki objekt ima atribute(svojstva) i ponašanje • klasa je predložak za stvaranje objekta
C++ i objektno orijentirana paradigma • apstrakcija • nasljeđivanje(eng.inheritance) • enkapsulacija (eng. encapsulation) • polimorfizam (eng. polymorphism)
Dama • Igra se na ploči dimenzija 8 x 8 • Pravila jednostavna ...
Objektni model • game • upravlja igrom • evaluator • provjerava stanje ploče • pobjeda, neriješeno ili remi • player • traži od generatora sljedeći potez • move • sadržava podatke o potezu • board • postavlja izgled ploče • pomiče i briše figurice • provjerava i odigrava poteze
Inteligencija OM • heuristika • stanjima ploče pridodaje realne vrijednosti • vrijednost određuje povoljnost stanja • generator • sami ga osmišljamo –AI Deep Generator • primjenjuje MIN-MAX algoritam na vrijednosti dobivene heuristikom • odabire najpovoljniji potez
Minimax algoritam • Minimax algoritam • Temelji se na pretraživanju dijela prostora stanja • Omogućava računalu da donese odluku o idućem potezu procjenom budućih stanja • Pretpostavlja se da protivnik igra bez pogreške • Stablo se generira za svaki potez računala (zbog nepredvidivosti protivnika) • Za procjenu krajnjih stanja (listova) se koristi heuristička funkcija
alfa i beta podrezivanje • tehnika koja se koristi da bi se ubrzao program • smanjuje broj stanja koja je potrebno pretražiti • ako igrač pretražujući stablo otkrije da potez B kojeg trenutno istražuje ne može biti ni u kojem slučaju bolji od poteza A kojeg je prethodno istražio • alfa – podrezivanje dvije dubine ispod max čvora • beta -podrezivanje dvije dubine ispod min čvora
1 0 - max X 1 X2 1 - min X1 m >= beta 1 2 2 - max X11 X12 X21 X22 3 X122 X123 X111 X112 X121 X211 X212 X221 X222 0 1 2
1 0 - max X -3 1 m <= alfa X2 1 - min X1 1 2 -3 2 - max X22 X11 X12 X21 3 X122 X123 X221 X222 X111 X112 X121 X211 X212 0 1 2 -3 -5
AIDeepRedGenerator • generator poteza u igri Dama • konstruiran i funkcionalan • uz heuristiku glavni dio umjetne inteligencije • generira sljedeći potez računala te izabire optimalan
NextMove(color, board,alpha,beta,maxdepth) { m = alpha; depth = 0; evalValue = Evaluate(board); if ( evalValue == EVALUATOR_GAME_NO_WIN ){ MustDoMoves = GenerateMustDoMoves(board); for each move in MustDoMoves{ boardChild = board->PlayMove(move); childValue = ABMinMaxOdd( board, m, beta,depth++,maxdepth) m = max( m,childValue ); OptimalMove = optimal( move, OptimalMove ); } if (MustDoMoves is emtpy){ Moves = GenerateMoves(board); for each move in Moves{ boardChild = board->PlayMove(move); childValue = ABMinMaxOdd( board, m, beta,depth++,maxdepth) m = max( m,childValue ); OptimalMove = optimal( move, OptimalMove ); } } return OptimalMove; } }
Heuristika • Glavni dio generatora poteza • Određuje vrijednost stanja ploče • Lošija od čovjeka • Problem lokalnih maksimuma
Zaključci • koristili smo objektno orijentiranu paradigmu za izgradnju sustava igre dama • implementirali smo min-max algoritam, alfa-beta podrezivanje • izgradili generator poteza u C++ • dizajnirali i implementirali heuristiku • izvršili proces učenja parametara heurističkih funkcija
Reference [1] Demistificirani C++, Boris Motik, Julijan Šribar [2] Vizualizator min-max algoritma, http://wolfey.110mb.com/GameVisual/launch.php?agent=2 [3] Predavanje “Pretraživanje prostora stanja” , kolegij “Umjetna Inteligencija”, Fakultet elektrotehnike i računarstva,prof.dr.sc. Bojana Dalbelo Bašić [4] Predavanje “Alfa-beta podrezivanje”, Goran Pogačić, kolegij “Umjetna Inteligencija”, Fakultet elektrotehnike i računarstva,prof.dr.sc. Bojana Dalbelo Bašić [5] Predavanje “Igranje igara pretraživanjem stabla”, Nino Antulov-Fantulin, kolegij “Umjetna Inteligencija”, Fakultet elektrotehnike i računarstva,prof.dr.sc. Bojana Dalbelo Bašić
AI Deep Red Turnir • Ivan Sudić vs. AI Deep Red 2009 • AI Deep Red pobijedio !
Hvala na pozornosti! Pitanja?