Remove Iterative Deepening garbage
This commit is contained in:
parent
55f2a29084
commit
8074175ad3
1 changed files with 5 additions and 57 deletions
|
@ -60,8 +60,11 @@ class HumanPlayerEngine(PlayerEngine):
|
||||||
return [board._nextPlayer, x, y]
|
return [board._nextPlayer, x, y]
|
||||||
|
|
||||||
class MinmaxPlayerEngine(PlayerEngine):
|
class MinmaxPlayerEngine(PlayerEngine):
|
||||||
|
|
||||||
def get_move(self, board):
|
def get_move(self, board):
|
||||||
super().get_move(board)
|
super().get_move(board)
|
||||||
|
|
||||||
|
def get_best_move(board):
|
||||||
value = -math.inf
|
value = -math.inf
|
||||||
nodes = 1
|
nodes = 1
|
||||||
leafs = 0
|
leafs = 0
|
||||||
|
@ -85,12 +88,11 @@ class MinmaxPlayerEngine(PlayerEngine):
|
||||||
leafs
|
leafs
|
||||||
))
|
))
|
||||||
return move
|
return move
|
||||||
|
|
||||||
def checkMinMax(self, board, friend_move:bool, depth :int = 2):
|
def checkMinMax(self, board, friend_move:bool, depth :int = 2):
|
||||||
nodes = 1
|
nodes = 1
|
||||||
leafs = 0
|
leafs = 0
|
||||||
move = ''
|
move = ''
|
||||||
if depth == 0:
|
if depth == 0 or board.is_game_over():
|
||||||
leafs +=1
|
leafs +=1
|
||||||
return self.heuristic.get(board, self.player), nodes, leafs
|
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):
|
def checkAlphaBeta(self, board, friend_move : bool, depth, alpha, beta):
|
||||||
nodes = 1
|
nodes = 1
|
||||||
leafs = 0
|
leafs = 0
|
||||||
if depth == 0 :
|
if depth == 0 or board.is_game_over():
|
||||||
leafs +=1
|
leafs +=1
|
||||||
return self.heuristic.get(board, self.player), nodes, leafs
|
return self.heuristic.get(board, self.player), nodes, leafs
|
||||||
|
|
||||||
|
@ -190,57 +192,3 @@ class AlphabetaPlayerEngine(PlayerEngine):
|
||||||
return alpha, nodes, leafs
|
return alpha, nodes, leafs
|
||||||
return beta, 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
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue