Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pa:regulament-proiect-2020 [2020/02/27 11:27]
stefan.ruseti [Etapa 2]
pa:regulament-proiect-2020 [2020/05/01 14:42] (current)
dragos.corlatescu [Etapa 3]
Line 69: Line 69:
 Această etapă va avea **2 săptămâni**. Punctajul alocat acestei etape este de **0.4 puncte**. Această etapă va avea **2 săptămâni**. Punctajul alocat acestei etape este de **0.4 puncte**.
  
-Deadline-ul acestei etape este **TBD**.+Deadline-ul acestei etape este **17 martie 2020, 23:55**.
 ===== Etapa 2 ===== ===== Etapa 2 =====
  
Line 76: Line 76:
 Această etapă va avea **4 săptămâni**. Punctajul alocat acestei etape este de **0.5 puncte**. Această etapă va avea **4 săptămâni**. Punctajul alocat acestei etape este de **0.5 puncte**.
  
-Deadline-ul acestei etape este **12 aprilie 2020, ora 23:55**.+Deadline-ul acestei etape este **21 aprilie 2020, ora 23:55**.
  
 +
 +==== Testare ====
 +Pentru testare ne vom folosi de engine-ul FairyMax care vine preinstalat cu xboard/​winboard. Acesta va fi limitat să vadă doar 2 mutări în față (depth=2), deci nu va juca foarte bine.
 +
 +
 +Comanda care va fi rulată pentru testare va arăta (foarte) asemănător cu comanda de mai jos:
 +<note important>​xboard -fcp "make run" -scp "​fairymax"​ -secondInitString "​new\nrandom\nsd 2\n" -tc 5 -inc 2 -autoCallFlag true -mg 10 -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 cel mai probabil 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 "​fairymax"​** - setează al doilea engine ca fiind engine-ul FairyMax.
 +  * **-secondInitString "​new\nrandom\nsd 2\n"** - string de inițializare pentru FairyMax care îi limitează adâncimea de căutare (depth) la 2.
 +  * **-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://​ Nu este neapărat nevoie să implementați gestionarea timpului (deși probabil v-ar ajuta). 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 10** - numărul de partide jucate va fi 10 pentru teste. Automat se vor juca 5 cu albul și 5 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.
 +
 +<note important>​Pentru fi siguri că primiți de la xboard/​winboard mutările în formatul de coordonate (g1f3, care mută piesa de la g1 la f3) în momentul în care primiți "​protover"​ de la xboard răspundeți cu "​feature san=0"​. Dacă ați implementat mutările in formatul "​piesă la câmp" (ex: Nf3, care mută calul la f3) atunci nu mai este nevoie să trimiteți acest "​feature"​.
 +
 +"​feature"​-ul puteți să-l trimiteți pe tot odată: foarte mulți dintre voi ați implementat în etapa 1 să răspundeți cu "​feature sigterm=0"​. Acum puteți trimite "​feature sigterm=0 san=0"</​note>​
 +
 +Mai multe detalii pentru configurarea xboard-ului din linie de comandă puteți găsi aici [[https://​www.gnu.org/​software/​xboard/​manual/​xboard.html#​|documentație xboard]].
 +
 +==== Punctare ====
 +Punctajul de **0.5 puncte** se va acorda în felul următor:
 +  * **0.2 puncte** implementarea corectă a tuturor detaliilor ce țin de jocul de șah
 +  * **0.3 puncte** implementarea algoritmului minimax/​negamax. Acest punctaj va fi și el divizat după cum urmează:
 +      * //0.2 puncte// implementarea unui algoritm minimax/​negamax mediocru
 +      * //0.1 puncte// implementarea unui algoritm minimax/​negamax bun
 +
 +
 +Punctele se vor acorda după următoarea formulă:
 +
 +<​code>​
 +punctaj_etapă = 0.2 * (număr_de_partide_terminate_corect / 10) +
 +                0.2 * (număr_de_partide_terminate_după_mutarea_20 / 10) +
 +                min(0.1, 0.1 * (număr_de_puncte_din_meci / 5))</​code>​
 +                ​
 +Clarificări:​
 +  * număr_de_partide_terminate_corect - număr de partide în care engine-ul vostru nu face illegal moves și termină partida. Evident că vom scădea dacă nu sunt implementate toate mișcările tuturor pieselor și așa mai departe. Adică nu veți primi punctaj dacă veți muta doar un pion și avoi veți ceda ca în etapa 1.
 +  * număr_de_partide_terminate_după_mutarea_20 - numărul de partide în care partida se termină după mutarea 20 (mutarea 20 înseamnă că atât albul, cât și negrul au făcut 20 de mutări) cu orice rezultat **sau** dacă partida se termină înainte de mutarea 20, dar cu victoria voastră. //​Observație://​ În mod normal, un minimax cât de slab cu un depth > 2 ar trebui să îi reziste lui FairyMax mai mult de 20 de mutari.
 +  * min(0.1, 0.1 * (număr_de_puncte_din_meci / 5)) - pe scurt, pentru a obține toate punctele la această secțiune va trebui să obțineți minim 5 puncte din cele 10 posibile în orice combinație (adică 5 victorii, sau 4 victorii și 2 remize, etc.)
 ===== Etapa 3 ===== ===== Etapa 3 =====
  
Line 86: Line 130:
 Această etapă va avea **4 săptămâni**. Punctajul alocat acestei etape este de **0.5 puncte**. Această etapă va avea **4 săptămâni**. Punctajul alocat acestei etape este de **0.5 puncte**.
  
-Deadline-ul acestei etape este **TBD**.+Deadline-ul acestei etape este **19 mai 2020, ora 23:55**. 
 + 
 +==== Testare ==== 
 +Pentru testare ne vom folosi de engine-ul FairyMax care vine preinstalat cu xboard/​winboard. În funcție de caz, acesta va fi limitat ori la depth=3 ori la depth=4. Acest lucru îl va face să joace mai bine decât la etapa precedentă. 
 + 
 +Comenzile care vor fi rulate pentru testare vor arăta (foarte) asemănător cu comenzile de mai jos. Diferența constantă în string-ul de inițializare pentru FairyMax (depth 3 vs depth 4): 
 +<note important>​xboard -fcp "make run" -scp "​fairymax"​ -secondInitString "​new\nrandom\nsd 3\n" -tc 5 -inc 2 -autoCallFlag true -mg 4 -sgf partide.txt ​ -reuseFirst false</​note>​ 
 +<note important>​xboard -fcp "make run" -scp "​fairymax"​ -secondInitString "​new\nrandom\nsd 4\n" -tc 5 -inc 2 -autoCallFlag true -mg 4 -sgf partide.txt ​ -reuseFirst false</​note>​ 
 + 
 +Pentru detalii legate de parametrii comenzilor analizați instrucțiunile de la etapa precedentă. 
 + 
 + 
 +==== Punctare ==== 
 +Punctajul de **0.5 puncte** se va acorda în felul următor: 
 +  * **0.35 puncte** obținerea a 2 puncte (orice combinație de remize + victorii) din 4 partide vs FairyMax cu depth-ul 3 
 +  * **0.15 puncte** obținerea a 2 puncte (orice combinație de remize + victorii) din 4 partide vs FairyMax cu depth-ul 4 
 + 
 + 
 +Punctele se vor acorda după următoarea formulă: 
 + 
 +<​code>​ 
 +punctaj_etapă = min(0.35, 0.35 * (număr_puncte_din_meci_vs_fm3 / 2)) + 
 +                min(0.15, 0.15 * (număr_puncte_din_meci_vs_fm4 / 2))</​code>​ 
 ===== Etapa 4 ===== ===== Etapa 4 =====
  
pa/regulament-proiect-2020.1582795660.txt.gz · Last modified: 2020/02/27 11:27 by stefan.ruseti
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