from cup import Cup from network import Network from board import Board import tensorflow as tf import numpy as np import random class Bot: def __init__(self, sym, config = None): self.config = config self.cup = Cup() self.sym = sym self.graph = tf.Graph() with self.graph.as_default(): self.session = tf.Session() self.network = Network(self.session, config) self.network.restore_model() def restore_model(self): with self.graph.as_default(): self.network.restore_model() def get_session(self): return self.session def get_sym(self): return self.sym def get_network(self): return self.network 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_pair = moves_and_scores[np.array(scores).argmax()] #print("Found the best state, being:", np.array(move_scores).argmax()) return best_move_pair