The egocentric/egocentric_player/egocentric_radius flags were removed from retro_gamer in favor of an explicit observation_function. snake_observation.py reproduces the old egocentric+board+extras behavior by calling egocentric_board/encode_board/encode_state directly, and runs/snake/config.toml now points at it. That config change made the prior 12,000-episode checkpoint history incompatible (retro_gamer's checkpoint compatibility checker can't verify a new observation_function is behaviorally equivalent to the old flags, so it conservatively refuses to resume), so the old checkpoints were deleted and a fresh 20,000-episode run was recorded. Track only the four checkpoints the lab actually references (ep_1300, ep_2300, ep_4000, ep_20000) instead of all 200, and update .gitignore so future student runs of runs/snake aren't committed by default. snake_training.md's Q5 training-curve table and Q6 checkpoint episodes are updated to match the real numbers from this run.
54 lines
806 B
TOML
54 lines
806 B
TOML
[game]
|
|
module = "retro.examples.snake"
|
|
|
|
[metadata]
|
|
actions = [
|
|
"KEY_RIGHT",
|
|
"KEY_UP",
|
|
"KEY_LEFT",
|
|
"KEY_DOWN",
|
|
]
|
|
reward = "reward"
|
|
extras_size = 2
|
|
board_size = [
|
|
17,
|
|
17,
|
|
]
|
|
character_set = [
|
|
"@",
|
|
"*",
|
|
">",
|
|
"<",
|
|
"^",
|
|
"v",
|
|
]
|
|
observation_function = "snake_observation:egocentric_observation"
|
|
|
|
[preprocessing]
|
|
spatial = false
|
|
board = true
|
|
observe_state = []
|
|
|
|
[model]
|
|
hidden_sizes = [
|
|
128,
|
|
64,
|
|
]
|
|
|
|
[training]
|
|
learning_rate = 0.0001
|
|
learning_rate_decay = 0.9999
|
|
gamma = 0.99
|
|
epsilon = 1.0
|
|
epsilon_decay = 0.9997
|
|
epsilon_min = 0.05
|
|
batch_size = 64
|
|
memory_capacity = 50000
|
|
target_update_freq = 500
|
|
train_every = 4
|
|
training_episodes = 20000
|
|
prioritize_experiences = true
|
|
exploration_turns = 200
|
|
unknown_character_strategy = "ignore"
|
|
max_turns_per_episode = 2000
|