Add RFP
This commit is contained in:
@@ -2,7 +2,7 @@ use anyhow::{bail, Result};
|
|||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
board::game::Game,
|
board::game::Game,
|
||||||
evaluation::{MATE_SCORE, MIN_SCORE},
|
evaluation::{pesto::pesto, MATE_SCORE, MIN_SCORE},
|
||||||
};
|
};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
@@ -54,6 +54,21 @@ pub fn negamax(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const RFP_DEPTH: u8 = 5;
|
||||||
|
const RFP_MARGIN: u8 = 75;
|
||||||
|
let eval = entry
|
||||||
|
.map(|entry| entry.score)
|
||||||
|
.unwrap_or_else(|| pesto().eval(game));
|
||||||
|
|
||||||
|
if !in_check
|
||||||
|
&& alpha == beta - 1
|
||||||
|
&& depth <= RFP_DEPTH
|
||||||
|
&& eval > beta
|
||||||
|
&& eval - (RFP_MARGIN * depth) as i16 > beta
|
||||||
|
{
|
||||||
|
return Ok(eval);
|
||||||
|
}
|
||||||
|
|
||||||
if plies != 0 && !in_check && depth >= 3 && do_nmp && game.board.non_pawn_materials() > 0 {
|
if plies != 0 && !in_check && depth >= 3 && do_nmp && game.board.non_pawn_materials() > 0 {
|
||||||
game.make_null_move();
|
game.make_null_move();
|
||||||
let score = -negamax(
|
let score = -negamax(
|
||||||
|
|||||||
Reference in New Issue
Block a user