Aan de slagGa gratis aan de slag

Every-Visit Monte Carlo implementeren

De Every-Visit Monte Carlo-methode verschilt van de First-Visit-variant doordat waarden elke keer worden bijgewerkt wanneer een status-actiepair voorkomt, in plaats van alleen bij de eerste keer. Deze aanpak geeft een volledige evaluatie van het beleid doordat alle beschikbare informatie uit de episodes wordt gebruikt, maar kan ook meer variantie in de waarde-inschattingen introduceren omdat alle steekproeven worden meegenomen, ongeacht wanneer ze in de episode plaatsvinden. Je taak is om de implementatie van de functie every_visit_mc() te voltooien, die de actie-waardefunctie Q schat over num_episodes episodes.

De woordenboeken returns_sum en returns_count, met status-actieparen als sleutels, zijn voor je geïnitialiseerd en vooraf geladen, samen met de functie generate_episode().

Deze oefening maakt deel uit van de cursus

Reinforcement Learning met Gymnasium in Python

Cursus bekijken

Oefeninstructies

  • Genereer een episode met de functie generate_episode().
  • Werk de returns en hun tellingen bij voor elk status-actiepair binnen een episode.
  • Bereken de geschatte Q-waarden.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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())
Code bewerken en uitvoeren