()
| 80 | |
| 81 | |
| 82 | def main(): |
| 83 | running_reward = 10 |
| 84 | for i_episode in count(1): |
| 85 | state, _ = env.reset() |
| 86 | ep_reward = 0 |
| 87 | for t in range(1, 10000): # Don't infinite loop while learning |
| 88 | action = select_action(state) |
| 89 | state, reward, terminated, truncated, _ = env.step(action) |
| 90 | if args.render: |
| 91 | env.render() |
| 92 | policy.rewards.append(reward) |
| 93 | ep_reward += reward |
| 94 | if terminated or truncated: |
| 95 | break |
| 96 | |
| 97 | running_reward = 0.05 * ep_reward + (1 - 0.05) * running_reward |
| 98 | finish_episode() |
| 99 | if i_episode % args.log_interval == 0: |
| 100 | print(f'Episode {i_episode}\tLast reward: {ep_reward:.2f}\tAverage reward: {running_reward:.2f}') |
| 101 | if running_reward > env.spec.reward_threshold: |
| 102 | print(f"Solved! Running reward is now {running_reward} and the last episode runs to {t} time steps!") |
| 103 | break |
| 104 | |
| 105 | |
| 106 | if __name__ == '__main__': |
no test coverage detected