Merge Joona Kiiski evaluation tweaks
authorMarco Costalba <mcostalba@gmail.com>
Fri, 13 Mar 2009 10:20:24 +0000 (11:20 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Sat, 14 Mar 2009 11:55:14 +0000 (12:55 +0100)
Merge tewaks to many evaluation parameters
by Joona Kiiski.

After test they seem good!

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
src/evaluate.cpp
src/material.cpp
src/position.h
src/value.h

index 85128c4f99b1091f11bf9c04a6e7334699f8d01d..c397671cb408d53293b76967260b2d292591f6f1 100644 (file)
@@ -58,15 +58,17 @@ namespace {
   // weights read from UCI parameters.  The purpose is to be able to change
   // the evaluation weights while keeping the default values of the UCI
   // parameters at 100, which looks prettier.
-  const int WeightMobilityMidgameInternal      = 0x100;
-  const int WeightMobilityEndgameInternal      = 0x100;
-  const int WeightPawnStructureMidgameInternal = 0x100;
-  const int WeightPawnStructureEndgameInternal = 0x100;
-  const int WeightPassedPawnsMidgameInternal   = 0x100;
-  const int WeightPassedPawnsEndgameInternal   = 0x100;
-  const int WeightKingSafetyInternal           = 0x110;
-  const int WeightKingOppSafetyInternal        = 0x110;
-  const int WeightSpaceInternal                = 0x30;
+  //
+  // Values modified by Joona Kiiski
+  const int WeightMobilityMidgameInternal      = 0x0FA;
+  const int WeightMobilityEndgameInternal      = 0x10A;
+  const int WeightPawnStructureMidgameInternal = 0x0EC;
+  const int WeightPawnStructureEndgameInternal = 0x0CD;
+  const int WeightPassedPawnsMidgameInternal   = 0x108;
+  const int WeightPassedPawnsEndgameInternal   = 0x109;
+  const int WeightKingSafetyInternal           = 0x0F7;
+  const int WeightKingOppSafetyInternal        = 0x101;
+  const int WeightSpaceInternal                = 0x02F;
 
   // Visually better to define tables constants
   typedef Value V;
@@ -167,18 +169,19 @@ namespace {
     V(0), V(0), V(0), V(0), V(0), V(0), V(0), V(0)  // 8
   };
 
-  // Bonus for unstoppable passed pawns:
+  // Bonus for unstoppable passed pawns
   const Value UnstoppablePawnValue = Value(0x500);
 
-  // Rooks and queens on the 7th rank:
-  const Value MidgameRookOn7thBonus  = Value(50);
-  const Value EndgameRookOn7thBonus  = Value(100);
-  const Value MidgameQueenOn7thBonus = Value(25);
-  const Value EndgameQueenOn7thBonus = Value(50);
+  // Rooks and queens on the 7th rank
+  const Value MidgameRookOn7thBonus  = Value(47);
+  const Value EndgameRookOn7thBonus  = Value(98);
+  const Value MidgameQueenOn7thBonus = Value(27);
+  const Value EndgameQueenOn7thBonus = Value(54);
 
-  // Rooks on open files:
-  const Value RookOpenFileBonus     = Value(40);
-  const Value RookHalfOpenFileBonus = Value(20);
+
+  // Rooks on open files
+  const Value RookOpenFileBonus = Value(43);
+  const Value RookHalfOpenFileBonus = Value(19);
 
   // Penalty for rooks trapped inside a friendly king which has lost the
   // right to castle:
index 7dc92e80bceefb74d7a45ee7c639737aaf3044b4..9195880af4ccf5ffadd1abba7a226567007013b0 100644 (file)
@@ -36,8 +36,8 @@
 
 namespace {
 
-  const Value BishopPairMidgameBonus = Value(100);
-  const Value BishopPairEndgameBonus = Value(100);
+  const Value BishopPairMidgameBonus = Value(109);
+  const Value BishopPairEndgameBonus = Value(97);
 
   Key KNNKMaterialKey, KKNNMaterialKey;
 
index 173de0c081c59396996b1d6b1d244e38bc1747d0..510784e593e8e1d5ab811d98177f295c6ada56e5 100644 (file)
@@ -650,15 +650,9 @@ inline Value Position::non_pawn_material(Color c) const {
 
 inline Phase Position::game_phase() const {
 
-  // The purpose of the Value(325) terms below is to make sure the difference
-  // between MidgameLimit and EndgameLimit is a power of 2, which should make
-  // the division at the end of the function a bit faster.
-  static const Value MidgameLimit =  2 * QueenValueMidgame
-                                   + 2 * RookValueMidgame
-                                   + 6 * BishopValueMidgame
-                                   + Value(325);
-
-  static const Value EndgameLimit = 4 * RookValueMidgame - Value(325);
+  // Values modified by Joona Kiiski
+  static const Value MidgameLimit = Value(15713);
+  static const Value EndgameLimit = Value(4428);
 
   Value npm = non_pawn_material(WHITE) + non_pawn_material(BLACK);
 
index 29fcf5fb99f153b9ea3a512cd1dfdd1fe1e84fd7..a3ddc00048408ff927d214169965b76f922c6b2d 100644 (file)
@@ -58,17 +58,19 @@ enum Value {
 /// Important: If the material values are changed, one must also
 /// adjust the piece square tables, and the method game_phase() in the
 /// Position class!
-
-const Value PawnValueMidgame = Value(0xCC);
-const Value PawnValueEndgame = Value(0x100);
-const Value KnightValueMidgame = Value(0x340);
-const Value KnightValueEndgame = Value(0x340);
-const Value BishopValueMidgame = Value(0x340);
-const Value BishopValueEndgame = Value(0x340);
-const Value RookValueMidgame = Value(0x505);
-const Value RookValueEndgame = Value(0x505);
-const Value QueenValueMidgame = Value(0xA00);
-const Value QueenValueEndgame = Value(0xA00);
+///
+/// Values modified by Joona Kiiski
+
+const Value PawnValueMidgame   = Value(0x0CC);
+const Value PawnValueEndgame   = Value(0x101);
+const Value KnightValueMidgame = Value(0x332);
+const Value KnightValueEndgame = Value(0x34E);
+const Value BishopValueMidgame = Value(0x345);
+const Value BishopValueEndgame = Value(0x356);
+const Value RookValueMidgame   = Value(0x4F8);
+const Value RookValueEndgame   = Value(0x500);
+const Value QueenValueMidgame  = Value(0x9D5);
+const Value QueenValueEndgame  = Value(0x9FB);
 
 const Value PieceValueMidgame[17] = {
   Value(0),
@@ -92,8 +94,8 @@ const Value PieceValueEndgame[17] = {
 
 /// Bonus for having the side to move
 
-const Value TempoValueMidgame = Value(50);
-const Value TempoValueEndgame = Value(20);
+const Value TempoValueMidgame = Value(48);
+const Value TempoValueEndgame = Value(21);
 
 
 ////