Einen Multi-Armed Bandit lösen
In dieser Übung implementierst du eine Epsilon-greedy-Strategie, um ein 10-Arm-Bandit-Problem zu lösen. Dabei nimmt der Epsilon-Wert im Zeitverlauf ab, um von Exploration zu Exploitation zu wechseln.
epsilon, min_epsilon und epsilon_decay sind bereits für dich definiert. Die Funktion epsilon_greedy() wurde ebenfalls importiert.
Diese Übung ist Teil des Kurses
Reinforcement Learning mit Gymnasium in Python
Anleitung zur Übung
- Verwende die Funktion
create_multi_armed_bandit(), um ein 10-Arm-Bandit-Problem zu initialisieren. Sie gibttrue_bandit_probs,counts,values,rewardsundselected_armszurück. - Wähle mit der Funktion
epsilon_greedy()einen Arm zum Ziehen aus. - Simuliere die
rewardauf Basis der wahren Bandit-Wahrscheinlichkeiten. - Verringere den Wert von
epsilon(Decay), und stelle sicher, dass er nicht unter den Wert vonmin_epsilonfällt.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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 = ____