通过代码学 Sutton 强化学习:SARSA、Q-Learning 时序差分算法训练 CartPole( 三 )


class ExpectedSarsaAgent(CartPoleAbstractAgent): def update_q(self, s: State, a: Action, r, s_next: State, a_next: Action): self.q[s][a] = self.q[s][a] + self.lr * (r + self.discount * np.dot(self.pi[s_next], self.q[s_next]) - self.q[s][a]) # update pi[s] best_a = np.random.choice(np.where(self.q[s] == max(self.q[s]))[0]) n_actions = self.env.action_space.n self.pi[s][:] = self.epsilon / n_actions self.pi[s][best_a] = 1 - (n_actions - 1) * (self.epsilon / n_actions)同样的 , Expected SARSA 1000次迭代也能比较好的学到最佳policy 。
通过代码学 Sutton 强化学习:SARSA、Q-Learning 时序差分算法训练 CartPole文章插图
通过代码学 Sutton 强化学习:SARSA、Q-Learning 时序差分算法训练 CartPole文章插图
通过代码学 Sutton 强化学习:SARSA、Q-Learning 时序差分算法训练 CartPole文章插图
点分享
通过代码学 Sutton 强化学习:SARSA、Q-Learning 时序差分算法训练 CartPole文章插图
通过代码学 Sutton 强化学习:SARSA、Q-Learning 时序差分算法训练 CartPole文章插图