示例#1
0
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))
示例#2
0
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))
示例#3
0
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
示例#4
0
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
示例#5
0
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
示例#6
0
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
示例#7
0
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()
示例#8
0
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()
示例#9
0
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()
示例#10
0
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()
示例#11
0
def gm0():
    config.games_per_move_limit = 100000
    c_board.clear_result_table()
    print g.make_move(g.generate_move())
    g.undo_move()
示例#12
0
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
示例#13
0
def gm0():
    config.games_per_move_limit = 100000
    c_board.clear_result_table()
    print g.make_move(g.generate_move())
    g.undo_move()
示例#14
0
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