Example #1
0
    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)
Example #2
0
            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)