Exemplo n.º 1
0
def main():
    if len(sys.argv) >= 2 and sys.argv[1] == 'predict':
        first = bitify(sys.argv[2])
        second = bitify(sys,argv[3])
        result = predict_mlp(first, second)
        print(str(result))
        sys.exit(0)

    print("Gathering data in memory...")
    dbn_data, mlp_data, mlp_labels = gather_data()
    print("Gathering Data Done!")
    
    print("Splitting data in Training and Test Data...")
    X_train, X_test, Y_train, Y_test = train_test_split(
        mlp_data,
        mlp_labels,
        test_size=0.25
    )
    print("Splitting Done!")

    print("Training Deep Belief Network...")
    train_dbn(dbn_data)
    print("Training DBN Done!")

    print("Training Multi-Layer Perceptron...")
    train_mlp(X_train, Y_train)
    print("Training MLP Done!")

    print("Testing MLP...")
    print(f"Score = {test_mlp(X_test, Y_test)}")
Exemplo n.º 2
0
def eval(board, alpha, beta, player):
    if ((player == chess.WHITE and alpha.turn == chess.WHITE and alpha.is_checkmate())
            or (player == chess.BLACK and beta.turn == chess.BLACK and beta.is_checkmate())):
        return board
    if player == chess.WHITE and model.predict_mlp(utils.bitify(board.fen()), utils.bitify(alpha.fen()))[0] < 0.5:
        return alpha
    elif player == chess.BLACK and model.predict_mlp(utils.bitify(board.fen()), utils.bitify(beta.fen()))[0] < 0.5:
        return beta
    
    return board
Exemplo n.º 3
0
def extract_mlp_data(data):
    returned_data = list()
    returned_labels = list()
    for data_point in data:
        first_position = bitify(data_point[0].split(';')[0])
        second_position = bitify(data_point[1].split(';')[0])

        returned_data.append((first_position, second_position))
        returned_labels.append((1, 0))

        returned_data.append((second_position, first_position))
        returned_labels.append((0, 1))

    return returned_data, returned_labels
 def _hash_code(self, x):
     """
     Returns the polynomial hash code for string x
     :param x: string to hash
     :return: hash code of x
     """
     return sum(int(c) * self._z**k for k, c in enumerate(bitify(x)))
Exemplo n.º 5
0
def alphabeta(board: chess.Board, depth: int, alpha: chess.Board, beta: chess.Board, player: chess.Color):
    if depth == 0:
        return eval(board, alpha, beta, player)
    
    if player == chess.WHITE:
        for move in board.generate_legal_moves():
            new_board = board.copy()
            new_board.push(move)
            alpha = alphabeta(new_board, depth-1, alpha, beta, chess.BLACK)
            if model.predict_mlp(utils.bitify(beta.fen()), utils.bitify(alpha.fen()))[0] == 1:
                break
        return alpha
    else:
        for move in board.generate_legal_moves():
            new_board = board.copy()
            new_board.push(move)
            beta = alphabeta(new_board, depth-1, alpha, beta, chess.WHITE)
            if model.predict_mlp(utils.bitify(beta.fen()), utils.bitify(alpha.fen()))[0] == 1:
                break
        return beta
Exemplo n.º 6
0
 def put(self, data, is_bits=False):
     if not is_bits:
         data = utils.bitify(data)
     self.obuffer += data
Exemplo n.º 7
0
def extract_dbn_data(white_wins, black_wins):
    return np.concatenate((
        [bitify(i.split(';')[0]) for i in white_wins],
        [bitify(i.split(';')[0]) for i in black_wins]
    ))
Exemplo n.º 8
0
 def put(self, data, is_bits=False):
     if not is_bits:
         data = utils.bitify(data)
     self.obuffer += data