summaryrefslogtreecommitdiff
path: root/src/main.rs
Commit message (Collapse)AuthorAgeFilesLines
* refactor: Drop the neural command in favour of play's -S/-T weights filesDylan12 hours1-31/+1
| | | | | | | | -S and -T already accept a weights file, so the neural subcommand was only a shorthand for one of them. Update the README and CLAUDE.md to show the play form instead. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: Multi-threaded training; play matches every 10 generationsDylan18 hours1-1/+5
| | | | | | | | | | | | Gradients and losses are computed on rayon's pool in fixed-size chunks summed in order, so the weights are the same on any number of threads. Self-play uses the same pool, and the output shows the training time. The matches against the earlier network and ClaudePlayer now run only every --match-every generations (default 10), against the generation that last played them, read back from its saved file. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: Draw by threefold repetitionDylan18 hours1-3/+6
| | | | | | | | | | A position coming up for the third time with the same side to move ends the game as a draw, in the TUI and in training self-play. Players now get the game's earlier boards in pick_move, and the search scores the first repetition on its path as a draw, so a side that is ahead avoids one and a side that is behind seeks one. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: Parse the command line with clapDylan19 hours1-44/+189
| | | | | | | | Players are now chosen with --sheep/-S and --tiger/-T (human, claude or a weights file) and --time/-t, instead of by editing main.rs. Every training setting is a train option, and --help covers all commands. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: Resume training from any weights; balance training by outcomeDylan41 hours1-2/+11
| | | | | | | | | | | | - train --from <weights> starts from any saved network; without it, training still carries on from the out dir's newest generation - Each epoch takes as many positions from sheep-win games as from tiger-win games (Config::balance_outcomes, on by default) - Training output shows the error on tiger-win and sheep-win positions separately, before and after training - Fix a broken sentence in CLAUDE.md's cache description Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: Neural network opponent trained by self-playDylan5 days1-10/+49
| | | | | | | | | | | | | - NeuralPlayer: a MinimaxPlayer that scores positions with a small MLP (network.rs, hand-written backprop and Adam, no new dependencies) - train subcommand: self-play with TD(lambda) targets, cut at random exploration moves so sheep blunders don't bias the net towards tigers - neural subcommand: play against a trained network - evaluate now gets the side to move - Board symmetries; the search cache keys by the canonical board, which halves the depth-9 bench time with identical moves and scores Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: OptimisationDylan2026-10-231-1/+11
| | | | Added benchmarking capabilities
* feat: More improvements to UIDylan2026-10-231-2/+1
|
* feat: Improvements to UIDylan2026-10-221-3/+9
| | | | Now uses ratatui
* feat: Initial commitDylan2026-10-191-0/+18
What works: - Minimax search - With a simple player claude designed - Manual player - Move generation - Board display What needs improvement: - Manual player - Game coordinator - Draw checking - Nix setup