Skip to content

Commit

Permalink
Merge pull request #5 from georgemunyoro/taperedeval
Browse files Browse the repository at this point in the history
Proper time management
  • Loading branch information
georgemunyoro authored May 23, 2023
2 parents 46cee6d + 9b952ef commit cad9346
Showing 1 changed file with 44 additions and 18 deletions.
62 changes: 44 additions & 18 deletions src/search/evaluate.rs
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,48 @@ impl Evaluator {
};
}

/// Determines the time to spend on a move based on the time left for the side to move
/// as well as the increment.
fn set_move_time(&mut self, position: &mut Position) {
if self.options.movetime.is_some() || self.options.infinite {
return;
}
let time_left_for_side = if position.turn == Color::White {
match self.options.wtime {
Some(wtime) => wtime,
None => 0,
}
} else {
match self.options.btime {
Some(btime) => btime,
None => 0,
}
};
let increment = if position.turn == Color::White {
match self.options.winc {
Some(winc) => winc,
None => 0,
}
} else {
match self.options.binc {
Some(binc) => binc,
None => 0,
}
};

let time_for_move = time_left_for_side / 45 + (increment / 2);

if time_for_move >= time_left_for_side {
self.options.movetime = Some(time_left_for_side - 500);
} else {
if time_for_move <= 0 {
self.options.movetime = Some(200);
return;
}
self.options.movetime = Some(time_for_move);
}
}

pub fn get_best_move(
&mut self,
position: &mut Position,
Expand All @@ -86,6 +128,8 @@ impl Evaluator {
};

self.options = options;
self.set_move_time(position);

self.running = running;
self.tt = transposition_table;
self.started_at = Evaluator::_get_time_ms();
Expand Down Expand Up @@ -441,24 +485,6 @@ impl Evaluator {
None => {}
}

match self.options.wtime {
Some(wtime) => {
if elapsed >= wtime as u128 {
return false;
}
}
None => {}
}

match self.options.btime {
Some(btime) => {
if elapsed >= btime as u128 {
return false;
}
}
None => {}
}

return true;
}

Expand Down

0 comments on commit cad9346

Please sign in to comment.