Sunteți pe pagina 1din 23

1. Tehnici de implementare a unui joc cu informatie complect.

Algoritmi genetici Dei ideea de Inteligen Artificial a luat amploare dup apariia primelor sisteme de calcul, pe la mijlocul secolului al XX-lea, conceptul de main inteligent i are rdcinile n mitologia greac. Conform site-ului organizaiei AAAI, miturile greceti ale lui Hephaestus i Pygmalion ncorporeaz ideea de roboi inteligeni (ref. 1). Fiine umane artificiale dotate cu contiin i inteligen, au aprut n mituri, poveti i zvonuri timp de sute de ani (ref. 2). Aceste idei au rmas mult vreme de domeniul fantasticului (unele vor rmne i n continuare), trecnd de la mituri i povestiri, la cri i filme SF. Domeniul Inteligenei Artificiale s-a dezvoltat foarte mult n a doua jumtate a secolului XX, astfel nct a devenit necesar ramificarea (mprirea) pe tot mai multe subdomenii. De la nceput, jocurile logice au fost tratate ca i aplicaii relevante pentru acest domeniu. Astfel s-au pus bazele subdomeniului Game AI (Inteligena Artificial a Jocurilor). S-a nceput prin implementarea jocurilor clasice (pt tabl), n 2 juctori, cum ar fi ah, table, dame, etc. inta programatorilor de jocuri este s implementeze juctorul imbatabil, care s ctige pn i confruntrile cu cel mai bun juctor uman. n majoritatea jocurilor clasice acest obiectiv a fost atins (cum ar fi DEEP BLUE pentru jocul de ah), pe cnd pentru altele, e nevoie nc de munc i mbuntiri (pentru jocul de GO, nc se caut o funcie de evaluare potrivit). Subdomeniile inteligenei artificiale comunic ntre ele i se combin n aplicaii, n funcie de inventivitatea programatorului. n dezvoltarea jocurilor, pe lng teoria jocurilor i algoritmi de cutare, se folosesc diverse concepte i algoritmi din alte subdomenii menite s mbunteasc stilul de joc. Una din cele mai utilizate metode de imbunatatire a functiilor de evaluare a pozitiilor de joc, este cea care combin elemente din teoria jocurilor, cu elemente din teoria algoritmilor genetici pentru a obine, prin evoluie, o serie de juctori ct mai buni. Algoritmii genetici fac parte din subdomeniul nvare automat al Inteligenei Artificiale, dar sunt folosii n diverse abordri din teoria jocurilor. Algoritmii genetici se bazeaz pe teoria evoluionist a lui Darwin. Plecnd de la o populaie, aceasta evolueaz prin selecie, mperechere i mutaie. Doar indivizii cei puternici rmn, deci noua generaie rezultat va avea indivizi i mai puternici. Prin mutaie se introduc trsturi noi i se asigur diversitatea. Procesul de evoluie poate continua pn cnd indivizii rezultai sunt considerai potrivii pentru rolul ce-l vor ndeplini. Ref 1 - http://www.aaai.org/AITopics/pmwiki/pmwiki.php/AITopics/BriefHistory#mod Ref 2 - http://en.wikipedia.org/wiki/History_of_artificial_intelligence#cite_note-0 1

1.1 Contextul in care se utilizeaza algoritmii genetici Inteligena Artificial a Jocurilor ncearc s produc iluzia de maini inteligente, prin crearea unui juctor la fel de bun, sau chiar mai bun dect unul uman. Jocurile la care ne vom referi pe tot parcursu lcursului, se situeaz in categoria jocurilor pe tabl, cu doi juctori (adic aa-numitele jocuri clasice). Acesta nu conine elemente probabilistice (cum ar fi zarurile pentru table) ci reuita vine din strategiile utilizate de juctor. Jocul poate fi deci ncadrat n aceeai categorie cu jocuri precum ahul sau Othello (reversi), ce apar frecvent n scrierile i articolele de specialitate. La implementarea unui joc clasic pe calculator programatorul se lovete de dou mari probleme i. ii. alegerea algoritmului de cutare i gsirea unei funcii de evaluare potrivite. Algoritmul de cutare n spaiul strilor va genera un arbore al tuturor mutrilor posibile, pe mai multe nivele. El trebuie s returneze o mutare ct mai favorabil, mai bun pentru juctorul curent, dar nu neaprat cea mai bun mutare. Optimizrile algoritmului constau n: i. ii. minimizarea timpului de cutare prin modul de parcurgere al arborelui de mutri i prin tierea unor ramuri care se dovedesc a nu fi utile. Gasirea celei mai bune mutri ar nsemna s se analizeze arborele pe un numr prea mare de nivele, pentru a putea fi eficient din punctul de vedere al timpului consumat, de aceea compromisul este gsirea unei mutri ct mai favorabile, nu cea mai favorabil. Algoritmul se va alege n funcie de performanele dorite i de hardware-ul disponibil. Spre exemplu Deep Blue, jocul de ah comparabil ca performan cu cel mai bun juctor de ah uman, rula pe 16 procesoare legate n paralel i utiliza o imens baz de date cu configuraii de joc. A doua problem a programatorului, gsirea unei funcii de evaluare potrivite, are impact direct asupra modului de selecie a configuraiei alese pentru mutare, adic asupra strategiei de joc a calculatorului. Estimatorul (adic funcia de evaluare a unei configuraii) se traduce prin valoarea dat acelei configuraii, modul n care se asociaz puncte pieselor i relaiilor existente ntre piese. n jocul de ah spre exemplu, piesele au roluri i valori diferite, valoarea unei piese depinznd inclusiv de stadiul jocului. Spre exemplu putem spune c o pies turn nu este foarte valoroas la nceputul jocului, ns spre sfrit are un rol important i va avea asociat un punctaj mare. Pentru majoritatea jocurilor clasice s-au gsit funcii de evaluare eficiente, bazate pe diverse metode, ns pentru alte jocuri, cum este i Reversi, programatorii nc mai caut o soluie mulumitoare. Pentru a gsi un estimator bun, e necesar ca s cunoasc bine jocul, tehnicile i 2

startegiile abordate de juctori, pentru a nelege ce relaii ntre piese, ce configuraii sunt importante ntr-un anumit stadiu al jocului. In prezent pentru un joc nu se defineste o singura functie de evaluare. Jocul este vazut ca fiind format din mai multe faze pentru fiecare faza fiind definita o functie de evaluare specifica. De exemplu daca jocul are doua faze: una de asezare a pieselor si a doua de joc propriu zis se vor defini doua functii de evaluare. La jocul Moara spre exemplu, n prima faz a jocului, aceea de aezare a pieselor, un juctor profesionist nu se va axa att pe nchiderea de mori ct pe aezarea strategic a pieselor. O configuraie aparent neavantajoas n prima faz, poate deveni foarte bun n partea a doua a jocului, partea de mutare a pieselor. Pentru a obine o serie de estimatori buni, vom face o incursiune ntr-un alt subdomeniu al inteligenei artificiale, nvare Automat (Machine Learning). Pe scurt, estimatorii vor evolua folosind teoria Darwinist prezent n inteligena artificial prin algoritmii genetici.

1.2 Conturarea strategiei de definire a functiilor de evaluare n contextul realizrii unui joc strategic, va trebui s tratm cele dou probleme prezentate: alegerea unor algoritmi de cutare eficieni i gsirea unei funcii/unor funcii eficiente pentru juctorul calculator (Figura 1.2.1). Acestea reprezit componente ale inteligenei artificiale a jocurilor ce sunt necesare pentru implementarea juctorului virtual.

Figura 1.2.1 componente AI la implementarea unui joc (pentru juctor calculator) Pentru tratarea celor dou componente cheie se vor folosi o serie de algoritmi i abordri din vastul domeniu al Inteligenei Artificiale. n primul rnd, algoritmii de cutare n spaiul strilor sunt preluai din teoria jocurilor. 3

A doua problem, aceea a gsirii estimatorilor potrivii, este abordat prin utilizarea teoriei evoluioniste, adic algoritmi genetici. Tema cursului de fa este aceea de a prezenta o modalitate de a implementare a unui joc strategic avand in vedere dou aspecte: modul de configurare a jocului i obiective pe care trebuie sa le aiba in vedere juctorul calculator Pentru o idee de ansamblu a obiectivelor putem urmri Figura 1.2.2. Pornind de la aceast schem vom dezvolta n continuare obiectivele ntr-o serie mai larg de obiective ce sunt mai concrete.

Figura 1.2.2 Obiective majore (exemplificare pentru jocul Moara) Obiectivele pentru joc se constituie din facilitile oferite utilizatorului: interfaa de joc, setri i ar fi urmtoarele: 1. Interfaa grafic s fie sugestiv 2. Interfaa grafic s nu se blocheze cnd PC-ul i calculeaz mutarea urmtoare 3. S se poat configura interfaa grafic: teme grafice, imagine de fundal, forma i culorile pieselor, culoarea tablei de joc 4. Juctorii s poat fi de tipurile: uman sau calculator, n toate variantele posibile (om contra calculator, om contra om, calculator contra calculator) 5. S se poat salva istoria mutrilor pentru jocuri 6. S se poat revizualiza (rejuca) un meci dup istoric 7. S se poat seta pentru juctorul calculator: algoritmul de cutare folosit (dintre doi algoritmi existeni), nivelul de dificultate (dintre Beginer, Intermediate i Advanced), 4

estimatorul folosit (aici se vor discuta opiunile pe larg la obiectivele pentru juctorul PC) 8. S se poat configura din interfaa grafic estimatorul de joc nainte de a continua lista de obiective cu cele pentru juctorul PC, este necesar, pentru claritatea expunerii, s luam in considerare faptul c un joc strategic are trei faze. n continuare, prin: faza 1 ne vom referi la faza de inceput joc (aezare) a pieselor, faza 2 va nsemna faza de joc propriu zisa ( mutarea pieselor) faza 3 reprezint finalul de joc. n continuare vom prezenta obiectivele pentru juctorul calculator, care vor face referire la algoritmii folosii pentru cutare i pentru obinerea estimatorilor: 1. Se implementeaz algoritmi de tip Alfa-Beta . 2. Algoritmii vor tebui sa functioneze pe mai multe nivele de cutare (corespunztoare adncimii arborelui de cutare) n funcie de nivelul de dificultate ales de juctor (spre exemplu pentru Beginer se va merge pe 3 nivele, n schimb la Advanced pe 5 sau chiar 6 nivele) 3. Se vor implementa 3 nivele de dificultate: Beginer, Intermediate, Advanced; fiecare va avea o adncime prestabilit, adaptat astfel nct jocul s nu ruleze prea ncet. 4. Pentru optimizarea cutrii, n loc de o singur adncime pentru un nivel de dificultate se va implementa o funcie, care stabilete adncimea n funcie de faza jocului. Spre exemplu la nceput i sfrit nu se poate opta pentru o adncime foarte mare, fiind mai puine piese exist foarte multe posibiliti de a muta i astfel arborele crete mult n lime i timpul va fi prea lung. Spre exemplu pentru Advanced funcia poate dicta adncimea 4 pentru faza 1 i faza 3 a jocului i 6 pentru faza 2 (mutare piese). 5. Estimatorul care dicteaz valoarea unei configuraii de joc scderea lor se afl care este n avantaj 6. In general estimatorul este compus din 3 funcii de evaluare, cte una pentru fiecare faz a jocului; este necesar aceast difereniere, deoacele relaii ntre piese ce sunt importante n faza 1 pot s nu fie relevante n faza 2 sau 3. 7. O funcie de evaluare este suma produselor dintre relaii i coeficieni de ponderare a calitatii pieselor. Relaiile reprezint relaiile ntre piese, considerate relevante, acestea urmeza sa fie specificate functie de tipul jocului ctre programator; coeficienii reprezint punctajul acordat piselor 5 se va compune din 2 estimatori pariali (pentru fiecare juctor n parte configuraia are cte o valoare); prin

8. Relaiile sunt fixe i configurarea estimatorului se va face numai prin setarea coeficieilor (pentru a renuna la un atribut se va pune coeficientul asociat pe 0) 9. Vor exista 3 categorii de estimatori: i. estimatorii setai de constructorul jocului prin logica sa, prin modul n care a neles jocul; ii. iii. estimatori configurai de utilizator in momentul inceperii jocului; estimatori obinui prin evoluie

10. Estimatorii setai de utilizator sunt de doua categorii: offence (axat pe atac) i defense (axat pe aprare)

11. Estimatorii configurai de utilizator sunt tot n numr de 2 (pentru a putea juca un meci ntre doua configuraii diferite); se configureaz din interfaa grafic i se pot alege de la setrile pentru juctorul PC 12. Estimatorii din a 3-a categorie n urma unui proces de evoluie (tehnica este utilizata in prezent), cu urmtoarele obiective: a. Generarea a 50 estimatori (seturi de coeficieni) aleator b. Trecerea lor printr-o confruntare (intre 2000 - 5000 meciuri) c. Selecia celor mai buni 10 d. Supunerea lor la un proces de mperechere (algoritm genetic) + mutaie e. Reluarea confruntrii i reluarea procesului de evoluie (punctele b-e) pn la obtinerea unei calitati mulumitoare pentru jocul in cauza; 13. Se vor analiza comparativ mai multe procese de evoluie, pentru a descoperi dac mutaia este sau nu relevant, dac estimatorii rezulai joac bine i n confruntrile cu juctori umani, i alte concluzii. 2. Elementele teoretice pe care se bazeaz aplicatiile de tip joc n acest pargraf se vor prezenta elementele teoretice pe care se bazeaz aplicatiile de tip joc, cu prezentarea noiunilor din domeniile Inteligena Artificial pentru Jocuri si Algoritmi Genetici. Folosirea algoritmilor genetici intervine n procesul de selecie a funciilor de estimare pentru algoritmiii de cutare, de aceea au o pondere important n succesul oricarei aplicatii de tip joc. Estimatorii (funciile de estimare) au un rol fundamental n modul de joc al calculatorului, cu ct sunt mai bine alese, cu att strategia calculatorului va fi mai buna. 2.1 Algoritmi de cutare n spaiul soluiilor. Discutie. In general se utilizeaza doi algoritmi de cutare n spaiul soluiilor. Primul este MiniMax. Cel 6

de al doilea este Alfa-Beta care este o mbuntire a algoritmului de baz pentru jocuri cu 2 oponeni, MiniMax.

2.1.1 Algoritmul Minimax Se pleac de la consideraia c cei doi juctori ai unui meci sunt denumii MAX i MIN, iar MAX ncepe jocul, urmnd apoi ca cei doi s mute aleator. n cartea Artificial Intelligence A Modern Approach, Russel i Norwik consider c un joc poate fi definit ca un tip de problem de cutare, avnd urmtoarele componente: o stare iniial, un set de operatori, un test de finalitate i o funcie de utilitate. Starea iniial se refer la constituia iniial a tablei de joc i un indicator la juctorul care ncepe jocul. Setul de operatori se bazeaz pe regulile jocului i definesc mutrile care sunt legale pentru cei doi juctori. Rolul testului de finalitate este acela de a indica o configuraie de final de joc. Funcia de utilitate conine rezultatul jocului (relativ la juctorul pentru care am aplicat algoritmul), adic pierdere, ctig sau remiz. Minimax este un algoritm de cutare n arborele de mutri, care gsete mutarea cea mai bun pentru Max (despre care se presupune a fi juctorul curent). n figura 2.1.1 se poate vedea structura unui arbore de joc.

Figura 2.1.1 Structura arborelui de cautare pentru jocul de sah Spre exemplu, pentru jocul de ah, la o adncime a arborelui de 80 de mutri se poate ajunge la un numr de 100040 noduri i aceasta numai pe ultimul nivel. Este clar c arborele este de o complexitate foarte mare i ar fi nevoie de o putere foarte mare de procesare pentru calcula cea m ai bun mutare sub acest form. Pentru a aplica ntocmai algoritmul MiniMax, adic s se gseasc cea mai bun mutare, ar fi necesar, la fiecare mutare, generarea ntregului arbore pn la epuizarea tuturor variantelor. Pe 7

toate toate ramurile, frunzele finale ar trebui s fie configuraii finale de joc de ctig, pierdere sau remiz. Cu alte cuvinte, ar fi nevoie de o putere de calcul foarte mare, care s -ar putea obine cu un sistem de calcul cu mai multe procesoare paralele, ns pentru o aplicaie desktop este imposibil s se atepte generarea tuturor posibilitilor pe toate nivelele. n cazul n care nu s-ar epuiza memoria, utilizatorul ar atepta foarte mult timp dup mutrile calculatorului. Intervine necesitatea unor compromisuri, astfel nct nu se va mai cuta cea mai bun mutare, ci o mutare bun, astfel nct raportul calitatea mutrii / timp s fie mulumitoare. Prima limitare se face tot n cadrul algoritmului MiniMax i anume la adncimea arborelui de cutare. Acesta va fi prestabilit, cu ct este mai mare, cu att se presupune c mutarea returnat este mai bun. Vom explica mai n detaliu funcionarea algoritmului pornind de la Figura 2.1.2. S presupunem c juctorul curent, la mutare, este juctorul PC i el este juctorul Max (cel care maximizeaz, alege punctajul maxim). Primul lucru ce se observ, pe Figura 2.1.2 (a) este c se merge pe arbore pn jos (cutare n adncime) i pe ultimul nivel se calculeaz estimatorul (punctajul, valoarea asociat unei configuraii). Apoi pe baza ultimului nivel, observm c pe nivelul 2 din Figura 2.1.2 (b), Min alege tot timpul valoarea cea mai mic. Apoi, alegerea final a juctorului Max, care este la mutare, se va face ca valoare maxim ntre valorile de pe nivelul 2: 5, 3 i 2. Dup cum vedem pe Figura 2.1.2 (c) alegerea este varianta 5.

(a) calcul estimatori pe ultimul nivel

(b) min alege valorile cele mai mici

(c) max alege valoarea cea mai mare Figura 2.1.2 Exemplu pt funcionarea algoritmului Minimax Valorile din interiorul nodurilor reprezint valorile estimatorului pentru configuraia 8

respectiv de joc. Privit din perspectiva juctorului curent care este Max, poziiile cu valori mai mari i sunt mai avantajoase. n figura 2.1.3 vedem o propunere de implementare a algoritmului, preluat din [8].

Figura 2.1.3 Algoritmul Minimax (sursa: [8]) Pentru a aplica ntocmai algoritmul MiniMax, adic s se gseasc cea mai bun mutare, ar fi necesar, la fiecare mutare, generarea ntregului arbore pn la epuizarea tuturor variantelor. Pe toate toate ramurile, frunzele finale ar trebui s fie configuraii finale de joc de ctig, pierdere sau remiz. Cu alte cuvinte, ar fi nevoie de o putere de calcul foarte mare, care s -ar putea obine cu un sistem de calcul cu mai multe procesoare paralele, ns pentru o aplicaie desktop este imposibil s se atepte generarea tuturor posibilitilor pe toate nivelele. n cazul n care nu s-ar epuiza memoria, utilizatorul ar atepta foarte mult timp dup mutrile calculatorului. Intervine necesitatea unor compromisuri, astfel nct nu se va mai cuta cea mai bun mutare, ci o mutare bun, astfel nct raportul calitatea mutrii / timp s fie mulumitoare. Prima limitare se face tot n cadrul algoritmului MiniMax i anume la adncimea arborelui de cutare. Acesta va fi prestabilit, cu ct este mai mare, cu att se presupune c mutarea returnat este mai bun. O problem ce apare este denumit n literatura de specialitate problema orizontului. Acesta se refer la cazul n care o poziie aparent foarte avantajoas se treansform la mutarea imediat urmtoare ntr-una foarte dezavantajoas. Spre exemplu, n referina [8] (pag. 128) se d exemplul unui pion aflat aproape de captul cellalt al tablei. n alte cuvinte, la mutarea curent, pionul este nesemnificativ, iar la mutarea urmtoare acesta se poate transforma ntr-o dam (conform regulii ajungerii cu pionul la captul cellalt al tablei) i situaia devine ntr-adevr periculoas. Pe de alt parte, exist o serie de mutri pe care un juctor uman le-ar exclude din start. Spre exemplu, la jocul de ah, dac eu ii atac adversarului o pies, m atept s i-o apere sau s-mi atace 9

i el o alt pies i n funcie de aceasta elaborez o startegie de atac. Nici nu m voi gndi s iau n calcul varianta n care oponentul ar muta altceva, lasndu-mi cale liber s-i capturez piesa. Calculatorul n schimb, va lua n calcul toate variantele, deoarece nu tie s fac o distincie ntre mutrile relevante i cele nerelevante. Pe acest idee se bazeaz algoritmul derivat, Alfa-Beta.

2.1.2. Algoritmul Alfa-Beta Algoritmul Alfa-Beta are ca scop reducerea timpului de cutare n arbore, dar fr a reduce calitatea cutrii. De aceea vor fi excluse doar ramurile pe care n mod normal sigur nu se va putea ajunge. Vom descrie principiul general pe care se bazeaz algoritmul, urmring Figura 2.1.4. Ne bazm pe referina [8] (pag. 130). Considerm c undeva n arbore exist un nod N, iar juctorul poate opta s se ndrepte spre acel nod. Dac undeva pe un nivel superior, la un punct de decizie, acesta are o mutare mai bun spre un alt nod, M, este clar c se va ndrepta nspre acea posibilitate i nu va ajunge la N niciodat. Odat ce n cadrul algoritmului se afl acest lucru, ramura respectiv cu nodul N se poate tia.

Figura 2.1.4 Exemplu de decizie (dup referina [8]) n alte cuvinte, acest algoritm are n eviden cea mai bun mutare de pe fiecare nivel. Dac o mutare este foarte bun pentru un juctor i foarte proast pentru cellalt, este clar c juctorul dezavantajat nu va permite s se ajung acolo. De aceea subramura nodului ce corespunde mutrii respective poate fi tiat din arbore, deoarece nu se va ajunge acolo[9]. Algoritmul Minimax este de cutare n adncime. Se presupune c este cea mai bun mutare gsit pn la momentul respectiv pentru Max, iar cea mai bun mutare gsit pn la momentul respectiv pentru Min. Valorile pentru i se ajusteaz pe parcursul rulrii algoritmului. Pentru o mai bun nelegere a mersului algoritmului, vom prezenta un exemplu din bibliografie iar apoi vom relua exemplul prezentat la algoritmul Minimax i vom vedea cum se mbuntete cutarea. n Figura 2.1.5 este un arbore de cutare, pe cinci nivele.

10

Figura 2.1.5 Exemplu Alfa-Beta (sursa: [10]) Ramurile ce conin noduri de culoarea gri se taie, deoarece nu se va ajunge niciodat n acele situaii. Ne situm pe ultimul nivel (cel mai de jos, pe care l numerotm 5). Sunt evaluate valorile 5 i 6, din care Min alege 5 ca valoare pentru primul nod de pe nivelul 4. n acest moment, este clar c la pasul urmtor Max nu va merge mai jos dect 5 (alfa=5). Adic valoarea minim asigurat pentru Max este 5 (alfa). Pentru valoarea celui de-al doilea nod al nivelului 4, Min evalueaz valoarea 7. 7 este mai mare dect 5-ul de pe primul nod, deci Min caut n continuare. Dup 7, gsete valoarea 4, care rmne momentan ca valoare minim. Prin urmare, pentru acest nod Min are asigurat cel mult valoarea 4, adic va alege nodul cu valoarea 4 sau eventual unul cu o valoare mai mic (dac ar gsi n continuare). ns, avnd n vedere c pe urmtorul nivel Max va alege minim valoarea 5, nu mai este nevoie s caute n continuare (deoarece valoarea este mai mic dect alfa i este clar c Max nu va permite un punctaj att de sczut). Prin urmare, nu se mai merge pe nodul de dup 4, cel cu valoarea 5. Pe acest mod de gndire se merge i n continuare. Ajuni pe nivelul doi (rndul lui Min) avem pentru primele noduri atribuite valorile 3 i 6. La pasul urmtor, Max va alege minim valoarea 6. Pe nivelul 2, al treilea nod, Min caut n subarbore. Pe subarborele stng, valoarea gsit, 5, este mai mic dect valoarea minim acceptat de Max (adic 6), de aceea Min alege valoarea 5 pentru nod i nu se mai face cutarea pe subarborele drept. n Figura 2.1.6 se prezint arborele tratat n subcapitolul anterior (pentru exemplificarea algoritmului Minimax), cu tierea ramurilor pe care nu se merge n cazul aplicrii algoritmului derivat, Alfa-Beta. n acest caz se renun la evaluarea a dou noduri, ns n exemplul de mai sus, se poate observa clar eficiena algorimului Alfa-Beta comparativ cu Minimax (nu se mai viziteaz 8 noduri din totalul de 33, adic acoperirea arborelui se reduce cu peste 25%). Putem trage con cluzia c eficacitatea algoritmului depinde de ordinea n care se examineaz nodurile. Putem avea o acoperire minim a arborelui de cutare, dar dac nodurile sunt luate n alt ordine putem avea tot acoperire total ca i cnd am aplica algoritmul Minimax. Spre exemplu dac ordinea nodurilor 3,12,10 din ultimul caz prezentat ar fi fost 10,12,3, nu s-ar mai fi tiat nici un nod, deoarece ultimul 11

luat n considerare ar fi fost 3. n acest caz nu ar fi existat nici o diferen de eficien fa de Minimax. Dar, este puin probabil ca acest lucru s se ntmple n realiate n prea multe cazuri.

Figura 2.1.6 Exemplu de tiere a ramurilor cu Alfa-Beta Varianta de algortim prezentat n referina [8] se gsete n Figura 2.1.7 i se compune din dou funcii Max-Value i Min-Value. Cele dou funcii se apeleaz reciproc i la fiecare apel se modific valorile i i astfel se restrnge intervalul pentru gsirea unei soluii.

Figura 2.1.7 Algoritmul Alfa-Beta (sursa: [8]) 2.2 Funcia de evaluare a unei configuraii de joc Primul pas n cutarea unei mutri este generarea arborelui de configuraii pe un numrul de nivele dorit. Algoritmul de cutare folosit, trebuie s tie ce configuraie caut de fapt. Este clar necesitatea catalogrii fiecrei configuraii. Pentru orice configuraie trebuie s tim cine este n avantaj. Bineneles c pentru fiecare juctor vor exista o serie de configuraii avantajoase, deci, pentru un juctor, este nevoie s cunoatem care dintre configuraiile avantajoase pentru el este mai avantajoas. Aici intervine noiunea de Estimator. Estimatorul este modul prin care se evalueaz o 12

configuraie i reprezint practic o funcie de evaluare, care returneaz o estimare a utilitii jocului dintr-o poziie dat. Ideea funciilor de evaluare a fost propus de Shannon, dar nu era tocmai nou la acel moment, deoarece n literatura de specialitate ce trata jocul de ah apruse deja ideea de a se da o valoare material fiecrei piese[8]. Aceast asociere a punctajelor la nodurile arborelui de cutare reprezint, n termeni de inteligen artificial, o euristic. Dac dorim s scriem o euristic, trebuie s pornim de la dou ntrebri de baz: Care sunt elementele interesante ale jocului, ce ar trebui luate n condiderare cnd se stabilete dac o tabl de joc este mai bun dect o alta? Care sunt ponderile relative ce ar trebui asociate fiecrui element?[12]. S lum spre exemplificare un caz concret, bazat pe jocul Moara. Presupunem cazul din Figura 2.2.1, unde juctorul cu piese ptrate (maro) este la mutare i ne aflm n etapa a doua a jocului (cnd cei doi juctori pot muta alternativ o pies cu cte o poziie i pot nchide mori). Mutarea numrul 1 este bun, deoarece l va mpiedica pe adversar s nchid moara. n configuraia 2, juctorul nchide o moar i captureaz o pies a adversarului. ns acest avantaj este superficial, la pasul urmtor cellalt juctor putnd s nchid la rndul su o moar i va lua o pies n schimb. Varianta 3 pare a fi cea mai bun alternativ, deoarece juctorul nchide moara i captureaz o pies mai valoroas pentru cellalt juctor, deoarece acesta nu va mai putea s nchid o moar la pasul imediat urmtor. Toate aceste aprecieri logice trebuie transpuse n program, astfel nct i calculatorul s gndeasc precum ar gndi un juctor uman experimentat.

Figura 2.2.1 Exemplu de configuraii Este evident faptul c la calclularea punctajului unei configuraii de joc trebuie privit din prisma ambilor juctori. O configuraie care este foarte bun pentru unul din juctori, este, evident, nefavorabil pentru cellalt juctor. Valoarea estimatorului trebuie s indice n primul rnd de partea cui este avantajul. De aceea, n funciile de cutare n spaiul soluiilor, s-a recurs la notatrea 13

juctorilor cu Min i Max. O valoare foarte mic (sau negativ, n funcie de implementare) este favorabil pentru Min, iar una foarte mare (sau pozitiv) este favorabil pentru Max. Astfel, pentru fiecare juctor se va aplica aceeai funcie de evaluare a configuraiei. Bineneles c pentru fiecare juctor n parte se va ine cont de piesele sale i de relaiile existente ntre piese. Calcularea punctajului asociat unei configuraii se face deci din dou pri. S presupunem c primul juctor este cel pentru care se dorete gsirea unei mutri bune i l vom considera pe acesta juctorul Max. Prin urmare, se va calcula funcia de evaluare pentru Max (s o notm EstimMax), iar apoi se calculeaz pentru Min (notat EstimMin). Deoarece folosesc aceeai funcie de estimare, este clar c i EstimMax i EstimMin vor avea valori mari pozitive. Dac EstimMax este mai mare dect EstimMin, Max este n avantaj. Dac EstimMin este mai mare, atunci Min este n avntaj. Pentru ca estimatorul s arate clar de partea cui se afl avantajul, valoare estimatorului configuraiei de joc se calculeaz ca diferena celor dou valori. ValEstimator = EstimMax EstimMin Prin urmare, dac ValEstimator este pozitiv, Max este n avantaj, iar dac este negativ, Min este n avantaj. O funcie de evaluare este o sum ponderat de relaii ntre piesele de joc. O relaie de joc poate reprezenta o asociere de piese care aduce avantaj, spre exemplu o relaie important pentru jocul de ah ar putea fi faptul c o pies atac regina, sau alt relaie ar putea fi un pion ce atatc dou piese valoroase n acelai timp. Funcia de evaluare se prezint sub forma: Estim = p1*r1+p2*r2+...+pn*rn, unde pn reprezint ponderea asociat relaiei corespondente rn. Un alt aspect ce trebuie urmrit este acela c valoarea pieselor i a relaiilor dintre acestea se schimb foarte mult pe parcursul jocului. Pentru jocul de ah, spre exemplu, un turn nu prezint importan la nceputul partidei, n schimb, spre sfrit, valoarea acestuia crete foarte mult[13]. Aceasta se poate soluiona prin structurarea estimatorului de joc pe mai multe funcii de evaluare, lund n considerare etapa jocului. Majoritatea implementrilor de jocuri folosesc funcii de evaluare liniare. Acesta nseamn faptul c relaiile definite i considerate importante rmn fixe, iar valorile ponderilor se tot ajusteaz pn suntem mulumii de modul de joc al calculatorului. Exist tot felul de metode prin care se poate implementa acest ajustare a ponderilor. Se automatizez procesul prin care calculatorul joac o serie de partide i i regleaz ponderile astfel devenind mai bun. n ultima perioad, au fost folosite cu succes i funcii neliniare. n special pentru jocul Reversi se merge foarte mult pe funcii de evaluare neliniare, deoarece problema estimatorului acestui joc nu a fost complet soluionat pn n prezent.

14

3. Noiuni fundamentale despre algoritmi genetici n algoritmii genetici, selecia natural este adaptat pentru a permite identificarea soluiilor unor probleme . (probleme NP, alg gentici, cap 15.). n ultimii 30 de ani, s-a manifestat un mare interes n rezolvarea problemelor de sistem bazate pe principiile evoluiei i ereditatii. (chelaru, Algoritmi genetici). Aceti algoritmi folosesc cromozomii care descriu soluii posibile. n timp ce algoritmii clasici caut soluia, algoritmii genetici genereaz o serie de soluii i apoi verific dac sunt bune i care sunt cele mai bune.

Termeni utilizati Totalitatea cromozomilor utilizai pentru gsirea soluiei formeaz populaia. Starea populaiei la un moment dat poart denumirea de generaie. (probleme NP, alg gentici, cap 15.). Evoluia const practic n trecerea dintr-o generaie n generaia urmtoare prin aplicarea operatorilor genetici de ncruciare i mutaie. Pentru a evolua de la o generaie la alta, trebuie s existe un criteriu de selecie care s indice care vor fi indivizii ce vor supravieui i care vor da natere generaiei urmtoare. Aceasta se realizeaz prin calcularea gradului de adaptibilitate, adic noiunea de funcie de fitness. Acest funcie de fitness red msura n care un cromozom are dreptul s se ncrucieze. Un cromozom este alctuit din mai multe gene. n cele mai multe aplicaii genele sunt reprezentate n binar, prin 0 i 1, dar reprezentarea n binar nu e obligatorie, rmne la latitudinea programatorului. n continuare vom explica semnificaia celor doi operatori. Prin mutaie se nelege alterarea cromozomului, spre exemplu modificarea unei gene din 0 n 1 sau din 1 n 0. Este important ca modificarea cromozomului s fie minor; n caz contrar algoritmul va degenera ntr-un algoritm probabilistic clasic. (probleme NP, alg gentici, cap 15). ncruciarea reprezint un proces prin care doi cromozomi dau natere altor doi cromozomi, prin combinare. Exist mai multe tipuri de ncruciare, cele mai utilizate fiind cele cu un punct de tiere, cu 2 puncte de tiere, ncruciarea multipunct i ncruciarea cu distribuie aleatoare a genelor. ncruciarea cu un singur punct de tiere presupune generarea aleatoare a unui punct i interschimbarea irului de gene de 15

la acel punct pn la capt. Am ilustrat acest tip de ncruciare n figura 3.1.(a).

Figura 3.1.

(a) a ncruciare cu 1 punct de tiere

(b)

b ncruciare multipunct ( cu 3 puncte de tiere) Spre exemplu dac numrul de gene al cromozomilor este 11, iar numrul generat aleator este 3, primul fiu va avea primele 3 gene motenite de la primul printe i urmtoarele 8 de la al doilea printe, iar cel de-al doilea fiu exact invers. ncruciarea cu 2 sau mai multe puncte de ncruciare presupune tierea lanului cromozomial n mai multe pri pentru ncruciare, dup cum indic figura 3.1.(b). ncruciarea cu distribuie aleatoare a genelor introduce un grad mult mai mare de difereniere fa de prini, conferind fiilor un caracter mult prea randomizat. Selecia cromozomilor . Avnd o generaie de cromozomi, trebuie s stabilim calitatea cromozomilor, deoarce conform teoriei darwiniste, vor supravieui numai indivizii cei mai adaptai. Prin urmare, trebuie s se stabileasc pentru fiecare cromozom n parte ct este de performant i n funcie de acesta, el a supravieui sau nu n generaia urmtoare. Selecia cromozomilor pentru ncruciare impune folosirea funciei de fitness ce red gradul de supravieuire a unui individ n generaia urmtoare (n ce procent din generaia urmtoare vor aprea caracteristici ale acelui individ). n generaia urmtoare caracteristicile unui individ pot aprea la un numr mare de indivizi, n schimb alt individ poate s nu mai apar deloc. Acesta este rolul funciei de fitness. Selecia a cte 2 indivizi pentru ncruciare (cine cu cine) se face aleator, unele dintre tehnicile cele mai cunoscute sunt: ruleta, turneul i selecia preferenial. 16

Ruleta presupune ca fiecrui individ s i se atribuie o regiune din rulet. Un individ mai adaptat va avea o poriune mai mare din rulet n timp ce ali indivizi pot s nu apar deloc n regiunile ruletei. La fiecare ncruciare se aleg dou numere aleatoare ce vor corespunde cte unei poriuni a ruletei. n funcie de corespondena numrului la regiunea ruletei se aleg cromozomii ce vor lua parte la o ncruciare. Turneul se bazeaz pe ideea de lupt dreapt ntre cromozomi (NP 50). Spre exemplu, la fiecare pas se aleg aleator 2 cromozomi i se pstreaz pentru ncruciare cel mai bun. Acest selecie se poate face i sub alt form mai complicat, sp re exemplu un turneu cu semifinal i final (n acest caz se pleac de la 4 cromozomi alei n mod aleator). Selecia preferenial limiteaz rolul ansei, deoarece locurile cromozomilor la ncruciare sunt mprite echitabil. Spre exemplu dac se dorete ca cel mai bun dintre cromozomi s rmn prezent la ncruciare, fr a se depinde de ans, de rezultatul unei generri aleatoare cum ar fi n cazul ruletei.

4. Arhitectura unui joc. Tehnici de implementare. Pentruo aplicaie joc, trebuie acordat o atenie deosebit interfeei grafice, care nu are voie s lase de dorit. Pe lng cerinele de interafa prietenoas, clar i sugestiv, trebuie s se evite blocarea interfeei datorit algoritmilor ce au o complexitate mare. Cu alte cuvinte, juctorul PC nu trebuie s gndeasc un timp prea ndelungat, lucru care ar putea deveni deranjant pentru utilizator. Dei pentru calcularea mutrilor se ruleaz algoritmi de o complexitate mare, trebuie evitat blocarea interfeei grafice, fr ca acest lucru s se fac n detrimentul juctorului PC (scderea complexitii algoritmilor cu preul gsirii unei soluii mai slabe nu este o soluie viabil pentru reducerea timpului de execuie). Pentru reducerea timpului de calcul al mutrilor juctorului PC se folosesc diveri algoritmi mbuntii de cutare n spaiul soluiilor.

4.1. Schema-bloc a unei aplicatii de tip joc. Componentele sistemului de tip joc cu observatia ca , toate componentele sistemului sunt software sunt precizate in schema din Figura 4.1.1. Distingem o mprire a sistemului pe 3 mari componente. i. ii. iii. Logica aplicaiei Juctor calculator Algoritm selecie estimatori 17

i.

Logica aplicaiei conine urmtoarele subcomponente: intefaa utilizator, BD setri, BD istoric, codarea tablei de joc i verificator. O component deosebit de important pentru un joc este interfaa utilizator. Trebuie s fie ct mai simpl, prietenoas i interesant. De aceea vom avea piese de diverse culori i forme, imagini de fundal i aa mai departe. Pentru setrile din interfa se folosesc cteva fiiere ce formeaz componenta denumit BD setri. Aceasta va conine i fiiere text cu setri i imagini (cu extensia .png) pentru interfaa grafic. n spatele interfeei grafice stau ns alte componente deosebit de importante pentru implementator, care contribuie la buna funcionare a intefeei grafice. Spre exemplu trebuie s fim ateni la optimizri, nu am vrea ca utilizatorul s se plictiseasc ateptnd urmtoarea mutare a calculatorului. O alt component ce st n spatele interfeei grafice se numeste codarea tablei de joc. Componenta verificator este cea care, dup fiecare mutare, verific statutul jocului, pentru a da unui juctor dreptul de a lua o pies n cazul n care a nchis o moar, sau semnaleaz sfritul jocului. Pentru rejucarea unui joc, avem modului istoric i rejucare joc, ce folosete o baz de date format din fiiere text ce rein istoricul jocului sub un anumit format, BD istoric. n cadrul modulului Juctor calculator avem o grupare foarte important de componente, sub titlul juctor calculator, ce cuprinde urmtoarele: succesor, algoritmi de cutare, estimatori. Componentele delimitate clar i n literatura de specialitate pentru juctorul calulator sunt ulimele dou (algoritmi de cutare i estimatori de joc). Succesor reprezint modulul ce genereaz de la o configuraie curent toate configuraiile succesoare pentru juctorul curent. Prin urmare, aceasta este componenta principal utilizat de algoritmii de cutare pentru crearea arborelui de cutare. n cadrul celui de-al treilea modul Algoritm selecie estimatori, apar componentele turnament (compionat), algoritm genetic i BD alg. selecie. Baza de date conine fiiere text utilizate pentru acest algoritm.

ii.

iii.

18

Figura 4.1.1 Schema generic a sistemului

Structura estimatorului Este evident faptul c la calclularea punctajului unei configuraii de joc trebuie privit din prisma ambilor juctori. configuraie care este foarte bun pentru unul din juctori, este, evident, nefavorabil pentru cellalt juctor. Valoarea estimatorului trebuie s indice n primul rnd de partea cui este avantajul. De aceea, n funciile de cutare n spaiul soluiilor, s-a recurs la notatrea juctorilor cu Min i Max. O valoare foarte mic (sau negativ, n funcie de implementare) este favorabil pentru Min, iar una foarte mare (sau pozitiv) este favorabil pentru Max. Pentru fiecare juctor se va aplica aceeai funcie de evaluare a configuraiei. Bineneles c pentru fiecare juctor n parte se va ine cont de piesele sale i de relaiile existente ntre piese. Calcularea punctajului asociat unei configuraii se face deci din dou pri. S presupunem c primul juctor este cel pentru care se dorete gsirea unei mutri bune i l vom considera pe acesta juctorul Max. Prin urmare, se va calcula funcia de evaluare pentru Max (s o notm EstimMax), iar apoi se calculeaz pentru Min (notat EstimMin). Deoarece folosesc aceeai funcie de estimare, este clar c i EstimMax i EstimMin vor 19

avea valori mari pozitive. Dac EstimMax este mai mare dect EstimMin, Max este n avantaj. Dac EstimMin este mai mare, atunci Min este n avntaj. Pentru ca estimatorul s arate clar de partea cui se afl avantajul, valoare estimatorului configuraiei de joc se calculeaz ca diferena celor dou valori. ValEstimator = EstimMax EstimMin Prin urmare, dac ValEstimator este pozitiv, Max este n avantaj, iar dac este negativ, Min este n avantaj. Se defineste cate un estimator pentru fiecare faza a jocului. Definirea unui singur estimator este gresita, deoarece spre exemplu o relaie poate fi importnant pentru nceputul jocului, dar spre sfrit s nu mai aib nici o valoare. In general vor exista minim trei estimatori care vor corespunde celor 3 faze importante de joc, inceput joc, a doua de mutare (cu cte o poziie) a pieselor i a treia final de joc.. Funciile de evaluare indiferent de faza de joc se stbileste n doi pai. n primul pas se aleg cu atenie relaiile considerate relevante pentru jocul respectiv (pentru faza jocului) iar n pasul al doilea i se asociaz un coeficient fiecrei relaii. Generarea i evoluia estimatorilor Estimatorii se compun din funcii de estimare, care la rndul lor se compun din relaii i coeficieni. Relaiile sunt bine definite i sunt fixe. n schimb asupra coeficienilor se pot face modificri pentru a schimba modul de joc. Calibrarea manuala a coeficientilor nu este de dorit deoarece ., dar poate fi mare consumatoare de timp, deoarece exist foarte multe posibiliti i combinaii. Singura metod viabil pentru calibrarea estimatorilor, este aceea de a face testele (jocurile) automat. n acest caz, estimatorii trebuie s joace meciuri ntre ei, iar testele cu juctori umani s se fac doar asupra estimatorilor ctigtori. Cu ct numrul de estimatori implicai n competiie este mai mare, numrul de meciuri disputate este mai mare i ansele de a gsi estimatori buni cresc. Ideea este deci s pornim de la un set de estimatori.

20

Dac pornim de la un set aleator de estimatori suficient de mare, care ofer o bogat varietate, problema noastr poate fi transpus ntr-una de genetic. Ne propunem deci, ca asupra generaiei de estimatori obinui aleator s aplicm un algoritm de selecie i un algoritm genetic de ncruciare pentru a obine o nou generaie. Metoda se repet iterativ pn suntem mulumii de rezultate. Cei mai buni estimatori din fiecare generaie sunt selectai i particip la ncruciare pentru a da natere generaiei viitoare. Teoretic, estimatorii ar trebui s evolueze i s devin tot mai buni. Selecia estimatorilor ce supravieuiesc de la o generaie la alta se va face pe baza unui turnament ntre estimatorii generaiei respective. Etapele urmrite de acest metod de selecie i mbuntire a estimatorilor, Se stabilestea numrul de indivizi (cromozomi) ai unei generaii ( sa presupunem ca sunt 50). n pasul 1, se pleac de la o prim generaie stabilit aleator, pentru 50 de estimatori diferii se genereaz cte n coeficieni (n este numarul de coeficenti a functiei de evaluare - sa preupunem ca n=17) . n pasul 2 Asupra acestui set de 50 de estimatori, n pasul 2, se aplic un algoritm de competiie. Fiecare estimator va juca un joc cu fiecare. Dac notm estimatorii cu E0 E49, E0 va juca cte un meci cu E1 E49 i aa mai departe. E49 va juca cu E0 E48. n fiecare joc vom avea Juctorul 1 i Juctorul 2 (Juctorul 1 ncepe tot timpul). Deoarece de obicei este important cine ncepe jocul, acela fiind considerat avantajat la nceput, ntre doi estimatori diferii se vor disputa dou jocuri, ficare avnd dreptul odat la s fie primul. Spre exemplu, ntre E3 i E7 se vor juca dou jocuri : E3 vs E7 i E7 vs E3. Un estimator nu va juca mpotriva sa, acesta fiind un meci irelevant i considerat din start remiz. Rezultatul unui joc poate fi: ctigtor juctorul 1, ctigtor juctorul 2 i remiz. Turnamentul va consta din 1000 - 3000 de jocuri. Pentru a evita jucarea la infinit a unei partide, se pune o limit la numrul de mutri posibile n joc, iar dac nici un juctor nu ctig n decurs de un numar stabilit de mutri, rezultatul va fi remiz. La pasul 3, se face selecia celor mai buni estimatori prin calcularea numrului de meciuri ctigate de fiecare. Fiecare estimator va avea un punctaj asociat, (de exemplu 5 puncte pentru fiecare joc ctigat). Se vor selecta dintre estimatori cei mai buni 10, care vor face parte din generaia viitoare. Generaia viitoare se va compune din cei 10 plus nc 40 rezultai din ncruciarea acestora. Deoarece avem un numr fix de prini 10 i vrem s obinem 40 de fii, funcia de fitness va atribui fiecrui printe o valoare ce reprezint numrul de ncrucisri la care va 21

lua parte La pasul 4 n acest pas, folosindu-se funcia de fitness de mai sus, se genereaz cei 40 de membrii ai noii generaii. Fiecare estimator va avea asociat o variabil care atest posibilitatea acestuia de a participa la ncruciare. Dup fiecare ncruciare se decrementeaz valoa rea. Cnd se ajunge la 0, cromozomul respectiv nu mai are dreptul la ncruciare. Cromozomii prini (estimatorii) sunt generai aleator. Dup ce particip la o ncruciare, se decrementeaz variabila asociat ce ne informeaz asupra posibilitii de ncruciare. Dac se genereaz aleator un cromozom care nu mai are dreptul s participe, se va genera altul i n cazul unui nou eec, se verific pe rnd pentru fiecare estimator variabila (posibilitatea de ncuciare) i se ia primul gsit pentru care valoarea acelei variabile este mai mare dect 0. Pentru ncruciare, se utilizeaza de obicei un algoritmul genetic cu un punct de tiere. Se genereaz aleator un punct i se interschimb irurile de coeficieni ai celor doi estimatori prini. Pasul 5 arat punerea mpreun a prinilor i fiilor pentru a forma noua generaie. La estimatorii rezultai se aplic aleator mutaia, un factor important al procesului de evoluie care asigur varietate. Mutaia poate aprea la spre exemplu la 5% din membrii generaiei i const din alterarea unei gene, dar alterarea s fie mic. n cazul nostru, vom aciona prin modificarea mic (cu cteva uniti) a cte unui coeficient (un coeficient este echivalent cu o gen n cazul nostru) la 2 sau 3 fii din cei 40. La pasul 6 In acest passe trece la o competiie ntre noii estimatori. Turnamentul (competiia) se desfoar la fel ca cel de la pasul 2. Sgeata ntrerupt ce duce napoi la pasul 3 indic faptul c algoritmul de selecie i de evoluie se poate aplica iterativ, de cte ori este nevoie, pn cnd se ajunge la rezultate mulumitoare. Pasul 7 se compune din selectarea celor mai buni 4 estimatori (rezultai dup ultima competiie) i acetia se vor supune unor altfel de teste. Aceste teste constau n jocuri mpotriva juctorilor umani. Puterea acestor estimatori rmne relativ ct timp se fac teste doar ntre estimatori, deoarece pot fi buni n competiii mpotriva altor estimatori, dar pot fi slabi pentru un adversar uman. De aceea, nainte de a fi introdui n joc, acetia sunt testai cu juctori umani.

22

Schema de lucru utilizat este redat grafic de Figura 7.4.1 Din generaia 1 supus competiiei se aleg cei mai buni 10 estimatori. Acetia sunt supui algoritmului de evoluie genetic, prin ncruciare i mutaie obinndu -se generaia doi de estimator. Analog, din cei mai buni estimatori ai generaiei 2 se va obine generaia 3 de estimatori. De-a lungul procesului, se colecteaz 8 estimatori, 4 cei mai buni din a doua generaie i 4 cei mai buni din a treia generaie. n urma testelor cu juctori umani la care sunt supui, dintre cei 8 se aleg 4 care sunt cei mai buni.

Figura 4.1.2 Schema de principiu a evoluiei. Acest proces de generare a unor estimatori buni i gsete aplicabilitatea prin utilizarea lor n joc. Cei mai buni 4 estimatori au fost introdui ca i moduri de joc pentru juctorul PC i s -a dovedit practic faptul c sunt mai buni dect modurile iniiale de joc, ofensiv i defensiv, obinute prin ncercri. nainte de obinerea acestor 4 noi estimatori, utilizatorul putea opta fie pentru unul din modurile ofensiv i defensiv, fie pentru unul dintre cei doi Estimatori ce pot fi configurai manual de ctre utilizator. Cei mai buni patru estimatori obinui s-au adugat n lista modurilor de joc utilizatorul poate juca mpotriva lor. In acest mod se pot obtine functii de estimare a pozitiei de joc de buna calitate.

23

S-ar putea să vă placă și