King Psqt Tuning
authorFauziAkram <fauzi.dabat@hotmail.com>
Wed, 8 Aug 2018 15:48:06 +0000 (17:48 +0200)
committerSt├ęphane Nicolet <cassio@free.fr>
Wed, 8 Aug 2018 15:49:16 +0000 (17:49 +0200)
After a session of tuning for King Psqt I got some new values, which was later
tweaked manually by me Fauzi, to result in an Elo-gain patch which seems to scale
pretty well:

STC: LLR: -2.96 (-2.94,2.94) [0.00,4.00]
Total: 100653 W: 22550 L: 22314 D: 55789 [Yellow patch]

LTC: LLR: 2.96 (-2.94,2.94) [0.00,4.00]
Total: 147079 W: 25584 L: 24947 D: 96548 [Green Patch]

Bench: 4669050

src/psqt.cpp
src/search.cpp

index e0f15c0..f29b9c4 100644 (file)
@@ -87,14 +87,14 @@ constexpr Score Bonus[][RANK_NB][int(FILE_NB) / 2] = {
    { S(-1,-74), S(-4,-55), S(-1,-43), S( 0,-30) }
   },
   { // King
-   { S(267,  0), S(320, 48), S(270, 75), S(195, 84) },
-   { S(264, 43), S(304, 92), S(238,143), S(180,132) },
-   { S(200, 83), S(245,138), S(176,167), S(110,165) },
-   { S(177,106), S(185,169), S(148,169), S(110,179) },
-   { S(149,108), S(177,163), S(115,200), S( 66,203) },
-   { S(118, 95), S(159,155), S( 84,176), S( 41,174) },
-   { S( 87, 50), S(128, 99), S( 63,122), S( 20,139) },
-   { S( 63,  9), S( 88, 55), S( 47, 80), S(  0, 90) }
+   { S(272,  0), S(325, 41), S(273, 80), S(190, 93) },
+   { S(277, 57), S(305, 98), S(241,138), S(183,131) },
+   { S(198, 86), S(253,138), S(168,165), S(120,173) },
+   { S(169,103), S(191,152), S(136,168), S(108,169) },
+   { S(145, 98), S(176,166), S(112,197), S(69, 194) },
+   { S(122, 87), S(159,164), S(85, 174), S(36, 189) },
+   { S(87,  40), S(120, 99), S(64, 128), S(25, 141) },
+   { S(64,   5), S(87,  60), S(49,  75), S(0,   75) }
   }
 };
 
index 990c412..28fbf25 100644 (file)
@@ -250,26 +250,29 @@ void MainThread::search() {
       Value minScore = this->rootMoves[0].score;
 
       // Find out minimum score and reset votes for moves which can be voted
-      for (Thread* th: Threads){
+      for (Thread* th: Threads)
+      {
           minScore = std::min(minScore, th->rootMoves[0].score);
           votes[th->rootMoves[0].pv[0]] = 0;
       }
 
       // Vote according to score and depth
       for (Thread* th : Threads)
-          votes[th->rootMoves[0].pv[0]] +=  int(th->rootMoves[0].score - minScore)  + int(th->completedDepth);
+          votes[th->rootMoves[0].pv[0]] +=  int(th->rootMoves[0].score - minScore)  
+                                          + int(th->completedDepth);
 
       // Select best thread
       int bestVote = votes[this->rootMoves[0].pv[0]];
-      for (Thread* th : Threads){
-          if (votes[th->rootMoves[0].pv[0]] > bestVote){
-            bestVote = votes[th->rootMoves[0].pv[0]];
-            bestThread = th;
+      for (Thread* th : Threads)
+      {
+          if (votes[th->rootMoves[0].pv[0]] > bestVote)
+          {
+              bestVote = votes[th->rootMoves[0].pv[0]];
+              bestThread = th;
           }
       }
   }
 
-
   previousScore = bestThread->rootMoves[0].score;
 
   // Send again PV info if we have a new best thread