Zacznij terazZacznij za darmo

Implementacja metody Monte Carlo z pełnym odwiedzaniem

Metoda Monte Carlo z pełnym odwiedzaniem różni się od wariantu z pierwszym odwiedzaniem tym, że aktualizuje wartości za każdym razem, gdy pojawia się dana para stan-akcja – nie tylko przy pierwszym napotkaniu. Takie podejście zapewnia wszechstronną ocenę polityki, ponieważ wykorzystuje wszystkie dostępne informacje z epizodów. Może jednak wprowadzać większą wariancję w szacunkach wartości, gdyż uwzględnia wszystkie próbki niezależnie od tego, kiedy pojawiają się w epizodzie. Twoim zadaniem jest uzupełnienie implementacji funkcji every_visit_mc(), która szacuje funkcję wartości akcji Q na przestrzeni num_episodes epizodów.

Słowniki returns_sum i returns_count, z parami stan-akcja jako kluczami, zostały już zainicjalizowane i wczytane, podobnie jak funkcja generate_episode().

To ćwiczenie jest częścią kursu

Uczenie przez wzmacnianie z Gymnasium w Pythonie

Zobacz kurs

Instrukcje do ćwiczenia

  • Wygeneruj epizod za pomocą funkcji generate_episode().
  • Zaktualizuj sumy zwrotów oraz ich liczniki dla każdej pary stan-akcja w epizodzie.
  • Oblicz szacowane wartości Q.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

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())
Edytuj i uruchom kod