====== Posilované učení ====== Implementujte metodu ''learn_policy(env)'' v souboru ''rl_agent.py'' který nahrajte do Brute. ''env'' je tentokrát typu ''HardMaze''. Očekávaným výstupem je ''policy'', slovník klíčovaný stavy, hodnoty mohou být z [0,1,2,3], což odpovídá up, right, down, left (N,E,S,W). Limit na učení na jednom postředí je 20 sekund. Nezapomeňte před odevzdáním vypnout vizualizace, viz VERBOSITY v ''rl_sandbox.py''. Opět budeme používat kostičkový svět. Stahněte si aktualizovaný balík ''{{ :courses:b3b33kui:cviceni:sekvencni_rozhodovani:kuimaze_rl.zip |kuimaze.zip}}''. Vizualizační metody jsou stejné, rovněž i inicializace, ale základní filozofie práce s prostředím je odlišná. Nemáme mapu a prostředí můžeme prozkoumávat pomocí hlavní metody ''env.step(action)''. Prostředí-simulátor ví, jaký je aktuální stav. Hledáme co nejlepší cestu ze startu do cíle. Chceme cestu s co nejvyšším očekávaným součtem zlevněných odměn. obv, reward, done, _ = env.step(action) state = obv[0:2] Akci můžete získat třeba náhodným výběrem: action = env.action_space.sample() Součástí balíku je i ''rl_sandbox.py'', kde je vidět základní náhodné procházení, možná inicializace tabulky Q hodnot, vizualizace atp. Další příklady na stránce [[https://gym.openai.com/docs/|AI-Gym]]. Připomeňme z přednášky, že akce je nutná, abychom se o prostředí vůbec něco dozvěděli. {{ :courses:b3b33kui:cviceni:sekvencni_rozhodovani:agent-environment-reward.png |}} ====== Bodové hodnocení a termíny ====== Termín odevzdání úlohy lze vidět v [[https://cw.felk.cvut.cz/upload/|Upload systému]]. Hodnocení je rozděleno následovně: - Automatické hodnocení testuje výkon vašeho agenta na 5 prostředích. S vámi dodanou policy pro dané prostředí agenta pustíme n-krát a spočteme průměrný součet jím nasbíraných odměn. To pak porovnáme s učitelským řešením (agent vykonávající optimal policy). Na každém z 5ti prostředí, ve kterém budete mít 80% a více než je učitelská hodnota součtu odměn, získáváte jeden bod. - Manuální hodnocení je založeno na hodnocení kódu (clean code). ^ Hodnocený výkon ^ min ^ max ^ poznámka ^ | Kvalita RL algoritmu | 0 | 5 | Ohodnocení algoritmu automatickým evaluačním systémem. | | Kvalita kódu | 0 | 2| Komentáře, struktura, elegance, čistota kódu, vhodné pojmenování proměnných... | Kvalita kódu (2 body): * vhodné komentáře, nebo kód je srozumitelný natolik, že komentáře nepotřebuje * rozumně dlouhé, respektive krátké metody/funkce * jména proměnných (podst. jména) a funkcí (slovesa) pomáhají čitelnosti a srozumitelnosti * kusy kódu se neopakují (žádné copy-paste) * rozumné šetření pamětí a procesorovým časem * konzistentní názvy i rozložení kódu v celém souboru (oddělovat slova ve všech metodách stejně, atp.) * přehledná struktura kódu (vyvarujte se např. nepythonovskému přiřazování mnoha proměnných v jednom řádku) * ... Můžete následovat pro Python určený [[https://www.python.org/dev/peps/pep-0008/|PEP8]]. Většina editorů (jistě PyCharm) na nedostatky s ohledem na PEP8 i sám upozorňuje. Můžete se také inspirovat např. [[https://github.com/zedr/clean-code-python|zde]] nebo si přečíst o idiomatickém pythonu na [[https://medium.com/the-andela-way/idiomatic-python-coding-the-smart-way-cc560fa5f1d6|mediu]] či u [[http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html|pythonu]].