Examenul de Inteligenţă Artificială



Yüklə 77,15 Kb.
tarix02.03.2018
ölçüsü77,15 Kb.
#43916

Examenul de Inteligenţă Artificială

Sesiunea iunie 2004
I. Examenul are trei componente, astfel:

  1. Laboratorul: laboratoarele sînt obligatorii, în două sensuri – prezenţă şi rezolvarea problemelor date. Examinarea la laborator poate fi realizată pe parcurs sau înainte de sesiune. Laboratoarele neefectuate (în sensul prezenţei şi a rezolvării problemelor) trebuie recuperate. Recuperarea se poate face şi în timpul semestrului prin accesul împreună cu o altă grupă. Refacerea laboratorului poate fi cerută dacă se consideră că problemele date nu sînt rezolvate corespunzător. O prezenţă de peste 80% la laborator este o condiţie necesară promovării disciplinei. Îndeplinirea la maxim a cerinţelor de la laborator aduce 15 puncte. Nota la laborator s-a consumat deja. Rezultatele le veţi primi prin e-mail de la Oana Postolache.

  2. Proiectul: proiectul este opţional, dar el poate avea cea mai mare pondere în configurarea notei finale. Un proiect perfect vă aduce între 35 şi 50 de puncte, în funcţie de dificultatea lui.

Proiectul din acest an este unul colectiv. Acest lucru înseamnă că studenţii se vor grupa în echipe, fiecare echipă urmînd să realizeze un proiect de grup şi că aceste proiecte de grup vor trebui apoi integrate în proiectul de ansamblu. Proiectele de grup voi trebui deci orientate către o funcţionalitate globală – de sistem. Prin aceasta se urmăreşte şi deprinderea obişnuinţei de a colabora în vederea realizării unor aplicaţii complexe. Predarea fiecărui proiect de grup va consta din:

  • codul sursă cu susţinerea lui orală. Dialogul va urmări să releve problemele întîlnite şi soluţiile adoptate,

  • documentaţia, care să descrie:

    • intrările/resursele/ieşirile şi standardele lor;

    • funcţionalitatea modulelor;

    • comentarea funcţiilor.

  • demonstraţia de funcţionare.

Fiecare proiect colectiv trebuie „apărat” de fiecare membru al echipei, pe zonele contribuţiei fiecăruia. Prestaţia individuală în momentul predării este deci importantă, dv. trebuind să convingeţi că aţi avut o contribuţie activă la realizarea lui. Acest lucru poate să ducă inclusiv la notări diferite ale membrilor echipei.

O componentă a notei va fi dată de funcţionarea ansamblului. Este deci important ca dv. să abordaţi problema realizării aplicaţiei în întregul ei, să vă organizaţi, să vă întîlniţi şi să discutaţi periodic pentru rezolvarea problemelor de interfaţă între module, iar în anumite cazuri chiar să daţi o mînă de ajutor echipelor care au dificultăţi.



  1. Proba scrisă: test grilă şi probleme, cu cărţile pe masă; vă aduce maximum 50 de puncte. Pentru nota finală zece trebuie să acumulaţi 100 de puncte.



II. Grupul de proiecte „Fotbal”

Se va realiza un sistem capabil să simuleze un joc de fotbal. Studenţii care vor prelua acest proiect se vor împărţi în două echipe, egale ca număr. Fiecare echipă va avea în componenţă 11 grupe, iar fiecare grupă va simula evoluţia unui anumit jucător. Cea de a 23-a grupă va simula arbitrul.

Fiecare jucător trebuie realizat ca un agent independent (modul de program), care poate intra în joc în orice moment prin cuplare la realitatea de pe teren, numită mai jos „Teren”. În momentul intrării în joc, jucătorul este sesizat de Teren şi, prin intermediul acestuia, de oricare dintre ceilalţi jucători şi de către arbitru, iar el însuşi poate sesiza poziţiile celorlalţi jucători, a mingii şi a arbitrului de centru.

Fiecare jucător are o anumită personalitate, anumite caracteristici tehnice şi joacă pe un anumit post. Personalitatea poate influenţa stilul de joc şi agresivitatea. În sfera caracteristicilor tehnice stau viteza de joc, precizia de execuţie a loviturilor asupra mingii şi maniera în care se încearcă recuperarea mingii de la adversar. Postul pe care îl ocupă un jucător îşi lasă amprenta asupra ariei din terenul de joc pe care se poate mişca jucătorul şi scopului jocului acestuia.

La intrarea pe teren se va verifica ca fiecare echipă să aibă următoarele posturi: 1 „portar”, iar ceilalţi 10 jucători pot fi „fundaşi”, „mijlocaşi” şi „înaintaşi” (numărul de jucători pe fiecare astfel de post poate fi, de exemplu, 4, 2, 4). Dintre aceste posturi vor fi ocupate cele realizate efectiv în proiect. Nu va fi permisă „clonarea” jucătorilor, adică apariţia pe teren a doi sau mai mulţi jucători cu aceeaşi personalitate şi/sau aceleaşi caracteristici tehnice, copii ale aceluiaşi modul. O partidă de joc are două reprize a cîte 45 de minute „virtuale”. Jocul începe la fluierul iniţial al arbitrului, după intrarea pe teren a tuturor jucătorilor disponibili, adică a tuturor modulelor de tip „jucător” implementate de cele două echipe şi după ocuparea locurilor de joc. Jucarea meciului va decide notarea proiectelor: echipa învingătoare ca primi recompense. Criteriile finale de notare vor fi definitivate la o dată ulterioară.

În afara „jucătorilor” se vor mai realiza următoarele module:



  • „arbitrul” este un agent care supraveghează jocul, „fluieră” incidentele şi dictează tipurile şi poziţiile loviturilor de pedeapsă;

  • modulul de reprezentare spaţială absolută, numit în continuare Teren: este un fel de cameră de luat vederi plasată deasupra terenului şi care reproduce toate evenimentele de pe teren: poziţiile jucătorilor, ale arbitrului şi a mingii.



„Terenul”

Pentru simplificarea reprezentărilor în spaţiu, se va modela un teren bi-dimensional (desigur o reprezentare tri-dimensională, în care mingea să facă volte în timpul paselor şi să sară la atingerea pămîntului, este încurajată printr-o notare suplimentară). Deplasările jucătorilor, ale arbitrului şi ale mingii se fac în acest spaţiu reprezentaţional, pe care îl vom numim Teren.

Terenul este un fel de repozitoriu global de informaţie asupra teatrului de joc şi în care se pot regăsi poziţiile tuturor agenţilor cît şi a mingii la orice moment. Terenul recunoaşte un agent din momentul în care acesta intră pe teren, adică din momentul în care agentul este conectat la el. Terenul comunică cu toţi agenţii răspunzînd la întrebările lor asupra poziţiilor celorlalţi agenţi sau ale mingii.

Terenul, păstrează proporţiile unuia real.

Se poate alege una din următoarele două variante pentru viziunea asupra coordonatelor unui obiect în teren:


  • terenul este caroiat la un grad de detaliu ce va constitui un parametru al proiectului. În acest caz un agent va ocupa un caroiaj dacă centrul său de greutate se află în acroiajul respectiv. Coordonatele unui agent în teren vor fi date de coordonatele caroiajului în care se află. Toţi jucătorii vor avea aceeaşi viziune asupra caroiajului.

  • varianta continuă – coordonatele în teren ale unui agent sau ale mingii sunt numere reale, deci pot lua orice valoare din intervalele ce desemnează limitele terenului.

Terenul de joc este orientat Nord (N) – Sud (S). El este marcat cu careurile mari din jurul fiecărei porţi, cu punctul de mijloc şi cu punctele de penalti. Porţile sînt marcate la marginea terenului şi au dimensiunile olimpice.

Un jucător are o viziune redusă asupra spaţiului de joc, pentru că el nu poate „vedea” decît în faţă. Informaţiile pe care le vede le culege din reprezentarea dată de Teren. Terenul este o resursă partajabilă, iar implementarea trebuie să aibă în vedere acest lucru (lucrul cu thread-uri). Orice jucător poate interoga Terenul pentru a-şi actualiza informaţiile pe care le deţine asupra cîmpului vizual. Între două interogări, jucătorul poate să „ţină minte” situaţia de pe teren din cîmpul său vizual. Pentru a minimiza accesul la resursa Teren, care ar putea să întîrzie anumite decizii, un jucător bine proiectat poate să prezică mişcările agenţilor din cîmpul său vizual, prin proiectarea în viitor (extrapolarea) traiectoriilor în desfăşurare. În acest caz, la momentele în care se cuplează la Teren nu face decît să-şi corecteze poziţiile pe care şi le calculase singur.

Aşa cum se va vedea şi mai jos, jucătorii raportează Terenului schimbările de traiectorie în mişcarea lor sau a mingii. Pe baza acestor informaţii Terenul actualizează permanent poziţiile jucătorilor şi ale mingii. Pentru mişcarea în teren a jucătorilor puteţi folosi, după dorinţă, un model rectiliniu şi uniform sau un model uniform accelerat (decelerat) cu viteză iniţială. Dacă adoptaţi un model accelerat, atunci la momentul iniţial al unei traiectorii de mişcare, jucătorul trebuie să comunice Terenului inclusiv acceleraţia.

„Mingea”

Mingea este un obiect care poate fi abstractizat la un punct, dar o reprezentare ca cerc (sau sferă) este încurajată. Poziţia mingii este dată de poziţia centrului ei de greutate. Mingea se poate afla în acelaşi caroiaj cu un jucător, iar în cazul deposedării, pentru un interval scurt, chiar cu doi jucători.

Dacă jocul este în plan atunci mingea se deplasează în linie dreaptă în direcţia în care a fost expediată, iar dacă jocul este în spaţiu ea se deplasează cu traiectorii balistice care pot „sări” jucători ce se interpun între cel care pasează şi cel căruia îi este destinată pasa. Dacă jocul este în plan se va simula frecarea mingii de suprafaţa de joc. Dacă jocul este în spaţiu se vor calcula salturile amortizate efectuate de minge la contactul cu solul. Toate deplasările mingii vor urma legile fizicii (în plan sau în spaţiu).

La ieşirea de pe teren, în spaţiul porţii sau în afara lui, calculul traiectoriei mingii este oprit, iar mingea va fi repusă în joc din punctul în care a ieşit, cu excepţia ieşirii în spaţiul porţii prin gol şi a situaţiilor de corner şi aruncare de la colţul terenului, la momentul indicat de arbitru.



Regulile de joc

Regulile de joc sînt, în general, cele cunoscute ale jocului de fotbal. Din motive legate de simplificarea implementării, adăugăm următoarele convenţii:

  • Pentru varianta terenului caroiat:


  • centrul de greutate al unui jucător, la un anumit moment dat, se poate afla doar într-un caroiaj;

  • în mod normal doi jucători nu se pot afla în acelaşi moment în acelaşi caroiaj. Există două excepţii de la această regulă: accidentarea şi deposedarea. Avem de a face cu o accidentare reciprocă, dacă jucătorii fac parte din aceeaşi echipă, şi cu un fault, dacă jucătorii fac parte din echipe diferite. În acest din urmă caz, jucătorul care a pătruns ultimul în caroiajul în care se afla deja un jucător din echipa adversă este cel care faultează. Se vor stabili reguli pentru următoarele tipuri de faulturi: fault în atac, fault în apărare, fault la jucător fără minge (penalizat de „arbitru” prin cartonaş) sau la jucător cu minge etc.;

  • dacă nu e ajunsă de nici un jucător mingea poate părăsi terenul de joc, caz în care va trebui repusă de la marginea terenului la indicaţiile arbitrului;

  • mingea se consideră interceptată de jucătorul care se va afla la un moment dat într-un caroiaj adiacent cu ea. Odată interceptată de un jucător, mingea rămîne la acesta pînă într-una din următoarele două situaţii: este şutată sau este preluată de un alt jucător;

  • deposedare: dacă doi jucători au la un moment dat pozitii adiacente cu pozitia mingii, iar mingea se află în câmpul vizual al amândurora, are controlul mingii acel jucător care ia primul decizia de modificare a pozitiei acesteia. Jucătorul respectiv poate scoate mingea din campul celuilalt, obţinând astfel control asupra ei. Odată deposedarea efectuată, mingea ramâne in posesia respectivului jucator cel puţin un anumit interval de timp. Jucătorul care a intrat în posesia mingii va părăsi locul unde a avut loc deposedarea.



  • jucătorul este un punct material, iar poziţia lui pe teren este definită de două coordonate reale;

  • pentru un astfel de jucător se definesc două zone circulare, cu centrul în acest punct:

      • zona intimă;

      • zona de control al mingii.

  • dacă mingea intră în această zonă de control, fiind şi în cîmpul vizual al jucătorului, atunci intră în posesia jucătorului. Dacă este în intersecţia zonelor de control a doi jucători, atunci va fi preluată de jucătorul cu viteză mai mare (poate avea loc deposedarea);

  • dacă nu e ajunsă de nici un jucător mingea poate părăsi terenul de joc, caz în care va trebui repusă de la marginea terenului la indicaţiile arbitrului;

  • se consideră fault intrarea unui jucător în zona intimă a altuia.


Modificarea regulilor de joc, de exemplu prin introducerea unei reguli de deposedare din faţă, sunt, de asemenea, încurajate.

„Timpul”

Jocul se realizează pe o scară a timpului virtuală. Există un timp al stadionului şi un timp al arbitrului (ce măsoară timpul de joc efectiv). În perioadele de joc efectiv, cei doi timpi curg la fel, dar în perioadele de întrerupere a jocului timpul arbitrului stă iar timpul stadionului continuă să curgă. Fiecare acţiune elementară durează un interval de timp virtual: un pas în alergare, o traiectorie străbătută de minge etc. Se poate considera acţiune elementară pentru un jucător efectuarea unui pas, caz în care jucătorul va efectua cerere către teren pentru fiecare pas din mişcarea sa, sau o mişcare rectilinie pe o anumită direcţie şi cu o anumită viteză, caz în care jucătorul va efectua cerere către teren doar pentru schimbarea vitezei sau a direcţiei.

La ieşirea mingii din teren arbitrul opreşte timpul său pentru anumite intervale stabilite de el. Cele 45 de minute ale jocului sînt minute de joc efectiv (măsurat de arbitru). Raportul minutR/minutV este subunitar şi constituie un parametru al programului.

Timpul curent virtual se calculează printr-un apel la funcţiile de sistem, după o formulă de genul: tc = (ts - t0) / c, unde ts este timpul sistemului, t0 este timpul sistemului la lansarea programului, iar c este o constantă de scalare.



„Jucătorii”

Un jucător este un agent (modul) complex care poate incorpora o seamă de sub-module. El este caracterizat cel puţin de următoarele trăsături:



  • formă, în plan (într-o reprezentare bi-dimensională), sau în spaţiu – într-una tri-dimensională (v. Figura 1);





Figura 1: Diferite forme de jucători


  • poziţie (centru de greutate) şi orientare (v. Figura 2). Poziţia unui jucător este dată de caroiajul în care se află centrul lui de greutate.



Figura 2: Reprezentarea unui jucător în caroiaj



  • postul de joc poate fi: portar, fundaş central, fundaş stînga, fundaş dreapta, mijlocaş stînga, mijlocaş dreapta, atacant central, atacant stînga, atacant dreapta. Fiecărui post de joc îi corespunde un anumit sector de teren. Un jucător nu poate ieşi din sectorul de joc al postului său. Un exemplu de sectorizare de joc este dat în Figura 3;

  • deplasarea se poate realiza din caroiajul curent într-unul adiacent. Se pot implementa diferite cadre (tipuri, sisteme) de deplasări. Un exemplu ar putea fi: înainte-înapoi-dreapta-stînga (4-direcţii-relative), unde înainte înseamnă din caroiajul curent în cel mai apropiat caroiaj spre direcţia „faţă”, înapoi – din caroiajul curent în cel mai apropiat caroiaj spre direcţia „înapoi”, la dreapta – din caroiajul curent în cel mai apropiat caroiaj aflat perpendicular şi spre dreapta faţă de direcţia „faţă”, ş.a.m.d. Alt exemplu, ar putea fi tipul N-S-E-V (4-direcţii-absolute), unde N înseamnă din caroiajul curent în primul caroiaj aflat spre direcţia N, ş.a.m.d. Alte tipuri de deplasare ar putea oferi mai multă fineţe, de exemplu 8-direcţii-relative sau 8-direcţii-absolute. Fiecare jucător poate avea implementat propriul sistem de deplasare. Din acest punct de vedere, este clar că un jucător care se poate deplasa după unul din sistemele cu 8 direcţii are mai multă fineţe în mişcări decît unul care ştie să se mişte doar în 4 direcţii, pentru că pentru a se deplasa dintr-o poziţie într-una aflată adiacent în diagonală trebuie să facă doar o mişcare, iar nu două;

  • pasa înseamnă intenţia de transmitere a mingii la un coechipier. Mingea poate fi pasată nu numai „la picior” ci şi „înainte” înspre direcţia de alergare a coechipierului, astfel încît acesta să o poate ajunge înaintea unui jucător advers. Un jucător poate pasa din diverse motive: pentru că este înconjurat de jucători adverşi şi nu mai poate înainte, pentru că a ajuns la limita sectorului de joc în înaintarea spre poarta adversă etc. Alegerea coechipierului căruia îi este adresată pasa este în funcţie de mai mulţi parametri: distanţa acestuia de el însuşi (cu cît jucătorul către care se pasează este mai îndepărtat cu atît şansa ca mingea să fie capturată de un jucător advers în traiectoria ei către partener este mai mare), demarcarea partenerului (se preferă un coechipier complet demarcat unuia care este marcat de jucători adverşi) etc. În realizarea pasei se vor calcula direcţia (eventual unghiul faţă de planul orizontal – în cazul unui joc spaţial) şi viteza de şut;

























Figura 3: Un exemplu de sectorizare de joc




  • viteza de alergare depinde de faza de joc. Exemple de adaptare a vitezei de alergare: se micşorează dacă din faţă se apropie adversari, se măreşte dacă jucătorul „a scăpat” de urmăritori etc.;

  • actele elementare de joc sînt: detectarea poziţiei şi a traiectoriei mingii, detectarea poziţiei şi a traiectoriei de deplasare în alergare a unui jucător, efectuarea unui pas în deplasarea cu mingea la picior, efectuarea unui pas în deplasarea fără minge, preluarea mingii de la un adversar din spate, faultarea (la intrarea „în întîmpinare” în careul de joc al unui jucător advers aflat cu mingea la picior), şutul, efectuarea unei aruncări de la margine, efectuarea unei lovituri libere, efectuarea unei lovituri de penalti, efectuarea unei lovituri de colţ, transmiterea de mesaje sonore coechipierilor, recepţionarea mesajelor sonore etc. Orice act elementar care presupune o mişcare în teren, fie a unui jucător, fie a mingii, prin pas sau şut, este raportată Terenului. Pentru simplificarea calculelor atît în cazul amorsării deplasării unui jucător cît şi a mingii se va raporta vectorul iniţiat de deplasare (viteza de pornire, direcţia şi sensul). Orice oprire sau schimbare a unui element al deplasării jucătorului este raportată, de asemenea, Terenului;

  • mesajele sonore pot fi de următoarele tipuri: „Sînt demarcat!”, „Observă coechipier în stînga!” etc., „Atenţie adversar în spate!”;

  • tehnica de joc pasiv: caracterizează jocul fără minge. Ea include elemente precum: traiectoria pe care şi-o alege jucătorul pe terenul de joc cînd nu e la minge, maniera în care încearcă să scape de urmăritori sau să se demarce cînd aşteaptă să primească mingea, maniera în care angajează jucătorul advers cu mingea la picior etc.;

  • tehnica de joc activ: caracterizează jocul cu mingea la picior. Ea include elemente precum: viteza de înaintare cu mingea la picior, alegerea coechipierului căruia îi este adresată o pasă (pase riscante – la distanţă, sau comode – în apropriere), alegerea poziţiei celei mai convenabile pentru şutul la poartă, driblingul etc.;

  • personalitatea sau stilul de joc include elemente de strategie precum: planificarea jocului propriu în avans în funcţie de poziţiile adversarului şi ale coechipierilor, planificarea jocului de ansamblu şi transmiterea de mesaje.

„Arbitrul”

În această prezentare nu se face o specificare a arbitrului, dar includerea lui pe teren este încurajată.



Modelul unui agent (jucător sau arbitru)

Arhitectura recomandată pentru un modul este cea sugerată în Figura 4. Un modul interacţionează cu sistemul prin intermediul a trei tipuri de porţi: de intrare, de ieşire şi de acces la resurse.



Figura 4: Interfaţa unui modul cu sistemul


Intrările şi ieşirile vor fi compatibilizate prin intermediul unor standarde care trebuie precizate cu exactitate. Descrierea standardelor de intrare/resurse/ieşire urmăreşte şi obişnuirea studentului cu elaborarea documentaţiei.
Reprezentarea stării jucătorului – o propunere:

Starea unui jucător poate fi reprezentată ca un obiect de forma:


(nrJ:n, cul:c, post:p, locJ:(x,y), act:a, momInc:t, dirJ:d, vitJ:v, minge:m)
unde n reprezintă numărul jucătorului, c – culoarea sa (alb, negru), p – postul pe care joacă, (x,y) sînt coordonatele careului în care se găseşte jucătorul la momentul curent, a este activitate pe care o desfăşoară în momentul curent (exemple: deplasare_cu_minge, deplasare_fără_minge, staţionare, pe-tuşă etc.), t reprezintă momentul de timp cînd jucătorul a început să desfăşoare activitatea a, d este direcţia în care se deplasează, v – viteza, iar m poate fi da sau nu, după cum mingea se află ori nu în acelaşi careu cu jucătorul. Nu orice tip de activitate are nevoie de toţi aceşti parametri (de exemplu, în staţionare nu se precizează nici direcţia nici viteza). Starea jucătorului poate fi schimbată de Picioare sau de execuţia regulilor.

Jucătorul - un exemplu de comportament


Jucătorul este un sistem format cel puţin din următoarele module: Creier, Memorie, Ochi, Picioare etc.
Ochii – comunică cu Terenul pentru a lua cunoştinţă de obstacolele aflate într-un cîmp vizual. Ceea ce urmează este un exemplu de mesaj adresat Terenului pentru scanarea unghiului vizual aflat în faţa jucătorului:
CerereScanare(loc:(115,210), dir:300, ung:90)
cu semnificaţia: solicit informaţie asupra obstacolelor aflate în faţa mea, din poziţia careului de coordonate (115,210), într-o deschidere de cîte 45 de grade la stînga şi la dreapta direcţiei de 300 grade faţă de axa terenului (v. Figura 5)

Figura 5: Unghiul de vedere al unui jucător

Memoria – reţine poziţii ale jucătorilor, vitezele lor de înaintare, direcţiile şi sensurile lor, asociate anumitor momente. De fiecare dată cînd Ochii obţin informaţii, Memoria este actualizată corespunzător. Un exemplu de informaţie reţinută în Memorie:
(tmp:200, loc:(120,225), nrJ:10, cul:alb, minge:da, dirJ:120, vitJ:5)
cu înţelesul: la momentul de timp virtual 200 de unităţi, în careul de coordonate (120,225) se găseşte jucătorul nu numărul 10 din echipa albilor (echipa proprie) care se deplasează cu mingea la picior în direcţia 120 grade faţă de axa terenului, cu viteza de 5 unităţi. Informaţii de acest tip sînt cele comunicate de Teren Ochiului şi stocate în Memorie. Pe baza lor Creierul poate actualiza poziţiile jucătorilor la momente ulterioare de timp, între două mesaje schimbate cu Terenul.
Creierul – este modulul care efectuează calcule şi ia decizii. El prelucrează informaţiile primite de la Ochi şi din Memorie.

Creierul aplică un sistem de reguli. Fiecare regulă implementează comportamentul jucătorului într-o situaţie specifică. În cele ce urmează vom sugera printr-un exemplu un anumit tip de joc: vom realiza un jucător capabil să facă un joc de pase cu un coechipier, avansînd în alergare în lungimea terenului către poarta adversă. Comportamentul este dat de un scenariu care rezultă din înlănţuirea unor reguli de genul:



Regula PasareMinge


dacă te afli în deplasare cu mingea de t unităţi de timp atunci

  • pasează mingea coechipierului în faţa lui, astfel încît acesta s-o primească la picior

  • continuă deplasarea în aceeaşi direcţie



Regula PrimireMinge


dacă te afli în deplasare fără minge şi mingea ajunge în careul tău atunci

  • comută în starea de deplasare cu mingea la picior

Mai exact, aceste reguli se pot exprima după cum urmează, în temeni de calcule efectuate de creier şi comenzi elementare adresate Ochilor şi Picioarelor (sistemului motor):



Regula PasareMinge – detaliu


dacă starea cuprinde (act:deplasareCuMinge, monInc:t, loc:(x,y), dirJ:d, vitJ:v) cu semnificaţia: jucătorul se află în alergare cu mingea la picior de t unităţi de timp, poziţia momentană este în careul (x,y), direcţia de deplasare este d, iar viteza este v, şi atunci

  • comandă spre Ochi: scanează(loc:(x,y), dir:d-75, unghi:90)  Ochii trimit cererea de scanare la Teren  Terenul răspunde  Ochii depun răspunsul în Memorie  găsesc în Memorie: (loc:(x1,y1), nrJ:n, cul:alb, act:deplasareFărăMinge, dirJ:d, vitJ:v), cu semnificaţia: singurul jucător din cîmpul vizual este coechipierul (cul:alb) cu numărul n aflat în careul (x1,y1) care se deplasează fără minge în aceeaşi direcţie şi cu aceeaşi viteză cu a mea;

  • calculez viteza şi direcţia mingii pentru a întîlni jucătorul n  (dirM:d1, vitM:v1);

  • comandă spre Picioare: paseazăMinge(dirM:d1, vitM:v1);

  • comandă spre Picioare: startDeplFărăMinge(dirJ:d, vitJ:v).


Observaţie: regula de mai sus este specifică unui jucător care trebuie să paseze în dreapta sa. Pentru jucătorul pereche, aflat în dreapta acestuia, parametrul dir va avea valoarea d+75.

Regula PrimireMinge


dacă starea cuprinde combinaţia (act:deplasareFărăMinge minge:da) atunci

  • modifică în stare: (act:deplasareCuMinge, momInc:tCrt)

unde tCrt este momentul de timp curent.


Picioarele – este modulul care răspunde la comenzile date de Creier de a efectua mişcări. Comenzile pe care le poate primi sînt cel puţin următoarele:
startDeplFărăMinge(dirJ:d, vitJ:v) – transformă în starea curentă a jucătorului următoarele cîmpuri: (act:deplasareFărăMinge, momInc:tCrt, dirJ:d, vitJ:v) şi comunică Terenului un mesaj de actualizare a activităţii jucătorului de genul:
CerereActualizareJ(nrJ:n, cul:c, loc:(x,y), act:deplasareFărăMinge, dirJ:d, vitJ:v)
cu semnificaţia: la momentul curent jucătorul nu numărul n, aparţinînd echipei c, localizat în careul (x,y), îşi schimbă activitatea în deplasareFărăMinge, în direcţia d, şi cu o viteză v;
startDeplCuMinge(dirJ:d, vitJ:v) – transformă în starea curentă a jucătorului următoarele cîmpuri: (act:deplasareCuMinge, momInc:tCrt, dirJ:d, vitJ:v) şi comunică Terenului un mesaj de actualizare de genul:
CerereActualizareJ(nrJ:n, cul:c, loc:(x,y), act:deplasareCuMinge, dirJ:d, vitJ:v)
paseazăMinge(dirM:d, vitM:v) – transformă în starea curentă a jucătorului următoarele cîmpuri: (act:UNKNOWN, momInc:tCrt) şi comunică Terenului un mesaj asupra lansării mingii, de genul:
CerereLansareMinge(loc:(x,y), dirM:d, vitM:v)
Pe baza unei cereri de acest tip, Terenul începe să calculeze traiectoria mingii.
O manieră în care puteţi organiza activitatea Creierului este să baleiaţi continuu mulţimea de reguli pe care le-aţi implementat, testînd, pentru fiecare regulă, condiţiile ei de aplicare (părţile dacă). În felul acesta, la un ciclu în funcţionarea Creierului veţi detecta o sub-mulţime de reguli care ar putea fi activate (cele ce-şi satisfac condiţiile). Dacă ataşaţi şi grade de prioritate regulilor, atunci puteţi decide ce regulă să activaţi din cele potenţial active. Partea atunci a regulii astfel aleasă va fi executată, ceea ce va determina modificări în stare şi schimburi de mesaje cu alte module.


Detalierea activităţilor Terenului

Terenul primeşte următoarele tipuri de comenzi:


CerereActualizareJ(nrJ:n, cul:c, loc:(x,y), act:a, dirJ:d, vitJ:v)

CerereLansareMinge(loc:(x,y), dirM:d, vitM:v)

CerereScanare(loc:(x,y), dir:d, ung:u)
La primirea unei cereri din prima categorie Terenul actualizează în reprezentarea globală a terenului de joc situaţia jucătorului în cauză (activitate, direcţie de deplasare şi viteză). Din acest moment traiectoria jucătorului este actualizată în teren la fiecare moment prin aplicarea legilor de mişcare rectilinie şi uniformă (desigur se încurajează şi modelarea unor tipuri de mişcări accelerate).

La primirea unei cereri din cea de a doua categorie se amorsează calculul traiectoriei mingii. Calculul traiectoriei mingii trebuie să fie prioritar calculelor de actualizare a poziţiei jucătorilor.

La primirea unei cereri din cea de a treia categorie, Terenul va trebui să întoarcă o listă a stării jucătorilor surprinşi în acel moment în cîmpul vizual comunicat, din punctul (x,y) pînă la marginea terenului. Pentru fiecare jucător se vor indica (v. regula PasareMinge):
(nrJ:n, cul:c, loc:(x,y), act:a, dirJ:d, vitJ:v)
Tot în atribuţiile Terenului stă şi „atenţionarea” unui jucător cînd mingea a ajuns în acelaşi careu cu cel în care se află jucătorul, prin modificarea direct în reprezentarea stării jucătorului a atributului minge la valoarea da.

Indicaţii finale

Se vor organiza scenarii de joc din ce în ce în ce mai complicate, în care se vor introduce din ce în ce mai mulţi jucători pe teren (v. şi jocul de Miuţă). Eu aş face astfel: aş începe cu un scenariu atît de simplu ca cel descris mai sus.

Aş continua apoi prin adăugarea unui singur jucător negru al cărui scop ar fi să împiedice înaintarea jucătorilor albi, plasîndu-se, de exemplu, în faţa lor în direcţia de înaintare a acestora. Aţi putea astfel obţine un triplet de jucători care ar avea un comportament hazliu, pentru că jucătorul negru s-ar mişca permanent de la un jucător alb la celălalt. Dar acest tip de comportament, atît de jalnic cum e, este totuşi unul real. Atenţie însă, prin adăugarea jucătorului negru, trebuie adăugate şi noi reguli de joc pentru jucătorii albi, pentru că ei acum nu ştiu cum să reacţioneze atunci cînd în faţă le stă un jucător advers.

Odată rezolvată această situaţie, aş mai introduce un jucător negru. Cum fiecare negru poate, în principiu, obtura înaintarea cîte unui alb, noutatea acum ar fi să implementez driblingul, pentru ca albii să poată scăpa de negri, în înaintarea spre poartă.

Apoi, aş introduce şutul spre poartă, mai întăi fără portar, iar ulterior cu portar.

Cînd am ajuns la acest nivel, pot introduce posturi specializate de joc. Sofisticarea, în acest moment, ar fi modelarea deposedării din spate cu schimbarea direcţiei de înaintare, schimbul de mesaje verbale între jucători ş.a.m.d.

Alte jocuri, cum ar fi baschet, volei, tenis de cîmp etc. pot fi imaginate plecînd de la exemplul prezentat al jocului de fotbal

Referinţe Bibliografice



Grupul de proiecte ROBO din propunerile de proiecte ale anului 2000.

Capitolul de Planificare din cursul de IA (D.Cristea).

Capitolul de Jocuri din cursul de IA (D.Cristea).

Capitolele de Algoritmi de căutare din cursurile de IA (D. Cristea şi L. Ciortuz).



Cartea Programarea Bazată re Reguli (D.Cristea), Ed. Academiei (la bibliotecă şi în vînzare la Librăria Academiei de peste drum).

Web-ul, cu subiecte legate de agenţi şi jocuri inteligente.
Yüklə 77,15 Kb.

Dostları ilə paylaş:




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin