Implementera Every-Visit Monte Carlo
Every-Visit Monte Carlo skiljer sig från First-Visit-varianten genom att uppdatera värden varje gång ett tillstånds-åtgärdspar förekommer, i stället för enbart vid den första förekomsten. Metoden ger en heltäckande utvärdering av policyn eftersom den utnyttjar all tillgänglig information från episoderna, men den kan också introducera större varians i värdestimatena eftersom alla sampel ingår oavsett var i episoden de inträffar. Din uppgift är att slutföra implementeringen av funktionen every_visit_mc(), som skattar aktionsvärdesfunktionen Q över num_episodes episoder.
Ordlistorna returns_sum och returns_count, med tillstånds-åtgärdspar som nycklar, har redan initierats och laddats in tillsammans med funktionen generate_episode().
Den här övningen är en del av kursen
Reinforcement Learning med Gymnasium i Python
Övningsinstruktioner
- Generera en episod med funktionen
generate_episode(). - Uppdatera avkastningarna och deras antal för varje tillstånds-åtgärdspar inom en episod.
- Beräkna de skattade Q-värdena.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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())