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
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())