Files
lab_reinforcement_learning/runs/snake/config.toml
Chris Proctor edbf76071e Migrate snake example to observation_function and refresh its training run
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.
2026-06-24 07:50:41 -04:00

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