From 90a7c7d34def7e5f92f2cd521fdc014e0cbd9906 Mon Sep 17 00:00:00 2001 From: Justin Worthe Date: Thu, 6 Sep 2018 21:51:50 +0200 Subject: Added benchmarking for number of explored nodes --- src/strategy/monte_carlo_tree.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/strategy') diff --git a/src/strategy/monte_carlo_tree.rs b/src/strategy/monte_carlo_tree.rs index 4efded8..7d688f2 100644 --- a/src/strategy/monte_carlo_tree.rs +++ b/src/strategy/monte_carlo_tree.rs @@ -66,6 +66,7 @@ impl NodeStats { fn node_with_highest_ucb<'a>(&'a mut self) -> &'a mut (Command, NodeStats) { debug_assert!(self.unexplored.is_empty()); + debug_assert!(self.explored.len() > 0); let total_attempts = self.explored.iter().map(|(_, n)| n.attempts).sum::(); let mut max_position = 0; @@ -102,6 +103,10 @@ impl NodeStats { fn add_draw(&mut self) { self.attempts += 1.; } + + fn count_explored(&self) -> usize { + 1 + self.explored.iter().map(|(_, n)| n.count_explored()).sum::() + } } pub fn choose_move(state: &BitwiseGameState, start_time: PreciseTime, max_time: Duration) -> Command { @@ -113,6 +118,11 @@ pub fn choose_move(state: &BitwiseGameState, start_time: PreciseTime, max_time: tree_search(&state, &mut root, &mut rng); } + #[cfg(feature = "benchmarking")] + { + println!("Explored nodes: {}", root.count_explored()); + } + let (command, _) = root.node_with_highest_ucb(); command.clone() } -- cgit v1.2.3