def test_onegreen(): import cchess_alphazero.environment.static_env as senv from cchess_alphazero.environment.lookup_tables import flip_move init = '9999299949999999249999869999999958999999519999999999999999997699' state = senv.init(init) print(state) senv.render(state) move = senv.parse_onegreen_move('8685') state = senv.step(state, move) print(state) senv.render(state) move = senv.parse_onegreen_move('7666') state = senv.step(state, flip_move(move)) print(state) senv.render(state)
def test_onegreen2(): from cchess_alphazero.environment.env import CChessEnv import cchess_alphazero.environment.static_env as senv from cchess_alphazero.config import Config c = Config('mini') init = '9999299949999999249999869999999958999999519999999999999999997699' env = CChessEnv(c) env.reset(init) print(env.observation) env.render() move = senv.parse_onegreen_move('8685') env.step(move) print(env.observation) env.render() move = senv.parse_onegreen_move('7666') env.step(move) print(env.observation) env.render()
def load_game(self, init, move_list, winner, idx, title, url): turns = 0 env = CChessEnv(self.config).reset(init) red_moves = [] black_moves = [] moves = [ move_list[i:i + 4] for i in range(len(move_list)) if i % 4 == 0 ] for move in moves: action = senv.parse_onegreen_move(move) try: if turns % 2 == 0: red_moves.append([ env.observation, self.build_policy(action, flip=False) ]) else: black_moves.append([ env.observation, self.build_policy(action, flip=True) ]) env.step(action) except: logger.error( f"Invalid Action: idx = {idx}, action = {action}, turns = {turns}, moves = {moves}, " f"winner = {winner}, init = {init}, title: {title}, url: {url}" ) return turns += 1 if winner == Winner.red: red_win = 1 elif winner == Winner.black: red_win = -1 else: red_win = senv.evaluate(env.get_state()) if not env.red_to_move: red_win = -red_win for move in red_moves: move += [red_win] for move in black_moves: move += [-red_win] data = [] for i in range(len(red_moves)): data.append(red_moves[i]) if i < len(black_moves): data.append(black_moves[i]) self.buffer += data return red_win
def load_game(self, init, move_list, winner, idx, title, url): turns = 0 env = CChessEnv(self.config).reset(init) red_moves = [] black_moves = [] moves = [move_list[i:i+4] for i in range(len(move_list)) if i % 4 == 0] for move in moves: action = senv.parse_onegreen_move(move) try: if turns % 2 == 0: red_moves.append([env.observation, self.build_policy(action, flip=False)]) else: black_moves.append([env.observation, self.build_policy(action, flip=True)]) env.step(action) except: logger.error(f"Invalid Action: idx = {idx}, action = {action}, turns = {turns}, moves = {moves}, " f"winner = {winner}, init = {init}, title: {title}, url: {url}") return turns += 1 if winner == Winner.red: red_win = 1 elif winner == Winner.black: red_win = -1 else: red_win = senv.evaluate(env.get_state()) if not env.red_to_move: red_win = -red_win for move in red_moves: move += [red_win] for move in black_moves: move += [-red_win] data = [] for i in range(len(red_moves)): data.append(red_moves[i]) if i < len(black_moves): data.append(black_moves[i]) self.buffer += data return red_win