Vaším úkolem je implementovat metody value iteration a policy iteration k nalezení optimální strategie (policy) pro zadaný MDP.
V modulu mdp_agent.py
implementujte dvě třídy:
ValueIterationAgent
, která bude hledat strategii metodou value iteration, a
PolicyIterationAgent
, která bude hledat strategii metodou policy iteration.
Rozhraní obou tříd bude shodné, obě musí implementovat následující metody:
metoda | vstupní parametry | výstupní parametry | vysvětlení |
---|---|---|---|
__init__ | env: MDPProblem , gamma: float , epsilon: float | žádné | Inicializace agenta. |
find_policy | žádné | Policy | Vrátí optimální strategii, tedy slovník dvojic (stav, akce). |
env
je prostředí, tj. objekt typu kuimaze2.MDPProblem
gamma
je tzv. “discount factor” (zlevnění) z rozmezi (0,1)
epsilon
je maximalní povolená chyba pro hodnoty jednotlivých stavů (využije se ve value iteration)
find_policy()
musí být strategie (policy) reprezentovaná jako slovník, kde klíčem je vždy stav (instance třídy kuimaze2.State
) a hodnotou je optimální akce pro daný stav (instance třídy kuimaze2.Action
). Strategie musí obsahovat akci pro všechny volné stavy, včetně terminálních. U terminálních stavů na konkrétní zvolené akci nezáleží.
ValueIterationAgent
a PolicyIterationAgent
musí odpovídat zadání. Například není možné v PolicyIterationAgent.find_policy()
prostě zavolat ValueIteration.find_policy()
nebo v ní (znovu) implementovat algoritmus value iteration (nebo opačně). V takovém případě může být celá úloha ohodnocena 0 body!
MDPProblem
nebo že potřebujete využít neveřejné proměnné a metody (jejichž jméno začíná na _
), proberte to se svým cvičícím.
kuimaze2
.
kuimaze2
najdete také skript example_mdp.py
, který také ukazuje, jak se s prostředím dá pracovat. Lze jej využít jako výchozí kód pro implementaci obou tříd.
example_mdp.py
) extrahovat sdílené části do společného předka obou tříd:class MDPAgent: # Parts common to both methods/agents ... class ValueIterationAgent(MDPAgent): # Parts specific for value iteration ... class PolicyIterationAgent(MDPAgent): # Parts specific for policy iteration ...
08-MDPs
.
mdp_agent.py
, příp. ZIP archiv s modulem mdp_agent.py
a dalšími vámi vytvořenými moduly, které váš agent potřebuje/importuje. Tyto soubory musí být v kořeni archívu, archív nesmí obsahovat žádné adresáře! Neodevzdávejte žádné moduly, které jste dostali od nás!
Seznamte se s bodovým hodnocením úlohy.