From 8074175ad3a2c289cd3ccace2c6f62bb3ead3a67 Mon Sep 17 00:00:00 2001 From: Yorick Barbanneau Date: Sun, 17 Dec 2023 22:18:24 +0100 Subject: [PATCH] Remove Iterative Deepening garbage --- src/classes/Engines.py | 62 ++++-------------------------------------- 1 file changed, 5 insertions(+), 57 deletions(-) diff --git a/src/classes/Engines.py b/src/classes/Engines.py index 4ad9d13..dd129c9 100644 --- a/src/classes/Engines.py +++ b/src/classes/Engines.py @@ -60,8 +60,11 @@ class HumanPlayerEngine(PlayerEngine): return [board._nextPlayer, x, y] class MinmaxPlayerEngine(PlayerEngine): + def get_move(self, board): super().get_move(board) + + def get_best_move(board): value = -math.inf nodes = 1 leafs = 0 @@ -85,12 +88,11 @@ class MinmaxPlayerEngine(PlayerEngine): leafs )) return move - def checkMinMax(self, board, friend_move:bool, depth :int = 2): nodes = 1 leafs = 0 move = '' - if depth == 0: + if depth == 0 or board.is_game_over(): leafs +=1 return self.heuristic.get(board, self.player), nodes, leafs @@ -152,7 +154,7 @@ class AlphabetaPlayerEngine(PlayerEngine): def checkAlphaBeta(self, board, friend_move : bool, depth, alpha, beta): nodes = 1 leafs = 0 - if depth == 0 : + if depth == 0 or board.is_game_over(): leafs +=1 return self.heuristic.get(board, self.player), nodes, leafs @@ -190,57 +192,3 @@ class AlphabetaPlayerEngine(PlayerEngine): return alpha, nodes, leafs return beta, nodes, leafs -class MinmaxDeepeningPlayerEngine(PlayerEngine): - - def get_move(self, board): - super().get_move(board) - value = -math.inf - nodes = 1 - leafs = 0 - move = '' - start_time = time.time() - for m in board.legal_moves(): - board.push(m) - v, n, l = self.checkMinMax(board, False, start_time) - if v > value: - value = v - move = m - self.logger.debug("found a better move: {} (heuristic:{})".format( - move, - value - )) - nodes += n - leafs += l - board.pop() - return move - - def checkMinMax(self, board, friend_move:bool, start_time): - nodes = 1 - leafs = 0 - move = '' - if time.time() >= start_time + self.options['time_limit'] or board.is_game_over(): - leafs +=1 - return self.heuristic.get(board, self.player), nodes, leafs - - if friend_move: - value = -math.inf - for m in board.legal_moves(): - board.push(m) - v, n, l = self.checkMinMax(board, False, start_time) - if v > value: - value = v - nodes += n - leafs += l - board.pop() - - else: - value = math.inf - for m in board.legal_moves(): - board.push(m) - v, n, l = self.checkMinMax(board, True, start_time) - if v < value: - value = v - board.pop(); - nodes += n - leafs += l - return value, nodes, leafs