====== HardMaze ======
===== Příklad použití =====
Vytvoření instance prostředí je prakticky shodné s ''[[courses:b3b33kui:kuimaze:2_mdpmaze|MDPMaze]]'', jediný rozdíl je použití třídy ''HardMaze'', např.
>>> env = kuimaze.HardMaze(MAP1, probs=(0.8, 0.1, 0.1, 0.0))
Prostředí neumožňuje zjistit, jaké akce jsou přípustné pro daný stav. Existuje jen obecná množina akcí, z níž můžete např. akci náhodně vybírat:
>>> action = env.action_space.sample()
**Hlavní metoda** pro práci s prostředím je ''step(action)'':
>>> observation, reward, done, _ = env.step(action)
>>> new_state = observation[0:2]
První dvě čísla v ''observation'' jsou nový stav.
Před vlastním použitím prostředí je třeba jej resetovat:
>>> obs = env.reset()
(1, 0, 0.0)
Vidíme, že začínáme ve stavu (1,0). Zkusme udělat 3 kroky doprava (akce 1) a 2 kroky dolů (akce 2), abychom se dostali na cílový stav. (Pro ukázku chování metody ''step()'' to udělat to můžeme protože víme, kde v mapě cíl je. Prostředí samotné nám ale neřekne, kde cíl leží.)
>>> env.step(1)
((2, 0, 0.0), -0.04, False, None)
>>> env.step(1)
((3, 0, 0.0), -0.04, False, None)
>>> env.step(1)
((4, 0, 0.0), -0.04, False, None)
>>> env.step(2)
((4, 1, 0.0), -0.04, False, None)
>>> env.step(2)
((4, 2, 0.0), 0.96, True, None)
Skrz stavy (2,0), (3,0), (4,0), (4,1) jsme se dostali do cílového stavu (4,2).
* V neterminálních stavech byl náš ''reward'' -0.04 a prostředí indikovalo pomocí třetí vrácené hodnoty (''False''), že jsme ještě nedosáhli cílového stavu.
* V cílovém stavu (4,2) jsme dostali odměnu 0.96 (-0.04 + 1, tj. součet odměny za přechod z předchozího do cílového stavu a odměny za dosažení cílového stavu). Prostředí také indikuje, že bylo dosažené cíle (''True'' jako třetí vrícená hodnota).
Když je dosaženo cílového stavu, již není možné dělat další akci:
>>> env.step(2)
...
AssertionError: Episode finished, no more actions possible. Call reset() to start a new episode.