LoslegenKostenlos loslegen

Every-Visit Monte Carlo implementieren

Die Every-Visit-Monte-Carlo-Methode unterscheidet sich von der First-Visit-Variante dadurch, dass Werte jedes Mal aktualisiert werden, wenn ein Zustands-Aktions-Paar auftritt, und nicht nur beim ersten Auftreten. Dieser Ansatz liefert eine umfassende Bewertung der Policy, weil er alle verfügbaren Informationen aus den Episoden nutzt. Gleichzeitig kann er jedoch mehr Varianz in die Wertschätzungen bringen, da alle Stichproben einfließen – unabhängig davon, wann sie in der Episode auftreten. Deine Aufgabe ist es, die Implementierung der Funktion every_visit_mc() zu vervollständigen, die die Aktionswertfunktion Q über num_episodes Episoden schätzt.

Die Wörterbücher returns_sum und returns_count mit Zustands-Aktions-Paaren als Schlüsseln wurden bereits initialisiert und zusammen mit der Funktion generate_episode() für dich geladen.

Diese Übung ist Teil des Kurses

Reinforcement Learning mit Gymnasium in Python

Kurs anzeigen

Anleitung zur Übung

  • Erzeuge eine Episode mit der Funktion generate_episode().
  • Aktualisiere die Returns und deren Zähler für jedes Zustands-Aktions-Paar innerhalb einer Episode.
  • Berechne die geschätzten Q-Werte.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

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 bearbeiten und ausführen