This shows you the differences between two versions of the page.
pa:regulament-proiect-2021 [2021/04/26 19:37] marius.vintila [Etapa 2] Prelungire deadline |
pa:regulament-proiect-2021 [2021/04/29 10:47] (current) dragos.corlatescu [Etapa 3] |
||
---|---|---|---|
Line 102: | Line 102: | ||
Programul vostru va trebui să fie capabil să joace un joc de șah complet. Acest lucru implică interpretarea **tuturor mișcărilor legale** din jocul de 3 check chess. Pentru a decide următoarea mutare este suficient să aveți o strategie aleatoare (cu o singură excepție specificată în secțiunea următoare), dar dacă doriți să implementați ceva mai inteligent sunteți invitații noștri. | Programul vostru va trebui să fie capabil să joace un joc de șah complet. Acest lucru implică interpretarea **tuturor mișcărilor legale** din jocul de 3 check chess. Pentru a decide următoarea mutare este suficient să aveți o strategie aleatoare (cu o singură excepție specificată în secțiunea următoare), dar dacă doriți să implementați ceva mai inteligent sunteți invitații noștri. | ||
- | Această etapă va avea **4 săptămâni**. Punctajul alocat acestei etape este de **0.5 puncte**. | + | Această etapă va avea <del>4</del> **5 săptămâni**. Punctajul alocat acestei etape este de **0.5 puncte**. |
- | Deadline-ul acestei etape este **5 mai 2021, ora 23:55**. | + | Deadline-ul acestei etape este <del>28 aprilie</del> **5 mai 2021, ora 23:55**. |
Line 135: | Line 135: | ||
===== Etapa 3 ===== | ===== Etapa 3 ===== | ||
- | **TBA** | + | Această etapă este dedicată implementării unor algoritmi avansați pentru a crește calitatea jocului prestat de program. Punctajul pe această etapă poate fi obținut în urma unor meciuri cu boți puși la dispoziție de către noi. |
+ | Recomandăm implementarea algoritmului alpha-beta și a cel putin două tehnici avansate/euristici pentru a putea calcula cât mai multe mutări în față. Administrarea timpului rămas este o componentă foarte importantă acestei etape. Nu uitați că botul submis de voi pentru această etapă va fi luat în considerare și pentru concursul din Etapa 4. | ||
+ | |||
+ | Această etapă va avea **4 săptămâni**. Punctajul alocat acestei etape este de **0.5 puncte**. | ||
+ | |||
+ | Deadline-ul acestei etape este **26 mai 2021, ora 23:55**. | ||
+ | |||
+ | |||
+ | ==== Testare ==== | ||
+ | Pentru testare ne vom folosi de engine-ul Pulsar disponibil [[http://www.lanternchess.com/pulsar/|aici]]. El este disponibil într-o arhivă zip și pentru a putea testa cu comenzile de mai jos este recomandat să adăugați folderul de dezarhivare în PATH. În funcție de caz, acesta va fi limitat ori la depth=2, ori la depth=3, ori la depth=4. Acest lucru îl va face să joace progresiv mai bine. | ||
+ | |||
+ | Testarea se va face automat într-o mașină virtuală linux cu 1 singur procesor. Comenzile care vor fi rulate pentru testare vor arăta (foarte) asemănător cu comenzile de mai jos. Iar prin "foarte asemănător" înțelegem că această comandă va fi dată xboardului să pornească jocul cu engine-ul vostru, dar mai pot diferi numele fișierului în care se salvează partidele și/sau va fi pusă într-un script. | ||
+ | Diferența între acestea constantă în string-ul de inițializare pentru Pulsar (depth 2 vs depth 3 vs depth 4): | ||
+ | <note important>xboard -variant 3check -fcp "pulsar2009-9b-64 mxT-2" -tc 5 -inc 2 -autoCallFlag true -mg 4 -sgf partide.txt -reuseFirst false</note> | ||
+ | <note important>xboard -variant 3check -fcp "pulsar2009-9b-64 mxT-3" -tc 5 -inc 2 -autoCallFlag true -mg 4 -sgf partide.txt -reuseFirst false</note> | ||
+ | <note important>xboard -variant 3check -fcp "pulsar2009-9b-64 mxT-4" -tc 5 -inc 2 -autoCallFlag true -mg 4 -sgf partide.txt -reuseFirst false</note> | ||
+ | |||
+ | Explicarea parametrilor: | ||
+ | * **xboard** - aplicația pe care o folosim :-D poate fi atât xboard cât și winboard, dar checkerul va rula pe linux deci vom folosi xboard. | ||
+ | * **-fcp "make run"** - setează primul engine ca fiind engine-ul vostru. Vă reamintim că "make run" ar trebui doar să vă pornească engine-ul, nu și xboard-ul. | ||
+ | * **-scp "pulsar2009-9b-64 mxT-Numar"** - setează al doilea engine ca fiind engine-ul Pulsar cu depth-ul Numar. Reamintim că pentru testări locale calea până la executabilul de pulsar trebuie adăugată în PATH. | ||
+ | * **-tc 5 -inc 2** - setează timpul de joc la 5 minute (timpul de start pentru fiecare jucător), iar la fiecare mutare jucătorul care a efectuat-o va primi încă 2 secunde. //Observație:// Este indicată gestionarea timpului (dar nu obligatoriu). Acest timp, împreună cu următorul parametru(-autoCallFlag true) previne situația în care voi ați da un depth prea mare engine-ului vostru și acesta ar sta foarte mult să se gândească și situația în care engine-ul vostru intră într-o buclă infinită și nu mai mută. | ||
+ | * **-autoCallFlag true** - setează xboard-ul ca atunci când i se termină timpul unuia din jucători să atribuie victoria celuilalt. | ||
+ | * **-mg 4** - numărul de partide jucate va fi 4 pentru teste. Automat se vor juca 2 cu albul și 2 cu negru. Voi puteți modifica parametrul sau chiar să îl scoateți pentru teste mai mici. | ||
+ | * **-sgf partide.txt** - în acest fișier se vor salva partidele jucate. | ||
+ | * **-reuseFirst false** - acest parametru îi specifică lui xboard să reîncarce engine-ul vostru după fiecare partidă. Dacă nu este prezent se va da "new game". Puteți să-l vedeți ca pe o plasă de siguranță: dacă cumva engine-ul vostru se "strică" în timpul unei partide, el se va reseta la următoarea deci teoretic eroarea nu se va propaga. | ||
+ | |||
+ | ==== Punctare ==== | ||
+ | Punctajul de **0.5 puncte** se va acorda în felul următor: | ||
+ | * **0.2 puncte** obținerea a 2 puncte (orice combinație de remize + victorii) din 4 partide vs Pulsar cu depth-ul 2 | ||
+ | * **0.2 puncte** obținerea a 2 puncte (orice combinație de remize + victorii) din 4 partide vs Pulsar cu depth-ul 3 | ||
+ | * **0.1 puncte** obținerea a 2 puncte (orice combinație de remize + victorii) din 4 partide vs Pulsar cu depth-ul 4 | ||
+ | |||
+ | Punctele se vor acorda după următoarea formulă: | ||
+ | <code> | ||
+ | punctaj_etapă = min(0.2, 0.2 * (număr_puncte_din_meci_vs_pulsar2 / 2)) + | ||
+ | min(0.2, 0.2 * (număr_puncte_din_meci_vs_pulsar3 / 2)) + | ||
+ | min(0.1, 0.1 * (număr_puncte_din_meci_vs_pulsar4 / 2))</code> | ||