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