Tweak evaluation of stable disks
authorFabian Fichter <ianfab@users.noreply.github.com>
Sat, 4 Jul 2020 13:22:21 +0000 (15:22 +0200)
committerFabian Fichter <ianfab@users.noreply.github.com>
Sat, 4 Jul 2020 13:22:21 +0000 (15:22 +0200)
reversi
LLR: 2.96 (-2.94,2.94) [0.00,10.00]
Total: 624 W: 351 L: 244 D: 29

src/evaluate.cpp

index 37a5038..c32df0b 100644 (file)
@@ -1011,15 +1011,14 @@ namespace {
         // Stable pieces
         Bitboard edges = (FileABB | file_bb(pos.max_file()) | Rank1BB | rank_bb(pos.max_rank())) & pos.board_bb();
         Bitboard edgePieces = pos.pieces(Us) & edges;
-        Bitboard stable = 0;
         while (edgePieces)
         {
-            Square s = pop_lsb(&edgePieces);
-            Bitboard connectedEdge = attacks_bb(Us, ROOK, s, ~(pos.pieces() & edges)) & edges;
-            if (!(connectedEdge & ~pos.pieces()) || !more_than_one(connectedEdge & ~pos.pieces(Us)))
-                stable |= s;
+            Bitboard connectedEdge = attacks_bb(Us, ROOK, pop_lsb(&edgePieces), ~(pos.pieces(Us) & edges)) & edges;
+            if (!more_than_one(connectedEdge & ~pos.pieces(Us)))
+                score += make_score(300, 300);
+            else if (!(connectedEdge & ~pos.pieces()))
+                score += make_score(200, 200);
         }
-        score += make_score(300, 300) * popcount(stable);
 
         // Unstable
         Bitboard unstable = 0;