Lösa ett multi-armed bandit-problem
I den här övningen implementerar du en epsilon-girig strategi för att lösa ett 10-armat bandit-problem, där epsilon-värdet minskar över tid för att skifta fokus från utforskning till utnyttjande.
epsilon, min_epsilon och epsilon_decay är redan fördefinierade. Funktionen epsilon_greedy() har också importerats.
Den här övningen är en del av kursen
Reinforcement Learning med Gymnasium i Python
Övningsinstruktioner
- Använd funktionen
create_multi_armed_bandit()för att initiera ett 10-armat bandit-problem. Den returnerartrue_bandit_probs,counts,values,rewardsochselected_arms. - Välj en arm att dra med hjälp av funktionen
epsilon_greedy(). - Simulera
rewardbaserat på de sanna bandit-sannolikheterna. - Minska
epsilon-värdet och se till att det inte sjunker undermin_epsilon-värdet.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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 = ____