def play(self): num = 0 while num < self.play_times: num += 1 self.begin_of_game() if self.random_switch and random.random() < 0.5: self.network_w, self.network_b = self.network_b, self.network_w self.white_name, self.black_name = self.black_name, self.white_name network_play_game = NetworkPlayGame( self.network_w, self.network_b, **self.xargs) winner, moves = network_play_game.play_till_end() print("moves:" + move) stamp = time.strftime('%Y-%m-%d_%H-%M-%S', time.localtime(time.time())) date = time.strftime('%Y-%m-%d', time.localtime(time.time())) cbfile = cbf.CBF(black=self.black_name, red=self.white_name, date=date, site='北京', name='noname', datemodify=date, redteam=self.white_name, blackteam=self.black_name, round='第一轮') cbfile.receive_moves(moves) randstamp = random.randint(0, 1000) cbffilename = '{}_{}_mcts-mcts_{}-{}_{}.cbf'.format( stamp, randstamp, self.white_name, self.black_name, winner) cbf_name = os.path.join(self.recoard_dir, cbffilename) cbfile.dump(cbf_name) self.end_of_game(cbffilename, moves, cbfile)
policies,score = list(zip(acts, act_probs)),mcts_policy_b._root._Q move = get_random_policy(policies) states.append(game_states.statestr) moves.append(move) game_states.do_move(move) if player == 'w': print('{} {} {:.4f}s {:.4f}, sel:{} pol:{} upd:{}'.format(i + 1,move,time.time() - begin,score ,mcts_policy_w.select_time,mcts_policy_w.policy_time,mcts_policy_w.update_time)) mcts_policy_w.select_time,mcts_policy_w.policy_time,mcts_policy_w.update_time = 0,0,0 else: print('{} {} {:.4f}s {:.4f}, sel:{} pol:{} upd:{}'.format(i + 1,move,time.time() - begin,score ,mcts_policy_b.select_time,mcts_policy_b.policy_time,mcts_policy_b.update_time)) mcts_policy_b.select_time,mcts_policy_b.policy_time,mcts_policy_b.update_time = 0,0,0 mcts_policy_w.update_with_move(move) mcts_policy_b.update_with_move(move) #print("move {} player {} move {} value {} time {}".format(i + 1,player,move,score,time.time() - start)) if score > 0.99: winner = 'w' break elif score < -0.99: winner = 'b' break if winner is None: winner = 'peace' cbfile = cbf.CBF(black='mcts',red='mcts',date='2018-05-113',site='北京',name='noname',datemodify='2018-05-12', redteam='icybee',blackteam='icybee',round='第一轮') cbfile.receive_moves(moves) stamp = time.strftime('%Y-%m-%d_%H-%M-%S',time.localtime(time.time())) cbfile.dump('data/self-plays/{}_mcts-mcts_{}.cbf'.format(stamp,winner)) mcts_play_wins.append(winner)