References¶
What reinfors builds on. Legal redistribution notices live separately in the
repository's THIRD-PARTY-NOTICES.
Algorithms¶
Per-algorithm sources are maintained in one place — the
algorithms catalogue, generated from rf.catalog
(each entry's Sources line covers the base algorithm and the implemented
variants: CFR+ and external-sampling MCCFR for rf.solvers.Cfr, Deep CFR for
rf.solvers.DeepCfr, decoupled UCT for simultaneous-move search, Bootstrapped
DQN for the multi-head design). SelectiveExpectimax is in-house design:
uncertainty-guided selective expansion over classical expectimax search.
Encodings and layouts¶
- OpenSpiel chess observation (
rf.encoders.OpenSpielChess()) — layout pinned to OpenSpiel'schess.cc::ObservationTensorat commitd15d49f8for cross-stack comparability; Lanctot et al., "OpenSpiel: A Framework for Reinforcement Learning in Games", 2019. - AZ-119 chess planes (
rf.encoders.AlphaZeroChess()) — the 119-plane input of Silver et al., "A general reinforcement learning algorithm that masters chess, shogi, and Go through self-play", Science, 2018, with documented deviations (absolute frame, side-to-move plane, newest-first history). - Backgammon encoding (
rf.encoders.Backgammon()) — Tesauro, "Temporal Difference Learning and TD-Gammon", Communications of the ACM, 1995.
Validation and comparison¶
- Mandatory internal suites (rules, legality, codec round-trips) run in CI unconditionally, alongside targeted no-panic boundary sweeps.
- Optional OpenSpiel oracles: the poker suites compare against
pyspielwhen it is installed (pytest.importorskip— a development-time oracle, not a CI gate). The pinned chess observation layout is used by the companion reinfors-benchmarks repository for its matched cross-stack experiments; the benchmark protocol and results live there.