def test_ld(filename, pos): config.time_per_move_limit = 100000000 config.games_per_move_limit = 2**63 g = load_sgf.load_file(filename) print g.current_board c_board.clear_result_table() c_board.set_random_seed(1) g.select_uct_move(pos=string_as_move(pos))
def test_tromp_taylor_scoring(): c_board.clear_result_table() c_board.set_random_seed(1) config.time_per_move_limit = 100000000 config.games_per_move_limit = 10000 g = load_sgf.load_file("kgs/tromp_taylor_scoring_error.sgf") g.undo_move() #g.undo_move() print g.current_board print g.make_move(g.generate_move()) return g
def test_area_scoring(): c_board.clear_result_table() c_board.set_random_seed(1) config.time_per_move_limit = 100000000 config.games_per_move_limit = 100000 g = load_sgf.load_file("kgs/endgame_test.sgf") g.set_komi(7.5) g.undo_move() #g.make_move(string_as_move("C1")) #g.make_move(string_as_move("G1")) #g.make_move(string_as_move("D5")) print g.current_board #g.generate_move() return g
def test_komi(komi): config.time_per_move_limit = 100000000 config.games_per_move_limit = 1000000 print "." * 60 print "Komi:", komi #g = load_sgf.load_file("kgs/minue622-SimpleBot_1h_komi_analysis6.sgf"); g.make_move(PASS_MOVE) #g = Game(7) #g = load_sgf.load_file("kgs/Fomalhaut-SimpleBot_2006-08-06_tourn.sgf") #g = load_sgf.load_file("kgs/StoneCrazy-SimpleBot_2006-08-06_tour.sgf") #g = load_sgf.load_file("kgs/yose_test0.sgf") g = load_sgf.load_file("kgs/t.sgf") print g.current_board c_board.clear_result_table() g.set_komi(komi) c_board.set_random_seed(1) print g.generate_move()
def test_komi(komi): config.time_per_move_limit = 100000000 config.games_per_move_limit = 1000000 print "."*60 print "Komi:", komi #g = load_sgf.load_file("kgs/minue622-SimpleBot_1h_komi_analysis6.sgf"); g.make_move(PASS_MOVE) #g = Game(7) #g = load_sgf.load_file("kgs/Fomalhaut-SimpleBot_2006-08-06_tourn.sgf") #g = load_sgf.load_file("kgs/StoneCrazy-SimpleBot_2006-08-06_tour.sgf") #g = load_sgf.load_file("kgs/yose_test0.sgf") g = load_sgf.load_file("kgs/t.sgf") print g.current_board c_board.clear_result_table() g.set_komi(komi) c_board.set_random_seed(1) print g.generate_move()
def test_ld_all_blocks(filename, colors): config.time_per_move_limit = 100000000 config.games_per_move_limit = 100000 g = load_sgf.load_file(filename) cb = g.current_board print cb pos_lst = [] for block in cb.iterate_blocks(colors): pos = block.get_origin() pos_lst.append(pos) for pos in pos_lst: print "test:", move_as_string(pos), cb.side c_board.clear_result_table() c_board.set_random_seed(1) g.select_uct_move(pos=pos) g.make_move(PASS_MOVE) print "test opposite:", move_as_string(pos), cb.side c_board.clear_result_table() c_board.set_random_seed(1) g.select_uct_move(pos=pos) g.undo_move()
def gm0(): config.games_per_move_limit = 100000 c_board.clear_result_table() print g.make_move(g.generate_move()) g.undo_move()
def ld_score_moves(filename=None, g=None): #config.debug_output = open("ld_score.log", "a") score_dict = {} config.time_per_move_limit = 100000000 config.games_per_move_limit = 10000 if filename: g = load_sgf.load_file(filename) cb = g.current_board dprintnl(cb) side0 = cb.side pos_lst = [] for block in cb.iterate_blocks(BLACK + WHITE): #for block in cb.iterate_blocks(WHITE): pos = block.get_origin() pos_lst.append(pos) for pos in pos_lst: block_color = cb.goban[pos] score_opponent = 0.0 score_our = {} for color_switch in (False, True): if not color_switch: dprintnl("test:", move_as_string(pos), cb.side) else: g.make_move(PASS_MOVE) dprintnl("test opposite:", move_as_string(pos), cb.side) c_board.clear_result_table() c_board.set_random_seed(1) g.select_uct_move(pos=pos) for move in g.list_moves(): dprintnl(move_as_string(pos), "move:", move_as_string(move)) g.make_move(move) result = c_board.get_result_table(g.c_color()) g.undo_move() score = result[1] / float(sum(result)) if cb.side == side0: #dprintnl("defend:", score) score_our[move] = score else: #dprintnl("attack:", score) score_opponent = max(score, score_opponent) if color_switch: g.undo_move() dprintnl("summary:") dprintnl(score_opponent, max(score_our.values())) #dprintnl(score_our) score_our_lst = [] for m, value in score_our.items(): score_our_lst.append((value, m)) score_our_lst.sort() score_our_lst = score_our_lst[-10:] dprintnl(score_our_lst) for score, move in score_our_lst: if block_color == side0: #defend score_diff = score - (1 - score_opponent) else: score_diff = score_opponent - (1 - score) dprintnl("score diff:", score_diff, move_as_string(move), score) score_diff *= cb.blocks[pos].size() score_dict[move] = score_dict.get(move, 0.0) + score_diff dprintnl("endof", move_as_string(pos)) dprintnl() move_values = [] for move in score_dict: move_values.append((score_dict[move], move)) move_values.sort() move_values.reverse() for score, move in move_values: dprintnl(score, move_as_string(move)) #for score, move in move_values[:5]: # print score, move_as_string(move) #config.debug_output.flush() if move_values: return move_values[0][1] return PASS_MOVE
def ld_score_moves(filename = None, g = None): #config.debug_output = open("ld_score.log", "a") score_dict = {} config.time_per_move_limit = 100000000 config.games_per_move_limit = 10000 if filename: g = load_sgf.load_file(filename) cb = g.current_board dprintnl(cb) side0 = cb.side pos_lst = [] for block in cb.iterate_blocks(BLACK+WHITE): #for block in cb.iterate_blocks(WHITE): pos = block.get_origin() pos_lst.append(pos) for pos in pos_lst: block_color = cb.goban[pos] score_opponent = 0.0 score_our = {} for color_switch in (False, True): if not color_switch: dprintnl("test:", move_as_string(pos), cb.side) else: g.make_move(PASS_MOVE) dprintnl("test opposite:", move_as_string(pos), cb.side) c_board.clear_result_table() c_board.set_random_seed(1) g.select_uct_move(pos=pos) for move in g.list_moves(): dprintnl(move_as_string(pos), "move:", move_as_string(move)) g.make_move(move) result = c_board.get_result_table(g.c_color()) g.undo_move() score = result[1] / float(sum(result)) if cb.side==side0: #dprintnl("defend:", score) score_our[move] = score else: #dprintnl("attack:", score) score_opponent = max(score, score_opponent) if color_switch: g.undo_move() dprintnl("summary:") dprintnl(score_opponent, max(score_our.values())) #dprintnl(score_our) score_our_lst = [] for m, value in score_our.items(): score_our_lst.append((value, m)) score_our_lst.sort() score_our_lst = score_our_lst[-10:] dprintnl(score_our_lst) for score, move in score_our_lst: if block_color==side0: #defend score_diff = score - (1 - score_opponent) else: score_diff = score_opponent - (1 - score) dprintnl("score diff:", score_diff, move_as_string(move), score) score_diff *= cb.blocks[pos].size() score_dict[move] = score_dict.get(move, 0.0) + score_diff dprintnl("endof", move_as_string(pos)) dprintnl() move_values = [] for move in score_dict: move_values.append((score_dict[move], move)) move_values.sort() move_values.reverse() for score, move in move_values: dprintnl(score, move_as_string(move)) #for score, move in move_values[:5]: # print score, move_as_string(move) #config.debug_output.flush() if move_values: return move_values[0][1] return PASS_MOVE