|
@@ -5,8 +5,7 @@ use evaluate::*;
|
|
use log::info;
|
|
use log::info;
|
|
use rand::prelude::*;
|
|
use rand::prelude::*;
|
|
use std::collections::HashMap;
|
|
use std::collections::HashMap;
|
|
-use engine::HashEntry;
|
|
+use hash::{CacheEntry, Cache};
|
|
-use hash::*;
|
|
|
|
|
|
|
|
enum MoveUndo {
|
|
enum MoveUndo {
|
|
Default {
|
|
Default {
|
|
@@ -128,6 +127,7 @@ pub fn search(game: &Game, sc: &mut SearchControl, hash: &mut Cache, depth: i32)
|
|
return SearchResult::Cancelled(Some((chosen_mov.0, chosen_mov.1)));
|
|
return SearchResult::Cancelled(Some((chosen_mov.0, chosen_mov.1)));
|
|
}
|
|
}
|
|
else {
|
|
else {
|
|
|
|
+ hash.cache(game, CacheEntry::new_value(depth, chosen_mov.1));
|
|
return SearchResult::Finished(chosen_mov.0, chosen_mov.1);
|
|
return SearchResult::Finished(chosen_mov.0, chosen_mov.1);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -184,7 +184,7 @@ fn negamax(game: &Game, sc: &mut SearchControl, hash: &mut Cache, mut alpha: Pos
|
|
return (beta, false);
|
|
return (beta, false);
|
|
}
|
|
}
|
|
if val > alpha {
|
|
if val > alpha {
|
|
- alpha = (val as f64 * 0.95) as _;
|
|
+ alpha = val;//(val as f64 * 0.95) as _;
|
|
}
|
|
}
|
|
//info!(" -> negamaxed {} -> {}", mov.to_string(), depth - 1);
|
|
//info!(" -> negamaxed {} -> {}", mov.to_string(), depth - 1);
|
|
if val > best {
|
|
if val > best {
|
|
@@ -194,7 +194,7 @@ fn negamax(game: &Game, sc: &mut SearchControl, hash: &mut Cache, mut alpha: Pos
|
|
}
|
|
}
|
|
}
|
|
}
|
|
//info!("best alpha {}", best);
|
|
//info!("best alpha {}", best);
|
|
- return ((best as f64 * 0.99) as _, false);
|
|
+ return ((alpha as f64 * 0.99) as _, false);
|
|
}
|
|
}
|
|
|
|
|
|
fn quiescence_search(game: &Game, si: &mut SearchControl, mut alpha: PosValue, beta: PosValue, depth: i32) -> PosValue {
|
|
fn quiescence_search(game: &Game, si: &mut SearchControl, mut alpha: PosValue, beta: PosValue, depth: i32) -> PosValue {
|