Vytvoření instance prostředí je prakticky shodné s 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).
reward
-0.04 a prostředí indikovalo pomocí třetí vrácené hodnoty (False
), že jsme ještě nedosáhli cílového stavu.
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.