{"id":23265737,"url":"https://github.com/andreip/t2-ml","last_synced_at":"2025-04-06T07:33:59.348Z","repository":{"id":16350189,"uuid":"19100149","full_name":"andreip/t2-ml","owner":"andreip","description":null,"archived":false,"fork":false,"pushed_at":"2014-04-29T22:23:24.000Z","size":200,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-12T12:57:00.575Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"dimitri/pgcharts","license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andreip.png","metadata":{"files":{"readme":"README","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-04-24T07:47:15.000Z","updated_at":"2014-05-14T17:23:26.000Z","dependencies_parsed_at":"2022-09-19T21:54:02.246Z","dependency_job_id":null,"html_url":"https://github.com/andreip/t2-ml","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreip%2Ft2-ml","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreip%2Ft2-ml/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreip%2Ft2-ml/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreip%2Ft2-ml/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andreip","download_url":"https://codeload.github.com/andreip/t2-ml/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247450800,"owners_count":20940938,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-19T15:32:17.287Z","updated_at":"2025-04-06T07:33:59.327Z","avatar_url":"https://github.com/andreip.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Petre Andrei, 342 C3\n\n== General ==\n\nFisierul de configurare config.rc este utilizat pentru mai tot ce tine de joc sau de\nalegeri din algoritmi sau din module.\n\nModule si cum am implementat:\n* toate se gasesc in directorul modules/\n* preprocesarea consta in extagerea pozitiilor (coordonate) relative a pradatorilor si a\n  capcanelor si stocarea lor sub forma de lista [(a,b),(c,d),(e,f),...].\n* clasificarea lor apoi se face cu kmeans\n  - am considerat infinita distanta pentru ceea ce nu vad sau ceea ce a fost anihilat\n  - intre doua stari, incerc sa obtin distanta minima posibila si fac legatura acelor\n    coordonate care au combinatia distantei minime\n* modulul de recunoastere foloseste ceea ce am folosit si la kmeans, gasirea combinatiei minime\n  a distantei intre doua stari (care e reprezentat printr-un vector de coordonate)\n  - e tratat tot timpul cazul de a lua separat capcanele de pradatori, nu sunt tratate\n    in acelasi timp pe ambele analiza distantelor intre stari\n* modulul de learning: am folosit algoritmul SARSA cu politica Eps-greedy, si are de ales\n  initial mai mult random dintre cele 360 de posibilitati (grade) ale directiei de deplasare\n  pentru o pozitie data (o stare codificata ca mai sus).\n\n== Fisiere ==\n\n* tests/\n  - unit tests pentru dezvoltarea initiala cu kmeans care a fost mai plina de bug-uri\n* modules/\n  - toate cele patru module, explicate mai sus\n* gui.py\n  - am folosit pygame pentru interfata, ei i se da controlul prin metoda draw()\n    care deseneaza o data si iese (desenreaza instantele la care tine referinte, ale caror\n    pozitii sunt modificate in programul principal)\n* game.py\n  - clasa Game contine logica de progres a jocului, construind coordonate random initiale\n    la fiecare joc (fara coliziuni) pentru toate instantele\n  - tine toate instantele in memorie\n  - stie cand jocul se termina si poate rezolva coliziunile aparute in joc prin stergerea\n    unor entitati =\u003e stergerea are efecte si asupra interfetei (care foloseste aceeasi lista din\n    care sunt sterse entitatile)\n* helper.py\n  - functii de calcul mai mult, gen dist euclidiana\n* objects.py\n  - mostenirea de obiecte\n    BaseObject\n    |\n    |---Pray \n    |---Predator\n    |---Trap\n  - toate mostenesc capacitati comune, cu mici distinctii de date din fisierul de configurare\n  - au:\n    * directie\n    * viteza\n    * coordonate\n  - aflare directie noua prin\n    x += speed * cos(radians(directie))\n    y += speed * sin(radians(directie))\n\n== Rezultate obtinute ==\n\nAm rulat 10 batch-uri de cate 100 de teste pentru diferite configurari, mai jos.\n\nLa final rulez cu interfata din care se observa:\n- evita capcane\n- castiga impotriva atacatorilor\n- [BONUS] atacatorii se sincronizeazaza asupra prazii atunci cand amandoi o vad\n\n(pt config actual)\n\nWon 93/100 total games.\nWon 89/100 total games.\nWon 87/100 total games.\nWon 88/100 total games.\nWon 91/100 total games.\nWon 82/100 total games.\nWon 87/100 total games.\nWon 83/100 total games.\nWon 91/100 total games.\nWon 95/100 total games.\n\n(pt condif actuala dar cu 30 de capcane - foarte incarcata harta)\n\nWon 43/100 total games.\nWon 45/100 total games.\nWon 43/100 total games.\nWon 44/100 total games.\nWon 50/100 total games.\nWon 42/100 total games.\nWon 43/100 total games.\nWon 51/100 total games.\nWon 42/100 total games.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandreip%2Ft2-ml","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandreip%2Ft2-ml","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandreip%2Ft2-ml/lists"}