Implementarea metodei Monte Carlo cu vizitare completă
Metoda Monte Carlo cu vizitare completă (Every-Visit) diferă de varianta cu prima vizitare (First-Visit) prin faptul că actualizează valorile de fiecare dată când apare o pereche stare-acțiune, nu doar la prima întâlnire. Deși această abordare oferă o evaluare mai cuprinzătoare a politicii, utilizând toate informațiile disponibile din episoade, poate introduce o varianță mai mare în estimările valorilor, deoarece include toate eșantioanele, indiferent de momentul în care apar în episod. Sarcina ta este să completezi implementarea funcției every_visit_mc(), care estimează funcția de valoare a acțiunii Q pe parcursul a num_episodes episoade.
Dicționarele returns_sum și returns_count, cu perechi stare-acțiune ca chei, au fost inițializate și preîncărcate pentru tine, împreună cu funcția generate_episode().
Acest exercițiu face parte din cursul
Reinforcement Learning cu Gymnasium în Python
Instrucțiuni pentru exercițiu
- Generează un episod folosind funcția
generate_episode(). - Actualizează retururile și numărul de apariții ale acestora pentru fiecare pereche stare-acțiune din cadrul unui episod.
- Calculează valorile Q estimate.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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())