Oppai-rs (acronym for "OPen Points Artificial Intelligence") is an artificial intelligence for the game of points.
You can play with it using iced module.
- Two algorithms for searching the optimal move: UCT, Minimax.
- Two implementations of Minimax search: PVS (a.k.a. NegaScout), MTD(f).
- UCT tree reuse between moves.
- Trajectories for moves pruning in the Minimax search tree.
- Lock-free multi-threading for both Minimax and UCT.
- Transposition table using Zobrist hashing for Minimax.
- DFA-based patterns searching.
- DSU to optimize capturing (behind a feature flag since it's good only for UCT).
- Time-based and complexity-based calculations.
- Generic ladders solver.
Once you have rust installed on your system, compile with:
cargo build --release
Run with:
cargo run --release
or with:
./target/release/oppai-rs
If you are running the produced binary on the same CPU it was built on you might
want to specify target-cpu
flag:
RUSTFLAGS="-C target-cpu=native" \
cargo build --release
Depending on your hardware it might increase the performance by up to 10%.
You can run test with:
cargo test
If you want to see log output during tests running you can use RUST_LOG environment variable:
RUST_LOG=debug cargo test
Also if you have nightly rust you can run benchmarks with:
cargo bench --features bench
- Fill debuts database.
- Fill heuristics database.
- Use patterns for UCT random games (see link).
- Use patterns for Minimax best move prediction.
- Complex estimating function for Minimax (see link)
- Smart time control for UCT (see link).
- Smart time control for Minimax.
- Think on enemy's move.
- Forbid typical losing ladders.
- Split trajectories by groups for Minimax and solve them independently.
This project is licensed under AGPL version 3 or (at your option) any later version. See LICENSE.txt for details.
Copyright (C) 2015-2024 Kurnevsky Evgeny, Vasya Novikov