mirror of
https://github.com/HChaZZY/Stockfish.git
synced 2025-12-20 00:56:39 +08:00
King safety: retire rook contact check
Merged from Glaurung 2.2 Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
@@ -64,8 +64,8 @@ namespace {
|
|||||||
const int WeightPawnStructureEndgameInternal = 0x100;
|
const int WeightPawnStructureEndgameInternal = 0x100;
|
||||||
const int WeightPassedPawnsMidgameInternal = 0x100;
|
const int WeightPassedPawnsMidgameInternal = 0x100;
|
||||||
const int WeightPassedPawnsEndgameInternal = 0x100;
|
const int WeightPassedPawnsEndgameInternal = 0x100;
|
||||||
const int WeightKingSafetyInternal = 0x100;
|
const int WeightKingSafetyInternal = 0x110;
|
||||||
const int WeightKingOppSafetyInternal = 0x100;
|
const int WeightKingOppSafetyInternal = 0x110;
|
||||||
const int WeightSpaceInternal = 0x30;
|
const int WeightSpaceInternal = 0x30;
|
||||||
|
|
||||||
// Visually better to define tables constants
|
// Visually better to define tables constants
|
||||||
@@ -230,8 +230,7 @@ namespace {
|
|||||||
const int KnightAttackWeight = 2;
|
const int KnightAttackWeight = 2;
|
||||||
|
|
||||||
// Bonuses for safe checks for each piece type.
|
// Bonuses for safe checks for each piece type.
|
||||||
int QueenContactCheckBonus = 4;
|
int QueenContactCheckBonus = 3;
|
||||||
int RookContactCheckBonus = 2;
|
|
||||||
int QueenCheckBonus = 2;
|
int QueenCheckBonus = 2;
|
||||||
int RookCheckBonus = 1;
|
int RookCheckBonus = 1;
|
||||||
int BishopCheckBonus = 1;
|
int BishopCheckBonus = 1;
|
||||||
@@ -820,25 +819,8 @@ namespace {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Analyse safe rook contact checks:
|
|
||||||
if (RookContactCheckBonus)
|
|
||||||
{
|
|
||||||
b = undefended & ei.attacked_by(them, ROOK) & ~p.pieces_of_color(them);
|
|
||||||
if (b)
|
|
||||||
{
|
|
||||||
Bitboard attackedByOthers =
|
|
||||||
ei.attacked_by(them, PAWN) | ei.attacked_by(them, KNIGHT)
|
|
||||||
| ei.attacked_by(them, BISHOP) | ei.attacked_by(them, QUEEN);
|
|
||||||
|
|
||||||
b &= attackedByOthers;
|
// Analyse safe distance checks
|
||||||
if (b)
|
|
||||||
{
|
|
||||||
int count = count_1s_max_15(b);
|
|
||||||
attackUnits += (RookContactCheckBonus * count * (sente? 2 : 1));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Analyse safe distance checks:
|
|
||||||
if (QueenCheckBonus > 0 || RookCheckBonus > 0)
|
if (QueenCheckBonus > 0 || RookCheckBonus > 0)
|
||||||
{
|
{
|
||||||
b = p.piece_attacks<ROOK>(s) & ~p.pieces_of_color(them) & ~ei.attacked_by(us);
|
b = p.piece_attacks<ROOK>(s) & ~p.pieces_of_color(them) & ~ei.attacked_by(us);
|
||||||
@@ -1219,7 +1201,6 @@ namespace {
|
|||||||
void init_safety() {
|
void init_safety() {
|
||||||
|
|
||||||
QueenContactCheckBonus = get_option_value_int("Queen Contact Check Bonus");
|
QueenContactCheckBonus = get_option_value_int("Queen Contact Check Bonus");
|
||||||
RookContactCheckBonus = get_option_value_int("Rook Contact Check Bonus");
|
|
||||||
QueenCheckBonus = get_option_value_int("Queen Check Bonus");
|
QueenCheckBonus = get_option_value_int("Queen Check Bonus");
|
||||||
RookCheckBonus = get_option_value_int("Rook Check Bonus");
|
RookCheckBonus = get_option_value_int("Rook Check Bonus");
|
||||||
BishopCheckBonus = get_option_value_int("Bishop Check Bonus");
|
BishopCheckBonus = get_option_value_int("Bishop Check Bonus");
|
||||||
|
|||||||
@@ -97,8 +97,7 @@ namespace {
|
|||||||
o.push_back(Option("King Safety X Intercept", 0, 0, 20));
|
o.push_back(Option("King Safety X Intercept", 0, 0, 20));
|
||||||
o.push_back(Option("King Safety Max Slope", 30, 10, 100));
|
o.push_back(Option("King Safety Max Slope", 30, 10, 100));
|
||||||
o.push_back(Option("King Safety Max Value", 500, 100, 1000));
|
o.push_back(Option("King Safety Max Value", 500, 100, 1000));
|
||||||
o.push_back(Option("Queen Contact Check Bonus", 4, 0, 8));
|
o.push_back(Option("Queen Contact Check Bonus", 3, 0, 8));
|
||||||
o.push_back(Option("Rook Contact Check Bonus", 2, 0, 4));
|
|
||||||
o.push_back(Option("Queen Check Bonus", 2, 0, 4));
|
o.push_back(Option("Queen Check Bonus", 2, 0, 4));
|
||||||
o.push_back(Option("Rook Check Bonus", 1, 0, 4));
|
o.push_back(Option("Rook Check Bonus", 1, 0, 4));
|
||||||
o.push_back(Option("Bishop Check Bonus", 1, 0, 4));
|
o.push_back(Option("Bishop Check Bonus", 1, 0, 4));
|
||||||
|
|||||||
Reference in New Issue
Block a user