Differences

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

Link to this comparison view

pa:regulament-proiect-2021 [2021/03/04 14:00]
dragos.corlatescu [FAQs]
pa:regulament-proiect-2021 [2021/04/29 10:47] (current)
dragos.corlatescu [Etapa 3]
Line 52: Line 52:
 Această etapă va avea **1 săptămână**. Punctajul alocat acestei etape este de 0 puncte. Această etapă va avea **1 săptămână**. Punctajul alocat acestei etape este de 0 puncte.
  
-Deadline-ul acestei etape este **duminică, 10 martie 2021, ora 23:55**.+Deadline-ul acestei etape este **miercuri, 10 martie 2021, ora 23:55**.
  
 ===== Etapa 1 ===== ===== Etapa 1 =====
Line 100: Line 100:
 ===== Etapa 2 ===== ===== Etapa 2 =====
  
-** TBA **+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 <​del>​4</​del>​ **5 săptămâni**. Punctajul alocat acestei etape este de **0.5 puncte**.
 +
 +Deadline-ul acestei etape este <​del>​28 aprilie</​del>​ **5 mai 2021, ora 23:55**.
 +
 +
 +=== Testare ===
 +
 +Testarea se va realiza manual folosind atât funcția "​force"​ (Edit Game), cât și prin joc "​normal"​. Scenariile pe care va trebui să le implementați și care vor fi și testate sunt următoarele:​
 +  - Mutări normale de șah - botul vostru trebuie să fie capabil să primească mutări, să-și actualizeze tabla și să răspundă cu o altă mutare. Toate piesele trebuie să știe să efectueze mutări
 +  - Șah - în cazul în care primiți șah, botul vostru trebuie să se apere într-un fel și să nu facă mutări invalide
 +  - Promovări - un pion care ajunge pe ultima linie trebuie să se poată promova într-un dintre piesele: Damă (Regină), Turn, Cal, Nebun
 +  - En passant - https://​en.wikipedia.org/​wiki/​En_passant
 +  - Rocadă mică + Rocadă Mare
 +  - Regulile de imposibilitate pentru efectuarea rocadei https://​en.wikipedia.org/​wiki/​Castling#​Requirements:​
 +        * Dacă regele se află în șah, nu se poate efectua rocada
 +        * Dacă regele a fost mutat înainte de momentul actual, nu se poate efectua rocada
 +        * Dacă turnul care ar putea fi folosit pentru rocadă a fost mutat înainte de momentul actual, nu se poate efectua rocada
 +        * Dacă regele trece prin șah, nu se poate efectua rocada
 +        * Dacă regele ajunge în șah prin rocadă, nu se poate efectua rocada
 +
 +<note important>​Pentru a putea testa ultima regulă (cea cu rocada) de mai sus **trebuie** ca strategia voastră de a muta să aleagă să facă rocada dacă acest lucru este posibil. Dacă ambele rocade sunt disponibile puteți să alegeți pe oricare dintre ele. În rest, mutările voastre pot fi aleatoare.</​note>​
 +
 +Ce nu vom testa, dar va fi nevoie de ele pentru etapa următoare vor fi condițiile de terminare a partidei:
 +  - repetiție de **3** ori a //​aceeași//​ poziție cu //​aceeași//​ culoare la mutare -> remiză
 +  - 50 de mutări fără captură și fără mutări de pioni -> remiză
 +  - pat -> remiză
 +  - mat -> victorie
 +  - 3 șahuri date unui rege (*regulă specială 3 check chess) -> victorie
 +
 +<note important>​Orice mutare invalidă/​regulă care nu este respectată va aduce depunctări în funcție de gravitatea și frecvența cu care ea apare.</​note>​
  
 ===== 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>​
  
  
pa/regulament-proiect-2021.1614859230.txt.gz · Last modified: 2021/03/04 14:00 by dragos.corlatescu
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