Rozwiązywanie problemu wielorękiego bandyty
W tym ćwiczeniu zaimplementujesz strategię epsilon-zachłanną (epsilon-greedy), aby rozwiązać problem 10-rękiego bandyty. Wartość epsilon będzie maleć z czasem, stopniowo przesuwając balans od eksploracji ku eksploatacji.
Zmienne epsilon, min_epsilon oraz epsilon_decay zostały już wcześniej zdefiniowane. Funkcja epsilon_greedy() jest również zaimportowana.
To ćwiczenie jest częścią kursu
Uczenie przez wzmacnianie z Gymnasium w Pythonie
Instrukcje do ćwiczenia
- Użyj funkcji
create_multi_armed_bandit(), aby zainicjować problem 10-rękiego bandyty – funkcja zwrócitrue_bandit_probs,counts,values,rewardsorazselected_arms. - Wybierz ramię do pociągnięcia, korzystając z funkcji
epsilon_greedy(). - Zasymuluj nagrodę (
reward) na podstawie prawdziwych prawdopodobieństw bandyty. - Zmniejsz wartość
epsilon, dbając o to, aby nie spadła poniżej wartościmin_epsilon.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# Create a 10-armed bandit
true_bandit_probs, counts, values, rewards, selected_arms = ____
for i in range(n_iterations):
# Select an arm
arm = ____
# Compute the received reward
reward = ____
rewards[i] = reward
selected_arms[i] = arm
counts[arm] += 1
values[arm] += (reward - values[arm]) / counts[arm]
# Update epsilon
epsilon = ____