Add TT lookups in quiescence, move TT inside Game, remove redundant occupancy and time limit functions
This commit is contained in:
@@ -6,21 +6,19 @@ use crate::{
|
||||
|
||||
use super::{
|
||||
negamax,
|
||||
time::{time_limit_reached, TimeInfo},
|
||||
transposition_table::TranspositionTable,
|
||||
time::{soft_limit, TimeInfo},
|
||||
};
|
||||
|
||||
pub fn iterative_deepening(
|
||||
game: &mut Game,
|
||||
max_depth: u8,
|
||||
remaining_time: u128,
|
||||
tt: &mut TranspositionTable,
|
||||
) -> anyhow::Result<Option<Move>> {
|
||||
let (mut best_move, mut best_score) = (None, MIN_SCORE);
|
||||
let time = std::time::Instant::now();
|
||||
|
||||
for depth in 1..=max_depth {
|
||||
if time_limit_reached(&time, remaining_time, best_score) {
|
||||
if soft_limit(&time, remaining_time, best_score) {
|
||||
return Ok(best_move);
|
||||
}
|
||||
|
||||
@@ -31,7 +29,6 @@ pub fn iterative_deepening(
|
||||
depth,
|
||||
0,
|
||||
&TimeInfo::new(time, remaining_time),
|
||||
tt,
|
||||
);
|
||||
|
||||
if let Ok(search_result) = search_result {
|
||||
@@ -44,6 +41,12 @@ pub fn iterative_deepening(
|
||||
}
|
||||
}
|
||||
|
||||
// tt.lookup(game.hash).map(|entry| {
|
||||
// if entry.mv.is_some() {
|
||||
// best_move = entry.mv;
|
||||
// }
|
||||
// });
|
||||
|
||||
Ok(best_move)
|
||||
}
|
||||
|
||||
@@ -52,10 +55,7 @@ mod tests {
|
||||
use crate::{
|
||||
board::fen::from_fen,
|
||||
movegen::attack_generator::init_attacks,
|
||||
search::{
|
||||
iterative_deepening, transposition_table::TranspositionTable, MAX_DEPTH, MAX_TT_SIZE,
|
||||
REMAINING_TIME_DEFAULT,
|
||||
},
|
||||
search::{iterative_deepening, MAX_DEPTH, REMAINING_TIME_DEFAULT},
|
||||
};
|
||||
|
||||
const FEN: &str = "1r2k2r/2P1pq1p/2npb3/1p3ppP/p3P3/P2B1Q2/1P1PNPP1/R3K2R w KQk g6 0 1";
|
||||
@@ -64,15 +64,9 @@ mod tests {
|
||||
fn test_iterative_deepening() -> anyhow::Result<()> {
|
||||
init_attacks();
|
||||
let mut game = from_fen(FEN).unwrap();
|
||||
let mut tt = TranspositionTable::new(MAX_TT_SIZE);
|
||||
let time_now = std::time::Instant::now();
|
||||
|
||||
iterative_deepening::iterative_deepening(
|
||||
&mut game,
|
||||
MAX_DEPTH,
|
||||
REMAINING_TIME_DEFAULT,
|
||||
&mut tt,
|
||||
)?;
|
||||
iterative_deepening::iterative_deepening(&mut game, MAX_DEPTH, REMAINING_TIME_DEFAULT)?;
|
||||
|
||||
dbg!(time_now.elapsed());
|
||||
|
||||
|
||||
Reference in New Issue
Block a user