backgammon/restore_bot.py

37 lines
1.1 KiB
Python

from cup import Cup
import numpy as np
import tensorflow as tf
from network import Network
from board import Board
import random
class RestoreBot:
def __init__(self, sym):
self.cup = Cup()
self.sym = sym
self.graph = tf.Graph()
with self.graph.as_default():
self.session = tf.Session(graph = self.graph)
self.network = Network(self.session)
self.network.restore_model()
def get_sym(self):
return self.sym
def restore_model(self):
with self.graph.as_default():
self.network.restore_model()
def make_move(self, board, sym, roll):
# print(Board.pretty(board))
legal_moves = Board.calculate_legal_states(board, sym, roll)
moves_and_scores = [ (move, self.network.eval_state(np.array(move).reshape(1,26))) for move in legal_moves ]
scores = [ x[1] for x in moves_and_scores ]
best_move = moves_and_scores[np.array(scores).argmax()][0]
#print("Found the best state, being:", np.array(move_scores).argmax())
return best_move
# return random.choice(list(legal_moves))