Bladeren bron

search adjustment

Nicolas Winkler 3 jaren geleden
bovenliggende
commit
f98527c3e2
2 gewijzigde bestanden met toevoegingen van 7 en 5 verwijderingen
  1. 2 2
      src/hash.rs
  2. 5 3
      src/search.rs

+ 2 - 2
src/hash.rs

@@ -28,7 +28,7 @@ impl CacheEntry {
         }
     }
 
-    pub fn new_beta(depth: i32, beta: PosValue) -> Self {
+    pub fn new_upper(depth: i32, beta: PosValue) -> Self {
         CacheEntry {
             entry_type: EntryType::UpperBound,
             depth,
@@ -36,7 +36,7 @@ impl CacheEntry {
         }
     }
 
-    pub fn new_alpha(depth: i32, alpha: PosValue) -> Self {
+    pub fn new_lower(depth: i32, alpha: PosValue) -> Self {
         CacheEntry {
             entry_type: EntryType::LowerBound,
             depth,

+ 5 - 3
src/search.rs

@@ -135,7 +135,9 @@ fn negamax(game: &mut Game, sc: &mut SearchControl, hash: &mut Cache, mut alpha:
             //println!("TABLE HIT!");
             match e.entry_type {
                 EntryType::Value => { return (e.value, false); },
-                EntryType::LowerBound => { if e.value > alpha { return (e.value, false) } },
+                //EntryType::LowerBound => { if e.value > alpha { return (e.value, false) } },
+                EntryType::LowerBound => { if e.value > alpha { alpha = e.value; } },
+                //EntryType::UpperBound => { if e.value >= beta { return (beta, false); } },
                 EntryType::UpperBound => { if e.value >= beta { return (beta, false); } },
             }
         }
@@ -212,7 +214,7 @@ fn negamax(game: &mut Game, sc: &mut SearchControl, hash: &mut Cache, mut alpha:
 
         if val >= beta {
             game.undo_move(undo);
-            hash.cache(game, CacheEntry::new_beta(depth, beta));
+            hash.cache(game, CacheEntry::new_lower(depth, val));
             //println!("but ret {}: {}", depth, beta);
             return (beta, false);
         }
@@ -228,7 +230,7 @@ fn negamax(game: &mut Game, sc: &mut SearchControl, hash: &mut Cache, mut alpha:
         hash.cache(game, CacheEntry::new_value(depth, alpha));
     }
     else {
-        hash.cache(game, CacheEntry::new_alpha(depth, alpha));
+        hash.cache(game, CacheEntry::new_upper(depth, alpha));
     }
     //info!("best alpha {}", best);
     return (alpha, false);