Beispiel #1
0
def fixbug():
    from cchess_alphazero.config import Config
    from cchess_alphazero.lib.data_helper import get_game_data_filenames, read_game_data_from_file, write_game_data_to_file
    import cchess_alphazero.environment.static_env as senv
    c = Config('distribute')
    files = get_game_data_filenames(c.resource)
    cnt = 0
    fix = 0
    draw_cnt = 0
    for filename in files:
        try:
            data = read_game_data_from_file(filename)
        except:
            print(f"error: {filename}")
            os.remove(filename)
            continue
        state = data[0]
        real_data = [state]
        need_fix = True
        draw = False
        action = None
        value = None
        is_red_turn = True
        for item in data[1:]:
            action = item[0]
            value = -item[1]
            if value == 0:
                need_fix = False
                draw = True
                draw_cnt += 1
                break
            state = senv.step(state, action)
            is_red_turn = not is_red_turn
            real_data.append([action, value])
        if not draw:
            game_over, v, final_move = senv.done(state)
            if final_move:
                v = -v
                is_red_turn = not is_red_turn
            if not is_red_turn:
                v = -v
            if not game_over:
                v = 1
            # print(game_over, v, final_move, state)
            if v == data[1][1]:
                need_fix = False
            else:
                need_fix = True
        if need_fix:
            write_game_data_to_file(filename, real_data)
            # print(filename)
            fix += 1
        cnt += 1
        if cnt % 1000 == 0:
            print(cnt, fix, draw_cnt)
    print(f"all {cnt}, fix {fix}, draw {draw_cnt}")
Beispiel #2
0
 def save_play_data(self, idx, data, value, score):
     rc = self.config.resource
     game_id = datetime.now().strftime("%Y%m%d-%H%M%S.%f")
     filename = rc.play_data_filename_tmpl % game_id
     path = os.path.join(rc.play_data_dir, filename)
     logger.info(f"Process {self.pid} save play data to {path}")
     write_game_data_to_file(path, data)
     logger.info(f"Uploading play data {filename} ...")
     red, black = data[0], data[1]
     return self.upload_eval_data(path, filename, red, black, value, score)
Beispiel #3
0
 def save_play_data(self, idx, data, value, score):
     rc = self.config.resource
     game_id = datetime.now().strftime("%Y%m%d-%H%M%S.%f")
     filename = rc.play_data_filename_tmpl % game_id
     path = os.path.join(rc.play_data_dir, filename)
     logger.info("保存博弈数据到 %s" % (path))
     write_game_data_to_file(path, data)
     logger.info(f"上传评测对局 {filename} ...")
     red, black = data[0], data[1]
     return self.upload_eval_data(path, filename, red, black, value, score)
Beispiel #4
0
 def flush_buffer(self):
     rc = self.config.resource
     game_id = datetime.now().strftime("%Y%m%d-%H%M%S.%f")
     filename = rc.play_data_filename_tmpl % game_id
     path = os.path.join(rc.play_data_dir, filename)
     logger.info("保存博弈数据到 %s" % (path))
     write_game_data_to_file(path, self.buffer)
     if self.config.internet.distributed:
         upload_worker = Thread(target=self.upload_play_data, args=(path, filename))
         upload_worker.start()
     self.buffer = []
    def save_play_data(self, idx, data):
        self.buffer += data

        if not idx % self.config.play_data.nb_game_in_file == 0:
            return

        rc = self.config.resource
        game_id = datetime.now().strftime("%Y%m%d-%H%M%S.%f")
        path = os.path.join(rc.play_data_dir, rc.play_data_filename_tmpl % game_id)
        logger.info(f"Process {self.pid} save play data to {path}")
        write_game_data_to_file(path, self.buffer)
        self.buffer = []
    def save_play_data(self, idx, data):
        self.buffer += data

        if not idx % self.config.play_data.nb_game_in_file == 0:
            return

        rc = self.config.resource
        game_id = datetime.now().strftime("%Y%m%d-%H%M%S.%f")
        filename = rc.play_data_filename_tmpl % game_id
        path = os.path.join(rc.play_data_dir, filename)
        logger.info(f"Process {self.pid} save play data to {path}")
        write_game_data_to_file(path, self.buffer)
        if self.config.internet.distributed:
            upload_worker = Thread(target=self.upload_play_data, args=(path, filename), name="upload_worker")
            upload_worker.daemon = True
            upload_worker.start()
        self.buffer = []
Beispiel #7
0
    def save_play_data(self, idx, data):
        self.buffer += data

        if not idx % self.config.play_data.nb_game_in_file == 0:
            return

        rc = self.config.resource
        game_id = datetime.now().strftime("%Y%m%d-%H%M%S.%f")
        filename = rc.play_data_filename_tmpl % game_id
        path = os.path.join(rc.play_data_dir, filename)
        logger.info(f"Process {self.pid} save play data to {path}")
        write_game_data_to_file(path, self.buffer)
        if self.config.internet.distributed:
            upload_worker = Thread(target=self.upload_play_data,
                                   args=(path, filename),
                                   name="upload_worker")
            upload_worker.daemon = True
            upload_worker.start()
        self.buffer = []
    def save_play_data(self, idx):
        data = []
        for i in range(len(self.red.moves)):
            data.append(self.red.moves[i])
            if i < len(self.black.moves):
                data.append(self.black.moves[i])

        self.buffer += data

        if not idx % self.config.play_data.nb_game_in_file == 0:
            return

        rc = self.config.resource
        game_id = datetime.now().strftime("%Y%m%d-%H%M%S.%f")
        path = os.path.join(rc.play_data_dir,
                            rc.play_data_filename_tmpl % game_id)
        logger.info(f"Process {self.pid} save play data to {path}")
        write_game_data_to_file(path, self.buffer)
        self.buffer = []