(Yet Another) Monte Carlo Tree Search
This is an implementation of Monte Carlo Tree Search (MCTS) in rust.
The features that potentially make this library a bit different from the many other MCTS libraries out there:
- Zero-dependency (all dependencies are optional)
- Pluggable RNG (default uses nanorand::WyRand)
- Multi-threaded
Usage
Add dependency
or in the Cargo.toml file
[]
= "0.1.0"
Running MCTS
- Implement GameState
- Call
run_with_durationorrun_with_iterationson the game state to calculate next MCTS move apply_moveon the game state and repeat
Example implementing Nim 21 variation
see examples/nim.rs
Run with cargo run --example nim or cargo run --release --example nim
Using a custom random number generator
The default RNG uses nanorand but if you
don't want that dependency and/or would like to use a different RNG it's just necessary to
implement RngProvider and Rng.
use *;
// Wrapper struct, in this case rand::StdRng
;
// Implement RngProvider to return an instance of CustomRng/StdRng
// Implement Rng for gen_range
Then to use this RNG:
let mcts = MCTS::default;
License
This project is licensed under the MIT License. See the LICENSE file for details.