Zadání LS 2023/2024

From Simulace.info
Revision as of 11:19, 1 May 2024 by Stem45 (talk | contribs) (Pridanie návrhu simulácie)
Jump to: navigation, search


Simulácia evolúcie neurónovej siete, ktorej cieľom je naučiť sa hrať klasickú hru Snake

Popis

Práca bude simulovať evolúciu agentov, ktorí sa budú snažiť naučiť hrať klasickú hru Snake. Každý agent bude predstavovaný neurálnou sieťou, ktorá na základe aktuálneho stavu hry rozhodne ako ďalej pokračovať. Cieľom práce bude zistiť najvhodnejšie parametre pre vývoj agentov.

Prostredie

Pre simuláciu evolúcie bude potrebné simulovať viacero generácií E a v každej generácii bude populácia agentov o veľkosti N. Každý agent bude hrať samostatnú inštanciu hry Snake. Po odohraní hier agentov v danej generácii sa vypočíta fitness (skóre) najlepšieho agenta. Podľa fitness sa vyberú jedinci pre ďalšiu generáciu (podľa miery elitizmu e). Ďalej sa generácia doplní novo vytvorenými agentami (potomkami), ktorí vzniknú krížením dvoch náhodne vybratých agentov. Potomkovia budú ešte zmutovaný podľa miery mutácie m. Ďalej bude pokračovať ďalšia novo vytvorená generácia.

Agenti

Každý agent bude pozostávať z neurónovej siete. Agent bude "vidieť" do ômych smerov (hore, dole, vľavo, vpravo, vpravo-hore, vpravo-dole, vľavo-dole, vľavo-hore) od hlavy hada. Pre každý smer uvidí vzdialenosť k stene, vzdialenosť k jablku (ak ho v daný smer vidí) a vzdialenosť ku svojemu chvostu (ak ho v daný smer vidí). Čiže na vstupnej vrstve bude mať 24 neurónov (8 smerov x 3 indikátory) + 4 neuróny predstavujúce smer do ktorého ide hlava hada. Celkovo 28 neurónov. Počet skrytých vrstiev a neurónov v nich môže byť cieľom skúmania práce. Váhy väzieb medzi neurónami budú z počiatku náhodné z uniformného rozdelenia, následne budú menené mutáciami agentov. Na výstupe neurónovej siete bude smer akým sa má had ďalej uberať, čiže 4 neuróny pre Hore, Dole, Vľavo, Vpravo.

Cieľ

Cieľom práce bude zistiť najvhodnejšie parametre pre vývoj agentov. S evolučným algoritmom mám skúsenosti - riešil som ním 3SAT problém a preto viem že výpočty môžu zabrať značnú dobu. Preto by som určil niektoré parametre, ktoré budú pevné a niektoré, ktoré budú cieľom skúmania. Tu mám 3 možnosti, ktoré by ma zaujímali. V každom prípade bude pevný parameter N (počet jedincov v populácii) a E počet generácií. Prvá možnosť by malá pevný počet skrytých vrstiev agentov s pevným počtom neurónov v nich a menila by sa miera mutácie a miera elitizmu. Druhá možnosť je podobná prvej, no počet skrytých vrstiev a neurónov v nich by sa s mutáciami agentov mohol meniť (čo je vlastne len zťaženie možnosti 1, ale asi sa to viac podobá skutočnej evolúcii). Tretia možnosť je, že miera mutácie a elitizmus budú pevné parametre a manuálne sa bude meniť počet vrstiev a neurónov (čo teraz ako to píšem sa mi úplne nezdá - malo by to hrozne veľa možností a ani sa to tak veľmi nepodobá evolúcii). V každom prípade budem porovnávať výsledky, ktoré agenti dosiahli za E generacií (najlepšie skóre, priemerné skóre, smerodajnú odchylku).

(Môj osobný cieľ bude, aby agent dosiahol aspoň 10 bodov a pritom, aby bolo vidno, že to nebola náhoda :D )

Nástroje

Python s knižnicou numpy pre prácu s maticami váh, knižnicou matplotlib pre grafické znázornenie výsledkov populácií a knižnicou tkinter pre zobrazenie hier (zobrazenie je to najmenej podstatné a pritom to najlepšie :D).

Autor

Stem45 (talk) 10:18, 1 May 2024 (CET)