IniziaInizia gratis

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

Visualizza il corso

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())
Modifica ed esegui il codice