Difference between revisions of "Assignment SS 2023/2024/cs"
Oleg.Svatos (talk | contribs) |
(Pridanie návrhu simulácie) |
||
Line 53: | Line 53: | ||
</div> | </div> | ||
}} | }} | ||
+ | |||
+ | == 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 === | ||
+ | [[User:Stem45|Stem45]] ([[User talk:Stem45|talk]]) 10:18, 1 May 2024 (CET) |
Revision as of 10:19, 1 May 2024
Na tuto stránku vkládejte svá zadání. Nezapomeňte se podepsat. Můžete použít ~~~~ (čtyři tildy) k automatickému podpisu. Používejte Ukázat náhled, abyste si prohlédli Váš výsledek před konečným odesláním. |
Prosíme, snažte se formulovat Vaše zadání pečlive. S ohledem na to, že jde o Vaši semestrální práci, očekáváme adekvátní úsilí vynaložené na zadání. Nezapomeňte, že hlavním výsledkem má být výzkumná zpráva, což znamená, že Váš simulační model musí generovat takové výsledky, které jsou konkrétní, měřitelné a ověřitelné. Pečlivě promyslete, jakým způsobem budete vyvíjet Váš model, odvoďte entity, které budete používat, nakreslete si diagram modelu, zvažte, co budete měřit. Teprve pokud máte o modelu dostatečně přesnou představu, vložte Vaše zadání. A samozřejmě, nezapomeňte si prosím přečíst Jak na simulace. |
Témata na téma hazardních her, karet, vývoje cen akcií/indexů nejsou vítány. Rovněž varianty úlohy "Predator & Prey" a příkladů ze cvičení vám budou rozmluveny. |
Abychom se vyhnuli případnému budoucímu nedorozumnění, prosíme, ověřte si, že máte tučné schváleno někde v našem komentáři pod Vaším zadání. Pokud tam není schváleno, znamená to, že Vaše zadání dosud schváleno nebylo. |
Criteria for evaluation of the simulation proposal The proposal must contain:
If any of the above points are missing from the simulation proposal, the proposal is considered incomplete. Unless the proposal contains all of the above points it will not be evaluated at all (and therefore cannot be approved).
If the answer to any of the above points is no, you need to improve your proposal. Don't wait for us to tell you so - you're wasting your time. |
Contents
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).