diff options
-rw-r--r-- | Cargo.toml | 3 | ||||
-rw-r--r-- | src/strategy/monte_carlo.rs | 6 | ||||
-rw-r--r-- | tests/monte_carlo_test.rs | 2 |
3 files changed, 9 insertions, 2 deletions
@@ -30,8 +30,9 @@ discard-poor-performers = [] heuristic-random = ["lazy_static"] full-monte-carlo-tree = [] static-opening = [] +weighted-win-ratio = [] -default = ["energy-cutoff", "discard-poor-performers", "heuristic-random", "static-opening", "debug-decisions"] +default = ["energy-cutoff", "discard-poor-performers", "heuristic-random", "static-opening", "weighted-win-ratio", "debug-decisions"] [profile.release] debug = true
\ No newline at end of file diff --git a/src/strategy/monte_carlo.rs b/src/strategy/monte_carlo.rs index 039c861..978f8f1 100644 --- a/src/strategy/monte_carlo.rs +++ b/src/strategy/monte_carlo.rs @@ -398,10 +398,16 @@ impl CommandScore { self.next_seed = next_seed; } + #[cfg(feature = "weighted-win-ratio")] fn win_ratio(&self) -> i32 { (self.victory_score - self.defeat_score) * 10000 / (self.attempts as i32) } + #[cfg(not(feature = "weighted-win-ratio"))] + fn win_ratio(&self) -> i32 { + (self.victories as i32 - self.defeats as i32) * 10000 / (self.attempts as i32) + } + fn init_command_scores(state: &BitwiseGameState) -> Vec<CommandScore> { let unoccupied_cells_count = state.player.unoccupied_cell_count(); let unoccupied_cells = (0..unoccupied_cells_count) diff --git a/tests/monte_carlo_test.rs b/tests/monte_carlo_test.rs index 470c92d..cec3256 100644 --- a/tests/monte_carlo_test.rs +++ b/tests/monte_carlo_test.rs @@ -27,7 +27,7 @@ fn it_does_a_normal_tree_serach_turn_successfully() { Ok(ok) => ok, Err(error) => panic!("Error while parsing JSON file: {}", error) }; - let max_time = Duration::milliseconds(20000); + let max_time = Duration::milliseconds(200); strategy::monte_carlo_tree::choose_move(&state, start_time, max_time); assert!(start_time.to(PreciseTime::now()) < max_time + Duration::milliseconds(50)) |