X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fevaluate.cpp;h=1c27b29d8075728fe77dc56a2f1c805e728836f8;hp=e4c2bbcb6365a9b5e5744960a4eaa689ade2312d;hb=25b492ab586bcb3795a4bbb7521a8e5ee20d6708;hpb=4c9b42316112efc7383c27570102d5d528d6af0a diff --git a/src/evaluate.cpp b/src/evaluate.cpp index e4c2bbcb..1c27b29d 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -91,7 +91,7 @@ namespace { // Evaluation weights, indexed by evaluation term enum { Mobility, PawnStructure, PassedPawns, Space, KingSafety }; const struct Weight { int mg, eg; } Weights[] = { - {289, 344}, {233, 201}, {221, 273}, {46, 0}, {318, 0} + {289, 344}, {233, 201}, {221, 273}, {46, 0}, {321, 0} }; #define V(v) Value(v) @@ -186,15 +186,15 @@ namespace { // index to KingDanger[]. // // KingAttackWeights[PieceType] contains king attack weights by piece type - const int KingAttackWeights[] = { 0, 0, 2, 2, 3, 5 }; + const int KingAttackWeights[] = { 0, 0, 6, 2, 5, 5 }; // Bonuses for enemy's safe checks - const int QueenContactCheck = 24; - const int RookContactCheck = 16; - const int QueenCheck = 12; - const int RookCheck = 8; - const int BishopCheck = 2; - const int KnightCheck = 3; + const int QueenContactCheck = 92; + const int RookContactCheck = 68; + const int QueenCheck = 50; + const int RookCheck = 36; + const int BishopCheck = 7; + const int KnightCheck = 14; // KingDanger[attackUnits] contains the actual king danger weighted // scores, indexed by a calculated integer number. @@ -411,11 +411,12 @@ namespace { // number and types of the enemy's attacking pieces, the number of // attacked and undefended squares around our king and the quality of // the pawn shelter (current 'score' value). - attackUnits = std::min(20, (ei.kingAttackersCount[Them] * ei.kingAttackersWeight[Them]) / 2) - + 3 * (ei.kingAdjacentZoneAttacksCount[Them] + popcount(undefended)) - + 2 * (ei.pinnedPieces[Us] != 0) - - mg_value(score) / 32 - - !pos.count(Them) * 15; + attackUnits = std::min(77, ei.kingAttackersCount[Them] * ei.kingAttackersWeight[Them]) + + 10 * ei.kingAdjacentZoneAttacksCount[Them] + + 19 * popcount(undefended) + + 9 * (ei.pinnedPieces[Us] != 0) + - mg_value(score) * 63 / 512 + - !pos.count(Them) * 60; // Analyse the enemy's safe queen contact checks. Firstly, find the // undefended squares around the king reachable by the enemy queen... @@ -475,7 +476,7 @@ namespace { // Finally, extract the king danger score from the KingDanger[] // array and subtract the score from evaluation. - score -= KingDanger[std::max(std::min(attackUnits, 99), 0)]; + score -= KingDanger[std::max(std::min(attackUnits / 4, 99), 0)]; } if (Trace)