Implementace metody Monte Carlo s každou návštěvou
Metoda Monte Carlo s každou návštěvou se liší od varianty s první návštěvou tím, že aktualizuje hodnoty pokaždé, když se dvojice stav–akce objeví, a ne jen při prvním výskytu. Tento přístup umožňuje komplexnější vyhodnocení politiky, protože využívá veškeré dostupné informace z epizod. Na druhou stranu může vnášet větší rozptyl do odhadů hodnot, protože zahrnuje všechny vzorky bez ohledu na to, kdy v epizodě nastávají. Tvým úkolem je dokončit implementaci funkce every_visit_mc(), která odhaduje funkci akčních hodnot Q během num_episodes epizod.
Slovníky returns_sum a returns_count s dvojicemi stav–akce jako klíči jsou již inicializované a připravené, stejně jako funkce generate_episode().
Toto cvičení je součástí kurzu
Reinforcement Learning with Gymnasium in Python
Pokyny k cvičení
- Vygeneruj epizodu pomocí funkce
generate_episode(). - Aktualizuj výnosy a jejich počty pro každou dvojici stav–akce v rámci epizody.
- Vypočítej odhadované Q-hodnoty.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
Q = np.zeros((num_states, num_actions))
for i in range(100):
# Generate an episode
episode = ____
# Update the returns and their counts
for j, (state, action, reward) in ____:
returns_sum[(state, action)] += sum(____)
returns_count[(state, action)] += ____
# Update the Q-values for visited state-action pairs
nonzero_counts = ____
Q[nonzero_counts] = ____
render_policy(get_policy())