Implementare Every-Visit Monte Carlo
Il metodo Every-Visit Monte Carlo si differenzia dalla variante First-Visit perché aggiorna i valori ogni volta che compare una coppia stato-azione, invece che solo al primo incontro. Questo approccio offre una valutazione più completa della policy sfruttando tutte le informazioni disponibili dagli episodi, ma può introdurre maggiore varianza nelle stime dei valori poiché include tutti i campioni, indipendentemente da quando si verificano nell'episodio. Il tuo compito è completare l'implementazione della funzione every_visit_mc(), che stima la funzione valore-azione Q su num_episodes episodi.
I dizionari returns_sum e returns_count, con coppie stato-azione come chiavi, sono stati inizializzati e precaricati per te insieme alla funzione generate_episode().
Questo esercizio fa parte del corso
Reinforcement Learning con Gymnasium in Python
Istruzioni dell'esercizio
- Genera un episodio usando la funzione
generate_episode(). - Aggiorna i ritorni e i rispettivi conteggi per ogni coppia stato-azione all'interno di un episodio.
- Calcola i Q-value stimati.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
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())