1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
//! Predefined policy for agent to play game. //! //! Policy represents algorithm that make choice in given situation. //! This module provides 5 predefined policies, AlphaZero policy, random policy, io policy, multi-policy and pure MCTS policy. //! //! - Policy : trait for playing game with `Agent`. //! - AlphaZero : implementation of policy [AlphaZero](https://arxiv.org/abs/1712.01815). //! - RandomPolicy : select possible position with randomness. //! - IoPolicy : read user input. //! - MultiPolicy : Black-White seperable policy, pass two different policies as initialize parameter. //! - DefaultPolicy : Pure Monte Carlo tree search implementation. //! //! # Examples //! ```rust //! # extern crate connect6; //! # use connect6::{agent::Agent, game::Game, policy::Policy}; //! struct ZeroPolicy {} //! impl Policy for ZeroPolicy { //! fn next(&mut self, game: &Game) -> Option<(usize, usize)> { //! Some((0, 0)) //! } //! } //! //! let mut policy = ZeroPolicy {}; //! let result = Agent::new(&mut policy).play(); //! assert!(result.is_err()); //! ``` pub use self::alphazero_policy::*; pub use self::default_policy::*; pub use self::io_policy::*; pub use self::multi_policy::*; pub use self::random_policy::*; pub use self::simulate::*; mod alphazero_policy; mod default_policy; mod io_policy; mod multi_policy; mod random_policy; mod simulate; use game::Game; /// trait for playing game with Agent. pub trait Policy { /// generate next selection fn next(&mut self, game: &Game) -> Option<(usize, usize)>; }