Remove Iterative Deepening garbage

This commit is contained in:
Yorick Barbanneau 2023-12-17 22:18:24 +01:00
parent 55f2a29084
commit 8074175ad3

View file

@ -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