Differences

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

Link to this comparison view

pa:regulament-proiect-2017 [2018/02/25 10:34] (current)
radu.iacob created
Line 1: Line 1:
 +====== Regulament proiect 2017 ======
 +În acest an vă propunem realizarea unui program care să joace cât mai bine jocul Halite [1]. Regulamentul jocului il găsiți la [2]. Programul se poate realiza în oricare din limbajele de programare suportate [3]. 
  
 +Cum unii participanţi la acest concurs şi-au publicat sursele şi ideile online, vrem să fie clar că:
 +
 +  * inspirarea după ideile descoperite online nu se penalizează (atâta timp cât sursa este precizată în README)
 +  * copierea codului sursă (sau reproducerea integrală a ideii de rezolvare dintr-o altă sursă) se sancţionează cu pierderea punctajului pentru întregul proiect.
 +
 +Proiectul va cuprinde 5 etape, după cum este prezentat în continuare. Fiecare etapă presupune dezvoltarea unui bot care va juca Halite din ce în ce mai inteligent, iar ultima etapă reprezintă un concurs la nivel de serie, iar apoi la nivel de an pentru a stabili marele câștigător al proiectului de PA din anul 2017. Fiecare echipă poate să își schimbe complet strategia de joc între etape dacă membrii săi consideră acest lucru oportun.
 +
 +** Reguli de upload:** La fiecare etapă trebuie încărcată pe [[http://​cs.curs.pub.ro/​2016/​course/​view.php?​id=83]] o arhivă zip cu **numele seriei** și **numele echipei** (ex: CANumeEchipa) care să conțina codul sursă, fișier Makefile (pentru C/C++/Java) și fișierul README.
 +În README veți prezenta mediul de dezvoltare folosit, modalitatea de compilare, ce a făcut fiecare membru al echipei, structura proiectului (clase), surse de inspirație și, cel mai important, abordarea algoritmică a etapei: ce algoritmi ați folosit, cum i-ați combinat, de ce, complexități,​ etc. Nu neapărat în ordinea aceasta. ​
 +
 +Atenție! ** Deadline-urile la proiect sunt hard **, deci nu se permit întârzieri. Dacă s-a ratat deadline-ul la o etapă, se poate lucra în continuare pentru celelalte etape, dar punctajul se va pierde pentru respectiva etapă. ​
 +
 +===== 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. Se permit echipe cu oameni din serii diferite atat timp cat 3 din 4 membri sunt din aceeasi serie. ​
 +
 +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 acest lucru 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 **duminică,​ 5 martie 2017, ora 23:55.**
 +
 +===== Etapa 1 =====
 +
 +Prima etapă a proiectului presupune acomodarea echipelor cu jocul Halite și realizarea unei soluții simple care să acopere harta in cat mai putin pasi, fara a avea un adversar. Mai multe detalii despre acest mod de joc puteti gasi aici [4].
 +
 +Punctele vor fi acordate, pe următoarele configurații de hărți, în felul următor:
 +
 +| Înălțime hartă | Lungime hartă | Seed | Soft Turn Limit | Hard Turn Limit | Punctaj Maxim |
 +| 15 | 20 | 42 | 175 | 200 | 0.1 |
 +| 20 | 15 | 42 | 175 | 200 | 0.1 |
 +| 30 | 30 | 42 | 250 | 300 | 0.1 |
 +| 40 | 40 | 42 | 275 | 400 | 0.1 |
 +| 50 | 50 | 42 | 300 | 500 | 0.1 |
 +
 +Dacă botul acoperă harta intr-un număr de pași mai mic sau egal decât 'Soft Turn Limit' atunci va primi
 +intregul punctaj asociat configurației respective. Pentru un număr de pași intre 'Soft Turn Limit' si 'Hard Turn Limit',​ va primi un punctaj parțial, în funcție de cât de aproape se află de limita '​Soft'​.
 +
 +Seed-ul este specificat pentru a înlătura orice ambiguitate sau variabilă aleatorie din evaluare, nu pentru a permite hardcodarea de paşi. Orice soluţie care hardcodează paşii pentru a obţine rezultatul dorit nu va primi punctajul pe etapă. ​
 +
 +Dacă folosiți un generator de numere random in programul vostru, folosiți seedul 42 pentru inițializarea acestuia.
 +
 +Scriptul pe care il vom folosi pentru evaluare se găsește la adresa: [[https://​gitlab.cs.pub.ro/​pa-assignments/​halite-resources/​blob/​master/​halite-resources.zip
 +|halite-resources.zip]]
 +
 +Această etapă va avea **3 săptămâni**. Punctajul alocat acestei etape este de **0.5 puncte**.
 +
 +Deadline-ul acestei etape este **duminică,​ 26 martie 2017, ora 23:​55** ​
 +===== Etapa 2 =====
 +
 +Pentru aceasta etapa, trebuie să dezvoltați o soluție care să joace împotriva unui singur adversar. Punctajul se va da în funcție de rezultatele obținute împotriva unui bot pus la dispoziție de echipa de PA.
 +
 +Punctele vor fi acordate dacă botul vostru câstigă pe următoarele configurații de hărți:
 +
 +| Înălțime hartă | Lungime hartă | Seed | Punctaj |
 +| 28 | 24 | 314 | 0.1 |
 +| 30 | 30 | 42 | 0.1 |
 +| 40 | 40 | 154 | 0.1 |
 +| 30 | 50 | 3  | 0.1 |
 +| 50 | 50 | 42 | 0.1 |
 +
 +Botul pentru aceasta etapă (varianta de linux/​windows) se află la adresa [[https://​gitlab.cs.pub.ro/​pa-assignments/​halite-resources/​blob/​master/​bots|bots]]. ​
 +
 +Scriptul pe care il vom folosi pentru evaluare se găsește la adresa: [[https://​gitlab.cs.pub.ro/​pa-assignments/​halite-resources/​blob/​master/​halite-resources.zip
 +|halite-resources.zip]]
 +
 +Deadline-ul acestei etape este **miercuri, 26 aprilie 2017, ora 23:55**. Punctajul alocat acestei etape este de **0.5 puncte**.
 +
 +===== Etapa 3 =====
 +
 +Etapa a treia constă în lupta cu mai mulți (trei) boți. Botul vostru va fi întotdeauna în colțul din stânga sus (player1).
 +Dimensiunea hărților e de 40x40. Valorile pentru seed si adversari sunt următoarele:​
 +
 +|**seed** ​ |**player2** | **player3** ​     |**player4** ​ |
 +|3     ​|starkbot | DBotv4 |DBotv4 ​  |
 +|4     ​|starkbot | starkbot |starkbot |
 +|5     ​|DBotv4 ​  | starkbot |DBotv4 ​  |
 +|8     ​|DBotv4 ​  | DBotv4 |DBotv4 ​  |
 +|10    |DBotv4 | DBotv4 |starkbot |
 +
 +După fiecare rundă, scorul se calculează în felul următor:
 +scor[i] = ((min(ture[i],​ 200) - 100) / 100)^2,
 +unde ture[i] reprezintă numărul de ture supravietuite de botul vostru în runda i. Dacă ați câștigat în mai putin de 200 de ture, ture[i] = 200.
 +
 +Scorul total se calculează conform formulei:
 +total =  avg(scor) * 0.4,
 +unde scor este lista de scoruri calculate anterior.
 +
 +Pentru această etapă trebuie să aveți un fișier Makefile în rădăcina arhivei. În makefile trebuie să aveti o regulă „build” care să creeze executabilul,​ o regulă „run” care să îl ruleze și o regulă „clean” care să curețe executabilul și fișierele obiect (dacă e cazul). În cazul Python, regulile de build și clean există, dar nu fac nimic.
 +
 +Comanda executată va fi:
 +
 +**env** -d "40 40" -s **seed** "make -C **your_dir**"​ "​**player2**"​ "​**player3**"​ "​**player4**"​
 +
 +**env** reprezintă calea către executabilul halite
 +
 +**seed** este luat din tabelul de mai sus
 +
 +**player** sunt luate din tabelul de mai sus, reprezentând comanda de rulare a botului respectiv.
 +
 +Boții vor fi evaluați pe un sistem Linux/GNU, deci ar fi bine să verificați că aveți un makefile care funcționează corect în Linux, chiar dacă lucrați în Windows sau Mac OS X.
 +
 +Aveți atașată o arhivă care conține boții pentru linux x64 și windows și un fișier Makefile cu un exemplu de regulă de run foarte simplă. ​
 +
 +{{:​pa:​bots_etapa3.zip|Etapa3}}
 +
 +Deadline-ul acestei etape este **miercuri, 10 mai 2017**. Punctajul alocat acestei etape este de **0.4 puncte**.
 +===== Etapa 4 =====
 +
 +În cadrul acestei etape se va realiza un concurs între proiectele realizate. În funcție de numărul de proiecte finite realizate se va stabili formatul concursului:​ campionat, tournament tree sau grupe+tournament tree. \\ Punctajul aferent acestei etape este de **0.6 puncte** si se va acorda dupa urmatorul algoritm:
 +  * Locul 1 va primi 0.6 puncte
 +  * Locul 2 va primi 0.5 puncte
 +  * Locul 3 va primi 0.4 puncte
 +  * Restul proiectelor vor primi in functie de locul in clasament intre 0 si 0.35 puncte, marja intre doua proiecte consecutive fiind de 0.35/​(numar_proiecte_finaliste-3)
 +
 +Deadline-ul acestei etape este **duminică,​ 21 mai 2017**
 +
 +===== Referințe =====
 +[1] - https://​halite.io/​index.php ​ \\
 +[2] - https://​halite.io/​rules_game.php \\
 +[3] - https://​halite.io/​downloads.php \\
 +[4] - http://​forums.halite.io/​t/​introducing-unofficial-halite-single-player-mode/​573
pa/regulament-proiect-2017.txt · Last modified: 2018/02/25 10:34 by radu.iacob
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