Regulament proiect 2014

Tema proiectului de anul acesta din cadrul materiei Proiectarea Algoritmilor va fi realizarea unei inteligente artificiale capabile sa joace sah[1]. Proiectul se va realiza in echipe de cate 3-4 studenti (minim 3, maxim 4 studenti pe echipa) si se va desfasura pe parcursul a 5 etape, fiecare etapa durand 2 saptamani. Se va folosi platforma Winboard (XBoard) 4.7.3 pentru a interfata, vizualiza, inregistra si reda partidele jucate intre aplicatiile realizate in cadrul proiectului. Puteti descarca Winboard 4.7.3 de aici, iar o documentatie privind protocolul folosit puteti gasi aici.

Atentie! Toate deadline-urile stabilite pentru proiect sunt hard, deci nu sunt accetate teme trimise dupa termenul limita.

Etapa 0

Etapa 0 presupune formarea unor echipe de câte 3-4 persoane. Echipele se pot forma între oricare 3-4 studenţi din aceeaşi serie. Nu se permit echipe cu oameni din serii diferite decât dacă ați rămas fără niciun coechipier în seria voastră sau dacă sunteți restanțieri. Fiecare echipă va desemna un membru al acesteia cu rolul de căpitan. Căpitanul va avea, printre altele, sarcina de a trimite în numele echipei sale soluţiile pentru fiecare din etapele rămase. Ceilalţi membri ai echipei nu vor trimite soluţii, decât in cazul in care căpitanul nu poate face aceasta din motive obiective.

Această etapă va avea 1 săptămână. Punctajul alocat acestei etape este de 0 puncte.

Deadline-ul acestei etape este miercuri, 5 martie 2014, ora 23:55.

Etapa 1

Se va realiza reprezentarea interna a tablei de joc si a pieselor de joc, precum si o interfatare cu programul Winboard.

Interfatarea va presupune posibilitatea de a interpreta si interactiona cu urmatoarele comenzi ale Winboard: xboard, new, force, go, white, black, quit, resign, move.

De asemenea programul va trebui sa primeasca miscari de la programul Winboard si sa trimita miscari legale. Nu este nevoie sa trimita orice miscare legala.

Este suficienta miscarea legala a unei singure piese (ex: pion, cal etc). Daca programul nu mai gaseste miscari valide va putea iesi din joc (prin resign sau orice alta metoda; de preferat una eleganta)

Detalii despre modul de trimitere al acestei etape, valabil pentru fiecare etapa de acum incolo, gasiti mai jos in sectiunea “FAQs”, la intrebarea “Cum se vor trimite proiectele pentru evaluare?”.

Această etapă va avea 2 săptămâni. Punctajul alocat acestei etape este de 0.4 puncte.

Deadline-ul acestei etape este luni, 17 martie 2014, ora 23:55.

Etapa 2

Programul va trebui sa poata interpreta orice miscare legala si de asemenea va trebui sa poata juca impotriva unui adversar prin intremediul programului Winboard.
O abordare cu miscari aleatorii, dar corecte, este suficienta pentru aceasta etapa.

Această etapă va avea 3 săptămâni. Punctajul alocat acestei etape este de 0.5 puncte.

Deadline-ul acestei etape este duminică, 6 aprilie 2014, ora 23:55.

Etapa 3

Programul va trebui sa implementeze macar un algoritm de baza minimax pentru a putea juca impotriva unui adversar.

Această etapă va avea 2 săptămâni. Punctajul alocat acestei etape este de 0.3 puncte.

Începând cu această etapă:

  • Specificați în README ce compilator și IDE ați folosit, sistemul de operare pe care ați testat
  • Adăugați în arhivă Makefile-ul sau fișierele de proiect necesare importării și compilării

Deadline-ul acestei etape este miercuri, 23 aprilie 2014, ora 23:55 duminică, 27 aprilie 2014, ora 23:55 (termen prelungit, fără a influența celelalte etape).

Etapa 4

Aceasta etapa este dedicata implementarii unor algoritmi avansati pentru a creste calitatea jocului prestat de program. Este nevoie de cel putin doua tehnici avansate implementate pentru a obtine punctajul maxim.
O tehnica de imbunatatire avansata se poate referi si la un algoritm alpha-beta.
Se considera doua tehnici avansate si o augmentare a algoritmului alfa-beta printr-un mecanism de Iterative Deepening, sau printr-o euristica.

Această etapă va avea 2 săptămâni. Punctajul alocat acestei etape este de 0.3 puncte.

Deadline-ul acestei etape este miercuri, 7 mai 2014, ora 23:55.

Etapa 5

In cadrul acestei etape se va realiza un concurs intre proiectele realizate. In functie de numarul de proiecte finite realizate se va stabili formatul concursului: campionat, tournament tree sau grupe+tournament tree.
Punctajul aferent acestei etape este de 0.5 puncte si se va acorda dupa urmatorul algoritm:

  • Locul 1 va primi 0.5 puncte
  • Locul 2 va primi 0.4 puncte
  • Locul 3 va primi 0.35 puncte
  • Restul proiectelor vor primi in functie de locul in clasament intre 0 si 0.3 puncte, marja intre doua proiecte consecutive fiind de 0.3/(numar_proiecte_finaliste-3)
  • Fiecare partida intre doua proiecte se va desfasura dupa urmatorul format:
  • Fiecare aplicatie va avea 40 de miscari posibil efectuabile in 10 minute.
  • Dupa efectuarea unui set de 40 de miscari proiectul respectiv va mai primi inca 5 minute, care se vor fi adaugate la timpul ramas.
    ATENTIE: Daca un program ramane fara timp, dar nu a efectuat inca 40 de miscari, acesta va pierde partida, adversarul fiind declarat castigator.
  • Partida ia sfarsit cand oricare din urmatoarele conditii sunt indeplinite:
    1. Ordered List Item Unul dintre proiecte castiga dand sah mat.
    2. Unul dintre proiecte comite o miscare ilegala, adversarul fiind declarat castigator.
    3. Se constata o stare de repetitie (draw by repetition), o stare de imposibilitate de castig (lack of material for either side), prin regula de 50 de miscari (50 move rule) sau daca unul dintre progarme nu dispune de nici o miscare legala, insa nu este in sah (pat). In aceste cazuri se declara partida ca remiza.
  • Daca dupa 15 minute nu s-a indeplinit nici o conditie de sfarsit de partida (dupa cum sunt mentionate la punctual anterior) va fi declarat invins programul care intra in criza de timp primul, adeversarul fiind declarat invingator.

FAQs

De ce sah? Nu s-a mai dat pana acum?

Ba da, dar ultima oara a fost acum 4 ani. Atunci proiectul a fost unul de succes, competitia finala fiind una palpitanta. Didactic este o idee de proiect buna din mai multe puncte de vedere (provocari de implementare, intelegerea unor concepte de algoritmi avansati, provocari de time management, abilitatea de autodocumentare, abilitatea de a lucre in echipa etc). Sahul a fost ales datorita rezonantei sale ca joc. Din experienta va spunem ca un motor de sah decent facut da bine la un interviu.

De ce Winboard? Nu pierdem timp stand sa implementam nu stiu ce protocol in loc sa implementam algoritmi?

Winboard/Xboard a devenit un program standard de interfatare intre diferitele motoare existente in momentul de fata. Fiecare motor minimalist existent stie sa lucreze cu acest program. Usurarea lucrului de mediere a unui joc justifica implementarea sa, precum si faptul ca proiectul realizat va putea juca cu orice alt motor cat de cat performant de pe net. Cat despre timpul pierdut, interfatarea minimalista ceruta in etapa 1. se poate realiza in aproximativ o ora. La ce chestii vor fi de implementat la protocoale de comunicatii, asta vi se va parea floare la ureche :-).

Nu exista deja o droaie de algoritmi pe net despre sah? Dar proiectele de anul trecut?

Da, exista multe surse de documentatie pe net despre cum sa implementezi un joc de sah. Dar de la vorbe la fapte e cale lunga. Doar pentru ca exista multi algoritmi nu inseamna ca oricine va sti sa-i implementeze si sa o faca si bine. Implementarea corecta si eficienta presupune mai mult decat copy paste de pe net. Cat despre proiectele de anul trecut, ele exista in posesia echipei de PA, si cele de anul acesta vor fi verificate contra celor precedente pentru a nu avea cazuri de frauda. De asemenea codul fiecarui proiect va fi facut public inainte de etapa 5. pentru a putea fi inspectat de fiecare echipa ce doreste sa se asigure ca nu a fost comis vreun act de frauda din partea concurentei. Daca se constata o tentativa de frauda din partea oricarei echipe, toti membrii echipei vor avea restanta la Proiectarea Algoritmilor si vor pierde punctajul aferent proiectului.

Echipele se pot forma intre colegi din grupe diferite? Dar din serii diferite?

Da. Nu.

Cum imi aleg coechipierii?

Cum vrei, pe baza oricaror criterii crezi tu ca sunt importante.

Nu toti membrii echipei lucreaza la fel de mult. What’s up with that?

Din experienta anilor trecuti, niciodata nu se intampla ca toti membrii echipei sa lucreze la fel de mult. Acest fapt se intampla din varii motive: fie nu toti pot, fie unul sau doi acapareaza toata munca si nu le dau celorlalti o sansa (nu radeti, s-a intamplat :P), fie <insert another reason here>. Fiecare echipa va avea un capitan care va avea, printre altele, datoria de a comunica echipei de PA (asistentului de laborator, titularului de curs etc) orice neregula din cadrul propriei echipe. In afara de asta si de a vorbi putin individual cu membrii fiecarei echipe nu exista alta solutie. Depinde de prioritatile fiecarui membru de echipa si a echipei per ansamblu.

Ce alte responsabilitati ar mai avea capitanul de echipa?

Depinde…in mod normal responsabilitatile de bun simt ar fi de a imparti eficient munca intre coechipieri, de a face un time management bun, de a lega o strategie de joc etc. Dar mai pot fi si altele, precum PR pe forum :-).

Cum se vor trimite proiectele pentru evaluare?

Pe pagina web a cursului de PA va exista o rubrica de incarcare a codului sursa pentru fiecare etapa dedicata proiectului. Codul sursa, un fisier readme, precum si alte eventuale fisiere aditionale (ex: baze de date pentru deschideri) vor trebui sa vina sub forma unei arhive .zip de forma NumeleEchipei_EtapaX.zip (unde X este numarul etapei curente {1,2,3,4,5}). Fisierul readme va trebui sa contina descrierea succinta a functionalitatilor implementate. Marimea maxima a unei arhive va fi de 5Mb.

In ce limbaj de programare avem voie sa realizam proiectul?

In oricare limbaj de programare cu care va intelegeti mai bine. De remarcat este faptul ca pentru acest proiect timpul de executie este critic.

Avem voie sa folosim fire de executie (thread-uri) in program?

Nu. S-a pus problema si anul trecut. Motivul este ca nu toti stiu sa lucreze cu thread-uri, iar un astfel de avantaj ar fi incorect fata de ceilalti. NU postati in legatura cu asta pe forum…it’s final and that’s that.

Avem voie sa folosim baze de date pentru deschidere sau alte scopuri?

Da, atat timp cat toata arhiva este pana in 5Mb.

Putem comunica cu un calculator la distanta prin TCP/IP sau alte mijloace pentru a avea acces la o baza de date suplimentara sau alte resurse?

Categoric NU. Proiectul trebuie sa fie stand-alone. Nu se admit conexiuni de genul celor mentionate mai sus.

Putem trimite programe executabile?

Nu. Doar cod sursa (si eventuale aditionale precum opening data bases). Codul se va compila si link-edita dupa regulile prezente in makefile-ul, ant file-ul, script-ul etc-ul vostru de build.

Echipa mea a realizat proiectul in Microsoft Visual Studio. Ce trimit?

Trimite codul sursa si fisierul de proiect (*.vcproj in caz ca este realizat cu Visual C/C++).

Unde putem cere lamuriri suplimentare in legatura cu desfasurarea proiectului?

Pe forum-ul dedicat proiectului de pe pagina web a cursului de PA.

Referințe

pa/regulament-proiect-2014.txt · Last modified: 2015/03/06 18:16 by traian.rebedea
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0