Spaces:
Runtime error
Runtime error
| import random | |
| from collections import defaultdict | |
| class RLAgent: | |
| def __init__(self, actions, alpha=0.1, gamma=1.0, epsilon=0.1, method='sarsa'): | |
| self.Q = defaultdict(lambda: {a: 0.0 for a in actions}) | |
| self.visits = defaultdict(int) | |
| self.alpha = alpha | |
| self.gamma = gamma | |
| self.epsilon = epsilon | |
| self.actions = actions | |
| self.method = method | |
| def choose_action(self, state): | |
| self.visits[state] += 1 | |
| if random.random() < self.epsilon: | |
| return random.choice(self.actions) | |
| return max(self.Q[state], key=self.Q[state].get) | |
| def update(self, s, a, r, s_, a_): | |
| predict = self.Q[s][a] | |
| if self.method == 'sarsa': | |
| target = r + self.gamma * self.Q[s_][a_] | |
| else: | |
| target = r + self.gamma * max(self.Q[s_].values()) | |
| self.Q[s][a] += self.alpha * (target - predict) |