Zacznij terazZacznij za darmo

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

Zobacz kurs

Instrukcje do ćwiczenia

  • Użyj funkcji create_multi_armed_bandit(), aby zainicjować problem 10-rękiego bandyty – funkcja zwróci true_bandit_probs, counts, values, rewards oraz selected_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ści min_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 = ____
Edytuj i uruchom kod