londerings-commits Mailing List for Londerings
Brought to you by:
aloril
You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(41) |
Jul
(41) |
Aug
(2) |
Sep
(4) |
Oct
|
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(6) |
Dec
(6) |
2005 |
Jan
(5) |
Feb
(21) |
Mar
(18) |
Apr
(21) |
May
(9) |
Jun
(2) |
Jul
|
Aug
(7) |
Sep
(5) |
Oct
(6) |
Nov
(9) |
Dec
(4) |
2006 |
Jan
(43) |
Feb
(32) |
Mar
(10) |
Apr
(6) |
May
|
Jun
(1) |
Jul
(19) |
Aug
(25) |
Sep
(22) |
Oct
(16) |
Nov
(5) |
Dec
(1) |
2007 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Aloril <al...@us...> - 2007-01-07 13:51:21
|
Update of /cvsroot/londerings/go/simple_go In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv29213 Modified Files: game_experimental.py montecarlo.c play_gtp.py test_c_board.py version.py Log Message: show tactical UCT mainline; 1-tactics in random games; save pid Index: game_experimental.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/game_experimental.py,v retrieving revision 1.54 retrieving revision 1.55 diff -C2 -r1.54 -r1.55 *** game_experimental.py 17 Nov 2006 03:57:38 -0000 1.54 --- game_experimental.py 7 Jan 2007 13:51:09 -0000 1.55 *************** *** 818,824 **** if c_board.uct_game == c_board.random_uct_game: score1, score2 = score2, score1 ! #if move==PASS_MOVE: ! # #force cleanup and do not pass unless forced ! # score -= 0.2 #if move==PASS_MOVE: # #prefer PASS move among do nothing moves --- 818,824 ---- if c_board.uct_game == c_board.random_uct_game: score1, score2 = score2, score1 ! if move==PASS_MOVE: ! #force cleanup and do not pass unless forced ! score1 -= 0.2 #if move==PASS_MOVE: # #prefer PASS move among do nothing moves *************** *** 839,842 **** --- 839,880 ---- return move_results + def show_uct_mainline(self): + start_len = len(self.move_history) + swap = False + while True: + result = c_board.get_result_table(self.c_color()) + if not result: + break + if swap: + result = result[1], result[0] + dprintsp(result, result[0] / float(sum(result))) + swap = not swap + best_score = -1000 + best_move = PASS_MOVE + for move in self.list_moves(): + if move in self.forbidden_moves: + continue + self.make_move(move) + result = c_board.get_result_table(self.c_color()) + if result: + result = result[1], result[0] + score = result[0] / float(sum(result)) + if move==PASS_MOVE: + #force cleanup and do not pass unless forced + score -= 0.2 + if score > best_score: + best_score = score + best_move = move + #if len(self.move_history)==2: + # print "?", score, result, move_as_string(move) + self.undo_move() + self.make_move(best_move) + dprintsp("|", move_as_string(best_move)) + if self.has_2_passes(): + break + dprintnl() + while start_len < len(self.move_history): + self.undo_move() + def see_uct_move(self, count, count2): #if config.debug_flag: *************** *** 851,890 **** global_count = 1.0 if config.debug_flag and not self.fast_flag: ! start_len = len(self.move_history) ! swap = False ! while True: ! result = c_board.get_result_table(self.c_color()) ! if not result: ! break ! if swap: ! result = result[1], result[0] ! dprintsp(result, result[0] / float(sum(result))) ! swap = not swap ! best_score = -1000 ! best_move = PASS_MOVE ! for move in self.list_moves(): ! if move in self.forbidden_moves: ! continue ! self.make_move(move) ! result = c_board.get_result_table(self.c_color()) ! if result: ! result = result[1], result[0] ! score = result[0] / float(sum(result)) ! #if move==PASS_MOVE: ! # #force cleanup and do not pass unless forced ! # score -= 0.2 ! if score > best_score: ! best_score = score ! best_move = move ! #if len(self.move_history)==2: ! # print "?", score, result, move_as_string(move) ! self.undo_move() ! self.make_move(best_move) ! dprintsp("|", move_as_string(best_move)) ! if self.has_2_passes(): ! break ! dprintnl() ! while start_len < len(self.move_history): ! self.undo_move() #get best move --- 889,893 ---- global_count = 1.0 if config.debug_flag and not self.fast_flag: ! self.show_uct_mainline() #get best move *************** *** 1205,1208 **** --- 1208,1228 ---- c_board.set_use_area_bonus(True) return return_value + + def show_tactical_uct_mainline(self, pos, tactic_type): + block_color = self.current_board.goban[pos] + if tactic_type=="defend": + pass_needed = block_color != self.current_board.side + color = color2ccolor[block_color] + else: + pass_needed = block_color == self.current_board.side + color = color2ccolor[other_side[block_color]] + c_board.uct_capture(pos, color, 1) + if pass_needed: + self.current_board.change_side() + dprintsp(move_as_string(pos), tactic_type) + self.show_uct_mainline() + if pass_needed: + self.current_board.change_side() + def list_tactical_result_moves(self, pos_lst, block_move_statistics, biggest_size): *************** *** 1225,1228 **** --- 1245,1253 ---- result_moves.sort() result_moves.reverse() + if result_moves and config.debug_flag and not self.fast_flag: + pos = result_moves[0][2] + self.show_tactical_uct_mainline(pos, "defend") + self.show_tactical_uct_mainline(pos, "attack") + return result_moves Index: montecarlo.c =================================================================== RCS file: /cvsroot/londerings/go/simple_go/montecarlo.c,v retrieving revision 1.34 retrieving revision 1.35 diff -C2 -r1.34 -r1.35 *** montecarlo.c 4 Dec 2006 11:01:21 -0000 1.34 --- montecarlo.c 7 Jan 2007 13:51:09 -0000 1.35 *************** *** 585,590 **** if(countlib(pos)==1) { findlib(pos, 1, &move); ! available[available_count] = -move; ! available_score[available_count++] = -1; } } --- 585,592 ---- if(countlib(pos)==1) { findlib(pos, 1, &move); ! if(accuratelib(move, board[pos], 2, NULL) > 1) { ! available[available_count] = -move; ! available_score[available_count++] = -1; ! } } } *************** *** 604,608 **** for(k = 0; k < 4; k++) { pos2 = pos + delta[k]; ! if(IS_STONE(board[pos2]) && countlib(pos2)==1) { ok = TRUE; break; --- 606,610 ---- for(k = 0; k < 4; k++) { pos2 = pos + delta[k]; ! if(IS_STONE(board[pos2]) && countlib(pos2)==1 && accuratelib(pos, board[pos2], 2, NULL)>1) { ok = TRUE; break; *************** *** 1466,1470 **** 3) If exhausted, add to found potential eyes list 4) If block has only one potential eye, remove block and eye from lists ! 5) Repeat 2 as long as there was changes 6) What is left are unconditionally alive blocks and territories */ --- 1468,1472 ---- 3) If exhausted, add to found potential eyes list 4) If block has only one potential eye, remove block and eye from lists ! 5) Repeat 4 as long as there was changes 6) What is left are unconditionally alive blocks and territories */ Index: play_gtp.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/play_gtp.py,v retrieving revision 1.83 retrieving revision 1.84 diff -C2 -r1.83 -r1.84 *** play_gtp.py 17 Nov 2006 03:57:38 -0000 1.83 --- play_gtp.py 7 Jan 2007 13:51:09 -0000 1.84 *************** *** 652,655 **** --- 652,658 ---- if __name__=="__main__": + fp = open("pid.out", "w") + fp.write(str(os.getpid())) + fp.close() player = GTP_player() parse_options(player) Index: test_c_board.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/test_c_board.py,v retrieving revision 1.50 retrieving revision 1.51 diff -C2 -r1.50 -r1.51 *** test_c_board.py 4 Dec 2006 11:01:21 -0000 1.50 --- test_c_board.py 7 Jan 2007 13:51:09 -0000 1.51 *************** *** 1140,1149 **** #g = load_sgf.load_file("kgs/caol-SimpleBot_problem.sgf") #g = load_sgf.load_file("kgs/Aloriless-Orego_problem.sgf") ! g = load_sgf.load_file("kgs/orego_decreasing_score_for_win.sgf") #g = Game(5) #g.set_komi(24.5) print g.current_board config.fast_time_limit = 0.1 ! config.time_per_move_limit = 10000000 config.games_per_move_limit = 1000000 #config.uct_count = lambda size:config.games_per_move_limit --- 1140,1151 ---- #g = load_sgf.load_file("kgs/caol-SimpleBot_problem.sgf") #g = load_sgf.load_file("kgs/Aloriless-Orego_problem.sgf") ! #g = load_sgf.load_file("kgs/orego_decreasing_score_for_win.sgf") ! g = load_sgf.load_file("kgs/buggy_resque0_slow5_SimpleBot-GNU.sgf") ! #g = load_sgf.load_file("kgs/buggy_resque_slow5_SimpleBot-GNU.sgf") #g = Game(5) #g.set_komi(24.5) print g.current_board config.fast_time_limit = 0.1 ! config.time_per_move_limit = 400 config.games_per_move_limit = 1000000 #config.uct_count = lambda size:config.games_per_move_limit Index: version.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/version.py,v retrieving revision 1.77 retrieving revision 1.78 diff -C2 -r1.77 -r1.78 *** version.py 5 Nov 2006 18:18:11 -0000 1.77 --- version.py 7 Jan 2007 13:51:09 -0000 1.78 *************** *** 1,3 **** ! number = "0.4.1_opening" name = "SimpleGo" message = ": For more info see http://londerings.novalis.org/wlog/index.php?title=SimpleGo_v0.4.1 Source code is at http://londerings.cvs.sourceforge.net/londerings/go/simple_go/ : " --- 1,3 ---- ! number = "0.4.1_tactics1" name = "SimpleGo" message = ": For more info see http://londerings.novalis.org/wlog/index.php?title=SimpleGo_v0.4.1 Source code is at http://londerings.cvs.sourceforge.net/londerings/go/simple_go/ : " |
Update of /cvsroot/londerings/go/simple_go In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv8815 Modified Files: alphabeta.c c_board.h c_boardmodule.c check_opening.py montecarlo.c montecarlo.h test.py test_c_board.py Log Message: very simple unconditional reading added to perfect play search Index: alphabeta.c =================================================================== RCS file: /cvsroot/londerings/go/simple_go/alphabeta.c,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -r1.7 -r1.8 *** alphabeta.c 18 Nov 2006 17:58:05 -0000 1.7 --- alphabeta.c 4 Dec 2006 11:01:21 -0000 1.8 *************** *** 5,8 **** --- 5,10 ---- #include <string.h> + #define USE_UNCONDITIONAL_READING TRUE + #undef WORST_SCORE #define WORST_SCORE -1000000000 *************** *** 54,57 **** --- 56,79 ---- M(0, 0); M(4, 0); M(4, 4); M(0, 4); break; + case 6: + M(2, 3); M(3, 2); M(3, 3); M(2, 2); + M(3, 1); M(2, 4); M(1, 2); M(4, 3); M(3, 4); M(2, 1); M(1, 3); M(4, 2); + M(1, 1); M(4, 4); M(1, 4); M(4, 1); + M(2, 0); M(5, 3); M(2, 5); M(0, 2); M(3, 0); M(5, 2); M(3, 5); M(0, 3); + M(4, 5); M(1, 0); M(5, 1); M(0, 4); M(0, 1); M(5, 4); M(1, 5); M(4, 0); + M(0, 0); M(5, 5); M(0, 5); M(5, 0); + break; + case 7: + M(3, 3); + M(3, 4); M(2, 3); M(3, 2); M(4, 3); + M(4, 4); M(2, 2); M(2, 4); M(4, 2); + M(3, 5); M(3, 1); M(1, 3); M(5, 3); + M(4, 5); M(2, 5); M(1, 4); M(1, 2); M(2, 1); M(4, 1); M(5, 2); M(5, 4); + M(1, 1); M(5, 1); M(5, 5); M(1, 5); + M(3, 6); M(3, 0); M(0, 3); M(6, 3); + M(2, 6); M(2, 0); M(0, 4); M(0, 2); M(4, 0); M(4, 6); M(6, 2); M(6, 4); + M(1, 0); M(1, 6); M(0, 5); M(0, 1); M(5, 0); M(5, 6); M(6, 5); M(6, 1); + M(0, 0); M(6, 0); M(6, 6); M(0, 6); + break; default: ASSERT1(FALSE, NO_MOVE); // not yet defined for other sizes *************** *** 181,184 **** --- 203,235 ---- } + int analyse_final_position(int pos, int color, int *score) + { + if(pos) { + if(board[pos]==EMPTY) { + *score = -1; + return TRUE; + } + if(get_pass_count() >= 2) { + *score = 0; + return TRUE; + } + } else { + #if USE_UNCONDITIONAL_READING + *score = analyse_unconditional_score(color); + if(*score) { + return TRUE; + } + #endif + if(get_pass_count() >= 2) { + double score_d = score_board_color(color); + if(score_d > 0) {*score = 1;} + else if(score_d < 0) {*score = -1;} + else {*score = 0;} + return TRUE; + } + } + return FALSE; + } + int alpha_beta_search_recursive(int pos, int color, int depth, int alpha, int beta, int *pv, int *pv_depth, int ply, Hash_data *hash_history) /* *************** *** 199,216 **** return best_score; } ! if(pos) { ! if(board[pos]==EMPTY) { ! return -1; ! } ! if(get_pass_count() >= 2) { ! return 0; ! } ! } else { ! if(get_pass_count() >= 2) { ! double score_d = score_board_color(color); ! if(score_d > 0) {return 1;} ! if(score_d < 0) {return -1;} ! return 0; ! } } if(depth==0) { --- 250,255 ---- return best_score; } ! if(analyse_final_position(pos, color, &score)) { ! return score; } if(depth==0) { Index: c_board.h =================================================================== RCS file: /cvsroot/londerings/go/simple_go/c_board.h,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -r1.5 -r1.6 *** c_board.h 17 Nov 2006 03:57:38 -0000 1.5 --- c_board.h 4 Dec 2006 11:01:21 -0000 1.6 *************** *** 24,25 **** --- 24,28 ---- double score_board_color(int color); int get_pass_count(); + int analyse_unconditional_score(int color); + + #define MAX_COLOR (BLACK + 1) Index: c_boardmodule.c =================================================================== RCS file: /cvsroot/londerings/go/simple_go/c_boardmodule.c,v retrieving revision 1.26 retrieving revision 1.27 diff -C2 -r1.26 -r1.27 *** c_boardmodule.c 18 Nov 2006 17:58:05 -0000 1.26 --- c_boardmodule.c 4 Dec 2006 11:01:21 -0000 1.27 *************** *** 114,118 **** return NULL; } ! popgo(); Py_INCREF(Py_None); return Py_None; --- 114,120 ---- return NULL; } ! if(stackp) { ! popgo(); ! } Py_INCREF(Py_None); return Py_None; *************** *** 368,371 **** --- 370,382 ---- } + static PyObject *cboard_unconditional_score_board(PyObject *self, PyObject *args) + { + int color; + if(!PyArg_ParseTuple(args, "i", &color)) { + return NULL; + } + return PyInt_FromLong(analyse_unconditional_score(color)); + } + static PyObject *cboard_get_pattern_result_table(PyObject *self, PyObject *args) *************** *** 606,609 **** --- 617,621 ---- {"age_result_table", cboard_age_result_table, METH_VARARGS}, {"score_board", cboard_score_board, METH_VARARGS}, + {"unconditional_score_board", cboard_unconditional_score_board, METH_VARARGS}, {"get_pattern_result_table", cboard_get_pattern_result_table, METH_VARARGS}, {"add_pattern_result_table", cboard_add_pattern_result_table, METH_VARARGS}, Index: check_opening.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/check_opening.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** check_opening.py 6 Oct 2006 14:22:42 -0000 1.1 --- check_opening.py 4 Dec 2006 11:01:21 -0000 1.2 *************** *** 10,14 **** if __name__=="__main__": ! for size in (9, 13): for color in (simple_go.BLACK, simple_go.WHITE): check_tree(size, color) --- 10,14 ---- if __name__=="__main__": ! for size in (7, 9, 13): for color in (simple_go.BLACK, simple_go.WHITE): check_tree(size, color) Index: montecarlo.c =================================================================== RCS file: /cvsroot/londerings/go/simple_go/montecarlo.c,v retrieving revision 1.33 retrieving revision 1.34 diff -C2 -r1.33 -r1.34 *** montecarlo.c 18 Nov 2006 17:58:05 -0000 1.33 --- montecarlo.c 4 Dec 2006 11:01:21 -0000 1.34 *************** *** 250,255 **** } ! int analyse_eye_point(int pos, int other_color) { int i, pos2, piece2, total_count, other_count; if(board[pos]!=EMPTY) { --- 250,292 ---- } ! int analyse_eye_point(int pos, int other_color /*, assume_opponent_alive=False*/) { + /* + Analyse one point for eye type. + If not empty or adjacent to other color: return None. + Otherwise analyse True/False status of eye. + + True(!) and false(?) eyes. + XXX XXO XXO XXO OXO OXO + X!X X!X X?X X?X X?X X?X + XXX XXX OXX XXO XXO OXO + + --- --- --- +-- +-- + X!X X?X X?X |!X |?X + XXX XXO OXO |XX |XO + + 2 empty points: True(!) and false(?) eyes. + This works just fine with normal (false) eye code. + XXXX XXXO XXXO XXXO OXXO OXXO + X!!X X!!X X!!X X!?X X!?X X??X + XXXX XXXX OXXX XXXO XXXO OXXO + + ---- ---- ---- +--- +--- + X!!X X!?X X??X |!!X |!?X + XXXX XXXO OXXO |XXX |XXO + + 3 empty points in triangle formation: True(!) and false(?) eyes. + This works just fine with normal (false) eye code. + XXXX XXXO XXXO XXXO OXXO OXXO + X!!X X!!X X!!X X!!X X!!X X?!X + XX!X XX!X OX!X XX!X XX!X OX!X + XXX XXX XXX XXO XXO XXO + + XXXX XXXO XXXO XXXO OXXO OXXO + X!!X X!!X X!!X X!!X X!!X X?!X + XX!X XX!X OX!X XX?X XX?X OX?X + OXX OXX OXX OXO OXO OXO + */ + int i, pos2, piece2, total_count, other_count; if(board[pos]!=EMPTY) { *************** *** 275,279 **** } total_count++; ! if(piece2==other_color) { other_count++; } --- 312,316 ---- } total_count++; ! if(piece2==other_color) { /* and (assume_opponent_alive or self.blocks[pos2].status==UNCONDITIONAL_LIVE): */ other_count++; } *************** *** 1369,1372 **** --- 1406,1499 ---- } + #if 0 + int analyse_opponent_stone_as_eye_point(int pos) + { + /* + Analyse one point for eye type. + Otherwise analyse True/False status of eye. + Only take into account live other color stones. + + True(O) and false(o) eyes. + @ == unconditionally live O stone. + XXX XX@ XX@ XX@ @X@ @X@ + .OX .OX .oX .oX .oX .oX + XXX XXX @XX XX@ XX@ @X@ + + --- --- --- +-- +-- + .OX .oX .oX |O. |o. + XXX XX@ @X@ |XX |X@ + + */ + int i, pos2, piece2, color, total_count, other_count; + total_count = 0; + other_count = 0; + color = board[pos]; + + for(i = 0; i < 8; i++) { + pos2 = pos + delta[i]; + piece2 = board[pos2]; + if(piece2==GRAY) { + continue; + } + total_count++; + if(board[pos2]==color && self.blocks[pos2].status==UNCONDITIONAL_LIVE) { + other_count++; + } + if(total_count==4) { + if(other_count > 1) { + return FALSE; + } else { + return TRUE; + } + } else { + if(other_count > 0) { + return FALSE; + } else { + return TRUE; + } + } + } + return FALSE; + } + #endif + + #if 0 + int analyze_color_unconditional_status(int color) + { + /* + 1) Find potential eyes for each block (and link to each direction between eyes and blocks) + 2) Eyes are found by floodfill of empty + opponent colored stones until empty found that is not adjacent to block or exhausted + 3) If exhausted, add to found potential eyes list + 4) If block has only one potential eye, remove block and eye from lists + 5) Repeat 2 as long as there was changes + 6) What is left are unconditionally alive blocks and territories + */ + int pos, origin; + int i; + int block_list[BOARDMAX]; + int block_ind = 0; + int liberties[MAXLIBS]; + int liberty_count; + int start_eye_number, current_eye_number = 0; + int eye_number[BOARDMAX]; + signed char mx[BOARDMAX]; + memset(eye_number, 0, sizeof(eye_number)); + memset(mx, 0, sizeof(mx)); + for(pos = 0; pos < BOARDMAX; pos++) { + if(board[pos]==color && !mx[pos]) { + origin = find_origin(pos); + mark_string(origin, mx, 1); + liberty_count = findlib(origin, MAXLIBS, liberties); + start_eye_number = current_eye_number + 1; + for(i = 0; i < liberty_count; i++) { + current_eye_number++; + if(liberties[i] < start_eye_number) { + flood_eye(origin, liberties[i], current_eye_number, eye_number + } + } + } + } + #endif + int play_random_game(int color) { *************** *** 1714,1717 **** --- 1841,1886 ---- } + int analyse_unconditional_score(int color0) + { + signed char mx[BOARDMAX]; + int score[MAX_COLOR]; + int pos, color; + score[WHITE] = score[BLACK] = 0; + memset(mx, 0, sizeof(mx)); + for(pos = 0; pos < BOARDMAX; pos++) { + if(IS_STONE(board[pos]) && !mx[pos]) { + mark_string(pos, mx, 1); + if(block_unconditional_status(pos)) { + score[board[pos]] += countstones(pos); + } + } + } + score[EMPTY] = board_size * board_size; + for(color = WHITE; color <= BLACK; color++) { + if(score[color]) { + score[color] += 2; + } + #define MIN_FREE 8 + if(score[color] && board_size * board_size - score[color] < MIN_FREE) { + score[color] = board_size * board_size; + } + score[EMPTY] -= score[color]; + } + double score_d = score[BLACK] - score[WHITE] - komi; + if(fabs(score_d) <= score[EMPTY]) { + return 0; + } + if(color0!=BLACK) { + score_d = -score_d; + } + if(score_d > 0) { + return 1; + } else if(score_d < 0) { + return -1; + } + return 0; + } + + double uct_score(int pos, int color, int side_to_move) { Index: montecarlo.h =================================================================== RCS file: /cvsroot/londerings/go/simple_go/montecarlo.h,v retrieving revision 1.29 retrieving revision 1.30 diff -C2 -r1.29 -r1.30 *** montecarlo.h 18 Nov 2006 17:58:05 -0000 1.29 --- montecarlo.h 4 Dec 2006 11:01:21 -0000 1.30 *************** *** 139,141 **** --- 139,154 ---- int get_random_1_tactic_moves(int *available, double *available_score); + typedef struct + { + int status; + int eye_count; + } block_data; + + typedef struct + { + int foo; + } eye_data; + + extern block_data blocks[BOARDMAX]; + #endif // MONTECARLO_H Index: test.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/test.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** test.py 3 Jan 2006 16:06:16 -0000 1.1 --- test.py 4 Dec 2006 11:01:21 -0000 1.2 *************** *** 105,108 **** --- 105,139 ---- test_position(""" + ABCDEFGHI + +---------+ + 9|.........| 9 + 8|.XX......| 8 + 7|.X.XXX...| 7 + 6|.XXX.XOO.| 6 + 5|..XOO.X..| 5 + 4|.OOXXXX..| 4 + 3|..X.X.X..| 3 + 2|..XXXXX..| 2 + 1|.........| 1 + +---------+ + ABCDEFGHI""", + """ + ABCDEFGHJ + +---------+ + 9|.........| 9 + 8|.&&......| 8 + 7|.&:&&&...| 7 + 6|.&&&:&OO.| 6 + 5|..&oo:&..| 5 + 4|.OO&&&&..| 4 + 3|..&:&:&..| 3 + 2|..&&&&&..| 2 + 1|.........| 1 + +---------+ + ABCDEFGHJ + """) + + + test_position(""" ABCDE +-----+ Index: test_c_board.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/test_c_board.py,v retrieving revision 1.49 retrieving revision 1.50 diff -C2 -r1.49 -r1.50 *** test_c_board.py 18 Nov 2006 17:58:05 -0000 1.49 --- test_c_board.py 4 Dec 2006 11:01:21 -0000 1.50 *************** *** 1,4 **** --- 1,5 ---- import time from simple_go import * + import opening_tree import c_board import load_sgf *************** *** 1252,1255 **** --- 1253,1291 ---- fp.close() + def check_game_vs_opening(file_name = "kgs/t", color = BLACK): + g = load_sgf.load_file(file_name) + g.save_c_state() + tree = opening_tree.OpeningTree(g.size, color) + g.restore_c_state() + if not tree.opening_tree_dict: + print "No opening tree found!" + return + if tree.error_msg: + print "Error in" % tree.file_name + return + moves = g.move_history[:] + while g.undo_move(): pass + for m in moves: + if color==g.current_board.side: + result = tree.get_move(g) + if result: + m2, no, line, name = result + history1 = g.move_history + [m] + history2 = g.move_history + [m2] + if tree.different_move(history1, history2): + for (name, hist) in (("history1", history1), ("history2", history2)): + print "Using history:", name + for ref in all_ref_coords: + print ref.__name__, move_list_as_string(reflect_move_list(hist, ref, g.size)) + print g.current_board + print "opening tree: %s from %i: %s %s" % (move_as_string(m2), no, line, name) + print "Moves don't match (game, opening):", move_as_string(m), move_as_string(m2) + break + else: + print g.current_board + print "No opening move found (game):", move_as_string(m) + break + g.make_move(m) + def gen_both_uct(g): config.use_uct_tactics = False |
From: Aloril <al...@us...> - 2006-11-18 17:58:24
|
Update of /cvsroot/londerings/go/simple_go In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv20149 Modified Files: Makefile alphabeta.c alphabeta.h c_boardmodule.c montecarlo.c montecarlo.h random_uct.c test_c_board.py Added Files: proof.c proof.h Log Message: move ordering added to alpha-beta; proof verification code --- NEW FILE: proof.c --- #include "alphabeta.h" #include "montecarlo.h" #define MAX_DEPTH 60 void show_error(int color, int proof_color, char *msg) { simple_showboard(stdout); printf("\n\n"); dump_stack(); mprintf("%o%s: %C %C\n", msg, color, proof_color); } int find_proof_recursive(int color, int proof_color, int ply, SearchInfo *info) { int move_list[MAX_DEPTH + 1]; int move_list_depth; int depth, score; int result; int i, move; if(ply >= MAX_DEPTH) { show_error(color, proof_color, "too deep"); return FALSE; } if(get_pass_count() >= 2) { double score_d = score_board_color(color); int ok1 = score_d > 0; int ok2 = color == proof_color; if(ok1 == ok2) { return TRUE; } show_error(color, proof_color, "wrong final score"); return FALSE; } if(color==proof_color) { depth = 1; for(depth = 1; depth <= MAX_DEPTH; depth++) { score = alpha_beta_search_recursive(PASS_MOVE, color, depth, -1, 1, move_list, &move_list_depth, ply, info->hash_history); if(score) { break; } } if(score <= 0) { show_error(color, proof_color, "wrong score from search"); return FALSE; } move = move_list[0]; if(!trymove_superko(move, color, ply, info->hash_history)) { mprintf("%omove: %1m\n", move); show_error(color, proof_color, "failed to make search move"); return FALSE; } info->count++; result = find_proof_recursive(OTHER_COLOR(color), proof_color, ply + 1, info); popgo(); return result; } else { for(i = 0; i < info->move_list_max; i++) { move = info->move_list[i]; if(trymove_superko(move, color, ply, info->hash_history)) { info->count++; result = find_proof_recursive(OTHER_COLOR(color), proof_color, ply + 1, info); popgo(); if(!result) { return FALSE; } } } return TRUE; } } int find_proof(int color, int proof_color) { int result; SearchInfo info; info.move_list_max = list_board_and_pass(info.move_list); info.count = 0; result = find_proof_recursive(color, proof_color, 0, &info); printf("Count: %lli\n", info.count); return result; } --- NEW FILE: proof.h --- #ifndef PROOF_H int find_proof(int color, int proof_color); #endif Index: Makefile =================================================================== RCS file: /cvsroot/londerings/go/simple_go/Makefile,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -r1.9 -r1.10 *** Makefile 17 Nov 2006 03:57:37 -0000 1.9 --- Makefile 18 Nov 2006 17:58:05 -0000 1.10 *************** *** 9,14 **** gcc -g -O2 -Wall -fPIC ${PYTHON_INCLUDE_DIR} -c cpatternsmodule.c ! c_boardmodule.so: c_boardmodule.o montecarlo.o alphabeta.o patterns.o random_uct.o weakbot.o ! gcc -g -shared -o c_boardmodule.so patterns.o montecarlo.o alphabeta.o random_uct.o weakbot.o c_boardmodule.o gnugo/engine/libboard.a gnugo/engine/libengine.a gnugo/sgf/libsgf.a gnugo/utils/libutils.a -lncurses -lm montecarlo.o: montecarlo.c montecarlo.h patterns.h c_board.h weakbot.h --- 9,14 ---- gcc -g -O2 -Wall -fPIC ${PYTHON_INCLUDE_DIR} -c cpatternsmodule.c ! c_boardmodule.so: c_boardmodule.o montecarlo.o alphabeta.o patterns.o random_uct.o weakbot.o proof.o ! gcc -g -shared -o c_boardmodule.so patterns.o montecarlo.o alphabeta.o random_uct.o weakbot.o proof.o c_boardmodule.o gnugo/engine/libboard.a gnugo/engine/libengine.a gnugo/sgf/libsgf.a gnugo/utils/libutils.a -lncurses -lm montecarlo.o: montecarlo.c montecarlo.h patterns.h c_board.h weakbot.h *************** *** 24,27 **** --- 24,30 ---- gcc -g -O2 -Wall -Ignugo -Ignugo/utils -Ignugo/engine -Ignugo/sgf -c alphabeta.c + proof.o: proof.c proof.h alphabeta.h montecarlo.h + gcc -g -O2 -Wall -Ignugo -Ignugo/utils -Ignugo/engine -Ignugo/sgf -c proof.c + patterns.o: patterns.c patterns.h gcc -g -O2 -Wall -Ignugo -Ignugo/utils -Ignugo/engine -Ignugo/sgf -c patterns.c Index: alphabeta.c =================================================================== RCS file: /cvsroot/londerings/go/simple_go/alphabeta.c,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -r1.6 -r1.7 *** alphabeta.c 17 Nov 2006 03:57:37 -0000 1.6 --- alphabeta.c 18 Nov 2006 17:58:05 -0000 1.7 *************** *** 10,13 **** --- 10,125 ---- enum {resultAccurate, resultAlpha, resultBeta, resultUnkown}; + typedef struct + { + int state; + int seen_moves[FLAG_BOARDSIZE]; + int hash_move; + int atari_count; + int atari_list[MAX_BOARD * MAX_BOARD + 1]; + int history_ind; + } MoveInfo; + + #define STATE_HASH_MOVE 0 + #define STATE_ATARI_MOVES 1 + #define STATE_PLACE_STONE 2 + #define STATE_DONE 3 + + int history_size = 0; + int history_max; + int history_table[BOARDMAX]; + + void initialize_history() + { + history_size = board_size; + history_max = 0; + #define M(i, j) history_table[history_max++] = POS(i, j); + switch(board_size) { + case 3: + M(1, 1); + M(1, 0); M(2, 1); M(1, 2); M(0, 1); + M(0, 0); M(2, 0); M(2, 2); M(0, 2); + break; + case 4: + M(2, 1); M(1, 2); M(2, 2); M(1, 1); + M(1, 0); M(2, 3); M(0, 1); M(3, 2); + M(0, 2); M(1, 3); M(3, 1); M(2, 0); + M(0, 0); M(3, 3); M(3, 0); M(0, 3); + break; + case 5: + M(2, 2); + M(2, 1); M(3, 2); M(2, 3); M(1, 2); + M(1, 1); M(3, 1); M(3, 3); M(1, 3); + M(2, 0); M(4, 2); M(2, 4); M(0, 2); + M(1, 0); M(3, 0); M(4, 1); M(4, 3); M(3, 4); M(1, 4); M(0, 3); M(0, 1); + M(0, 0); M(4, 0); M(4, 4); M(0, 4); + break; + default: + ASSERT1(FALSE, NO_MOVE); // not yet defined for other sizes + } + history_table[history_max++] = PASS_MOVE; + } + + void init_move_info(MoveInfo *minfo, int hash_move) + { + memset(minfo->seen_moves, 0, sizeof(minfo->seen_moves)); + minfo->history_ind = 0; + minfo->atari_count = -1; + if(hash_move >= 0) { + minfo->state = STATE_HASH_MOVE; + minfo->hash_move = hash_move; + } else { + minfo->state = STATE_ATARI_MOVES; + } + } + + int get_next_move(MoveInfo *minfo) + { + int move = -1; + while(move < 0 && minfo->state != STATE_DONE) { + switch(minfo->state) { + case STATE_HASH_MOVE: + move = minfo->hash_move; + minfo->state = STATE_ATARI_MOVES; + break; + case STATE_ATARI_MOVES: + if(minfo->atari_count < 0) { + double available_score[MAX_BOARD * MAX_BOARD + 1]; + minfo->atari_count = get_random_1_tactic_moves(minfo->atari_list, available_score); + } + if(minfo->atari_count) { + move = -minfo->atari_list[--minfo->atari_count]; + if(GET_FLAG(minfo->seen_moves, move)) { + move = -1; + } + } else { + move = -1; + minfo->state = STATE_PLACE_STONE; + } + break; + case STATE_PLACE_STONE: + if(history_size != board_size) { + initialize_history(); + } + // start from middle and spiral out + while(TRUE) { + if(minfo->history_ind >= history_max) { + minfo->state = STATE_DONE; + move = -1; + break; + } + move = history_table[minfo->history_ind++]; + if(!GET_FLAG(minfo->seen_moves, move)) { + break; + } + } + break; + } + } + if(move >= 0) { + SET_FLAG(minfo->seen_moves, move); + } + return move; + } + int find_alpha_beta_position(int pos, int color, int depth, int alpha, int beta, int *best_score, int *best_move) { *************** *** 51,55 **** } ! int alpha_beta_search_recursive(int pos, int color, int depth, int alpha, int beta, int *pv, int *pv_depth, int ply, Hash_data *hash_history) --- 163,183 ---- } ! int trymove_superko(int move, int color, int ply, Hash_data *hash_history) ! { ! int ok; ! ok = trymove(move, color, NULL, NO_MOVE); ! if(ok && move!=PASS_MOVE) { ! int k; ! for(k = 0; k < ply; k++) { ! if(hashdata_is_equal(hash_history[k], board_hash)) { ! ok = FALSE; ! popgo(); ! break; ! } ! } ! } ! hash_history[ply] = board_hash; ! return ok; ! } int alpha_beta_search_recursive(int pos, int color, int depth, int alpha, int beta, int *pv, int *pv_depth, int ply, Hash_data *hash_history) *************** *** 64,69 **** int move_list[depth], move_list_depth; int hash_type = resultAlpha; *pv_depth = 0; ! pv[0] = PASS_MOVE; if(pos) { if(board[pos]==EMPTY) { --- 192,202 ---- int move_list[depth], move_list_depth; int hash_type = resultAlpha; + MoveInfo minfo; *pv_depth = 0; ! pv[0] = -1; ! hash_type = find_alpha_beta_position(pos, color, depth, alpha, beta, &best_score, &pv[0]); ! if(hash_type != resultUnkown) { ! return best_score; ! } if(pos) { if(board[pos]==EMPTY) { *************** *** 84,141 **** return 0; } ! hash_type = find_alpha_beta_position(pos, color, depth, alpha, beta, &best_score, &pv[0]); ! if(hash_type != resultUnkown) { ! return best_score; ! } hash_type = resultAlpha; best_score = WORST_SCORE; other_color = OTHER_COLOR(color); ! for (i = 0; i <= board_size; i++) { ! for (j = 0; j < board_size; j++) { ! if(i==board_size) { ! if(j) { ! break; ! } ! move = PASS_MOVE; ! } else { ! move = POS(i, j); ! } ! int ok; ! ok = trymove(move, color, NULL, NO_MOVE); ! counter++; ! if(counter & 0xFFFF) {get_trymove_counter2();} ! if(ok && move!=PASS_MOVE) { ! int k; ! for(k = 0; k < ply; k++) { ! if(hashdata_is_equal(hash_history[k], board_hash)) { ! ok = FALSE; ! popgo(); break; } } } - if(ok) { - hash_history[ply] = board_hash; - score = alpha_beta_search_recursive(pos, other_color, depth-1, -beta, -alpha, move_list, &move_list_depth, ply + 1, hash_history); - popgo(); - score = -score; - if(score > best_score) { - best_score = score; - pv[0] = move; - memcpy(pv+1, move_list, sizeof(move_list[0]) * move_list_depth); - *pv_depth = 1 + move_list_depth; - if(score >= alpha) { - hash_type = resultAccurate; - alpha = score; - if(score >= beta) { - i = j = board_size + 1; // jump out all loops - hash_type = resultBeta; - break; - } - } - } - } } } if(best_score==WORST_SCORE) { best_score = 0; --- 217,255 ---- return 0; } ! init_move_info(&minfo, pv[0]); hash_type = resultAlpha; best_score = WORST_SCORE; other_color = OTHER_COLOR(color); ! while(TRUE) { ! move = get_next_move(&minfo); ! if(move < 0) { ! break; ! } ! counter++; ! if(counter & 0xFFFF) {get_trymove_counter2();} ! if(trymove_superko(move, color, ply, hash_history)) { ! score = alpha_beta_search_recursive(pos, other_color, depth-1, -beta, -alpha, move_list, &move_list_depth, ply + 1, hash_history); ! popgo(); ! score = -score; ! if(score > best_score) { ! best_score = score; ! pv[0] = move; ! memcpy(pv+1, move_list, sizeof(move_list[0]) * move_list_depth); ! *pv_depth = 1 + move_list_depth; ! if(score >= alpha) { ! hash_type = resultAccurate; ! alpha = score; ! if(score >= beta) { ! i = j = board_size + 1; // jump out all loops ! hash_type = resultBeta; break; } } } } } + if(pv[0]==-1) { + pv[0] = PASS_MOVE; + } if(best_score==WORST_SCORE) { best_score = 0; Index: alphabeta.h =================================================================== RCS file: /cvsroot/londerings/go/simple_go/alphabeta.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -r1.4 -r1.5 *** alphabeta.h 17 Nov 2006 03:57:37 -0000 1.4 --- alphabeta.h 18 Nov 2006 17:58:05 -0000 1.5 *************** *** 6,11 **** --- 6,13 ---- #define RAND_FACTOR 1000000 + int alpha_beta_search_recursive(int pos, int color, int depth, int alpha, int beta, int *pv, int *pv_depth, int ply, Hash_data *hash_history); int alpha_beta_search(int pos, int color, int depth, int alpha, int beta, int *pv, int *pv_depth); int alpha_beta_search_random(int pos, int color, int depth, int alpha, int beta, int limit); + int trymove_superko(int move, int color, int ply, Hash_data *hash_history); #endif // ALPHABETA_H Index: c_boardmodule.c =================================================================== RCS file: /cvsroot/londerings/go/simple_go/c_boardmodule.c,v retrieving revision 1.25 retrieving revision 1.26 diff -C2 -r1.25 -r1.26 *** c_boardmodule.c 17 Nov 2006 03:57:38 -0000 1.25 --- c_boardmodule.c 18 Nov 2006 17:58:05 -0000 1.26 *************** *** 5,8 **** --- 5,9 ---- #include "patterns.h" #include "weakbot.h" + #include "proof.h" #define PYTHON_POS2C(i, j) POS(board_size - j, i-1) *************** *** 197,200 **** --- 198,211 ---- } + static PyObject *cboard_find_proof(PyObject *self, PyObject *args) + { + int color, proof_color, result; + if(!PyArg_ParseTuple(args, "ii", &color, &proof_color)) { + return NULL; + } + result = find_proof(color, proof_color); + return PyInt_FromLong(result); + } + static PyObject *cboard_alpha_beta_search_random(PyObject *self, PyObject *args) *************** *** 584,587 **** --- 595,599 ---- {"alpha_beta_search", cboard_alpha_beta_search, METH_VARARGS}, {"alpha_beta_search_random", cboard_alpha_beta_search_random, METH_VARARGS}, + {"find_proof", cboard_find_proof, METH_VARARGS}, {"get_trymove_counter", cboard_get_trymove_counter, METH_VARARGS}, {"simple_showboard", cboard_simple_showboard, METH_VARARGS}, Index: montecarlo.c =================================================================== RCS file: /cvsroot/londerings/go/simple_go/montecarlo.c,v retrieving revision 1.32 retrieving revision 1.33 diff -C2 -r1.32 -r1.33 *** montecarlo.c 17 Nov 2006 03:57:38 -0000 1.32 --- montecarlo.c 18 Nov 2006 17:58:05 -0000 1.33 *************** *** 2629,2639 **** } - typedef struct { - Hash_data hash_history[MAX_MONTE_CARLO_STACK]; - int move_list[MAX_BOARD * MAX_BOARD + 1]; - int move_list_max; - int block_color; - } UctSearchInfo; - #if 0 void show_current(char *msg, int color, double win_score, double lost_score) --- 2629,2632 ---- *************** *** 2650,2654 **** #endif ! void score_final_position(UctSearchInfo *info, int color, double *win_result, double *lost_result) { double score = uct_score(capture_goal, info->block_color, color); --- 2643,2647 ---- #endif ! void score_final_position(SearchInfo *info, int color, double *win_result, double *lost_result) { double score = uct_score(capture_goal, info->block_color, color); *************** *** 2663,2667 **** } ! void score_with_random_game(UctSearchInfo *info, int color, double *win_result, double *lost_result, int depth) { int white_length, black_length; --- 2656,2660 ---- } ! void score_with_random_game(SearchInfo *info, int color, double *win_result, double *lost_result, int depth) { int white_length, black_length; *************** *** 2704,2708 **** } ! void uct_game_recursive(UctSearchInfo *info, int color, int depth, double *win_result, double *lost_result) { double win_count, lost_count; --- 2697,2701 ---- } ! void uct_game_recursive(SearchInfo *info, int color, int depth, double *win_result, double *lost_result) { double win_count, lost_count; *************** *** 2804,2808 **** void uct_game_normal(int block_pos, int color) { ! UctSearchInfo info; double win_result, lost_result; info.block_color = GRAY; --- 2797,2801 ---- void uct_game_normal(int block_pos, int color) { ! SearchInfo info; double win_result, lost_result; info.block_color = GRAY; Index: montecarlo.h =================================================================== RCS file: /cvsroot/londerings/go/simple_go/montecarlo.h,v retrieving revision 1.28 retrieving revision 1.29 diff -C2 -r1.28 -r1.29 *** montecarlo.h 17 Nov 2006 03:57:38 -0000 1.28 --- montecarlo.h 18 Nov 2006 17:58:05 -0000 1.29 *************** *** 124,127 **** --- 124,141 ---- void random_uct_game(int color); long long get_trymove_counter2(); + int list_board_and_pass(int *move_list); + + typedef struct { + Hash_data hash_history[MAX_MONTE_CARLO_STACK]; + int move_list[MAX_BOARD * MAX_BOARD + 1]; + int move_list_max; + int block_color; + long long count; + } SearchInfo; + + #define SET_FLAG(array, pos) (array)[(pos)>>5] = ((array)[(pos)>>5] | (1 << ((pos) & 31))) + #define CLEAR_FLAG(array, pos) (array)[(pos)>>5] = ((array)[(pos)>>5] & (~(1 << ((pos) & 31)))) + #define GET_FLAG(array, pos) ((array)[(pos)>>5] & (1 << ((pos) & 31))) + int get_random_1_tactic_moves(int *available, double *available_score); #endif // MONTECARLO_H Index: random_uct.c =================================================================== RCS file: /cvsroot/londerings/go/simple_go/random_uct.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -r1.4 -r1.5 *** random_uct.c 7 Sep 2006 04:27:35 -0000 1.4 --- random_uct.c 18 Nov 2006 17:58:05 -0000 1.5 *************** *** 6,12 **** #define DUMP_SGF FALSE - #define SET_FLAG(array, pos) (array)[(pos)>>5] = ((array)[(pos)>>5] | (1 << ((pos) & 31))) - #define CLEAR_FLAG(array, pos) (array)[(pos)>>5] = ((array)[(pos)>>5] & (~(1 << ((pos) & 31)))) - #define GET_FLAG(array, pos) ((array)[(pos)>>5] & (1 << ((pos) & 31))) int black_available_moves[MAX_AVAILABLE_MOVES]; int black_available_moves_count = 0; --- 6,9 ---- Index: test_c_board.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/test_c_board.py,v retrieving revision 1.48 retrieving revision 1.49 diff -C2 -r1.48 -r1.49 *** test_c_board.py 17 Nov 2006 03:57:38 -0000 1.48 --- test_c_board.py 18 Nov 2006 17:58:05 -0000 1.49 *************** *** 288,291 **** --- 288,318 ---- print "-"*60 + def report_iteration(limit, undo_count0, depth, score, nodes0, t0, pv): + t1 = time.time() + nodes1 = c_board.get_trymove_counter() + moves = [] + t_used = t1-t0 + t_used = round(t_used, int(-math.log10(t_used) + 2)) + nodes_s = (nodes1-nodes0)/(t1-t0) + if nodes_s >= 1000000: + nodes_s = "%sM" % round(nodes_s/1000000., 1) + else: + nodes_s = "%sK" % round(nodes_s/1000.) + if nodes_s >= 10000: + nodes_s = nodes_s.replace(".0", "") + if limit=="": + limit_s = "" + else: + limit_s = str(limit/1000000.) + limit_s = limit_s.replace(".0", "") + pv_s = move_list_as_string(pv) + s = "%-6s %-4s %-5s %-6s %-11s %-7s %s %s" % (limit_s, undo_count0, depth, score, nodes1-nodes0, t_used, nodes_s, pv_s) + fp = open("t.log", "a") + fp.write(s + "\n") + fp.close() + print s + return s + + def test_c_alpha_beta(name = "kgs/simple_ladders2.sgf", pos_str = "C3", depth = 1, seed = 1, undo_count = 0, limit = 0, print_pos = True, random=True): c_board.set_random_seed(seed) *************** *** 316,339 **** else: score, pv = c_board.alpha_beta_search(pos, g.c_color(), depth, -1, 1) ! t1 = time.time() ! nodes1 = c_board.get_trymove_counter() ! moves = [] ! t_used = t1-t0 ! t_used = round(t_used, int(-math.log10(t_used) + 2)) ! nodes_s = (nodes1-nodes0)/(t1-t0) ! if nodes_s >= 1000000: ! nodes_s = "%sM" % round(nodes_s/1000000., 1) ! else: ! nodes_s = "%sK" % round(nodes_s/1000.) ! if nodes_s >= 10000: ! nodes_s = nodes_s.replace(".0", "") ! limit_s = str(limit/1000000.) ! limit_s = limit_s.replace(".0", "") ! pv_s = move_list_as_string(pv) ! s = "%-6s %-4s %-5s %-6s %-9s %-7s %s %s" % (limit_s, undo_count0, depth, score, nodes1-nodes0, t_used, nodes_s, pv_s) ! fp = open("t.log", "a") ! fp.write(s + "\n") ! fp.close() ! print s return s, score --- 343,347 ---- else: score, pv = c_board.alpha_beta_search(pos, g.c_color(), depth, -1, 1) ! s = report_iteration(limit, undo_count0, depth, score, nodes0, t0, pv) return s, score *************** *** 345,355 **** --- 353,369 ---- def test_ab_score(name): + nodes0 = c_board.get_trymove_counter() + t0 = time.time() for depth in range(1, 40+1): s, score = test_c_alpha_beta(name, pos_str="", random=False, depth=depth, print_pos = False) if score: break + report_iteration("", "", "", "", nodes0, t0, []) def test_ab_score_undo(name): + c_board.clear_result_table() undo_count = 0 + nodes0 = c_board.get_trymove_counter() + t0 = time.time() while True: g = load_sgf.load_file(name) *************** *** 367,375 **** print "Initial length: %i" % len(g.move_history) print ! c_board.clear_result_table() test_ab_score(g) undo_count = undo_count + 1 if not g.move_history: break def test_ab(limit, seed=1, depth=7, undo_count=7): --- 381,393 ---- print "Initial length: %i" % len(g.move_history) print ! #c_board.clear_result_table() test_ab_score(g) undo_count = undo_count + 1 if not g.move_history: break + #if len(g.move_history) <= 20: + # break + print "All undo's done:" + report_iteration("", "", "", "", nodes0, t0, []) def test_ab(limit, seed=1, depth=7, undo_count=7): |
From: Aloril <al...@us...> - 2006-11-17 03:57:47
|
Update of /cvsroot/londerings/go/simple_go In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv29370 Modified Files: 9x9_black_opening.lst 9x9_white_opening.lst Makefile alphabeta.c alphabeta.h c_board.h c_boardmodule.c game_experimental.py load_sgf.py map_opening.py montecarlo.c montecarlo.h play_gtp.py play_simple_gtp.py test_c_board.py Log Message: opening updates; transposition table to alpha-beta; short command support for play_simple_gtp Index: 9x9_black_opening.lst =================================================================== RCS file: /cvsroot/londerings/go/simple_go/9x9_black_opening.lst,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -r1.11 -r1.12 *** 9x9_black_opening.lst 7 Nov 2006 04:43:04 -0000 1.11 --- 9x9_black_opening.lst 17 Nov 2006 03:57:37 -0000 1.12 *************** *** 1,7 **** E5 C3 E3 #Aloril ! E5 D4 E4 #Minue E5 D3 C5 #Aloril E5 E4 F5 #Aloril ! E5 E3 G4 #Minue E5 D6 E6 D7 D5 #Aloril, GoJin-1.20: http://cgos.boardspace.net/public/SGF/2006/10/05/315521.sgf E5 D4 E4 D3 D5 C5 C6 B5 G7 #Aloril, ggexp: http://cgos.boardspace.net/public/SGF/2006/10/05/315586.sgf --- 1,7 ---- E5 C3 E3 #Aloril ! E5 D4 E4 #Minue622 E5 D3 C5 #Aloril E5 E4 F5 #Aloril ! E5 E3 G4 #Minue622 E5 D6 E6 D7 D5 #Aloril, GoJin-1.20: http://cgos.boardspace.net/public/SGF/2006/10/05/315521.sgf E5 D4 E4 D3 D5 C5 C6 B5 G7 #Aloril, ggexp: http://cgos.boardspace.net/public/SGF/2006/10/05/315586.sgf *************** *** 18,43 **** E5 C7 E7 G4 C5 E3 G6 #Aloril, MoGoSmallQdV3: http://cgos.boardspace.net/public/SGF/2006/10/06/316701.sgf E5 C4 E3 G7 C6 D2 H6 #Aloril, ggexp: http://cgos.boardspace.net/public/SGF/2006/10/06/316802.sgf ! E5 C4 E3 G6 C6 D2 E2 B4 D3 C2 C3 B3 D1 A2 B5 B1 F7 G7 F8 G8 H5 C5 B6 A5 A6 A4 D5 D4 E4 C1 E1 PASS H6 PASS G5 PASS H7 PASS F6 PASS H8 PASS G9 PASS PASS #Aloril, gnugo_3.7.4 http://cgos.boardspace.net/public/SGF/2006/10/06/316823.sgf; Minue: D3 #?? E5 C4 E3 G6 C6 D2 E2 B4 F7 G7 F8 G8 H5 A7 B7 A6 D3 C2 C3 B3 D1 B2 B6 A2 A4 A8 B5 A5 B8 H3 G5 F2 G2 H2 F3 PASS F1 E6 F6 PASS D6 PASS E7 PASS H6 PASS H7 H8 J8 PASS G9 PASS H9 PASS A9 PASS D4 PASS C5 PASS C1 PASS B1 PASS E1 PASS A1 PASS A3 PASS H4 PASS G3 PASS J3 PASS J2 PASS H1 PASS PASS #Aloril, gnugo_3.7.4 http://cgos.boardspace.net/public/SGF/2006/10/06/316823.sgf (later?? (and remove this line)) E5 C4 E3 D6 E6 D7 F8 D3 E7 D8 D5 C5 E2 D2 C6 B6 D4 E1 F1 D1 G2 E8 F9 #Aloril, ggexp http://cgos.boardspace.net/public/SGF/2006/10/06/316862.sgf E5 G7 E7 E4 F5 #Aloril, GoJin-1.22: http://cgos.boardspace.net/public/SGF/2006/10/06/316976.sgf ! E5 C5 D7 D4 E4 E3 F3 D3 G4 #Aloril, antigoamuct-1.6: http://cgos.boardspace.net/public/SGF/2006/10/07/317029.sgf; Minue: E4-G4 E5 C4 E3 D6 E6 D7 F8 G3 F2 E8 G6 H5 H2 D2 E7 H6 H7 D8 D3 C3 D5 C5 E2 C2 E9 D9 F9 E1 F1 D1 D4 B6 H3 C7 H4 B7 G5 B5 J6 B3 J5 B8 G2 A4 G4 A3 F3 PASS PASS #Aloril, map_opening1 vs GNU Go 3.7.4 E5 C3 E3 C6 F7 G3 H2 H3 G2 D7 E8 D8 D2 C2 D5 C5 D4 C4 E7 D1 E1 C1 D9 C9 E9 B8 D3 D6 E6 B7 H4 C8 G4 B5 F3 B3 J3 A6 PASS A7 PASS #Aloril, map_opening2 vs GNU Go 3.7.4 E5 C3 E3 C5 E7 G7 G5 G8 E8 H6 H5 D2 E2 B7 C8 B8 C6 B6 C7 E1 F1 D1 F2 C9 D9 B9 D3 C2 D5 D4 E4 C4 G6 B4 H7 A5 J6 A6 H8 A4 G9 PASS F8 PASS F7 PASS PASS #Aloril, map_opening3 vs GNU Go 3.7.4 E5 C5 D7 D3 G6 G3 D4 C4 E3 D2 E2 H5 H1 B7 C8 B8 D1 C2 C1 B1 E1 B2 C6 B6 C7 B9 D5 C9 D9 A5 H6 A6 G5 B3 H4 B4 J5 PASS H3 PASS G2 PASS G4 PASS F3 PASS PASS #Aloril, map_opening4 vs GNU Go 3.7.4 ! E5 C3 E3 E7 C5 B4 B5 D2 E2 B2 G6 C7 F8 B6 A5 E8 F7 B8 A4 A3 E9 D9 F9 E6 F5 E1 F1 D1 F2 C4 D6 D7 A6 A7 D4 F6 G7 C6 D5 D3 PASS D8 PASS A8 PASS A2 PASS C8 PASS C2 PASS PASS #Aloril, map_opening5 vs GNU Go 3.7.4; Minue: F8 (later?) ! E5 C3 E3 E7 C5 B4 B5 D2 E2 B2 G6 C7 F8 B6 A5 E8 F7 B8 A4 A3 E9 D9 F9 C8 D1 C4 D4 C1 E1 D3 E6 D6 D5 C6 A6 A7 G3 D8 PASS A2 PASS A8 PASS B1 PASS #Aloril, map_opening5_3_7_4 vs GNU Go 3.6; Minue: F8 (later?) ! E5 C3 E3 G7 C5 B4 B5 D2 E2 B2 G5 D7 B7 F6 H6 H7 C8 D8 E6 E7 J7 J8 J6 H9 D1 C1 E1 F5 F4 G6 H4 D3 D9 E9 C9 C7 B8 A5 A6 A4 D4 C6 B6 D6 D5 F8 C4 B3 PASS H8 PASS F9 PASS B1 PASS #Aloril, map_opening6 vs GNU Go 3.7.4; Minue: D1 E5 C4 E3 C6 F7 G3 F2 D2 D8 B8 C7 B7 D3 C3 E2 C2 D6 C5 C8 B9 D1 C1 E1 D4 E4 C9 D9 D5 E6 B5 G4 A6 H3 A7 G2 A5 F3 PASS PASS #Aloril, map_opening7 vs GNU Go 3.7.4 E5 D4 E4 D5 E6 E3 F3 C7 D8 E2 F2 D3 B8 B7 C8 F1 G1 E1 G2 A8 D6 C6 D7 B9 C9 A7 A9 B5 B9 C2 G7 B3 F4 C4 PASS B4 PASS B2 PASS B6 PASS #Aloril, map_opening8 vs GNU Go 3.7.4 ! E5 C5 D7 G5 E3 B7 G7 G2 C3 C8 D8 C7 H4 D4 E4 D3 D2 D6 E6 C4 B3 D9 E8 E9 F9 C9 F8 B4 A4 A5 A3 D5 G3 B6 H5 A6 G6 PASS H2 PASS F2 PASS G1 PASS F5 PASS G4 PASS PASS #Aloril, map_opening9 vs GNU Go 3.7.4; Minue: H4 ! E5 C5 D7 G5 E3 B7 G7 G2 C3 C8 D8 C7 H4 G4 H5 H3 G6 #Aloril, map_opening9 vs GNU Go 3.7.4; Minue: H4-G6 ! E5 C5 D7 G5 E3 B7 G7 G2 C3 C8 D8 C7 H4 H5 G4 F4 F5 F3 G6 H3 J5 G3 H6 E4 D4 E2 D5 D3 B5 C6 C4 #Aloril, map_opening9 vs GNU Go 3.7.4; Minue: H4-C4 E5 C5 D7 E4 F5 G3 D4 B7 C4 C8 F2 E3 E2 H5 H7 G2 D3 G6 G7 E8 F7 B5 G4 H4 J2 J3 F3 H2 B4 D5 D8 D9 D6 A5 F9 E9 C7 B8 A4 C6 F8 E6 E7 C9 G5 H6 F6 J7 J8 J6 H8 F1 E1 G1 F4 A6 D2 J4 PASS A7 PASS A9 PASS J1 PASS #Aloril, map_opening10 vs GNU Go 3.7.4 E5 C4 E3 C7 C5 D4 D5 D2 B3 B4 C2 E2 F3 F2 D3 C3 B2 G3 B5 F7 G4 H3 H4 H1 H7 F8 A8 D1 J3 J2 J4 C1 B1 H2 C8 G2 D7 PASS C6 PASS B7 PASS E7 PASS G7 PASS F6 PASS G8 PASS E8 PASS F9 PASS E4 PASS A4 PASS PASS #Aloril, map_opening12 vs GNU Go 3.7.4 ! E5 C3 E3 G3 G5 F4 E4 H4 H5 F2 E2 H2 B5 F5 F6 C5 C6 B4 B6 B2 C1 J5 J6 J4 H6 E1 D1 F1 D2 G4 F3 J2 B1 G2 D5 PASS C4 PASS D3 PASS C2 PASS B3 PASS A4 PASS A2 PASS PASS #Aloril, map_opening13 vs GNU Go 3.7.4; Minue: H5 (later??) ! E5 C3 E3 G3 G5 F4 E4 H4 H5 C6 D2 E7 B2 B4 G7 F8 G8 C2 C1 G9 F7 E8 D6 D7 C5 B6 B5 A5 E6 H8 H7 C4 D5 D3 E2 A6 A3 B3 J8 H9 B1 A4 A2 F9 D4 J9 J7 C7 G4 B8 H3 C9 J4 C8 G2 D9 F3 PASS F5 PASS PASS #Aloril, map_opening13_3_7_4 vs GNU Go 3.7.10; Minue: H5 (later??) ! E5 C3 E3 G3 G5 F4 E4 H4 H5 C6 D2 E7 B2 B4 G7 F8 G8 C2 C1 G9 F7 E8 D6 D7 C5 B5 C7 B6 C8 E6 D5 B8 F9 H9 H8 F5 F6 E9 D9 B7 B9 A8 J8 F3 F2 H3 G2 A9 J9 C9 B3 D8 C4 F9 A4 A5 A3 PASS H2 PASS J3 PASS J4 PASS G4 PASS D3 PASS PASS #Aloril, map_opening13_3_7_4 vs GNU Go 3.6; Minue: H5 (later??) E5 D5 E6 E4 F4 F3 D4 C4 E3 D6 C3 D7 E7 G7 H6 B4 B3 E8 F8 D8 F7 A3 A2 A4 B2 F9 G9 E9 G8 C7 G3 B6 F2 B8 H7 A7 G6 B5 PASS A8 PASS C8 PASS #Aloril, map_opening14 vs GNU Go 3.7.4 E5 C4 E3 C7 C5 D4 D5 D2 B3 B4 C2 E2 F3 F2 D3 C3 B2 G3 B5 F7 G4 H3 H4 H1 H7 F8 A8 D1 J3 J2 J4 C1 B1 F4 E4 F5 G6 G5 H5 H2 F6 G2 C8 PASS D7 PASS C6 PASS B7 PASS E8 PASS E7 PASS G7 PASS G8 PASS F9 PASS A4 PASS PASS #Aloril, map_opening15 vs GNU Go 3.7.4 --- 18,43 ---- E5 C7 E7 G4 C5 E3 G6 #Aloril, MoGoSmallQdV3: http://cgos.boardspace.net/public/SGF/2006/10/06/316701.sgf E5 C4 E3 G7 C6 D2 H6 #Aloril, ggexp: http://cgos.boardspace.net/public/SGF/2006/10/06/316802.sgf ! E5 C4 E3 G6 C6 D2 E2 B4 D3 C2 C3 B3 D1 A2 B5 B1 F7 G7 F8 G8 H5 C5 B6 A5 A6 A4 D5 D4 E4 C1 E1 PASS H6 PASS G5 PASS H7 PASS F6 PASS H8 PASS G9 PASS PASS #Aloril, gnugo_3.7.4 http://cgos.boardspace.net/public/SGF/2006/10/06/316823.sgf; Minue622: D3 #?? E5 C4 E3 G6 C6 D2 E2 B4 F7 G7 F8 G8 H5 A7 B7 A6 D3 C2 C3 B3 D1 B2 B6 A2 A4 A8 B5 A5 B8 H3 G5 F2 G2 H2 F3 PASS F1 E6 F6 PASS D6 PASS E7 PASS H6 PASS H7 H8 J8 PASS G9 PASS H9 PASS A9 PASS D4 PASS C5 PASS C1 PASS B1 PASS E1 PASS A1 PASS A3 PASS H4 PASS G3 PASS J3 PASS J2 PASS H1 PASS PASS #Aloril, gnugo_3.7.4 http://cgos.boardspace.net/public/SGF/2006/10/06/316823.sgf (later?? (and remove this line)) E5 C4 E3 D6 E6 D7 F8 D3 E7 D8 D5 C5 E2 D2 C6 B6 D4 E1 F1 D1 G2 E8 F9 #Aloril, ggexp http://cgos.boardspace.net/public/SGF/2006/10/06/316862.sgf E5 G7 E7 E4 F5 #Aloril, GoJin-1.22: http://cgos.boardspace.net/public/SGF/2006/10/06/316976.sgf ! E5 C5 D7 D4 E4 E3 F3 D3 G4 #Aloril, antigoamuct-1.6: http://cgos.boardspace.net/public/SGF/2006/10/07/317029.sgf; Minue622: E4-G4 E5 C4 E3 D6 E6 D7 F8 G3 F2 E8 G6 H5 H2 D2 E7 H6 H7 D8 D3 C3 D5 C5 E2 C2 E9 D9 F9 E1 F1 D1 D4 B6 H3 C7 H4 B7 G5 B5 J6 B3 J5 B8 G2 A4 G4 A3 F3 PASS PASS #Aloril, map_opening1 vs GNU Go 3.7.4 E5 C3 E3 C6 F7 G3 H2 H3 G2 D7 E8 D8 D2 C2 D5 C5 D4 C4 E7 D1 E1 C1 D9 C9 E9 B8 D3 D6 E6 B7 H4 C8 G4 B5 F3 B3 J3 A6 PASS A7 PASS #Aloril, map_opening2 vs GNU Go 3.7.4 E5 C3 E3 C5 E7 G7 G5 G8 E8 H6 H5 D2 E2 B7 C8 B8 C6 B6 C7 E1 F1 D1 F2 C9 D9 B9 D3 C2 D5 D4 E4 C4 G6 B4 H7 A5 J6 A6 H8 A4 G9 PASS F8 PASS F7 PASS PASS #Aloril, map_opening3 vs GNU Go 3.7.4 E5 C5 D7 D3 G6 G3 D4 C4 E3 D2 E2 H5 H1 B7 C8 B8 D1 C2 C1 B1 E1 B2 C6 B6 C7 B9 D5 C9 D9 A5 H6 A6 G5 B3 H4 B4 J5 PASS H3 PASS G2 PASS G4 PASS F3 PASS PASS #Aloril, map_opening4 vs GNU Go 3.7.4 ! E5 C3 E3 E7 C5 B4 B5 D2 E2 B2 G6 C7 F8 B6 A5 E8 F7 B8 A4 A3 E9 D9 F9 E6 F5 E1 F1 D1 F2 C4 D6 D7 A6 A7 D4 F6 G7 C6 D5 D3 PASS D8 PASS A8 PASS A2 PASS C8 PASS C2 PASS PASS #Aloril, map_opening5 vs GNU Go 3.7.4; Minue622: F8 (later?) ! E5 C3 E3 E7 C5 B4 B5 D2 E2 B2 G6 C7 F8 B6 A5 E8 F7 B8 A4 A3 E9 D9 F9 C8 D1 C4 D4 C1 E1 D3 E6 D6 D5 C6 A6 A7 G3 D8 PASS A2 PASS A8 PASS B1 PASS #Aloril, map_opening5_3_7_4 vs GNU Go 3.6; Minue622: F8 (later?) ! E5 C3 E3 G7 C5 B4 B5 D2 E2 B2 G5 D7 B7 F6 H6 H7 C8 D8 E6 E7 J7 J8 J6 H9 D1 C1 E1 F5 F4 G6 H4 D3 D9 E9 C9 C7 B8 A5 A6 A4 D4 C6 B6 D6 D5 F8 C4 B3 PASS H8 PASS F9 PASS B1 PASS #Aloril, map_opening6 vs GNU Go 3.7.4; Minue622: D1 E5 C4 E3 C6 F7 G3 F2 D2 D8 B8 C7 B7 D3 C3 E2 C2 D6 C5 C8 B9 D1 C1 E1 D4 E4 C9 D9 D5 E6 B5 G4 A6 H3 A7 G2 A5 F3 PASS PASS #Aloril, map_opening7 vs GNU Go 3.7.4 E5 D4 E4 D5 E6 E3 F3 C7 D8 E2 F2 D3 B8 B7 C8 F1 G1 E1 G2 A8 D6 C6 D7 B9 C9 A7 A9 B5 B9 C2 G7 B3 F4 C4 PASS B4 PASS B2 PASS B6 PASS #Aloril, map_opening8 vs GNU Go 3.7.4 ! E5 C5 D7 G5 E3 B7 G7 G2 C3 C8 D8 C7 H4 D4 E4 D3 D2 D6 E6 C4 B3 D9 E8 E9 F9 C9 F8 B4 A4 A5 A3 D5 G3 B6 H5 A6 G6 PASS H2 PASS F2 PASS G1 PASS F5 PASS G4 PASS PASS #Aloril, map_opening9 vs GNU Go 3.7.4; Minue622: H4 ! E5 C5 D7 G5 E3 B7 G7 G2 C3 C8 D8 C7 H4 G4 H5 H3 G6 #Aloril, map_opening9 vs GNU Go 3.7.4; Minue622: H4-G6 ! E5 C5 D7 G5 E3 B7 G7 G2 C3 C8 D8 C7 H4 H5 G4 F4 F5 F3 G6 H3 J5 G3 H6 E4 D4 E2 D5 D3 B5 C6 C4 #Aloril, map_opening9 vs GNU Go 3.7.4; Minue622: H4-C4 E5 C5 D7 E4 F5 G3 D4 B7 C4 C8 F2 E3 E2 H5 H7 G2 D3 G6 G7 E8 F7 B5 G4 H4 J2 J3 F3 H2 B4 D5 D8 D9 D6 A5 F9 E9 C7 B8 A4 C6 F8 E6 E7 C9 G5 H6 F6 J7 J8 J6 H8 F1 E1 G1 F4 A6 D2 J4 PASS A7 PASS A9 PASS J1 PASS #Aloril, map_opening10 vs GNU Go 3.7.4 E5 C4 E3 C7 C5 D4 D5 D2 B3 B4 C2 E2 F3 F2 D3 C3 B2 G3 B5 F7 G4 H3 H4 H1 H7 F8 A8 D1 J3 J2 J4 C1 B1 H2 C8 G2 D7 PASS C6 PASS B7 PASS E7 PASS G7 PASS F6 PASS G8 PASS E8 PASS F9 PASS E4 PASS A4 PASS PASS #Aloril, map_opening12 vs GNU Go 3.7.4 ! E5 C3 E3 G3 G5 F4 E4 H4 H5 F2 E2 H2 B5 F5 F6 C5 C6 B4 B6 B2 C1 J5 J6 J4 H6 E1 D1 F1 D2 G4 F3 J2 B1 G2 D5 PASS C4 PASS D3 PASS C2 PASS B3 PASS A4 PASS A2 PASS PASS #Aloril, map_opening13 vs GNU Go 3.7.4; Minue622: H5 (later??) ! E5 C3 E3 G3 G5 F4 E4 H4 H5 C6 D2 E7 B2 B4 G7 F8 G8 C2 C1 G9 F7 E8 D6 D7 C5 B6 B5 A5 E6 H8 H7 C4 D5 D3 E2 A6 A3 B3 J8 H9 B1 A4 A2 F9 D4 J9 J7 C7 G4 B8 H3 C9 J4 C8 G2 D9 F3 PASS F5 PASS PASS #Aloril, map_opening13_3_7_4 vs GNU Go 3.7.10; Minue622: H5 (later??) ! E5 C3 E3 G3 G5 F4 E4 H4 H5 C6 D2 E7 B2 B4 G7 F8 G8 C2 C1 G9 F7 E8 D6 D7 C5 B5 C7 B6 C8 E6 D5 B8 F9 H9 H8 F5 F6 E9 D9 B7 B9 A8 J8 F3 F2 H3 G2 A9 J9 C9 B3 D8 C4 F9 A4 A5 A3 PASS H2 PASS J3 PASS J4 PASS G4 PASS D3 PASS PASS #Aloril, map_opening13_3_7_4 vs GNU Go 3.6; Minue622: H5 (later??) E5 D5 E6 E4 F4 F3 D4 C4 E3 D6 C3 D7 E7 G7 H6 B4 B3 E8 F8 D8 F7 A3 A2 A4 B2 F9 G9 E9 G8 C7 G3 B6 F2 B8 H7 A7 G6 B5 PASS A8 PASS C8 PASS #Aloril, map_opening14 vs GNU Go 3.7.4 E5 C4 E3 C7 C5 D4 D5 D2 B3 B4 C2 E2 F3 F2 D3 C3 B2 G3 B5 F7 G4 H3 H4 H1 H7 F8 A8 D1 J3 J2 J4 C1 B1 F4 E4 F5 G6 G5 H5 H2 F6 G2 C8 PASS D7 PASS C6 PASS B7 PASS E8 PASS E7 PASS G7 PASS G8 PASS F9 PASS A4 PASS PASS #Aloril, map_opening15 vs GNU Go 3.7.4 *************** *** 47,51 **** E5 D4 E4 D3 D5 G7 E3 E2 F2 D2 G3 D7 B4 B3 C4 C3 B6 B1 C8 D8 H6 A4 B5 A5 A6 A3 E1 D1 F1 B2 H7 G8 H8 PASS G6 PASS F7 PASS C7 PASS E7 PASS F8 PASS G9 PASS D6 PASS E8 PASS D9 PASS PASS #Aloril, map_opening19 vs GNU Go 3.7.4 E5 D4 E4 C5 E7 D3 E3 G7 H6 C7 D2 C2 E2 D8 E8 E9 F9 D9 F8 D1 E1 C1 D7 C8 C6 B6 D6 B5 D5 C3 H7 B9 G6 B8 G8 C4 F7 B7 PASS B3 PASS A4 PASS A5 PASS #Aloril, map_opening20 vs GNU Go 3.7.4 ! E5 D5 E6 D4 E4 E3 F3 C7 D8 E2 F2 D3 C8 D7 E7 G7 H6 F1 G1 E1 G2 B8 B9 A8 D6 C6 C9 B6 E8 A9 H7 C4 G8 B3 G6 C2 F7 B2 PASS B7 PASS B4 PASS B5 PASS PASS #Aloril, map_opening21 vs GNU Go 3.7.4; Minue: C8 E5 C4 E3 G7 C6 D2 H6 E2 F3 F2 G2 G1 H2 B5 B6 A6 C5 B4 D4 A8 C3 C2 B3 B2 A3 A2 D3 H1 F1 E1 J2 F1 H4 J1 H7 B1 G8 PASS F7 PASS G6 PASS A4 PASS A5 PASS A7 PASS B8 PASS A9 PASS PASS #Aloril, map_opening22 vs GNU Go 3.7.4 E5 C5 D7 E4 F5 G3 D4 B7 C4 C8 F2 E3 E2 H5 H7 G2 D3 G6 G7 E8 F7 B5 G4 H4 J2 J3 F3 H2 B4 D5 D8 D9 D6 A5 F9 E9 C7 B8 A4 C6 F8 E6 E7 C9 G5 H6 F6 J7 J8 J6 H8 F1 E1 G1 F4 A6 D2 A7 PASS J4 PASS A9 PASS J1 PASS #Aloril, map_opening23 vs GNU Go 3.7.4 --- 47,51 ---- E5 D4 E4 D3 D5 G7 E3 E2 F2 D2 G3 D7 B4 B3 C4 C3 B6 B1 C8 D8 H6 A4 B5 A5 A6 A3 E1 D1 F1 B2 H7 G8 H8 PASS G6 PASS F7 PASS C7 PASS E7 PASS F8 PASS G9 PASS D6 PASS E8 PASS D9 PASS PASS #Aloril, map_opening19 vs GNU Go 3.7.4 E5 D4 E4 C5 E7 D3 E3 G7 H6 C7 D2 C2 E2 D8 E8 E9 F9 D9 F8 D1 E1 C1 D7 C8 C6 B6 D6 B5 D5 C3 H7 B9 G6 B8 G8 C4 F7 B7 PASS B3 PASS A4 PASS A5 PASS #Aloril, map_opening20 vs GNU Go 3.7.4 ! E5 D5 E6 D4 E4 E3 F3 C7 D8 E2 F2 D3 C8 D7 E7 G7 H6 F1 G1 E1 G2 B8 B9 A8 D6 C6 C9 B6 E8 A9 H7 C4 G8 B3 G6 C2 F7 B2 PASS B7 PASS B4 PASS B5 PASS PASS #Aloril, map_opening21 vs GNU Go 3.7.4; Minue622: C8 E5 C4 E3 G7 C6 D2 H6 E2 F3 F2 G2 G1 H2 B5 B6 A6 C5 B4 D4 A8 C3 C2 B3 B2 A3 A2 D3 H1 F1 E1 J2 F1 H4 J1 H7 B1 G8 PASS F7 PASS G6 PASS A4 PASS A5 PASS A7 PASS B8 PASS A9 PASS PASS #Aloril, map_opening22 vs GNU Go 3.7.4 E5 C5 D7 E4 F5 G3 D4 B7 C4 C8 F2 E3 E2 H5 H7 G2 D3 G6 G7 E8 F7 B5 G4 H4 J2 J3 F3 H2 B4 D5 D8 D9 D6 A5 F9 E9 C7 B8 A4 C6 F8 E6 E7 C9 G5 H6 F6 J7 J8 J6 H8 F1 E1 G1 F4 A6 D2 A7 PASS J4 PASS A9 PASS J1 PASS #Aloril, map_opening23 vs GNU Go 3.7.4 *************** *** 67,71 **** E5 C5 D7 G5 E3 F7 C3 C7 E7 F8 B6 B7 C6 G3 E8 F2 E2 E1 F3 G2 F6 G6 D1 F5 E6 F1 D2 E9 D9 F9 F4 G4 B5 H7 C4 H8 D5 H5 C8 J6 B8 G7 A7 J5 PASS H3 PASS J2 PASS H2 PASS #Aloril, map_opening2 vs GNU Go 3.7.10 E5 C4 E3 C7 C5 B5 C6 B6 F7 G3 H2 H3 G2 D3 D2 C2 D4 C3 E2 E8 F8 D7 E7 D6 D5 D8 C1 B1 D1 F9 G9 E9 G8 B2 E6 B8 G4 C9 H4 B7 F3 B4 J3 PASS PASS #Aloril, map_opening3 vs GNU Go 3.7.10 ! E5 C4 E3 D7 C5 F6 F5 G6 C7 D6 C6 D2 C3 H4 G3 H3 G5 H6 H5 J5 D8 E8 C8 G2 F2 E9 E6 E7 H2 J2 G1 J3 G4 J6 D5 D9 C9 J4 H1 F8 J1 G7 D3 G8 C2 H8 B4 G9 D1 PASS D4 PASS E2 PASS PASS #Aloril, map_opening4 vs GNU Go 3.7.10; Minue: C5 (later??) E5 C5 D7 G5 E3 F7 C3 C7 E7 F8 B6 C6 D8 C8 B5 B7 C4 F6 E6 G3 F2 G2 F4 G4 G1 H1 F1 H2 F3 F5 E9 F9 E8 H6 C9 G7 D6 H7 D5 H4 B8 H8 A7 J5 PASS J6 PASS #Aloril, map_opening5 vs GNU Go 3.7.10 E5 C5 D7 D3 G6 G3 D4 C4 E3 D2 E2 H5 H1 B7 C8 B8 D1 C2 C1 B1 E1 B2 C6 H3 H6 B6 C7 B9 D5 C9 D9 B3 G5 A5 H4 B5 J5 B4 H2 PASS G4 PASS G2 PASS F3 PASS J3 PASS PASS #Aloril, map_opening6 vs GNU Go 3.7.10 --- 67,71 ---- E5 C5 D7 G5 E3 F7 C3 C7 E7 F8 B6 B7 C6 G3 E8 F2 E2 E1 F3 G2 F6 G6 D1 F5 E6 F1 D2 E9 D9 F9 F4 G4 B5 H7 C4 H8 D5 H5 C8 J6 B8 G7 A7 J5 PASS H3 PASS J2 PASS H2 PASS #Aloril, map_opening2 vs GNU Go 3.7.10 E5 C4 E3 C7 C5 B5 C6 B6 F7 G3 H2 H3 G2 D3 D2 C2 D4 C3 E2 E8 F8 D7 E7 D6 D5 D8 C1 B1 D1 F9 G9 E9 G8 B2 E6 B8 G4 C9 H4 B7 F3 B4 J3 PASS PASS #Aloril, map_opening3 vs GNU Go 3.7.10 ! E5 C4 E3 D7 C5 F6 F5 G6 C7 D6 C6 D2 C3 H4 G3 H3 G5 H6 H5 J5 D8 E8 C8 G2 F2 E9 E6 E7 H2 J2 G1 J3 G4 J6 D5 D9 C9 J4 H1 F8 J1 G7 D3 G8 C2 H8 B4 G9 D1 PASS D4 PASS E2 PASS PASS #Aloril, map_opening4 vs GNU Go 3.7.10; Minue622: C5 (later??) E5 C5 D7 G5 E3 F7 C3 C7 E7 F8 B6 C6 D8 C8 B5 B7 C4 F6 E6 G3 F2 G2 F4 G4 G1 H1 F1 H2 F3 F5 E9 F9 E8 H6 C9 G7 D6 H7 D5 H4 B8 H8 A7 J5 PASS J6 PASS #Aloril, map_opening5 vs GNU Go 3.7.10 E5 C5 D7 D3 G6 G3 D4 C4 E3 D2 E2 H5 H1 B7 C8 B8 D1 C2 C1 B1 E1 B2 C6 H3 H6 B6 C7 B9 D5 C9 D9 B3 G5 A5 H4 B5 J5 B4 H2 PASS G4 PASS G2 PASS F3 PASS J3 PASS PASS #Aloril, map_opening6 vs GNU Go 3.7.10 *************** *** 77,81 **** E5 C4 E3 G5 C6 D2 G7 G2 E2 D3 H6 F4 E4 H5 H4 G4 J5 B5 B6 A6 C5 B4 A7 A5 B7 E1 F1 D1 F2 D4 D5 B2 G6 A3 F5 B3 G3 C1 H2 PASS G1 PASS F3 PASS PASS #Aloril, map_opening12 vs GNU Go 3.7.10 E5 D5 E6 G5 E4 F3 E3 F7 D7 F2 F4 G4 F6 G6 E8 E2 D2 C5 G8 B7 B3 C8 A6 D1 C2 C7 H7 H6 G7 A7 A4 C1 B1 E1 J6 H3 J5 H5 J4 J3 F5 H4 J7 G2 E7 H2 F8 G1 C4 PASS B5 PASS D4 PASS C6 PASS D6 PASS B6 PASS D8 PASS C9 PASS B8 PASS A8 PASS PASS #Aloril, map_opening13 vs GNU Go 3.7.10 ! E5 C3 E3 G6 C5 G3 F7 G7 B4 C7 F8 G8 F6 F2 E2 F9 E9 G9 E8 G5 F3 G2 F4 G4 F1 G1 E1 F5 C6 H8 C4 H6 B3 J7 B7 J8 C8 PASS D7 PASS C2 PASS D3 PASS PASS #Aloril, map_opening14 vs GNU Go 3.7.10; Minue: F7 (later?) E5 D4 E4 D5 E6 G7 D6 C2 B5 E3 F3 E2 H6 F2 G3 G2 B3 H3 H4 H2 J4 B2 C3 D3 C5 A2 A3 C4 B4 J3 G4 D1 H7 C1 G8 E1 F7 PASS G6 PASS PASS #Aloril, map_opening15 vs GNU Go 3.7.10 E5 C4 E3 G5 C6 D2 G7 G2 E2 D3 H6 F4 E4 H5 H4 G4 J5 B5 B6 A6 C5 B7 B4 A5 C3 B3 D4 A4 B2 C7 D8 H3 J4 C2 A3 F3 F2 PASS A7 PASS G6 PASS F5 PASS C1 PASS D1 PASS D7 PASS C8 PASS B8 PASS J3 PASS G1 PASS H2 J2 J1 PASS G3 PASS PASS #Aloril, map_opening16 vs GNU Go 3.7.10 --- 77,81 ---- E5 C4 E3 G5 C6 D2 G7 G2 E2 D3 H6 F4 E4 H5 H4 G4 J5 B5 B6 A6 C5 B4 A7 A5 B7 E1 F1 D1 F2 D4 D5 B2 G6 A3 F5 B3 G3 C1 H2 PASS G1 PASS F3 PASS PASS #Aloril, map_opening12 vs GNU Go 3.7.10 E5 D5 E6 G5 E4 F3 E3 F7 D7 F2 F4 G4 F6 G6 E8 E2 D2 C5 G8 B7 B3 C8 A6 D1 C2 C7 H7 H6 G7 A7 A4 C1 B1 E1 J6 H3 J5 H5 J4 J3 F5 H4 J7 G2 E7 H2 F8 G1 C4 PASS B5 PASS D4 PASS C6 PASS D6 PASS B6 PASS D8 PASS C9 PASS B8 PASS A8 PASS PASS #Aloril, map_opening13 vs GNU Go 3.7.10 ! E5 C3 E3 G6 C5 G3 F7 G7 B4 C7 F8 G8 F6 F2 E2 F9 E9 G9 E8 G5 F3 G2 F4 G4 F1 G1 E1 F5 C6 H8 C4 H6 B3 J7 B7 J8 C8 PASS D7 PASS C2 PASS D3 PASS PASS #Aloril, map_opening14 vs GNU Go 3.7.10; Minue622: F7 (later?) E5 D4 E4 D5 E6 G7 D6 C2 B5 E3 F3 E2 H6 F2 G3 G2 B3 H3 H4 H2 J4 B2 C3 D3 C5 A2 A3 C4 B4 J3 G4 D1 H7 C1 G8 E1 F7 PASS G6 PASS PASS #Aloril, map_opening15 vs GNU Go 3.7.10 E5 C4 E3 G5 C6 D2 G7 G2 E2 D3 H6 F4 E4 H5 H4 G4 J5 B5 B6 A6 C5 B7 B4 A5 C3 B3 D4 A4 B2 C7 D8 H3 J4 C2 A3 F3 F2 PASS A7 PASS G6 PASS F5 PASS C1 PASS D1 PASS D7 PASS C8 PASS B8 PASS J3 PASS G1 PASS H2 J2 J1 PASS G3 PASS PASS #Aloril, map_opening16 vs GNU Go 3.7.10 *************** *** 90,94 **** E5 D5 E6 E4 F4 E3 C7 F3 G4 G3 B5 G7 H6 E8 H8 D7 D6 C8 E7 B3 H3 H2 H4 C5 C6 B4 B6 J2 A4 A3 A5 J3 J4 C2 D8 D2 F8 C4 E9 D3 G8 G2 B8 PASS C9 PASS G6 PASS H7 PASS F7 PASS PASS #Aloril, map_opening26 vs GNU Go 3.7.10 E5 C3 E3 F6 C5 G7 B4 C7 G5 H6 H5 J5 J4 J6 H4 G6 D6 D7 E6 E7 B6 B8 B7 A8 A7 F5 F4 C6 B3 F8 D3 E8 C2 C8 C4 G8 PASS D9 PASS C9 PASS #Aloril, map_opening27 vs GNU Go 3.7.10 ! E5 D5 E6 D6 E4 G3 D4 D7 E7 G6 B6 E2 F3 G2 D2 G4 G7 H7 G8 C5 B4 C8 C4 H8 E8 D1 C2 C1 B1 E1 B2 E3 F4 F6 F2 F1 D3 G1 H9 F7 F8 H6 F5 G5 J9 J8 G9 H4 B5 J5 D8 J6 B8 PASS C9 PASS C6 PASS C7 PASS PASS #Aloril, map_opening28 vs GNU Go 3.7.10; Minue: E7, E8 E5 C3 E3 G3 G5 E2 D2 F2 D3 C7 H4 C5 E7 D8 E8 C2 D1 C1 D7 C8 C6 B6 D5 D6 C4 B4 D4 E9 F9 E6 F6 D9 C6 D6 F8 C6 E6 A5 H3 B3 F3 A6 G4 A4 G2 B8 F1 A2 E1 B2 PASS #Aloril, map_opening29 vs GNU Go 3.7.10 E5 D4 E4 D5 E6 G7 D6 D3 F2 G4 C1 E8 D8 D9 C8 E7 H3 E3 F3 F4 C6 B5 B3 B4 C3 B6 B7 D7 C7 E2 E1 H5 F6 H4 G3 J3 J2 J4 H2 F8 C9 E9 G6 H6 F7 G8 C5 G5 C4 F5 D2 H8 A6 J7 A4 J8 A5 PASS PASS #Aloril, map_opening30 vs GNU Go 3.7.10 --- 90,94 ---- E5 D5 E6 E4 F4 E3 C7 F3 G4 G3 B5 G7 H6 E8 H8 D7 D6 C8 E7 B3 H3 H2 H4 C5 C6 B4 B6 J2 A4 A3 A5 J3 J4 C2 D8 D2 F8 C4 E9 D3 G8 G2 B8 PASS C9 PASS G6 PASS H7 PASS F7 PASS PASS #Aloril, map_opening26 vs GNU Go 3.7.10 E5 C3 E3 F6 C5 G7 B4 C7 G5 H6 H5 J5 J4 J6 H4 G6 D6 D7 E6 E7 B6 B8 B7 A8 A7 F5 F4 C6 B3 F8 D3 E8 C2 C8 C4 G8 PASS D9 PASS C9 PASS #Aloril, map_opening27 vs GNU Go 3.7.10 ! E5 D5 E6 D6 E4 G3 D4 D7 E7 G6 B6 E2 F3 G2 D2 G4 G7 H7 G8 C5 B4 C8 C4 H8 E8 D1 C2 C1 B1 E1 B2 E3 F4 F6 F2 F1 D3 G1 H9 F7 F8 H6 F5 G5 J9 J8 G9 H4 B5 J5 D8 J6 B8 PASS C9 PASS C6 PASS C7 PASS PASS #Aloril, map_opening28 vs GNU Go 3.7.10; Minue622: E7, E8 E5 C3 E3 G3 G5 E2 D2 F2 D3 C7 H4 C5 E7 D8 E8 C2 D1 C1 D7 C8 C6 B6 D5 D6 C4 B4 D4 E9 F9 E6 F6 D9 C6 D6 F8 C6 E6 A5 H3 B3 F3 A6 G4 A4 G2 B8 F1 A2 E1 B2 PASS #Aloril, map_opening29 vs GNU Go 3.7.10 E5 D4 E4 D5 E6 G7 D6 D3 F2 G4 C1 E8 D8 D9 C8 E7 H3 E3 F3 F4 C6 B5 B3 B4 C3 B6 B7 D7 C7 E2 E1 H5 F6 H4 G3 J3 J2 J4 H2 F8 C9 E9 G6 H6 F7 G8 C5 G5 C4 F5 D2 H8 A6 J7 A4 J8 A5 PASS PASS #Aloril, map_opening30 vs GNU Go 3.7.10 *************** *** 104,108 **** E5 D5 E6 G5 E4 F3 E3 D6 E7 C8 G7 F2 C3 E2 B5 B6 C5 C6 D8 B1 D2 D1 C2 C1 H6 H3 H4 G4 H5 G2 B2 J4 J5 J3 F4 H1 G6 F5 F6 G3 A2 E1 A1 H2 B8 PASS C7 PASS C9 PASS B7 PASS D4 PASS D7 PASS A6 PASS PASS #Aloril, map_opening45 vs GNU Go 3.7.10 E5 C3 E3 F6 C5 G7 B4 G3 D7 F2 E2 E8 D8 D9 C9 E9 C8 E1 D1 F1 D2 E7 F3 G2 G4 H4 G5 H5 G6 H6 E6 F5 F4 F7 C4 H8 B3 J7 C2 G8 D3 H3 PASS J8 PASS J6 PASS #Aloril, map_opening47 vs GNU Go 3.7.10 ! E5 D5 E6 G5 E4 F7 E7 D4 D3 C7 C3 F8 E8 B5 B9 C4 B3 B7 C6 G3 F6 G6 F9 G8 G9 H9 E9 H8 F2 G2 F3 F1 E1 G1 E2 F4 F5 G4 D6 H7 C5 H6 B4 H4 B6 H2 A5 J5 C8 J6 D7 PASS B8 PASS A7 PASS PASS #Aloril, map_opening48 vs GNU Go 3.7.10; Minue: D3 (later??) E5 D5 E6 G5 E4 F3 E3 D6 E7 C8 G7 F2 C3 E2 B5 B6 C5 C6 D8 B1 D2 B3 C4 D1 B2 A2 C2 C1 H6 H3 H4 G4 H5 G2 A4 A1 A3 E1 J3 J2 J4 F4 G6 F5 F6 H2 D7 PASS B4 PASS C7 PASS B7 PASS A6 PASS D4 PASS B8 PASS C9 PASS PASS #Aloril, map_opening49 vs GNU Go 3.7.10 E5 D5 E6 G5 E4 F3 E3 D6 E7 C8 G7 F2 C3 E2 B5 B6 C5 C6 D8 B1 D2 B3 C4 D1 B2 C1 H6 C2 H4 D3 D4 B9 B7 H2 G4 B4 A4 A2 H3 A6 A5 J2 G3 G2 F4 A3 J3 D2 D7 PASS C7 PASS B8 PASS C9 PASS A7 PASS A9 PASS G6 PASS H5 PASS F5 PASS PASS #Aloril, map_opening50 vs GNU Go 3.7.10 --- 104,108 ---- E5 D5 E6 G5 E4 F3 E3 D6 E7 C8 G7 F2 C3 E2 B5 B6 C5 C6 D8 B1 D2 D1 C2 C1 H6 H3 H4 G4 H5 G2 B2 J4 J5 J3 F4 H1 G6 F5 F6 G3 A2 E1 A1 H2 B8 PASS C7 PASS C9 PASS B7 PASS D4 PASS D7 PASS A6 PASS PASS #Aloril, map_opening45 vs GNU Go 3.7.10 E5 C3 E3 F6 C5 G7 B4 G3 D7 F2 E2 E8 D8 D9 C9 E9 C8 E1 D1 F1 D2 E7 F3 G2 G4 H4 G5 H5 G6 H6 E6 F5 F4 F7 C4 H8 B3 J7 C2 G8 D3 H3 PASS J8 PASS J6 PASS #Aloril, map_opening47 vs GNU Go 3.7.10 ! E5 D5 E6 G5 E4 F7 E7 D4 D3 C7 C3 F8 E8 B5 B9 C4 B3 B7 C6 G3 F6 G6 F9 G8 G9 H9 E9 H8 F2 G2 F3 F1 E1 G1 E2 F4 F5 G4 D6 H7 C5 H6 B4 H4 B6 H2 A5 J5 C8 J6 D7 PASS B8 PASS A7 PASS PASS #Aloril, map_opening48 vs GNU Go 3.7.10; Minue622: D3 (later??) E5 D5 E6 G5 E4 F3 E3 D6 E7 C8 G7 F2 C3 E2 B5 B6 C5 C6 D8 B1 D2 B3 C4 D1 B2 A2 C2 C1 H6 H3 H4 G4 H5 G2 A4 A1 A3 E1 J3 J2 J4 F4 G6 F5 F6 H2 D7 PASS B4 PASS C7 PASS B7 PASS A6 PASS D4 PASS B8 PASS C9 PASS PASS #Aloril, map_opening49 vs GNU Go 3.7.10 E5 D5 E6 G5 E4 F3 E3 D6 E7 C8 G7 F2 C3 E2 B5 B6 C5 C6 D8 B1 D2 B3 C4 D1 B2 C1 H6 C2 H4 D3 D4 B9 B7 H2 G4 B4 A4 A2 H3 A6 A5 J2 G3 G2 F4 A3 J3 D2 D7 PASS C7 PASS B8 PASS C9 PASS A7 PASS A9 PASS G6 PASS H5 PASS F5 PASS PASS #Aloril, map_opening50 vs GNU Go 3.7.10 *************** *** 143,147 **** E5 E7 G6 F3 D3 #Aloril, NeuroGo-A64_3400 http://cgos.boardspace.net/public/SGF/2006/11/04/347933.sgf E5 F5 E6 E4 D4 F6 E7 F7 E3 F4 D3 E8 D8 F8 F3 D7 C7 G3 E9 F2 E2 F9 D9 G2 F1 G1 E1 H4 D6 #Aloril, SimpleBot ! E5 G5 F7 C5 E3 D7 G3 G7 E7 G8 D6 C7 C6 B6 H6 G6 H5 E8 F8 F9 D8 E9 B7 C8 B8 D9 B5 #Minue-SimpleBot game1 2006-11-06; Minue: H6-C2 ! E5 G6 E7 C5 G4 G8 C4 B4 D4 B3 C6 B5 C2 #Minue-SimpleBot game2 2006-11-06; Minue: C4-C2 E5 E7 G6 F5 F6 E6 D5 F4 H4 B7 D3 G8 B5 H7 H6 B6 C6 C7 G7 H8 A5 F7 G4 D6 C5 J6 J5 J7 A6 A7 F3 D8 G5 C8 E4 #Aloril vs 3.7.10, Mango http://files.gokgs.com/games/2006/11/5/firstgo-SimpleBot.sgf --- 143,147 ---- E5 E7 G6 F3 D3 #Aloril, NeuroGo-A64_3400 http://cgos.boardspace.net/public/SGF/2006/11/04/347933.sgf E5 F5 E6 E4 D4 F6 E7 F7 E3 F4 D3 E8 D8 F8 F3 D7 C7 G3 E9 F2 E2 F9 D9 G2 F1 G1 E1 H4 D6 #Aloril, SimpleBot ! E5 G5 F7 C5 E3 D7 G3 G7 E7 G8 D6 C7 C6 B6 H6 G6 H5 E8 F8 F9 D8 E9 B7 C8 B8 D9 B5 #Minue622-SimpleBot game1 2006-11-06; Minue622: H6-C2 ! E5 G6 E7 C5 G4 G8 C4 B4 D4 B3 C6 B5 C2 #Minue622-SimpleBot game2 2006-11-06; Minue622: C4-C2 E5 E7 G6 F5 F6 E6 D5 F4 H4 B7 D3 G8 B5 H7 H6 B6 C6 C7 G7 H8 A5 F7 G4 D6 C5 J6 J5 J7 A6 A7 F3 D8 G5 C8 E4 #Aloril vs 3.7.10, Mango http://files.gokgs.com/games/2006/11/5/firstgo-SimpleBot.sgf Index: 9x9_white_opening.lst =================================================================== RCS file: /cvsroot/londerings/go/simple_go/9x9_white_opening.lst,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -r1.9 -r1.10 *** 9x9_white_opening.lst 7 Nov 2006 04:43:04 -0000 1.9 --- 9x9_white_opening.lst 17 Nov 2006 03:57:37 -0000 1.10 *************** *** 123,127 **** E5 G5 G7 F6 F3 F7 F8 E8 G8 D7 H6 H5 F9 C5 #Aloril, MoGo_G3 http://cgos.boardspace.net/public/SGF/2006/11/03/347431.sgf E5 G5 G7 F6 E6 F7 E7 F8 E8 C3 E3 C6 #Aloril, MoGo_G3_10k http://cgos.boardspace.net/public/SGF/2006/11/03/347573.sgf ! E5 G5 G7 F6 D6 F7 F8 E8 H8 D7 G9 C7 #Aloril, MoGo_G3 http://cgos.boardspace.net/public/SGF/2006/11/03/347623.sgf E5 G5 G7 F6 D7 F7 F8 E8 G8 E7 H6 D6 C7 C6 B6 B5 B7 C5 D8 E9 G3 H5 #Aloril, MoGo_G3 http://cgos.boardspace.net/public/SGF/2006/11/03/347820.sgf D4 F6 F5 G5 G6 G4 F4 F7 H6 G3 F3 G7 G2 H5 H3 H7 #Aloril, Valkyria_UCT7 http://cgos.boardspace.net/public/SGF/2006/11/03/347185.sgf --- 123,127 ---- E5 G5 G7 F6 F3 F7 F8 E8 G8 D7 H6 H5 F9 C5 #Aloril, MoGo_G3 http://cgos.boardspace.net/public/SGF/2006/11/03/347431.sgf E5 G5 G7 F6 E6 F7 E7 F8 E8 C3 E3 C6 #Aloril, MoGo_G3_10k http://cgos.boardspace.net/public/SGF/2006/11/03/347573.sgf ! #del: E5 G5 G7 F6 D6 F7 F8 E8 H8 D7 G9 C7 #Aloril, MoGo_G3 http://cgos.boardspace.net/public/SGF/2006/11/03/347623.sgf E5 G5 G7 F6 D7 F7 F8 E8 G8 E7 H6 D6 C7 C6 B6 B5 B7 C5 D8 E9 G3 H5 #Aloril, MoGo_G3 http://cgos.boardspace.net/public/SGF/2006/11/03/347820.sgf D4 F6 F5 G5 G6 G4 F4 F7 H6 G3 F3 G7 G2 H5 H3 H7 #Aloril, Valkyria_UCT7 http://cgos.boardspace.net/public/SGF/2006/11/03/347185.sgf *************** *** 139,146 **** #del: F6 D4 E3 E4 F4 D6 F7 D3 F3 E8 F8 E7 E2 D2 E9 D9 F9 D8 D1 C1 E1 C2 E5 D5 E6 C7 G5 B3 G6 PASS G4 PASS H7 PASS H6 PASS H3 PASS H4 PASS G2 PASS H2 PASS #Aloril vs 3.7.4 and 3.6, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/03/347708.sgf #del: F6 D4 E3 E4 F3 F4 C2 D6 G5 G4 B4 H4 H5 F8 G8 G7 H8 F7 H7 G6 H6 J5 B6 C7 B7 G2 C8 D8 F2 G3 B8 D3 D2 C3 B3 F1 E2 E1 C5 D1 C1 G1 A2 D5 C6 D7 D9 E9 C9 C4 B2 J6 B5 J7 A7 J8 PASS F5 PASS E6 PASS G9 PASS H9 PASS PASS #Aloril vs 3.7.10, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/03/347708.sgf ! F6 D4 E3 F5 E5 E4 F4 G5 F3 G6 #Minue: F5-G6, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/03/347708.sgf ! F6 D4 E3 F5 G5 F4 #Minue: F5-F4, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/03/347708.sgf ! F6 D4 E3 F5 H3 E4 E6 G5 H7 D3 F3 J5 D2 C2 C6 E2 F2 D1 B4 B3 A4 C4 B5 H6 G4 G7 F8 G8 F7 F9 E9 G9 D8 H4 G6 H8 A3 A2 C5 D5 D6 E5 B7 F4 C8 G3 E8 G2 B8 F1 A6 H2 PASS J3 PASS J7 PASS PASS #Aloril vs 3.7.10, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/03/347708.sgf; Minue: F5 ! F6 D4 E3 F5 G6 D6 H3 G5 E5 E6 E4 H6 F7 H7 G8 H8 F8 D8 H5 H4 D5 C6 C4 G3 B5 B6 F3 G2 F2 G4 A6 A7 A5 B8 G1 H1 F1 H2 C5 F4 D3 J5 B3 E8 B4 E7 C2 G7 B2 J3 PASS G9 PASS F9 PASS PASS #Aloril vs 3.7.4, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/03/347708.sgf; Minue: F5 ! F6 D4 E3 F5 G6 D6 D3 G5 C3 E7 F8 G8 F7 H7 H6 H5 J6 J8 G9 H9 F9 D8 B5 B7 G2 H3 H2 G3 B6 C7 A7 A8 A6 B9 C4 D5 G7 H8 J2 J3 F3 F4 E4 E5 C6 C5 A4 E8 F2 E9 B4 E6 B2 J5 C2 J9 D1 J7 D2 PASS #Aloril vs 3.7.6, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/03/347708.sgf; Minue: F5 E5 G5 D4 C7 G3 F7 G4 F5 C5 F4 F3 E4 E3 B6 B5 E6 D5 H5 H4 A5 A4 A6 B3 C6 J5 J6 J4 H6 D6 D7 #Aloril vs 3.7.10, Mango http://files.gokgs.com/games/2006/11/5/SimpleBot-Mango.sgf --- 139,155 ---- #del: F6 D4 E3 E4 F4 D6 F7 D3 F3 E8 F8 E7 E2 D2 E9 D9 F9 D8 D1 C1 E1 C2 E5 D5 E6 C7 G5 B3 G6 PASS G4 PASS H7 PASS H6 PASS H3 PASS H4 PASS G2 PASS H2 PASS #Aloril vs 3.7.4 and 3.6, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/03/347708.sgf #del: F6 D4 E3 E4 F3 F4 C2 D6 G5 G4 B4 H4 H5 F8 G8 G7 H8 F7 H7 G6 H6 J5 B6 C7 B7 G2 C8 D8 F2 G3 B8 D3 D2 C3 B3 F1 E2 E1 C5 D1 C1 G1 A2 D5 C6 D7 D9 E9 C9 C4 B2 J6 B5 J7 A7 J8 PASS F5 PASS E6 PASS G9 PASS H9 PASS PASS #Aloril vs 3.7.10, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/03/347708.sgf ! F6 D4 E3 F5 E5 E4 F4 G5 F3 G6 #Minue622: F5-G6, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/03/347708.sgf ! F6 D4 E3 F5 G5 F4 #Minue622: F5-F4, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/03/347708.sgf ! F6 D4 E3 F5 H3 E4 E6 G5 H7 D3 F3 J5 D2 C2 C6 E2 F2 D1 B4 B3 A4 C4 B5 H6 G4 G7 F8 G8 F7 F9 E9 G9 D8 H4 G6 H8 A3 A2 C5 D5 D6 E5 B7 F4 C8 G3 E8 G2 B8 F1 A6 H2 PASS J3 PASS J7 PASS PASS #Aloril vs 3.7.10, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/03/347708.sgf; Minue622: F5 ! F6 D4 E3 F5 G6 D6 H3 G5 E5 E6 E4 H6 F7 H7 G8 H8 F8 D8 H5 H4 D5 C6 C4 G3 B5 B6 F3 G2 F2 G4 A6 A7 A5 B8 G1 H1 F1 H2 C5 F4 D3 J5 B3 E8 B4 E7 C2 G7 B2 J3 PASS G9 PASS F9 PASS PASS #Aloril vs 3.7.4, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/03/347708.sgf; Minue622: F5 ! F6 D4 E3 F5 G6 D6 D3 G5 C3 E7 F8 G8 F7 H7 H6 H5 J6 J8 G9 H9 F9 D8 B5 B7 G2 H3 H2 G3 B6 C7 A7 A8 A6 B9 C4 D5 G7 H8 J2 J3 F3 F4 E4 E5 C6 C5 A4 E8 F2 E9 B4 E6 B2 J5 C2 J9 D1 J7 D2 PASS #Aloril vs 3.7.6, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/03/347708.sgf; Minue622: F5 E5 G5 D4 C7 G3 F7 G4 F5 C5 F4 F3 E4 E3 B6 B5 E6 D5 H5 H4 A5 A4 A6 B3 C6 J5 J6 J4 H6 D6 D7 #Aloril vs 3.7.10, Mango http://files.gokgs.com/games/2006/11/5/SimpleBot-Mango.sgf + F4 D6 F6 D4 D5 C5 E5 C7 C4 C3 E7 E3 F3 F2 G2 E2 G1 D8 E8 E9 F9 D9 G8 D7 E4 B4 F1 E1 E6 D3 #Aloril, SimpleBot 0.4.1 no book game1 + C5 F5 G7 D4 E4 E5 E3 D5 #Aloril, SimpleBot 0.4.1 no book game2 + D5 F5 F4 G4 D4 F6 D7 E4 E3 F3 E2 E7 D8 E8 H1 D9 C9 E9 B8 F2 F1 G2 G1 H2 E5 F4 E6 D3 D2 J2 F7 F8 C3 J1 E1 G7 #Aloril, SimpleBot 0.4.1 no book game3 + D6 F4 C3 F6 E4 F3 F5 G5 E5 E7 D7 E8 D8 D9 C9 E9 B8 D2 C2 D3 D4 E3 D1 E1 C1 G7 E6 G4 #Aloril, SimpleBot 0.4.1 no book game4 + D4 F6 F4 D6 C5 G5 C6 C7 B7 C8 G4 H4 H3 H5 J3 B8 B6 E5 E4 A7 A6 A8 J4 J5 F5 G6 D5 E6 G2 G8 #Aloril, Valkyria_UCT7http://cgos.boardspace.net/public/SGF/2006/11/08/353523.sgf + F4 D6 D3 F6 G4 H6 C5 C6 #Minue622: H6-C6, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/08/353699.sgf + F4 D6 G5 D4 #Minue622: D4, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/08/353566.sgf + E5 G5 G3 F4 D4 F3 F2 E2 H2 F1 G1 G2 #Aloril, MoGo_G3 http://cgos.boardspace.net/public/SGF/2006/11/03/347623.sgf; Minue622: F1-G2 + E5 G5 G3 F4 D4 F3 F2 E2 H2 F1 G2 D3 #Aloril, MoGo_G3 http://cgos.boardspace.net/public/SGF/2006/11/03/347623.sgf; Minue622: F1-D3 Index: Makefile =================================================================== RCS file: /cvsroot/londerings/go/simple_go/Makefile,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -r1.8 -r1.9 *** Makefile 22 Sep 2006 14:54:04 -0000 1.8 --- Makefile 17 Nov 2006 03:57:37 -0000 1.9 *************** *** 21,25 **** gcc -g -O2 -Wall -Ignugo -Ignugo/utils -Ignugo/engine -Ignugo/sgf -c weakbot.c ! alphabeta.o: alphabeta.c alphabeta.h gcc -g -O2 -Wall -Ignugo -Ignugo/utils -Ignugo/engine -Ignugo/sgf -c alphabeta.c --- 21,25 ---- gcc -g -O2 -Wall -Ignugo -Ignugo/utils -Ignugo/engine -Ignugo/sgf -c weakbot.c ! alphabeta.o: alphabeta.c alphabeta.h montecarlo.h gcc -g -O2 -Wall -Ignugo -Ignugo/utils -Ignugo/engine -Ignugo/sgf -c alphabeta.c Index: alphabeta.c =================================================================== RCS file: /cvsroot/londerings/go/simple_go/alphabeta.c,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -r1.5 -r1.6 *** alphabeta.c 24 Jul 2006 09:08:30 -0000 1.5 --- alphabeta.c 17 Nov 2006 03:57:37 -0000 1.6 *************** *** 2,35 **** #include "gnugo/utils/random.h" #include "alphabeta.h" #define WORST_SCORE -1000000000 ! int alpha_beta_search(int pos, int color, int depth, int alpha, int beta) { ! int best_score, best_move, score; int i, j, move, other_color; ! //int move_list[depth]; ! if(board[pos]==EMPTY) { ! return -1; } if(depth==0) { return 0; } best_score = WORST_SCORE; - best_move = PASS_MOVE; other_color = OTHER_COLOR(color); ! for (i = 0; i < board_size; i++) { for (j = 0; j < board_size; j++) { ! move = POS(i, j); ! if(trymove(move, color, NULL, NO_MOVE)) { ! score = alpha_beta_search(pos, other_color, depth-1, -beta, -alpha); popgo(); score = -score; if(score > best_score) { best_score = score; if(score >= alpha) { alpha = score; if(score >= beta) { ! i = j = board_size; // jump out all loops break; } --- 2,134 ---- #include "gnugo/utils/random.h" #include "alphabeta.h" + #include "montecarlo.h" + #include <string.h> + #undef WORST_SCORE #define WORST_SCORE -1000000000 ! enum {resultAccurate, resultAlpha, resultBeta, resultUnkown}; ! ! int find_alpha_beta_position(int pos, int color, int depth, int alpha, int beta, int *best_score, int *best_move) { ! Hash_data hashval; ! ResultNode *node; ! capture_goal = pos; ! get_result_board_hash(&hashval, color); ! node = find_result_table(&hashval); ! if(!node) {return resultUnkown;} ! *best_move = node->best_move; ! if(node->hash_type == resultAccurate && (node->score != 0 || node->depth >= depth)) { ! *best_score = node->score; ! return resultAccurate; ! } ! if(node->depth < depth) { ! return resultUnkown; ! } ! if(node->hash_type == resultAlpha && node->score <= alpha) { ! *best_score = alpha; ! return resultAlpha; ! } ! if(node->hash_type == resultBeta && node->score >= beta) { ! *best_score = beta; ! return resultBeta; ! } ! return resultUnkown; ! } ! ! void store_alpha_beta_position(int pos, int color, int depth, int score, int best_move, int hash_type) ! { ! Hash_data hashval; ! ResultNode *node; ! capture_goal = pos; ! get_result_board_hash(&hashval, color); ! node = add_result_table(&hashval); ! node->depth = depth; ! node->score = score; ! node->best_move = best_move; ! node->hash_type = hash_type; ! node->type = ALPHA_BETA_HASH_TYPE; ! } ! ! ! ! int alpha_beta_search_recursive(int pos, int color, int depth, int alpha, int beta, int *pv, int *pv_depth, int ply, Hash_data *hash_history) ! /* ! for capture search: return 0 or -1 at leaves ! for win search: return 1, 0 or -1 at leaves ! */ ! { ! static int counter = 0; ! int best_score, score; int i, j, move, other_color; ! int move_list[depth], move_list_depth; ! int hash_type = resultAlpha; ! *pv_depth = 0; ! pv[0] = PASS_MOVE; ! if(pos) { ! if(board[pos]==EMPTY) { ! return -1; ! } ! if(get_pass_count() >= 2) { ! return 0; ! } ! } else { ! if(get_pass_count() >= 2) { ! double score_d = score_board_color(color); ! if(score_d > 0) {return 1;} ! if(score_d < 0) {return -1;} ! return 0; ! } } if(depth==0) { return 0; } + hash_type = find_alpha_beta_position(pos, color, depth, alpha, beta, &best_score, &pv[0]); + if(hash_type != resultUnkown) { + return best_score; + } + hash_type = resultAlpha; best_score = WORST_SCORE; other_color = OTHER_COLOR(color); ! for (i = 0; i <= board_size; i++) { for (j = 0; j < board_size; j++) { ! if(i==board_size) { ! if(j) { ! break; ! } ! move = PASS_MOVE; ! } else { ! move = POS(i, j); ! } ! int ok; ! ok = trymove(move, color, NULL, NO_MOVE); ! counter++; ! if(counter & 0xFFFF) {get_trymove_counter2();} ! if(ok && move!=PASS_MOVE) { ! int k; ! for(k = 0; k < ply; k++) { ! if(hashdata_is_equal(hash_history[k], board_hash)) { ! ok = FALSE; ! popgo(); ! break; ! } ! } ! } ! if(ok) { ! hash_history[ply] = board_hash; ! score = alpha_beta_search_recursive(pos, other_color, depth-1, -beta, -alpha, move_list, &move_list_depth, ply + 1, hash_history); popgo(); score = -score; if(score > best_score) { best_score = score; + pv[0] = move; + memcpy(pv+1, move_list, sizeof(move_list[0]) * move_list_depth); + *pv_depth = 1 + move_list_depth; if(score >= alpha) { + hash_type = resultAccurate; alpha = score; if(score >= beta) { ! i = j = board_size + 1; // jump out all loops ! hash_type = resultBeta; break; } *************** *** 42,48 **** --- 141,154 ---- best_score = 0; } + store_alpha_beta_position(pos, color, depth, best_score, pv[0], hash_type); return best_score; } + int alpha_beta_search(int pos, int color, int depth, int alpha, int beta, int *pv, int *pv_depth) + { + Hash_data hash_history[depth]; + return alpha_beta_search_recursive(pos, color, depth, alpha, beta, pv, pv_depth, 0, hash_history); + } + int alpha_beta_search_random(int pos, int color, int depth, int alpha, int beta, int limit) Index: alphabeta.h =================================================================== RCS file: /cvsroot/londerings/go/simple_go/alphabeta.h,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** alphabeta.h 24 Jul 2006 04:42:31 -0000 1.3 --- alphabeta.h 17 Nov 2006 03:57:37 -0000 1.4 *************** *** 6,10 **** #define RAND_FACTOR 1000000 ! int alpha_beta_search(int pos, int color, int depth, int alpha, int beta); int alpha_beta_search_random(int pos, int color, int depth, int alpha, int beta, int limit); --- 6,10 ---- #define RAND_FACTOR 1000000 ! int alpha_beta_search(int pos, int color, int depth, int alpha, int beta, int *pv, int *pv_depth); int alpha_beta_search_random(int pos, int color, int depth, int alpha, int beta, int limit); Index: c_board.h =================================================================== RCS file: /cvsroot/londerings/go/simple_go/c_board.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -r1.4 -r1.5 *** c_board.h 2 Oct 2006 03:45:47 -0000 1.4 --- c_board.h 17 Nov 2006 03:57:38 -0000 1.5 *************** *** 21,22 **** --- 21,25 ---- #define SCORE_IS_ABSOLUTE(score) (fabs(score) >= INFINITE_COUNT - 1.0) + + double score_board_color(int color); + int get_pass_count(); Index: c_boardmodule.c =================================================================== RCS file: /cvsroot/londerings/go/simple_go/c_boardmodule.c,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -r1.24 -r1.25 *** c_boardmodule.c 3 Oct 2006 14:34:22 -0000 1.24 --- c_boardmodule.c 17 Nov 2006 03:57:38 -0000 1.25 *************** *** 165,175 **** static PyObject *cboard_alpha_beta_search(PyObject *self, PyObject *args) { ! int i, j, color, pos, score, depth, alpha, beta; if(!PyArg_ParseTuple(args, "(ii)iiii", &i, &j, &color, &depth, &alpha, &beta)) { return NULL; } ! pos = PYTHON_POS2C(i, j); ! score = alpha_beta_search(pos, color, depth, alpha, beta); ! return PyInt_FromLong(score); } --- 165,198 ---- static PyObject *cboard_alpha_beta_search(PyObject *self, PyObject *args) { ! int i, j, color, pos, score, depth, alpha, beta, move; ! PyObject *pv, *result; if(!PyArg_ParseTuple(args, "(ii)iiii", &i, &j, &color, &depth, &alpha, &beta)) { return NULL; } ! int move_list[depth], move_list_depth; ! if(i==-1) { ! pos = 0; ! } else { ! pos = PYTHON_POS2C(i, j); ! } ! score = alpha_beta_search(pos, color, depth, alpha, beta, move_list, &move_list_depth); ! pv = PyTuple_New(move_list_depth); ! if(!pv) { ! return NULL; ! } ! for(depth = 0; depth < move_list_depth; depth++) { ! move = move_list[depth]; ! if(move==PASS_MOVE) { ! i = j = -1; ! } else { ! i = C2_PYTHON_POS_I(move); ! j = C2_PYTHON_POS_J(move); ! } ! PyTuple_SET_ITEM(pv, depth, Py_BuildValue("(ii)", i, j)); ! } ! //return PyInt_FromLong(score); ! result = Py_BuildValue("(iO)", score, pv); ! Py_DECREF(pv); ! return result; } *************** *** 188,198 **** static PyObject *cboard_get_trymove_counter(PyObject *self, PyObject *args) { - static long long total_count = 0; if(!PyArg_ParseTuple(args, "")) { return NULL; } ! total_count += get_trymove_counter(); ! reset_trymove_counter(); ! return PyLong_FromLongLong(total_count); } --- 211,218 ---- static PyObject *cboard_get_trymove_counter(PyObject *self, PyObject *args) { if(!PyArg_ParseTuple(args, "")) { return NULL; } ! return PyLong_FromLongLong(get_trymove_counter2()); } Index: game_experimental.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/game_experimental.py,v retrieving revision 1.53 retrieving revision 1.54 diff -C2 -r1.53 -r1.54 *** game_experimental.py 5 Nov 2006 18:18:11 -0000 1.53 --- game_experimental.py 17 Nov 2006 03:57:38 -0000 1.54 *************** *** 1133,1137 **** score1, score2, result, move = move_results[0] if move!=PASS_MOVE and ((score1 < 0.01 and c_board.uct_game == c_board.random_uct_game) or \ ! (score1 < 0.05 and config.resign_flag)): move = RESIGN_MOVE fp = open(saved_moved_file, "w") --- 1133,1137 ---- score1, score2, result, move = move_results[0] if move!=PASS_MOVE and ((score1 < 0.01 and c_board.uct_game == c_board.random_uct_game) or \ ! (0.001 < score1 < 0.05 and config.resign_flag)): move = RESIGN_MOVE fp = open(saved_moved_file, "w") Index: load_sgf.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/load_sgf.py,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -r1.12 -r1.13 *** load_sgf.py 3 Oct 2006 14:34:22 -0000 1.12 --- load_sgf.py 17 Nov 2006 03:57:38 -0000 1.13 *************** *** 44,48 **** if sz: size = int(sz.group(1)) ! if not 5 <= size <= 19 and config.use_c: raise ValueError, ("size outside range for C", name) g = game_class(size) --- 44,48 ---- if sz: size = int(sz.group(1)) ! if not 3 <= size <= 19 and config.use_c: raise ValueError, ("size outside range for C", name) g = game_class(size) Index: map_opening.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/map_opening.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** map_opening.py 1 Nov 2006 15:24:05 -0000 1.1 --- map_opening.py 17 Nov 2006 03:57:38 -0000 1.2 *************** *** 157,160 **** --- 157,161 ---- color = simple_go.BLACK self.last_found_opening = "None" + self.engine.exec_cmd("komi 7.5") while not self.opening_engine.has_2_passes(): if color==simple_go.BLACK: Index: montecarlo.c =================================================================== RCS file: /cvsroot/londerings/go/simple_go/montecarlo.c,v retrieving revision 1.31 retrieving revision 1.32 diff -C2 -r1.31 -r1.32 *** montecarlo.c 5 Oct 2006 12:26:53 -0000 1.31 --- montecarlo.c 17 Nov 2006 03:57:38 -0000 1.32 *************** *** 21,24 **** --- 21,32 ---- #define MAX_MONTE_CARLO_STACK MAXSTACK - 3 + long long get_trymove_counter2() + { + static long long total_count = 0; + total_count += get_trymove_counter(); + reset_trymove_counter(); + return total_count; + } + int list_empty_board(int *move_list) { *************** *** 1754,1757 **** --- 1762,1768 ---- static Hash_data pass_count_hash[MAX_PASS_HASH_COUNT + 1]; static Hash_data capture_goal_hash[BOARDMAX]; + #define MAX_CAPTURE_COUNT 101 + static Hash_data white_capture_count_hash[MAX_CAPTURE_COUNT]; + static Hash_data black_capture_count_hash[MAX_CAPTURE_COUNT]; void report_result_table_stats() *************** *** 1805,1808 **** --- 1816,1822 ---- INIT_ZOBRIST_ARRAY(pass_count_hash); INIT_ZOBRIST_ARRAY(capture_goal_hash); + INIT_ZOBRIST_ARRAY(white_capture_count_hash); + INIT_ZOBRIST_ARRAY(black_capture_count_hash); + result_table.num_entries = num_entries; result_table.entries = malloc(num_entries * sizeof(result_table.entries[0])); *************** *** 1872,1875 **** --- 1886,1891 ---- hashdata_xor(*hashval, capture_goal_hash[capture_goal]); hashdata_xor(*hashval, pass_count_hash[get_pass_count()]); + hashdata_xor(*hashval, white_capture_count_hash[white_captured%MAX_CAPTURE_COUNT]); + hashdata_xor(*hashval, black_capture_count_hash[black_captured%MAX_CAPTURE_COUNT]); } *************** *** 1911,1915 **** ResultEntries *entry; ResultNode *node = NULL; ! int count, best_count = 2000000000; int overwrite_add = 0; int new_add = 0; --- 1927,1931 ---- ResultEntries *entry; ResultNode *node = NULL; ! double count, best_count = 1e30; int overwrite_add = 0; int new_add = 0; *************** *** 1926,1934 **** } else { // replace least used one ! count = entry->node_lst[i].win_count + entry->node_lst[i].lost_count; if(count < best_count) { //printf("update: new best: %i, %i, %i\n", i, count, best_count); best_count = count; ! node = &(entry->node_lst[i]); if(count) { overwrite_add = 1; --- 1942,1955 ---- } else { // replace least used one ! ResultNode *tnode = &(entry->node_lst[i]); ! if(tnode->type == UCT_HASH_TYPE) { ! count = tnode->win_count + tnode->lost_count; ! } else { // ALPHA_BETA_HASH_TYPE ! count = tnode->depth; ! } if(count < best_count) { //printf("update: new best: %i, %i, %i\n", i, count, best_count); best_count = count; ! node = tnode; if(count) { overwrite_add = 1; Index: montecarlo.h =================================================================== RCS file: /cvsroot/londerings/go/simple_go/montecarlo.h,v retrieving revision 1.27 retrieving revision 1.28 diff -C2 -r1.27 -r1.28 *** montecarlo.h 2 Oct 2006 10:23:11 -0000 1.27 --- montecarlo.h 17 Nov 2006 03:57:38 -0000 1.28 *************** *** 23,28 **** void undo_game(int moves); double score_board(); - double score_board_color(int color); - int get_pass_count(); int play_random_capture_game(int pos, int color); int get_random_move(int color); --- 23,26 ---- *************** *** 50,56 **** #endif typedef struct { Hash_data key; ! double win_count, lost_count; int next_move_hash_count, next_move_unknown_count; Hash_data *next_move_hash; --- 48,71 ---- #endif + #define UCT_HASH_TYPE 0 + #define ALPHA_BETA_HASH_TYPE 1 + typedef struct { Hash_data key; ! char type; //0==UCT, 1==alpha beta ! union ! { ! struct //UCT ! { ! double win_count, lost_count; ! }; ! struct //alpha-beta ! { ! int best_move; ! int score; ! int hash_type; ! int depth; ! }; ! }; int next_move_hash_count, next_move_unknown_count; Hash_data *next_move_hash; *************** *** 76,80 **** #define RESULT_ENTRIES (1<<18) #else ! #define RESULT_ENTRIES (1<<17) //200MB: (1<<20) #endif void report_result_table_stats(); --- 91,95 ---- #define RESULT_ENTRIES (1<<18) #else ! #define RESULT_ENTRIES (1<<20) //200MB: (1<<20) #endif void report_result_table_stats(); *************** *** 93,96 **** --- 108,112 ---- extern int use_area_scoring_board; extern int use_area_bonus; + extern int capture_goal; #define AREA_SCORE_FACTOR 0.001 #define GAME_LENGTH_SCORE_FACTOR 0.0 //(AREA_SCORE_FACTOR * 0.01) *************** *** 107,110 **** --- 123,127 ---- void init_available_moves(); void random_uct_game(int color); + long long get_trymove_counter2(); #endif // MONTECARLO_H Index: play_gtp.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/play_gtp.py,v retrieving revision 1.82 retrieving revision 1.83 diff -C2 -r1.82 -r1.83 *** play_gtp.py 5 Nov 2006 18:18:11 -0000 1.82 --- play_gtp.py 17 Nov 2006 03:57:38 -0000 1.83 *************** *** 223,227 **** "node_limit=" : "Positive integer\n\tSpecifies the normal depth of the search for a 9x9 game.", "manage_time" : "If passed to program, uses time management.", ! "capture_all_dead" : "If passed to program, will capture all dead before passing"} def get_cmd_options(self): --- 223,229 ---- "node_limit=" : "Positive integer\n\tSpecifies the normal depth of the search for a 9x9 game.", "manage_time" : "If passed to program, uses time management.", ! "capture_all_dead" : "If passed to program, will capture all dead before passing", ! "no_book" : "If passed to program, will disable opening book", ! "allow_resign": "If passed to program, will allow resignation"} def get_cmd_options(self): *************** *** 250,253 **** --- 252,259 ---- if opt == "--capture_all_dead": self.capture_all_dead = True + if opt == "--no_book": + self.opening_tree = {} + if opt == "--allow_resign": + config.resign_flag = True def ok(self, result=None): Index: play_simple_gtp.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/play_simple_gtp.py,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -r1.7 -r1.8 *** play_simple_gtp.py 3 Oct 2006 14:34:22 -0000 1.7 --- play_simple_gtp.py 17 Nov 2006 03:57:38 -0000 1.8 *************** *** 49,52 **** --- 49,53 ---- import config from play_gtp import get_next_filename, Logger, log + import load_sgf config.debug_flag = True *************** *** 298,301 **** --- 299,359 ---- return self.ok(self.slave.exec_cmd("showboard")) + def mobile_showboard(self, prompt="..."): + #result = self.showboard() + result = self.ok(str(self.simple_engine.current_board)) + if self.simple_engine.size > 13: + lines = string.split(result, "\n") + result0 = string.join(lines[:-16], "\n") + result = string.join(lines[-16:], "\n") + self.master.outfile.write(result0) + self.master.outfile.flush() + raw_input(prompt) + if self.simple_engine.size > 9: + result = result[:-3] + " " + self.master.outfile.write(result) + self.master.outfile.flush() + return "" + + def save(self): + fp = open("tmp.sgf", "w") + fp.write(str(self.simple_engine)) + fp.close() + return self.ok() + + def load(self): + tmp_engine = load_sgf.load_file("tmp.sgf") + self.boardsize(self.size) + color = "black" + for move in tmp_engine.move_history: + self.play(color, simple_go.move_as_string(move)) + if color == "black": + color = "white" + else: + color = "black" + return self.ok() + + def p(self, color, move): + try: + self.play(color, move) + except: + traceback.print_exc(None, self.master.outfile) + return self.error("Illegal move") + if string.lower(color[0])=="b": + ocolor = "white" + else: + ocolor = "black" + result = self.genmove(ocolor) + self.save() + result = result[:-2] + " " + self.mobile_showboard(result) + return result + + def undo(self): + if self.simple_engine.undo_move(): + self.save() + self.load() + return self.ok() + return self.error("no moves") + def list_commands(self): result = string.join(("list_commands", *************** *** 369,372 **** --- 427,448 ---- self.slave.exec_cmd(cmd_line) result = self.ok() + elif cmd=="-": + result = self.mobile_showboard() + elif cmd=="gb": + result = self.genmove("black") + elif cmd=="gw": + result = self.genmove("white") + elif cmd=="pb": + result = self.play("black", cmd_lst[1]) + elif cmd=="pw": + result = self.play("white", cmd_lst[1]) + elif cmd=="save": + result = self.save() + elif cmd=="load": + result = self.load() + elif cmd=="und": + result = self.undo() + elif cmd=="p": + result = self.p("black", cmd_lst[1]) else: self.log_fp.write("Unhandled command:" + cmd_line) Index: test_c_board.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/test_c_board.py,v retrieving revision 1.47 retrieving revision 1.48 diff -C2 -r1.47 -r1.48 *** test_c_board.py 5 Nov 2006 18:18:11 -0000 1.47 --- test_c_board.py 17 Nov 2006 03:57:38 -0000 1.48 *************** *** 288,302 **** print "-"*60 ! def test_c_ladder_alpha_beta(name = "kgs/simple_ladders2.sgf", pos_str = "C3", depth = 1, seed = 1, undo_count = 0, limit = 0, print_pos = True): c_board.set_random_seed(seed) ! g = load_sgf.load_file(name, game_class = CGame) undo_count0 = undo_count while undo_count: g.undo_move() undo_count = undo_count - 1 ! pos = string_as_move(pos_str) ! block_color = g.current_board.goban[pos] ! if g.current_board.side==block_color: ! g.make_move(PASS_MOVE) if print_pos: print g.current_board --- 288,308 ---- print "-"*60 ! def test_c_alpha_beta(name = "kgs/simple_ladders2.sgf", pos_str = "C3", depth = 1, seed = 1, undo_count = 0, limit = 0, print_pos = True, random=True): c_board.set_random_seed(seed) ! if type(name)==type(""): ! g = load_sgf.load_file(name, game_class = CGame) ! else: ! g = name undo_count0 = undo_count while undo_count: g.undo_move() undo_count = undo_count - 1 ! if not pos_str: ! pos = PASS_MOVE ! else: ! pos = string_as_move(pos_str) ! block_color = g.current_board.goban[pos] ! if g.current_board.side==block_color: ! g.make_move(PASS_MOVE) if print_pos: print g.current_board *************** *** 305,309 **** nodes0 = c_board.get_trymove_counter() t0 = time.time() ! score = c_board.alpha_beta_search_random(pos, g.c_color(), depth, -2, 2, limit) t1 = time.time() nodes1 = c_board.get_trymove_counter() --- 311,319 ---- nodes0 = c_board.get_trymove_counter() t0 = time.time() ! if random: ! score = c_board.alpha_beta_search_random(pos, g.c_color(), depth, -2, 2, limit) ! pv = () ! else: ! score, pv = c_board.alpha_beta_search(pos, g.c_color(), depth, -1, 1) t1 = time.time() nodes1 = c_board.get_trymove_counter() *************** *** 320,324 **** limit_s = str(limit/1000000.) limit_s = limit_s.replace(".0", "") ! s = "%-6s %-4s %-5s %-6s %-9s %-7s %s" % (limit_s, undo_count0, depth, score, nodes1-nodes0, t_used, nodes_s) print s return s, score --- 330,338 ---- limit_s = str(limit/1000000.) limit_s = limit_s.replace(".0", "") ! pv_s = move_list_as_string(pv) ! s = "%-6s %-4s %-5s %-6s %-9s %-7s %s %s" % (limit_s, undo_count0, depth, score, nodes1-nodes0, t_used, nodes_s, pv_s) ! fp = open("t.log", "a") ! fp.write(s + "\n") ! fp.close() print s return s, score *************** *** 329,336 **** print g.make_move((7,2)) c_board.simple_showboard() def test_ab(limit, seed=1, depth=7, undo_count=7): limit = int(limit * 1000000) ! return test_c_ladder_alpha_beta(name = "kgs/simple_ladder_full.sgf", pos_str = "C3", depth = depth, seed = seed, undo_count = undo_count, limit = limit, print_pos = False) def test_ab2(limit, seed=1, undo_count=23, start=1): --- 343,379 ---- print g.make_move((7,2)) c_board.simple_showboard() + + def test_ab_score(name): + for depth in range(1, 40+1): + s, score = test_c_alpha_beta(name, pos_str="", random=False, depth=depth, print_pos = False) + if score: + break + + def test_ab_score_undo(name): + undo_count = 0 + while True: + g = load_sgf.load_file(name) + for i in range(undo_count): + g.undo_move() + fp = open("t.log", "a") + fp.write("\n" + "."*60 + "\n\n") + fp.write(str(g.current_board) + "\n") + fp.write("Initial length: %i\n\n" % len(g.move_history)) + fp.close() + print + print "."*60 + print + print g.current_board + print "Initial length: %i" % len(g.move_history) + print + c_board.clear_result_table() + test_ab_score(g) + undo_count = undo_count + 1 + if not g.move_history: + break def test_ab(limit, seed=1, depth=7, undo_count=7): limit = int(limit * 1000000) ! return test_c_alpha_beta(name = "kgs/simple_ladder_full.sgf", pos_str = "C3", depth = depth, seed = seed, undo_count = undo_count, limit = limit, print_pos = False) def test_ab2(limit, seed=1, undo_count=23, start=1): *************** *** 1077,1087 **** #g = load_sgf.load_file("kgs/nekkets-SimpleBot_problem.sgf") #g = load_sgf.load_file("kgs/caol-SimpleBot_problem.sgf") ! g = load_sgf.load_file("kgs/Aloriless-Orego_problem.sgf") #g = Game(5) #g.set_komi(24.5) print g.current_board config.fast_time_limit = 0.1 ! config.time_per_move_limit = 100 ! config.games_per_move_limit = 1000000000000 #config.uct_count = lambda size:config.games_per_move_limit config.use_uct_tactics = not True --- 1120,1131 ---- #g = load_sgf.load_file("kgs/nekkets-SimpleBot_problem.sgf") #g = load_sgf.load_file("kgs/caol-SimpleBot_problem.sgf") ! #g = load_sgf.load_file("kgs/Aloriless-Orego_problem.sgf") ! g = load_sgf.load_file("kgs/orego_decreasing_score_for_win.sgf") #g = Game(5) #g.set_komi(24.5) print g.current_board config.fast_time_limit = 0.1 ! config.time_per_move_limit = 10000000 ! config.games_per_move_limit = 1000000 #config.uct_count = lambda size:config.games_per_move_limit config.use_uct_tactics = not True *************** *** 1232,1235 **** --- 1276,1306 ---- print move_list_as_string(g.final_status_list("dead")) + def test_wall(size, pos, count0): + config.use_c = False + config.debug_flag = False + result_sum = 0 + score_sum = 0 + for i in range(count0): + g = Game(size) + if 2 <= pos <= size -2: + for y in range(1, size + 1): + g.make_move((pos, y)) + g.make_move((pos + 1, y)) + #print g.current_board + g.init_fast_select_random_no_eye_fill_move() + while not g.has_2_passes(): + move = g.fast_select_random_no_eye_fill_move() + g.make_move(move) + score = g.score_position() + if g.current_board.side==WHITE: + score = -score + score_sum += score + if score > 0: + result_sum += 1 + #print g.current_board + #print score + count = i + 1.0 + print "%3i %3i %8.3f %8.3f" % (count, score, result_sum / count, score_sum / count) + if __name__=="__main__": g = Game(9) |
From: Aloril <al...@us...> - 2006-11-07 04:43:15
|
Update of /cvsroot/londerings/go/simple_go In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv16653 Modified Files: 9x9_black_opening.lst 9x9_white_opening.lst Log Message: opening update Index: 9x9_black_opening.lst =================================================================== RCS file: /cvsroot/londerings/go/simple_go/9x9_black_opening.lst,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -r1.10 -r1.11 *** 9x9_black_opening.lst 5 Nov 2006 18:18:10 -0000 1.10 --- 9x9_black_opening.lst 7 Nov 2006 04:43:04 -0000 1.11 *************** *** 143,144 **** --- 143,147 ---- E5 E7 G6 F3 D3 #Aloril, NeuroGo-A64_3400 http://cgos.boardspace.net/public/SGF/2006/11/04/347933.sgf E5 F5 E6 E4 D4 F6 E7 F7 E3 F4 D3 E8 D8 F8 F3 D7 C7 G3 E9 F2 E2 F9 D9 G2 F1 G1 E1 H4 D6 #Aloril, SimpleBot + E5 G5 F7 C5 E3 D7 G3 G7 E7 G8 D6 C7 C6 B6 H6 G6 H5 E8 F8 F9 D8 E9 B7 C8 B8 D9 B5 #Minue-SimpleBot game1 2006-11-06; Minue: H6-C2 + E5 G6 E7 C5 G4 G8 C4 B4 D4 B3 C6 B5 C2 #Minue-SimpleBot game2 2006-11-06; Minue: C4-C2 + E5 E7 G6 F5 F6 E6 D5 F4 H4 B7 D3 G8 B5 H7 H6 B6 C6 C7 G7 H8 A5 F7 G4 D6 C5 J6 J5 J7 A6 A7 F3 D8 G5 C8 E4 #Aloril vs 3.7.10, Mango http://files.gokgs.com/games/2006/11/5/firstgo-SimpleBot.sgf Index: 9x9_white_opening.lst =================================================================== RCS file: /cvsroot/londerings/go/simple_go/9x9_white_opening.lst,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -r1.8 -r1.9 *** 9x9_white_opening.lst 5 Nov 2006 18:18:10 -0000 1.8 --- 9x9_white_opening.lst 7 Nov 2006 04:43:04 -0000 1.9 *************** *** 136,140 **** G5 D5 F7 D3 C7 G3 B5 H7 G6 D7 D8 E7 E8 H4 H6 H5 J6 C6 B6 B7 C8 C4 A2 B4 A4 B3 B2 A3 B8 F4 G4 H3 A5 E6 F5 E5 J5 F6 G7 J4 A7 C5 H8 C2 A8 B1 F8 A1 J7 F3 J8 PASS #Aloril, ggexp http://cgos.boardspace.net/public/SGF/2006/11/03/347879.sgf F7 E4 F5 G3 #Aloril, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/04/347893.sgf ! D6 F4 E3 E4 D3 D4 G2 F6 C5 C4 H4 B4 B2 B6 C8 F8 H6 G3 H2 H3 J3 C3 C2 F3 F2 G7 H7 H8 J8 H9 E7 G6 B5 A5 E8 B8 B9 C7 A8 B7 C9 D7 G5 F5 J7 E6 G4 B3 A3 A4 A2 J9 J5 D5 D1 C6 D2 D8 J2 E9 E2 F7 PASS A7 PASS D9 PASS A9 #Aloril vs 3.7.10, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/03/347708.sgf ! F6 D4 E3 E4 F4 D6 F7 D3 F3 E8 F8 E7 E2 D2 E9 D9 F9 D8 D1 C1 E1 C2 E5 D5 E6 C7 G5 B3 G6 PASS G4 PASS H7 PASS H6 PASS H3 PASS H4 PASS G2 PASS H2 PASS #Aloril vs 3.7.4 and 3.6, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/03/347708.sgf ! F6 D4 E3 E4 F3 F4 C2 D6 G5 G4 B4 H4 H5 F8 G8 G7 H8 F7 H7 G6 H6 J5 B6 C7 B7 G2 C8 D8 F2 G3 B8 D3 D2 C3 B3 F1 E2 E1 C5 D1 C1 G1 A2 D5 C6 D7 D9 E9 C9 C4 B2 J6 B5 J7 A7 J8 PASS F5 PASS E6 PASS G9 PASS H9 PASS PASS #Aloril vs 3.7.10, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/03/347708.sgf --- 136,146 ---- G5 D5 F7 D3 C7 G3 B5 H7 G6 D7 D8 E7 E8 H4 H6 H5 J6 C6 B6 B7 C8 C4 A2 B4 A4 B3 B2 A3 B8 F4 G4 H3 A5 E6 F5 E5 J5 F6 G7 J4 A7 C5 H8 C2 A8 B1 F8 A1 J7 F3 J8 PASS #Aloril, ggexp http://cgos.boardspace.net/public/SGF/2006/11/03/347879.sgf F7 E4 F5 G3 #Aloril, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/04/347893.sgf ! #del: D6 F4 E3 E4 D3 D4 G2 F6 C5 C4 H4 B4 B2 B6 C8 F8 H6 G3 H2 H3 J3 C3 C2 F3 F2 G7 H7 H8 J8 H9 E7 G6 B5 A5 E8 B8 B9 C7 A8 B7 C9 D7 G5 F5 J7 E6 G4 B3 A3 A4 A2 J9 J5 D5 D1 C6 D2 D8 J2 E9 E2 F7 PASS A7 PASS D9 PASS A9 #Aloril vs 3.7.10, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/03/347708.sgf ! #del: F6 D4 E3 E4 F4 D6 F7 D3 F3 E8 F8 E7 E2 D2 E9 D9 F9 D8 D1 C1 E1 C2 E5 D5 E6 C7 G5 B3 G6 PASS G4 PASS H7 PASS H6 PASS H3 PASS H4 PASS G2 PASS H2 PASS #Aloril vs 3.7.4 and 3.6, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/03/347708.sgf ! #del: F6 D4 E3 E4 F3 F4 C2 D6 G5 G4 B4 H4 H5 F8 G8 G7 H8 F7 H7 G6 H6 J5 B6 C7 B7 G2 C8 D8 F2 G3 B8 D3 D2 C3 B3 F1 E2 E1 C5 D1 C1 G1 A2 D5 C6 D7 D9 E9 C9 C4 B2 J6 B5 J7 A7 J8 PASS F5 PASS E6 PASS G9 PASS H9 PASS PASS #Aloril vs 3.7.10, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/03/347708.sgf ! F6 D4 E3 F5 E5 E4 F4 G5 F3 G6 #Minue: F5-G6, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/03/347708.sgf ! F6 D4 E3 F5 G5 F4 #Minue: F5-F4, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/03/347708.sgf ! F6 D4 E3 F5 H3 E4 E6 G5 H7 D3 F3 J5 D2 C2 C6 E2 F2 D1 B4 B3 A4 C4 B5 H6 G4 G7 F8 G8 F7 F9 E9 G9 D8 H4 G6 H8 A3 A2 C5 D5 D6 E5 B7 F4 C8 G3 E8 G2 B8 F1 A6 H2 PASS J3 PASS J7 PASS PASS #Aloril vs 3.7.10, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/03/347708.sgf; Minue: F5 ! F6 D4 E3 F5 G6 D6 H3 G5 E5 E6 E4 H6 F7 H7 G8 H8 F8 D8 H5 H4 D5 C6 C4 G3 B5 B6 F3 G2 F2 G4 A6 A7 A5 B8 G1 H1 F1 H2 C5 F4 D3 J5 B3 E8 B4 E7 C2 G7 B2 J3 PASS G9 PASS F9 PASS PASS #Aloril vs 3.7.4, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/03/347708.sgf; Minue: F5 ! F6 D4 E3 F5 G6 D6 D3 G5 C3 E7 F8 G8 F7 H7 H6 H5 J6 J8 G9 H9 F9 D8 B5 B7 G2 H3 H2 G3 B6 C7 A7 A8 A6 B9 C4 D5 G7 H8 J2 J3 F3 F4 E4 E5 C6 C5 A4 E8 F2 E9 B4 E6 B2 J5 C2 J9 D1 J7 D2 PASS #Aloril vs 3.7.6, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/03/347708.sgf; Minue: F5 ! E5 G5 D4 C7 G3 F7 G4 F5 C5 F4 F3 E4 E3 B6 B5 E6 D5 H5 H4 A5 A4 A6 B3 C6 J5 J6 J4 H6 D6 D7 #Aloril vs 3.7.10, Mango http://files.gokgs.com/games/2006/11/5/SimpleBot-Mango.sgf |
From: Aloril <al...@us...> - 2006-11-05 18:18:23
|
Update of /cvsroot/londerings/go/simple_go In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv17212 Modified Files: 9x9_black_opening.lst 9x9_white_opening.lst config.py game.py game_experimental.py play_gtp.py test_c_board.py version.py Log Message: opening tree cached; final_status_list now uses tactical uct for unknown blocks; opening tree updates Index: 9x9_black_opening.lst =================================================================== RCS file: /cvsroot/londerings/go/simple_go/9x9_black_opening.lst,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -r1.9 -r1.10 *** 9x9_black_opening.lst 1 Nov 2006 15:24:05 -0000 1.9 --- 9x9_black_opening.lst 5 Nov 2006 18:18:10 -0000 1.10 *************** *** 18,60 **** E5 C7 E7 G4 C5 E3 G6 #Aloril, MoGoSmallQdV3: http://cgos.boardspace.net/public/SGF/2006/10/06/316701.sgf E5 C4 E3 G7 C6 D2 H6 #Aloril, ggexp: http://cgos.boardspace.net/public/SGF/2006/10/06/316802.sgf ! E5 C4 E3 G6 C6 D2 E2 B4 F7 G7 F8 G8 H5 A7 B7 A6 D3 C2 C3 B3 D1 B2 B6 A2 A4 A8 B5 A5 B8 H3 G5 F2 G2 H2 F3 PASS F1 E6 F6 PASS D6 PASS E7 PASS H6 PASS H7 H8 J8 PASS G9 PASS H9 PASS A9 PASS D4 PASS C5 PASS C1 PASS B1 PASS E1 PASS A1 PASS A3 PASS H4 PASS G3 PASS J3 PASS J2 PASS H1 PASS PASS #Aloril, gnugo_3.7.4 http://cgos.boardspace.net/public/SGF/2006/10/06/316823.sgf E5 C4 E3 D6 E6 D7 F8 D3 E7 D8 D5 C5 E2 D2 C6 B6 D4 E1 F1 D1 G2 E8 F9 #Aloril, ggexp http://cgos.boardspace.net/public/SGF/2006/10/06/316862.sgf E5 G7 E7 E4 F5 #Aloril, GoJin-1.22: http://cgos.boardspace.net/public/SGF/2006/10/06/316976.sgf ! E5 C5 D7 D4 F3 #Aloril, antigoamuct-1.6: http://cgos.boardspace.net/public/SGF/2006/10/07/317029.sgf ! E5 C7 E7 G4 C5 F6 E6 E3 F5 G5 C3 F7 F8 D8 E8 #Aloril, MoGoSmallQdV1.1: http://cgos.boardspace.net/public/SGF/2006/10/07/317061.sgf E5 C4 E3 D6 E6 D7 F8 G3 F2 E8 G6 H5 H2 D2 E7 H6 H7 D8 D3 C3 D5 C5 E2 C2 E9 D9 F9 E1 F1 D1 D4 B6 H3 C7 H4 B7 G5 B5 J6 B3 J5 B8 G2 A4 G4 A3 F3 PASS PASS #Aloril, map_opening1 vs GNU Go 3.7.4 E5 C3 E3 C6 F7 G3 H2 H3 G2 D7 E8 D8 D2 C2 D5 C5 D4 C4 E7 D1 E1 C1 D9 C9 E9 B8 D3 D6 E6 B7 H4 C8 G4 B5 F3 B3 J3 A6 PASS A7 PASS #Aloril, map_opening2 vs GNU Go 3.7.4 E5 C3 E3 C5 E7 G7 G5 G8 E8 H6 H5 D2 E2 B7 C8 B8 C6 B6 C7 E1 F1 D1 F2 C9 D9 B9 D3 C2 D5 D4 E4 C4 G6 B4 H7 A5 J6 A6 H8 A4 G9 PASS F8 PASS F7 PASS PASS #Aloril, map_opening3 vs GNU Go 3.7.4 E5 C5 D7 D3 G6 G3 D4 C4 E3 D2 E2 H5 H1 B7 C8 B8 D1 C2 C1 B1 E1 B2 C6 B6 C7 B9 D5 C9 D9 A5 H6 A6 G5 B3 H4 B4 J5 PASS H3 PASS G2 PASS G4 PASS F3 PASS PASS #Aloril, map_opening4 vs GNU Go 3.7.4 ! E5 C3 E3 E7 C5 B4 B5 D2 E2 B2 G6 C7 B7 G8 F7 F8 H7 B8 C6 C8 H8 A8 D1 C1 E1 D6 E6 D4 D5 D7 D3 C2 A4 A3 C4 A5 A6 A4 G9 F9 H9 G7 F6 D9 B6 A7 E4 E8 H6 A2 PASS #Aloril, map_opening5 vs GNU Go 3.7.4 ! E5 C3 E3 G7 C5 B4 B5 D2 E2 B2 G5 D7 B7 F6 H6 H7 C8 D8 E6 E7 J7 J8 J6 H9 G6 E1 F1 D1 F2 F5 F4 F7 A4 A3 A5 C4 D4 C7 B8 C9 B9 D9 D3 C2 D6 C6 B6 H8 G4 A2 PASS F8 PASS #Aloril, map_opening6 vs GNU Go 3.7.4 E5 C4 E3 C6 F7 G3 F2 D2 D8 B8 C7 B7 D3 C3 E2 C2 D6 C5 C8 B9 D1 C1 E1 D4 E4 C9 D9 D5 E6 B5 G4 A6 H3 A7 G2 A5 F3 PASS PASS #Aloril, map_opening7 vs GNU Go 3.7.4 E5 D4 E4 D5 E6 E3 F3 C7 D8 E2 F2 D3 B8 B7 C8 F1 G1 E1 G2 A8 D6 C6 D7 B9 C9 A7 A9 B5 B9 C2 G7 B3 F4 C4 PASS B4 PASS B2 PASS B6 PASS #Aloril, map_opening8 vs GNU Go 3.7.4 ! E5 C5 D7 G5 E3 B7 G7 G2 C3 C8 D8 C7 H6 H4 G3 H3 G4 F2 H5 E2 D2 J2 B4 B5 A5 A6 A4 C6 J4 H1 C4 D9 E9 C9 E8 F3 F4 D1 C1 E1 D5 D6 E6 J3 J5 A7 G6 B9 F5 PASS PASS #Aloril, map_opening9 vs GNU Go 3.7.4 E5 C5 D7 E4 F5 G3 D4 B7 C4 C8 F2 E3 E2 H5 H7 G2 D3 G6 G7 E8 F7 B5 G4 H4 J2 J3 F3 H2 B4 D5 D8 D9 D6 A5 F9 E9 C7 B8 A4 C6 F8 E6 E7 C9 G5 H6 F6 J7 J8 J6 H8 F1 E1 G1 F4 A6 D2 J4 PASS A7 PASS A9 PASS J1 PASS #Aloril, map_opening10 vs GNU Go 3.7.4 - E5 C4 E3 G6 C6 D2 E2 B4 F7 G7 F8 G8 H5 A7 B7 A6 D3 C2 C3 B3 D1 B2 B6 A2 A4 A8 B5 A5 B8 H3 G5 F2 G2 H2 F3 PASS F1 D5 D6 PASS A9 PASS H6 PASS H7 H8 G9 PASS F6 PASS H9 PASS J8 PASS D4 PASS C5 PASS C1 PASS A5 PASS PASS PASS A3 PASS B1 PASS A1 PASS H4 PASS G3 PASS J3 PASS H1 PASS J2 PASS PASS #Aloril, map_opening11 vs GNU Go 3.7.4 E5 C4 E3 C7 C5 D4 D5 D2 B3 B4 C2 E2 F3 F2 D3 C3 B2 G3 B5 F7 G4 H3 H4 H1 H7 F8 A8 D1 J3 J2 J4 C1 B1 H2 C8 G2 D7 PASS C6 PASS B7 PASS E7 PASS G7 PASS F6 PASS G8 PASS E8 PASS F9 PASS E4 PASS A4 PASS PASS #Aloril, map_opening12 vs GNU Go 3.7.4 ! E5 C3 E3 G3 G5 F4 E4 H4 F2 C6 H5 E7 F7 F8 G7 G8 D7 E8 D6 H7 H6 C7 D8 H8 E6 J7 B8 B5 D2 C2 A6 B7 A7 C8 C9 A5 C5 C4 B6 B3 F6 D1 E1 C1 D3 J6 J5 E9 D9 D4 D5 A2 G2 B2 J4 B4 H3 G9 G4 J9 F3 PASS F5 PASS PASS #Aloril, map_opening13 vs GNU Go 3.7.4 E5 D5 E6 E4 F4 F3 D4 C4 E3 D6 C3 D7 E7 G7 H6 B4 B3 E8 F8 D8 F7 A3 A2 A4 B2 F9 G9 E9 G8 C7 G3 B6 F2 B8 H7 A7 G6 B5 PASS A8 PASS C8 PASS #Aloril, map_opening14 vs GNU Go 3.7.4 E5 C4 E3 C7 C5 D4 D5 D2 B3 B4 C2 E2 F3 F2 D3 C3 B2 G3 B5 F7 G4 H3 H4 H1 H7 F8 A8 D1 J3 J2 J4 C1 B1 F4 E4 F5 G6 G5 H5 H2 F6 G2 C8 PASS D7 PASS C6 PASS B7 PASS E8 PASS E7 PASS G7 PASS G8 PASS F9 PASS A4 PASS PASS #Aloril, map_opening15 vs GNU Go 3.7.4 E5 D4 E4 E3 F3 D5 E6 C7 D8 E2 F2 D3 B8 B7 C8 F1 G1 E1 G2 A8 D7 D6 B9 A7 A9 C2 G7 B3 PASS C4 PASS B2 PASS C6 PASS B4 PASS B5 PASS #Aloril, map_opening16 vs GNU Go 3.7.4 ! E5 C4 E3 G7 C6 D2 H6 E2 F3 F2 G2 G1 H2 B5 B6 A6 C5 B4 D4 A7 C3 B3 C2 C8 E8 D3 B2 E7 D8 D7 C7 G6 F8 H5 H8 H7 G8 E6 F5 A8 B8 A3 D1 PASS E1 PASS F1 PASS C9 J6 H4 PASS G5 PASS H1 G4 G3 PASS F4 PASS F7 PASS F6 PASS D6 PASS J8 PASS J7 PASS H6 H7 J5 PASS G7 PASS A2 PASS B7 PASS A5 PASS A9 PASS A4 PASS PASS #Aloril, map_opening17 vs GNU Go 3.7.4 E5 D4 E4 D3 D5 E3 G3 C7 C5 B4 B5 F7 B3 F3 G4 G2 H2 C2 F2 E2 G1 B2 C4 D1 A2 C3 A4 B1 H7 F8 A8 F4 F5 A1 A3 E1 F1 PASS G7 PASS C8 PASS D7 PASS B7 PASS C6 PASS F6 PASS G8 PASS E7 PASS E8 PASS F9 PASS PASS #Aloril, map_opening18 vs GNU Go 3.7.4 E5 D4 E4 D3 D5 G7 E3 E2 F2 D2 G3 D7 B4 B3 C4 C3 B6 B1 C8 D8 H6 A4 B5 A5 A6 A3 E1 D1 F1 B2 H7 G8 H8 PASS G6 PASS F7 PASS C7 PASS E7 PASS F8 PASS G9 PASS D6 PASS E8 PASS D9 PASS PASS #Aloril, map_opening19 vs GNU Go 3.7.4 E5 D4 E4 C5 E7 D3 E3 G7 H6 C7 D2 C2 E2 D8 E8 E9 F9 D9 F8 D1 E1 C1 D7 C8 C6 B6 D6 B5 D5 C3 H7 B9 G6 B8 G8 C4 F7 B7 PASS B3 PASS A4 PASS A5 PASS #Aloril, map_opening20 vs GNU Go 3.7.4 ! E5 D5 E6 D4 E4 E3 F3 C7 D8 E2 F2 D3 B8 B7 C8 F1 G1 E1 G2 A8 D7 D6 B9 A7 A9 C2 F7 B3 PASS B6 PASS C5 PASS C3 PASS B5 PASS A4 PASS B4 PASS #Aloril, map_opening21 vs GNU Go 3.7.4 E5 C4 E3 G7 C6 D2 H6 E2 F3 F2 G2 G1 H2 B5 B6 A6 C5 B4 D4 A8 C3 C2 B3 B2 A3 A2 D3 H1 F1 E1 J2 F1 H4 J1 H7 B1 G8 PASS F7 PASS G6 PASS A4 PASS A5 PASS A7 PASS B8 PASS A9 PASS PASS #Aloril, map_opening22 vs GNU Go 3.7.4 E5 C5 D7 E4 F5 G3 D4 B7 C4 C8 F2 E3 E2 H5 H7 G2 D3 G6 G7 E8 F7 B5 G4 H4 J2 J3 F3 H2 B4 D5 D8 D9 D6 A5 F9 E9 C7 B8 A4 C6 F8 E6 E7 C9 G5 H6 F6 J7 J8 J6 H8 F1 E1 G1 F4 A6 D2 A7 PASS J4 PASS A9 PASS J1 PASS #Aloril, map_opening23 vs GNU Go 3.7.4 - E5 C3 E3 G3 G5 F4 E4 H4 F2 C6 H5 E7 F7 F8 G7 G8 D7 E8 D6 H7 H6 C7 D8 H8 E6 J7 B8 B5 D2 C2 A6 B7 A7 C8 C9 A5 C5 C4 B6 B3 F6 D1 E1 C1 D3 J6 J5 D4 E9 J9 F9 G9 D9 D5 C6 A2 G2 B2 J4 B4 H3 PASS G4 PASS F3 PASS F5 PASS PASS #Aloril, map_opening24 vs GNU Go 3.7.4 E5 D4 E4 F6 E6 F7 C3 D3 C4 D5 G5 E3 F3 B6 C5 F2 G3 G2 D6 H6 H2 C7 C6 B5 D7 C8 D8 A8 G9 A2 B4 A4 B2 A3 C9 B9 D9 B3 C2 B1 C1 A5 A1 B8 B1 B7 G6 PASS G7 PASS F8 PASS F5 PASS E7 PASS H7 PASS J6 PASS H5 PASS D2 PASS E2 PASS F1 PASS G1 PASS PASS #Aloril, map_opening25 vs GNU Go 3.7.4 E5 C5 D7 E4 F5 G3 D4 B7 C4 C8 F2 E3 E2 H5 H7 G2 D3 G6 G7 E8 F7 B5 G4 H4 J2 J3 F3 H2 B4 D5 D8 D9 D6 A5 F9 E9 C7 B8 A4 C6 F8 E6 E7 C9 G5 H6 F6 J7 J8 J6 H8 F1 E1 G1 F4 A6 D2 A7 PASS J4 PASS J1 PASS A9 PASS #Aloril, map_opening26 vs GNU Go 3.7.4 E5 D4 E4 D3 D5 F6 E3 F8 B4 G3 G5 H5 H4 H6 G4 C7 E7 F7 D7 D8 E8 E9 C8 D9 C9 F9 B7 J4 G6 H7 G7 G8 J3 J5 F5 H8 H3 E6 D6 H9 C6 PASS C3 PASS D2 PASS C4 PASS G2 PASS F3 PASS PASS #Aloril, map_opening27 vs GNU Go 3.7.4 E5 D4 E4 D3 D5 G7 E3 E2 F2 D2 G3 D7 B4 B3 C4 C3 B6 B1 C8 D8 H6 F1 G1 E1 A3 A2 A4 B2 H7 G8 H8 PASS C7 PASS D6 PASS G6 PASS F7 PASS F8 PASS G9 PASS E7 PASS E8 PASS D9 PASS PASS #Aloril, map_opening28 vs GNU Go 3.7.4 - E5 C3 E3 E7 C5 B4 B5 D2 E2 B2 G6 C7 B7 G8 F7 F8 H7 B8 C6 D7 A8 H8 C8 D8 B9 J8 G7 E1 F1 D1 F2 J7 J6 E6 F5 F6 H5 A5 A6 A4 C4 A2 D9 E9 C9 D3 D4 D6 D5 E8 PASS B3 PASS G9 PASS #Aloril, map_opening1 vs GNU Go 3.6 E5 D5 E6 E4 F4 F3 D4 C4 E3 D6 C3 B4 D7 C7 E8 C8 B3 B6 A4 B5 D8 D9 E9 C9 A5 A6 A3 B7 G3 A8 F2 B8 G7 C6 PASS #Aloril, map_opening2 vs GNU Go 3.6 E5 C5 D7 D3 G6 G3 D4 C4 E3 D2 E2 H5 H1 H6 G7 B7 D1 C2 C1 B1 E1 B2 C8 B8 D5 C7 D8 B9 C6 B6 D6 C9 D9 A3 H7 B3 G5 B5 G4 B4 H4 PASS H3 PASS G2 PASS F3 PASS J6 PASS J5 PASS PASS #Aloril, map_opening3 vs GNU Go 3.6 E5 D4 E4 D3 D5 F6 E3 F8 B4 C7 H5 H7 B6 F5 G4 B7 C6 A6 D7 D8 E7 E8 A5 A7 F7 G6 G7 G8 H6 J7 J6 H8 C3 C9 G5 D9 D2 F9 C4 B8 F4 B9 E6 PASS PASS #Aloril, map_opening4 vs GNU Go 3.6 - E5 C3 E3 G3 G5 F4 E4 H4 F2 C6 H5 E7 F7 F8 G7 G8 D7 E8 D6 H7 H6 C7 D8 H8 E6 J7 B8 B7 C4 B4 D3 C2 C5 B5 C8 A8 D2 D1 E1 C1 E9 J9 F6 F9 D9 J6 J5 B9 C9 A7 A9 D5 D4 B9 B3 B2 A9 A3 B9 B6 G2 A4 J4 A2 H3 H9 G4 PASS F3 PASS F5 PASS PASS #Aloril, map_opening5 vs GNU Go 3.6 - E5 C4 E3 G6 C6 D2 E2 B4 F7 G7 F8 G8 H5 E1 F1 D1 F2 B2 D3 C3 B5 C5 B6 A5 A6 A4 D5 D4 E4 A2 H6 C2 H7 PASS H8 PASS G5 PASS F6 PASS G9 PASS PASS #Aloril, map_opening6 vs GNU Go 3.6 E5 D4 E4 D3 D5 F6 E3 F8 B4 C7 H5 H7 B6 F5 G4 B7 C6 H6 D7 D8 E7 E8 F7 G5 H4 A6 A5 A7 G7 G8 G6 J6 J5 H8 C3 C9 D2 D9 C4 F9 F4 B8 E6 B9 PASS #Aloril, map_opening7 vs GNU Go 3.6 E5 D4 E4 D3 D5 G7 E3 E2 F2 D2 G3 B4 E7 F8 H6 H8 E8 B6 C5 B8 B5 A5 C4 B3 C3 C2 E1 B2 C7 B7 C8 B9 C9 D1 F1 C6 D6 A8 H7 A3 G6 B1 F7 A4 G8 PASS F9 PASS J8 PASS H9 PASS PASS #Aloril, map_opening8 vs GNU Go 3.6 --- 18,60 ---- E5 C7 E7 G4 C5 E3 G6 #Aloril, MoGoSmallQdV3: http://cgos.boardspace.net/public/SGF/2006/10/06/316701.sgf E5 C4 E3 G7 C6 D2 H6 #Aloril, ggexp: http://cgos.boardspace.net/public/SGF/2006/10/06/316802.sgf ! E5 C4 E3 G6 C6 D2 E2 B4 D3 C2 C3 B3 D1 A2 B5 B1 F7 G7 F8 G8 H5 C5 B6 A5 A6 A4 D5 D4 E4 C1 E1 PASS H6 PASS G5 PASS H7 PASS F6 PASS H8 PASS G9 PASS PASS #Aloril, gnugo_3.7.4 http://cgos.boardspace.net/public/SGF/2006/10/06/316823.sgf; Minue: D3 ! #?? E5 C4 E3 G6 C6 D2 E2 B4 F7 G7 F8 G8 H5 A7 B7 A6 D3 C2 C3 B3 D1 B2 B6 A2 A4 A8 B5 A5 B8 H3 G5 F2 G2 H2 F3 PASS F1 E6 F6 PASS D6 PASS E7 PASS H6 PASS H7 H8 J8 PASS G9 PASS H9 PASS A9 PASS D4 PASS C5 PASS C1 PASS B1 PASS E1 PASS A1 PASS A3 PASS H4 PASS G3 PASS J3 PASS J2 PASS H1 PASS PASS #Aloril, gnugo_3.7.4 http://cgos.boardspace.net/public/SGF/2006/10/06/316823.sgf (later?? (and remove this line)) E5 C4 E3 D6 E6 D7 F8 D3 E7 D8 D5 C5 E2 D2 C6 B6 D4 E1 F1 D1 G2 E8 F9 #Aloril, ggexp http://cgos.boardspace.net/public/SGF/2006/10/06/316862.sgf E5 G7 E7 E4 F5 #Aloril, GoJin-1.22: http://cgos.boardspace.net/public/SGF/2006/10/06/316976.sgf ! E5 C5 D7 D4 E4 E3 F3 D3 G4 #Aloril, antigoamuct-1.6: http://cgos.boardspace.net/public/SGF/2006/10/07/317029.sgf; Minue: E4-G4 E5 C4 E3 D6 E6 D7 F8 G3 F2 E8 G6 H5 H2 D2 E7 H6 H7 D8 D3 C3 D5 C5 E2 C2 E9 D9 F9 E1 F1 D1 D4 B6 H3 C7 H4 B7 G5 B5 J6 B3 J5 B8 G2 A4 G4 A3 F3 PASS PASS #Aloril, map_opening1 vs GNU Go 3.7.4 E5 C3 E3 C6 F7 G3 H2 H3 G2 D7 E8 D8 D2 C2 D5 C5 D4 C4 E7 D1 E1 C1 D9 C9 E9 B8 D3 D6 E6 B7 H4 C8 G4 B5 F3 B3 J3 A6 PASS A7 PASS #Aloril, map_opening2 vs GNU Go 3.7.4 E5 C3 E3 C5 E7 G7 G5 G8 E8 H6 H5 D2 E2 B7 C8 B8 C6 B6 C7 E1 F1 D1 F2 C9 D9 B9 D3 C2 D5 D4 E4 C4 G6 B4 H7 A5 J6 A6 H8 A4 G9 PASS F8 PASS F7 PASS PASS #Aloril, map_opening3 vs GNU Go 3.7.4 E5 C5 D7 D3 G6 G3 D4 C4 E3 D2 E2 H5 H1 B7 C8 B8 D1 C2 C1 B1 E1 B2 C6 B6 C7 B9 D5 C9 D9 A5 H6 A6 G5 B3 H4 B4 J5 PASS H3 PASS G2 PASS G4 PASS F3 PASS PASS #Aloril, map_opening4 vs GNU Go 3.7.4 ! E5 C3 E3 E7 C5 B4 B5 D2 E2 B2 G6 C7 F8 B6 A5 E8 F7 B8 A4 A3 E9 D9 F9 E6 F5 E1 F1 D1 F2 C4 D6 D7 A6 A7 D4 F6 G7 C6 D5 D3 PASS D8 PASS A8 PASS A2 PASS C8 PASS C2 PASS PASS #Aloril, map_opening5 vs GNU Go 3.7.4; Minue: F8 (later?) ! E5 C3 E3 E7 C5 B4 B5 D2 E2 B2 G6 C7 F8 B6 A5 E8 F7 B8 A4 A3 E9 D9 F9 C8 D1 C4 D4 C1 E1 D3 E6 D6 D5 C6 A6 A7 G3 D8 PASS A2 PASS A8 PASS B1 PASS #Aloril, map_opening5_3_7_4 vs GNU Go 3.6; Minue: F8 (later?) ! E5 C3 E3 G7 C5 B4 B5 D2 E2 B2 G5 D7 B7 F6 H6 H7 C8 D8 E6 E7 J7 J8 J6 H9 D1 C1 E1 F5 F4 G6 H4 D3 D9 E9 C9 C7 B8 A5 A6 A4 D4 C6 B6 D6 D5 F8 C4 B3 PASS H8 PASS F9 PASS B1 PASS #Aloril, map_opening6 vs GNU Go 3.7.4; Minue: D1 E5 C4 E3 C6 F7 G3 F2 D2 D8 B8 C7 B7 D3 C3 E2 C2 D6 C5 C8 B9 D1 C1 E1 D4 E4 C9 D9 D5 E6 B5 G4 A6 H3 A7 G2 A5 F3 PASS PASS #Aloril, map_opening7 vs GNU Go 3.7.4 E5 D4 E4 D5 E6 E3 F3 C7 D8 E2 F2 D3 B8 B7 C8 F1 G1 E1 G2 A8 D6 C6 D7 B9 C9 A7 A9 B5 B9 C2 G7 B3 F4 C4 PASS B4 PASS B2 PASS B6 PASS #Aloril, map_opening8 vs GNU Go 3.7.4 ! E5 C5 D7 G5 E3 B7 G7 G2 C3 C8 D8 C7 H4 D4 E4 D3 D2 D6 E6 C4 B3 D9 E8 E9 F9 C9 F8 B4 A4 A5 A3 D5 G3 B6 H5 A6 G6 PASS H2 PASS F2 PASS G1 PASS F5 PASS G4 PASS PASS #Aloril, map_opening9 vs GNU Go 3.7.4; Minue: H4 ! E5 C5 D7 G5 E3 B7 G7 G2 C3 C8 D8 C7 H4 G4 H5 H3 G6 #Aloril, map_opening9 vs GNU Go 3.7.4; Minue: H4-G6 ! E5 C5 D7 G5 E3 B7 G7 G2 C3 C8 D8 C7 H4 H5 G4 F4 F5 F3 G6 H3 J5 G3 H6 E4 D4 E2 D5 D3 B5 C6 C4 #Aloril, map_opening9 vs GNU Go 3.7.4; Minue: H4-C4 E5 C5 D7 E4 F5 G3 D4 B7 C4 C8 F2 E3 E2 H5 H7 G2 D3 G6 G7 E8 F7 B5 G4 H4 J2 J3 F3 H2 B4 D5 D8 D9 D6 A5 F9 E9 C7 B8 A4 C6 F8 E6 E7 C9 G5 H6 F6 J7 J8 J6 H8 F1 E1 G1 F4 A6 D2 J4 PASS A7 PASS A9 PASS J1 PASS #Aloril, map_opening10 vs GNU Go 3.7.4 E5 C4 E3 C7 C5 D4 D5 D2 B3 B4 C2 E2 F3 F2 D3 C3 B2 G3 B5 F7 G4 H3 H4 H1 H7 F8 A8 D1 J3 J2 J4 C1 B1 H2 C8 G2 D7 PASS C6 PASS B7 PASS E7 PASS G7 PASS F6 PASS G8 PASS E8 PASS F9 PASS E4 PASS A4 PASS PASS #Aloril, map_opening12 vs GNU Go 3.7.4 ! E5 C3 E3 G3 G5 F4 E4 H4 H5 F2 E2 H2 B5 F5 F6 C5 C6 B4 B6 B2 C1 J5 J6 J4 H6 E1 D1 F1 D2 G4 F3 J2 B1 G2 D5 PASS C4 PASS D3 PASS C2 PASS B3 PASS A4 PASS A2 PASS PASS #Aloril, map_opening13 vs GNU Go 3.7.4; Minue: H5 (later??) ! E5 C3 E3 G3 G5 F4 E4 H4 H5 C6 D2 E7 B2 B4 G7 F8 G8 C2 C1 G9 F7 E8 D6 D7 C5 B6 B5 A5 E6 H8 H7 C4 D5 D3 E2 A6 A3 B3 J8 H9 B1 A4 A2 F9 D4 J9 J7 C7 G4 B8 H3 C9 J4 C8 G2 D9 F3 PASS F5 PASS PASS #Aloril, map_opening13_3_7_4 vs GNU Go 3.7.10; Minue: H5 (later??) ! E5 C3 E3 G3 G5 F4 E4 H4 H5 C6 D2 E7 B2 B4 G7 F8 G8 C2 C1 G9 F7 E8 D6 D7 C5 B5 C7 B6 C8 E6 D5 B8 F9 H9 H8 F5 F6 E9 D9 B7 B9 A8 J8 F3 F2 H3 G2 A9 J9 C9 B3 D8 C4 F9 A4 A5 A3 PASS H2 PASS J3 PASS J4 PASS G4 PASS D3 PASS PASS #Aloril, map_opening13_3_7_4 vs GNU Go 3.6; Minue: H5 (later??) E5 D5 E6 E4 F4 F3 D4 C4 E3 D6 C3 D7 E7 G7 H6 B4 B3 E8 F8 D8 F7 A3 A2 A4 B2 F9 G9 E9 G8 C7 G3 B6 F2 B8 H7 A7 G6 B5 PASS A8 PASS C8 PASS #Aloril, map_opening14 vs GNU Go 3.7.4 E5 C4 E3 C7 C5 D4 D5 D2 B3 B4 C2 E2 F3 F2 D3 C3 B2 G3 B5 F7 G4 H3 H4 H1 H7 F8 A8 D1 J3 J2 J4 C1 B1 F4 E4 F5 G6 G5 H5 H2 F6 G2 C8 PASS D7 PASS C6 PASS B7 PASS E8 PASS E7 PASS G7 PASS G8 PASS F9 PASS A4 PASS PASS #Aloril, map_opening15 vs GNU Go 3.7.4 E5 D4 E4 E3 F3 D5 E6 C7 D8 E2 F2 D3 B8 B7 C8 F1 G1 E1 G2 A8 D7 D6 B9 A7 A9 C2 G7 B3 PASS C4 PASS B2 PASS C6 PASS B4 PASS B5 PASS #Aloril, map_opening16 vs GNU Go 3.7.4 ! E5 C4 E3 G7 C6 D2 H6 E2 F3 F2 G2 G1 H2 B5 B6 A6 C5 B4 D4 A7 C3 B3 C2 C8 E8 D3 B2 E7 D8 D7 C7 G6 F8 H5 H8 H7 G8 E6 F5 A8 B8 A3 D1 PASS E1 PASS F1 PASS C9 J6 H4 PASS G5 PASS H1 G4 G3 PASS F4 PASS F7 PASS F6 PASS D6 PASS J8 PASS J7 PASS H6 H7 J5 PASS G7 PASS A2 PASS B7 PASS A5 PASS A9 PASS A4 PASS PASS #Aloril, map_opening17 vs GNU Go 3.7.4 (later??) E5 D4 E4 D3 D5 E3 G3 C7 C5 B4 B5 F7 B3 F3 G4 G2 H2 C2 F2 E2 G1 B2 C4 D1 A2 C3 A4 B1 H7 F8 A8 F4 F5 A1 A3 E1 F1 PASS G7 PASS C8 PASS D7 PASS B7 PASS C6 PASS F6 PASS G8 PASS E7 PASS E8 PASS F9 PASS PASS #Aloril, map_opening18 vs GNU Go 3.7.4 E5 D4 E4 D3 D5 G7 E3 E2 F2 D2 G3 D7 B4 B3 C4 C3 B6 B1 C8 D8 H6 A4 B5 A5 A6 A3 E1 D1 F1 B2 H7 G8 H8 PASS G6 PASS F7 PASS C7 PASS E7 PASS F8 PASS G9 PASS D6 PASS E8 PASS D9 PASS PASS #Aloril, map_opening19 vs GNU Go 3.7.4 E5 D4 E4 C5 E7 D3 E3 G7 H6 C7 D2 C2 E2 D8 E8 E9 F9 D9 F8 D1 E1 C1 D7 C8 C6 B6 D6 B5 D5 C3 H7 B9 G6 B8 G8 C4 F7 B7 PASS B3 PASS A4 PASS A5 PASS #Aloril, map_opening20 vs GNU Go 3.7.4 ! E5 D5 E6 D4 E4 E3 F3 C7 D8 E2 F2 D3 C8 D7 E7 G7 H6 F1 G1 E1 G2 B8 B9 A8 D6 C6 C9 B6 E8 A9 H7 C4 G8 B3 G6 C2 F7 B2 PASS B7 PASS B4 PASS B5 PASS PASS #Aloril, map_opening21 vs GNU Go 3.7.4; Minue: C8 E5 C4 E3 G7 C6 D2 H6 E2 F3 F2 G2 G1 H2 B5 B6 A6 C5 B4 D4 A8 C3 C2 B3 B2 A3 A2 D3 H1 F1 E1 J2 F1 H4 J1 H7 B1 G8 PASS F7 PASS G6 PASS A4 PASS A5 PASS A7 PASS B8 PASS A9 PASS PASS #Aloril, map_opening22 vs GNU Go 3.7.4 E5 C5 D7 E4 F5 G3 D4 B7 C4 C8 F2 E3 E2 H5 H7 G2 D3 G6 G7 E8 F7 B5 G4 H4 J2 J3 F3 H2 B4 D5 D8 D9 D6 A5 F9 E9 C7 B8 A4 C6 F8 E6 E7 C9 G5 H6 F6 J7 J8 J6 H8 F1 E1 G1 F4 A6 D2 A7 PASS J4 PASS A9 PASS J1 PASS #Aloril, map_opening23 vs GNU Go 3.7.4 E5 D4 E4 F6 E6 F7 C3 D3 C4 D5 G5 E3 F3 B6 C5 F2 G3 G2 D6 H6 H2 C7 C6 B5 D7 C8 D8 A8 G9 A2 B4 A4 B2 A3 C9 B9 D9 B3 C2 B1 C1 A5 A1 B8 B1 B7 G6 PASS G7 PASS F8 PASS F5 PASS E7 PASS H7 PASS J6 PASS H5 PASS D2 PASS E2 PASS F1 PASS G1 PASS PASS #Aloril, map_opening25 vs GNU Go 3.7.4 E5 C5 D7 E4 F5 G3 D4 B7 C4 C8 F2 E3 E2 H5 H7 G2 D3 G6 G7 E8 F7 B5 G4 H4 J2 J3 F3 H2 B4 D5 D8 D9 D6 A5 F9 E9 C7 B8 A4 C6 F8 E6 E7 C9 G5 H6 F6 J7 J8 J6 H8 F1 E1 G1 F4 A6 D2 A7 PASS J4 PASS J1 PASS A9 PASS #Aloril, map_opening26 vs GNU Go 3.7.4 E5 D4 E4 D3 D5 F6 E3 F8 B4 G3 G5 H5 H4 H6 G4 C7 E7 F7 D7 D8 E8 E9 C8 D9 C9 F9 B7 J4 G6 H7 G7 G8 J3 J5 F5 H8 H3 E6 D6 H9 C6 PASS C3 PASS D2 PASS C4 PASS G2 PASS F3 PASS PASS #Aloril, map_opening27 vs GNU Go 3.7.4 E5 D4 E4 D3 D5 G7 E3 E2 F2 D2 G3 D7 B4 B3 C4 C3 B6 B1 C8 D8 H6 F1 G1 E1 A3 A2 A4 B2 H7 G8 H8 PASS C7 PASS D6 PASS G6 PASS F7 PASS F8 PASS G9 PASS E7 PASS E8 PASS D9 PASS PASS #Aloril, map_opening28 vs GNU Go 3.7.4 E5 D5 E6 E4 F4 F3 D4 C4 E3 D6 C3 B4 D7 C7 E8 C8 B3 B6 A4 B5 D8 D9 E9 C9 A5 A6 A3 B7 G3 A8 F2 B8 G7 C6 PASS #Aloril, map_opening2 vs GNU Go 3.6 E5 C5 D7 D3 G6 G3 D4 C4 E3 D2 E2 H5 H1 H6 G7 B7 D1 C2 C1 B1 E1 B2 C8 B8 D5 C7 D8 B9 C6 B6 D6 C9 D9 A3 H7 B3 G5 B5 G4 B4 H4 PASS H3 PASS G2 PASS F3 PASS J6 PASS J5 PASS PASS #Aloril, map_opening3 vs GNU Go 3.6 E5 D4 E4 D3 D5 F6 E3 F8 B4 C7 H5 H7 B6 F5 G4 B7 C6 A6 D7 D8 E7 E8 A5 A7 F7 G6 G7 G8 H6 J7 J6 H8 C3 C9 G5 D9 D2 F9 C4 B8 F4 B9 E6 PASS PASS #Aloril, map_opening4 vs GNU Go 3.6 E5 D4 E4 D3 D5 F6 E3 F8 B4 C7 H5 H7 B6 F5 G4 B7 C6 H6 D7 D8 E7 E8 F7 G5 H4 A6 A5 A7 G7 G8 G6 J6 J5 H8 C3 C9 D2 D9 C4 F9 F4 B8 E6 B9 PASS #Aloril, map_opening7 vs GNU Go 3.6 E5 D4 E4 D3 D5 G7 E3 E2 F2 D2 G3 B4 E7 F8 H6 H8 E8 B6 C5 B8 B5 A5 C4 B3 C3 C2 E1 B2 C7 B7 C8 B9 C9 D1 F1 C6 D6 A8 H7 A3 G6 B1 F7 A4 G8 PASS F9 PASS J8 PASS H9 PASS PASS #Aloril, map_opening8 vs GNU Go 3.6 *************** *** 67,71 **** E5 C5 D7 G5 E3 F7 C3 C7 E7 F8 B6 B7 C6 G3 E8 F2 E2 E1 F3 G2 F6 G6 D1 F5 E6 F1 D2 E9 D9 F9 F4 G4 B5 H7 C4 H8 D5 H5 C8 J6 B8 G7 A7 J5 PASS H3 PASS J2 PASS H2 PASS #Aloril, map_opening2 vs GNU Go 3.7.10 E5 C4 E3 C7 C5 B5 C6 B6 F7 G3 H2 H3 G2 D3 D2 C2 D4 C3 E2 E8 F8 D7 E7 D6 D5 D8 C1 B1 D1 F9 G9 E9 G8 B2 E6 B8 G4 C9 H4 B7 F3 B4 J3 PASS PASS #Aloril, map_opening3 vs GNU Go 3.7.10 ! E5 C4 E3 D7 F7 G3 H2 H3 G2 D5 E6 D6 C2 E8 F8 F9 G9 E9 G8 B3 E7 D8 B2 E4 F4 D4 D3 F3 F2 H4 G5 A2 C3 B4 B1 A3 A1 C7 H5 B8 J4 B6 J3 C9 G4 B7 PASS #Aloril, map_opening4 vs GNU Go 3.7.10 E5 C5 D7 G5 E3 F7 C3 C7 E7 F8 B6 C6 D8 C8 B5 B7 C4 F6 E6 G3 F2 G2 F4 G4 G1 H1 F1 H2 F3 F5 E9 F9 E8 H6 C9 G7 D6 H7 D5 H4 B8 H8 A7 J5 PASS J6 PASS #Aloril, map_opening5 vs GNU Go 3.7.10 E5 C5 D7 D3 G6 G3 D4 C4 E3 D2 E2 H5 H1 B7 C8 B8 D1 C2 C1 B1 E1 B2 C6 H3 H6 B6 C7 B9 D5 C9 D9 B3 G5 A5 H4 B5 J5 B4 H2 PASS G4 PASS G2 PASS F3 PASS J3 PASS PASS #Aloril, map_opening6 vs GNU Go 3.7.10 --- 67,71 ---- E5 C5 D7 G5 E3 F7 C3 C7 E7 F8 B6 B7 C6 G3 E8 F2 E2 E1 F3 G2 F6 G6 D1 F5 E6 F1 D2 E9 D9 F9 F4 G4 B5 H7 C4 H8 D5 H5 C8 J6 B8 G7 A7 J5 PASS H3 PASS J2 PASS H2 PASS #Aloril, map_opening2 vs GNU Go 3.7.10 E5 C4 E3 C7 C5 B5 C6 B6 F7 G3 H2 H3 G2 D3 D2 C2 D4 C3 E2 E8 F8 D7 E7 D6 D5 D8 C1 B1 D1 F9 G9 E9 G8 B2 E6 B8 G4 C9 H4 B7 F3 B4 J3 PASS PASS #Aloril, map_opening3 vs GNU Go 3.7.10 ! E5 C4 E3 D7 C5 F6 F5 G6 C7 D6 C6 D2 C3 H4 G3 H3 G5 H6 H5 J5 D8 E8 C8 G2 F2 E9 E6 E7 H2 J2 G1 J3 G4 J6 D5 D9 C9 J4 H1 F8 J1 G7 D3 G8 C2 H8 B4 G9 D1 PASS D4 PASS E2 PASS PASS #Aloril, map_opening4 vs GNU Go 3.7.10; Minue: C5 (later??) E5 C5 D7 G5 E3 F7 C3 C7 E7 F8 B6 C6 D8 C8 B5 B7 C4 F6 E6 G3 F2 G2 F4 G4 G1 H1 F1 H2 F3 F5 E9 F9 E8 H6 C9 G7 D6 H7 D5 H4 B8 H8 A7 J5 PASS J6 PASS #Aloril, map_opening5 vs GNU Go 3.7.10 E5 C5 D7 D3 G6 G3 D4 C4 E3 D2 E2 H5 H1 B7 C8 B8 D1 C2 C1 B1 E1 B2 C6 H3 H6 B6 C7 B9 D5 C9 D9 B3 G5 A5 H4 B5 J5 B4 H2 PASS G4 PASS G2 PASS F3 PASS J3 PASS PASS #Aloril, map_opening6 vs GNU Go 3.7.10 *************** *** 77,81 **** E5 C4 E3 G5 C6 D2 G7 G2 E2 D3 H6 F4 E4 H5 H4 G4 J5 B5 B6 A6 C5 B4 A7 A5 B7 E1 F1 D1 F2 D4 D5 B2 G6 A3 F5 B3 G3 C1 H2 PASS G1 PASS F3 PASS PASS #Aloril, map_opening12 vs GNU Go 3.7.10 E5 D5 E6 G5 E4 F3 E3 F7 D7 F2 F4 G4 F6 G6 E8 E2 D2 C5 G8 B7 B3 C8 A6 D1 C2 C7 H7 H6 G7 A7 A4 C1 B1 E1 J6 H3 J5 H5 J4 J3 F5 H4 J7 G2 E7 H2 F8 G1 C4 PASS B5 PASS D4 PASS C6 PASS D6 PASS B6 PASS D8 PASS C9 PASS B8 PASS A8 PASS PASS #Aloril, map_opening13 vs GNU Go 3.7.10 ! E5 C3 E3 G6 C5 G3 C7 F7 E8 F8 F2 E7 H2 D6 C6 D8 H4 G4 H5 G5 J8 D5 D4 C8 B8 E9 H7 G9 H6 B9 B7 G2 G1 D2 B4 H3 J3 C4 B3 F3 E2 H8 G7 E6 F5 F6 E4 G8 J7 A8 A7 C9 J9 A9 D7 F4 C2 H9 D3 PASS D1 PASS PASS #Aloril, map_opening14 vs GNU Go 3.7.10 E5 D4 E4 D5 E6 G7 D6 C2 B5 E3 F3 E2 H6 F2 G3 G2 B3 H3 H4 H2 J4 B2 C3 D3 C5 A2 A3 C4 B4 J3 G4 D1 H7 C1 G8 E1 F7 PASS G6 PASS PASS #Aloril, map_opening15 vs GNU Go 3.7.10 E5 C4 E3 G5 C6 D2 G7 G2 E2 D3 H6 F4 E4 H5 H4 G4 J5 B5 B6 A6 C5 B7 B4 A5 C3 B3 D4 A4 B2 C7 D8 H3 J4 C2 A3 F3 F2 PASS A7 PASS G6 PASS F5 PASS C1 PASS D1 PASS D7 PASS C8 PASS B8 PASS J3 PASS G1 PASS H2 J2 J1 PASS G3 PASS PASS #Aloril, map_opening16 vs GNU Go 3.7.10 --- 77,81 ---- E5 C4 E3 G5 C6 D2 G7 G2 E2 D3 H6 F4 E4 H5 H4 G4 J5 B5 B6 A6 C5 B4 A7 A5 B7 E1 F1 D1 F2 D4 D5 B2 G6 A3 F5 B3 G3 C1 H2 PASS G1 PASS F3 PASS PASS #Aloril, map_opening12 vs GNU Go 3.7.10 E5 D5 E6 G5 E4 F3 E3 F7 D7 F2 F4 G4 F6 G6 E8 E2 D2 C5 G8 B7 B3 C8 A6 D1 C2 C7 H7 H6 G7 A7 A4 C1 B1 E1 J6 H3 J5 H5 J4 J3 F5 H4 J7 G2 E7 H2 F8 G1 C4 PASS B5 PASS D4 PASS C6 PASS D6 PASS B6 PASS D8 PASS C9 PASS B8 PASS A8 PASS PASS #Aloril, map_opening13 vs GNU Go 3.7.10 ! E5 C3 E3 G6 C5 G3 F7 G7 B4 C7 F8 G8 F6 F2 E2 F9 E9 G9 E8 G5 F3 G2 F4 G4 F1 G1 E1 F5 C6 H8 C4 H6 B3 J7 B7 J8 C8 PASS D7 PASS C2 PASS D3 PASS PASS #Aloril, map_opening14 vs GNU Go 3.7.10; Minue: F7 (later?) E5 D4 E4 D5 E6 G7 D6 C2 B5 E3 F3 E2 H6 F2 G3 G2 B3 H3 H4 H2 J4 B2 C3 D3 C5 A2 A3 C4 B4 J3 G4 D1 H7 C1 G8 E1 F7 PASS G6 PASS PASS #Aloril, map_opening15 vs GNU Go 3.7.10 E5 C4 E3 G5 C6 D2 G7 G2 E2 D3 H6 F4 E4 H5 H4 G4 J5 B5 B6 A6 C5 B7 B4 A5 C3 B3 D4 A4 B2 C7 D8 H3 J4 C2 A3 F3 F2 PASS A7 PASS G6 PASS F5 PASS C1 PASS D1 PASS D7 PASS C8 PASS B8 PASS J3 PASS G1 PASS H2 J2 J1 PASS G3 PASS PASS #Aloril, map_opening16 vs GNU Go 3.7.10 *************** *** 84,122 **** E5 D5 E6 E4 F4 E3 C7 F3 G4 G3 B5 B3 C4 C3 D4 H3 D3 D2 H4 J4 J5 J3 H5 B4 C5 A5 A6 A4 B6 A2 D6 E2 G7 B2 PASS C2 PASS G2 PASS F1 PASS E1 PASS #Aloril, map_opening19 vs GNU Go 3.7.10 E5 D4 E4 D5 E6 G7 D6 D3 F2 G4 C1 E8 D8 D9 C8 E7 H3 E3 F3 B5 C6 F4 B3 B4 C3 B6 B7 D7 C7 E2 E1 H5 F6 H4 G3 J3 J2 J4 H2 F7 C9 E9 G6 H6 C5 F5 C4 G5 D2 H8 A6 J7 A4 G8 A5 J8 PASS #Aloril, map_opening20 vs GNU Go 3.7.10 - E5 C3 E3 G6 C5 G3 C7 F7 E8 F8 F2 E7 H2 D6 C6 D5 D4 D8 H4 G4 H5 G5 J8 C8 B8 E9 H7 G9 H6 B9 B7 G2 G1 D2 B4 H3 J3 C4 B3 F3 E2 H8 J7 G7 C2 H9 E6 D7 A8 C9 F4 F5 E4 J9 J4 A9 F6 PASS D3 PASS D1 PASS PASS #Aloril, map_opening21 vs GNU Go 3.7.10 E5 D4 E4 D5 E6 G7 D6 D3 F2 G4 C1 E8 D8 D9 C8 E7 H3 E3 F3 F4 C6 B5 B3 B4 C3 B6 B7 D7 C7 E2 E1 H5 F6 H4 G3 J3 J2 J4 H2 F7 C9 E9 G6 H6 C5 F5 C4 G5 D2 H8 A6 J7 A4 G8 A5 J8 PASS #Aloril, map_opening22 vs GNU Go 3.7.10 ! E5 C4 E3 G5 C6 D2 G7 G2 E2 D3 H6 F4 E4 H5 H4 G4 J5 B5 B6 A6 C5 B7 B4 A5 C3 B3 D4 A4 B2 C7 D8 H3 J4 C2 A3 F3 F2 PASS A7 PASS G6 PASS F5 PASS C1 PASS D1 PASS D7 PASS C8 PASS B8 PASS J3 PASS G1 PASS H2 H1 G3 PASS J1 PASS PASS #Aloril, map_opening23 vs GNU Go 3.7.10 E5 D4 E4 D5 E6 G7 D6 D3 F2 G4 C1 E8 D8 D9 C8 E7 H3 E3 F3 F4 C6 B5 B3 B4 C3 B6 B7 D7 C7 E2 E1 H5 F6 H4 G3 J3 J2 J4 H2 F8 C9 E9 G6 H6 F7 G8 C5 F5 C4 G5 D2 H8 A6 J7 A4 J8 A5 PASS PASS #Aloril, map_opening24 vs GNU Go 3.7.10 E5 D5 E6 D6 E4 E7 F7 C3 D2 E8 F8 D7 D4 C4 B2 B3 C2 F9 G9 E9 G8 A2 B1 D3 E3 G3 H4 A3 A1 C8 F3 B7 G4 B5 H3 C6 G2 B6 PASS B8 PASS B4 PASS #Aloril, map_opening25 vs GNU Go 3.7.10 E5 D5 E6 E4 F4 E3 C7 F3 G4 G3 B5 G7 H6 E8 H8 D7 D6 C8 E7 B3 H3 H2 H4 C5 C6 B4 B6 J2 A4 A3 A5 J3 J4 C2 D8 D2 F8 C4 E9 D3 G8 G2 B8 PASS C9 PASS G6 PASS H7 PASS F7 PASS PASS #Aloril, map_opening26 vs GNU Go 3.7.10 E5 C3 E3 F6 C5 G7 B4 C7 G5 H6 H5 J5 J4 J6 H4 G6 D6 D7 E6 E7 B6 B8 B7 A8 A7 F5 F4 C6 B3 F8 D3 E8 C2 C8 C4 G8 PASS D9 PASS C9 PASS #Aloril, map_opening27 vs GNU Go 3.7.10 ! E5 D5 E6 D6 E4 G3 D4 D7 F8 G6 B5 B6 C5 D8 B7 G8 F7 E2 D2 G7 F2 G2 F3 G4 G1 H1 F1 F9 E9 G9 E8 H2 F5 F6 E7 G5 F4 H8 C6 H6 A6 J7 C7 J8 E3 PASS E1 PASS C8 PASS D9 PASS PASS #Aloril, map_opening28 vs GNU Go 3.7.10 E5 C3 E3 G3 G5 E2 D2 F2 D3 C7 H4 C5 E7 D8 E8 C2 D1 C1 D7 C8 C6 B6 D5 D6 C4 B4 D4 E9 F9 E6 F6 D9 C6 D6 F8 C6 E6 A5 H3 B3 F3 A6 G4 A4 G2 B8 F1 A2 E1 B2 PASS #Aloril, map_opening29 vs GNU Go 3.7.10 E5 D4 E4 D5 E6 G7 D6 D3 F2 G4 C1 E8 D8 D9 C8 E7 H3 E3 F3 F4 C6 B5 B3 B4 C3 B6 B7 D7 C7 E2 E1 H5 F6 H4 G3 J3 J2 J4 H2 F8 C9 E9 G6 H6 F7 G8 C5 G5 C4 F5 D2 H8 A6 J7 A4 J8 A5 PASS PASS #Aloril, map_opening30 vs GNU Go 3.7.10 E5 C3 E3 G3 G5 E2 D2 F2 D3 C7 H4 F7 C4 H6 B6 B7 G6 G7 H5 H7 C6 D6 D5 A6 E6 D7 E7 E8 A5 A7 B4 F6 F5 J5 J4 J6 H3 B8 F3 G8 G4 F9 G2 D8 E1 E9 F1 G9 C2 C9 B3 PASS PASS #Aloril, map_opening31 vs GNU Go 3.7.10 - E5 C3 E3 G6 C5 G3 C7 F7 E8 F8 F2 E7 H2 D6 C6 D5 D4 D8 H4 G4 H5 G5 J8 C8 B8 E9 H7 B9 B7 G9 H6 G2 G1 D2 B4 H3 J3 C4 B3 F3 E2 H8 J7 G7 E6 D7 A8 H9 J4 C9 A9 F5 E4 J9 C2 F6 F4 PASS D3 PASS D1 PASS PASS #Aloril, map_opening32 vs GNU Go 3.7.10 E5 D5 E6 E4 F4 E3 C7 F3 G4 G3 B5 G7 H6 E8 H8 D7 D6 C8 E7 H4 H5 D8 B7 H3 C3 H7 J7 G5 F5 G8 G6 C4 B4 D3 C2 D2 C5 D4 D1 E1 C1 J5 J6 J4 F7 F2 F8 F1 G9 H2 B8 G1 C9 PASS E9 PASS D9 PASS PASS #Aloril, map_opening33 vs GNU Go 3.7.10 E5 C3 E3 F6 C5 G7 B4 G3 D7 F2 E2 E8 D8 D9 C9 E9 C8 E1 D1 F1 D2 E7 F3 G2 G4 H4 G5 H5 G6 H6 E6 F5 F4 F7 C4 H8 B3 H2 C2 J7 D3 G8 PASS J8 PASS H3 PASS J6 PASS #Aloril, map_opening34 vs GNU Go 3.7.10 E5 D5 E6 G5 E4 F7 E7 F3 C3 F8 E8 E9 D9 F9 D8 D2 E3 F2 E2 C2 E1 F1 F6 G6 F4 G4 F5 H7 C5 H3 B2 G8 D3 G3 C1 H8 D1 H6 D6 H2 D4 J5 PASS H5 PASS J7 PASS #Aloril, map_opening35 vs GNU Go 3.7.10 E5 D4 E4 E3 F3 D3 D5 F2 G3 C7 E7 B5 C5 B4 C4 C3 G2 G7 F8 E2 C6 B6 C8 B8 D7 B7 D9 G1 H1 F1 H2 B9 C9 B2 G8 A3 H7 C2 G6 A4 F7 A2 PASS #Aloril, map_opening36 vs GNU Go 3.7.10 - E5 C3 E3 G6 C5 G3 C7 F7 E8 F8 F2 E7 H2 D6 C6 D5 D4 D8 H4 G4 H5 G5 J8 C8 B8 E9 H7 B9 B7 C4 B4 B3 B5 G9 H6 A6 A4 G2 G1 B2 D2 D7 H3 H8 J7 G7 A8 H9 C2 C9 E6 F3 F4 F5 E4 J9 B1 A9 D3 F6 A2 PASS A3 PASS A5 PASS B6 PASS A7 PASS PASS #Aloril, map_opening37 vs GNU Go 3.7.10 E5 D4 E4 E3 F3 D3 D5 G7 B4 F2 G4 G3 F4 G2 F8 H3 H4 B2 C4 C3 B3 J4 J5 J3 H5 A2 A3 E1 C6 C2 G8 E2 H7 H1 F7 H2 G6 PASS PASS #Aloril, map_opening38 vs GNU Go 3.7.10 - E5 C3 E3 G6 C5 G3 C7 F7 E8 F8 F2 E7 H2 D6 C6 D5 D4 D8 H4 G4 H5 G5 J8 C8 B8 E9 H7 B9 B7 C4 B4 B3 B5 A6 A4 G9 H6 G2 G1 B2 D2 D7 H3 H8 J7 G7 A8 H9 F4 F3 E6 F5 E4 J9 A9 C9 C2 F6 B1 PASS D3 PASS A2 PASS A3 PASS B6 PASS A5 PASS A7 PASS PASS #Aloril, map_opening39 vs GNU Go 3.7.10 - E5 D5 E6 G5 E4 F7 E7 D4 E3 C2 G3 F8 H6 H7 G6 F6 G7 H8 H5 C7 E8 D8 E9 D3 E2 D2 D7 C8 D6 C6 D1 C1 E1 D9 G8 B5 G4 B3 F5 C4 F9 B4 J7 B6 H9 PASS J8 PASS PASS #Aloril, map_opening40 vs GNU Go 3.7.10 E5 D5 E6 E4 F4 E3 C7 F3 G4 G3 B5 G7 H6 E8 H8 D7 D6 C8 E7 H4 H5 H3 C3 H7 J7 G5 G6 D8 B7 G8 F5 C4 B4 D3 C2 D2 C5 D4 D1 E1 C1 J5 J6 J4 F7 F2 F8 F1 G9 H2 B8 G1 C9 PASS E9 PASS D9 PASS PASS #Aloril, map_opening41 vs GNU Go 3.7.10 E5 C4 E3 G7 C6 D3 D4 D2 E2 C3 B5 B2 A3 G4 E7 G2 F2 F8 E8 E9 D9 F9 D8 G3 F7 G8 G6 H6 G5 H5 G1 H1 F1 H2 F4 F3 B4 H9 C5 H8 B3 H4 D1 H7 C2 J3 A2 J4 B1 PASS PASS #Aloril, map_opening42 vs GNU Go 3.7.10 - E5 D5 E6 D6 E4 G3 D4 D7 F8 G6 B5 B6 C5 D8 B7 G8 F7 G7 F2 G2 F3 G4 G1 H1 F1 F9 E9 G9 E8 H2 F5 F6 E7 G5 F4 H8 C6 H6 A6 J7 C7 J8 C8 PASS D9 PASS PASS #Aloril, map_opening43 vs GNU Go 3.7.10 E5 D4 E4 E3 F3 D3 D5 G7 B4 F2 G4 G3 F4 G2 F8 C7 B6 G8 F7 H3 H4 B2 C3 C2 B3 J4 J5 J3 H5 A2 C4 A3 A4 D2 G6 E1 B7 D1 H7 F1 H8 PASS G9 PASS C8 PASS D7 PASS C6 PASS PASS #Aloril, map_opening44 vs GNU Go 3.7.10 E5 D5 E6 G5 E4 F3 E3 D6 E7 C8 G7 F2 C3 E2 B5 B6 C5 C6 D8 B1 D2 D1 C2 C1 H6 H3 H4 G4 H5 G2 B2 J4 J5 J3 F4 H1 G6 F5 F6 G3 A2 E1 A1 H2 B8 PASS C7 PASS C9 PASS B7 PASS D4 PASS D7 PASS A6 PASS PASS #Aloril, map_opening45 vs GNU Go 3.7.10 - E5 C3 E3 G6 C5 G3 C7 F7 E8 F8 F2 E7 H2 D6 C6 D5 D4 D8 H4 G4 H5 G5 J8 C8 B8 E9 H7 B9 B7 C4 B4 B3 B5 A6 A4 H3 J3 H6 J6 G2 G1 B2 D2 A8 A7 A3 A9 C9 C2 G8 H1 H8 J2 H9 J4 A8 D3 F4 E4 A9 B1 E6 F5 G7 J7 F3 J5 J9 F6 D7 A2 PASS B6 PASS A5 PASS PASS #Aloril, map_opening46 vs GNU Go 3.7.10 E5 C3 E3 F6 C5 G7 B4 G3 D7 F2 E2 E8 D8 D9 C9 E9 C8 E1 D1 F1 D2 E7 F3 G2 G4 H4 G5 H5 G6 H6 E6 F5 F4 F7 C4 H8 B3 J7 C2 G8 D3 H3 PASS J8 PASS J6 PASS #Aloril, map_opening47 vs GNU Go 3.7.10 ! E5 D5 E6 G5 E4 F7 E7 D4 E3 C2 G3 F8 H6 G6 E8 H5 B5 B4 B3 C5 A4 B6 C4 C7 B2 B8 C9 J2 H4 D3 C3 E2 F2 G4 H3 F4 F3 J4 J3 F1 J5 H7 J6 H1 H2 G1 G8 G7 F9 H8 G9 A7 D6 B1 C6 C8 D9 B9 A5 A6 D8 D7 D2 A8 E1 PASS C1 PASS A1 PASS G2 PASS J1 PASS F6 PASS F5 PASS H9 PASS J7 PASS J8 PASS PASS #Aloril, map_opening48 vs GNU Go 3.7.10 E5 D5 E6 G5 E4 F3 E3 D6 E7 C8 G7 F2 C3 E2 B5 B6 C5 C6 D8 B1 D2 B3 C4 D1 B2 A2 C2 C1 H6 H3 H4 G4 H5 G2 A4 A1 A3 E1 J3 J2 J4 F4 G6 F5 F6 H2 D7 PASS B4 PASS C7 PASS B7 PASS A6 PASS D4 PASS B8 PASS C9 PASS PASS #Aloril, map_opening49 vs GNU Go 3.7.10 E5 D5 E6 G5 E4 F3 E3 D6 E7 C8 G7 F2 C3 E2 B5 B6 C5 C6 D8 B1 D2 B3 C4 D1 B2 C1 H6 C2 H4 D3 D4 B9 B7 H2 G4 B4 A4 A2 H3 A6 A5 J2 G3 G2 F4 A3 J3 D2 D7 PASS C7 PASS B8 PASS C9 PASS A7 PASS A9 PASS G6 PASS H5 PASS F5 PASS PASS #Aloril, map_opening50 vs GNU Go 3.7.10 E5 D4 E4 C6 E3 D3 F7 G3 H4 E2 B7 C7 B6 B8 C5 D5 B4 B3 D6 D8 E7 B5 A5 C3 A8 C4 B5 E8 D7 C8 F8 A3 A7 B9 E9 D9 F9 A4 H2 G2 H3 G4 G5 H1 F4 D2 J2 F3 J1 G1 H5 F1 F6 E1 PASS B2 PASS C1 PASS #Aloril, map_opening51 vs GNU Go 3.7.10 - E5 D5 E6 G5 E4 F7 E7 D4 E3 C2 G3 F8 H6 G6 E8 H5 B5 B4 B3 C5 A4 C3 B6 B2 C4 A2 B4 E2 F2 E1 D3 D2 F1 E9 D9 F9 D8 J2 H4 J4 H3 J3 H2 H1 G1 F6 F5 G4 F4 A3 J1 J5 H1 H7 C6 G7 D6 H8 PASS B1 PASS H9 PASS J6 PASS #Aloril, map_opening52 vs GNU Go 3.7.10 - E5 C3 E3 G6 C5 G3 C7 F7 E8 F8 F2 E7 H2 D6 C6 D5 D4 D8 H4 G4 H5 G5 J8 C8 B8 E9 H7 B9 B7 C4 B4 B3 B5 A6 A4 H3 J3 H6 J6 G2 G1 B2 D2 A8 A7 A3 A9 C9 C2 G8 H1 H9 J2 H8 J4 A8 D3 F4 E4 A9 E6 D7 B1 G7 J7 F3 J5 J9 F5 F6 A2 PASS B6 PASS A5 PASS PASS #Aloril, map_opening53 vs GNU Go 3.7.10 E5 D4 E4 C6 E3 D3 F7 G3 H4 E2 B7 C7 B6 B8 C5 D5 B4 B3 D6 D8 E7 B5 A5 C3 A8 C4 B5 C8 A7 A3 E8 A4 D9 F2 H3 H2 G4 F3 J2 F4 F5 H1 J3 J1 G5 D2 D7 B2 C9 C1 B9 G2 PASS B1 PASS #Aloril, map_opening54 vs GNU Go 3.7.10 - E5 C3 E3 G6 C5 G3 C7 F7 E8 F8 F2 E7 H2 D6 C6 D5 D4 D8 H4 G4 H5 G5 J8 C8 B8 E9 H7 B9 B7 C4 B4 B3 B5 A6 A4 H3 J3 H6 J6 G2 G1 B2 D2 A8 A7 A3 A9 C9 C2 G8 H1 H9 J2 H8 J4 A8 D3 F4 E4 A9 E6 D7 B1 F3 J5 G7 J7 J9 F5 F6 A2 PASS B6 PASS A5 PASS PASS #Aloril, map_opening55 vs GNU Go 3.7.10 E5 G5 F7 D6 F6 #Aloril, play1 vs CrazyStone 0006 E5 G5 F7 F3 C6 D3 H6 H5 B3 G6 G7 H7 H8 J6 C2 C4 B4 #Aloril, play2 vs CrazyStone 0006 --- 84,112 ---- E5 D5 E6 E4 F4 E3 C7 F3 G4 G3 B5 B3 C4 C3 D4 H3 D3 D2 H4 J4 J5 J3 H5 B4 C5 A5 A6 A4 B6 A2 D6 E2 G7 B2 PASS C2 PASS G2 PASS F1 PASS E1 PASS #Aloril, map_opening19 vs GNU Go 3.7.10 E5 D4 E4 D5 E6 G7 D6 D3 F2 G4 C1 E8 D8 D9 C8 E7 H3 E3 F3 B5 C6 F4 B3 B4 C3 B6 B7 D7 C7 E2 E1 H5 F6 H4 G3 J3 J2 J4 H2 F7 C9 E9 G6 H6 C5 F5 C4 G5 D2 H8 A6 J7 A4 G8 A5 J8 PASS #Aloril, map_opening20 vs GNU Go 3.7.10 E5 D4 E4 D5 E6 G7 D6 D3 F2 G4 C1 E8 D8 D9 C8 E7 H3 E3 F3 F4 C6 B5 B3 B4 C3 B6 B7 D7 C7 E2 E1 H5 F6 H4 G3 J3 J2 J4 H2 F7 C9 E9 G6 H6 C5 F5 C4 G5 D2 H8 A6 J7 A4 G8 A5 J8 PASS #Aloril, map_opening22 vs GNU Go 3.7.10 ! E5 C4 E3 G5 C6 D2 G7 G2 E2 D3 H6 F4 E4 H5 H4 G4 J5 B5 B6 A6 C5 B7 B4 A5 C3 B3 D4 A4 B2 C7 D8 H3 J4 C2 A3 F3 F2 PASS A7 PASS G6 PASS F5 PASS C1 PASS D1 PASS D7 PASS C8 PASS B8 PASS J3 PASS G1 PASS H2 H1 G3 PASS J1 PASS PASS #Aloril, map_opening23 vs GNU Go 3.7.10 (later??) E5 D4 E4 D5 E6 G7 D6 D3 F2 G4 C1 E8 D8 D9 C8 E7 H3 E3 F3 F4 C6 B5 B3 B4 C3 B6 B7 D7 C7 E2 E1 H5 F6 H4 G3 J3 J2 J4 H2 F8 C9 E9 G6 H6 F7 G8 C5 F5 C4 G5 D2 H8 A6 J7 A4 J8 A5 PASS PASS #Aloril, map_opening24 vs GNU Go 3.7.10 E5 D5 E6 D6 E4 E7 F7 C3 D2 E8 F8 D7 D4 C4 B2 B3 C2 F9 G9 E9 G8 A2 B1 D3 E3 G3 H4 A3 A1 C8 F3 B7 G4 B5 H3 C6 G2 B6 PASS B8 PASS B4 PASS #Aloril, map_opening25 vs GNU Go 3.7.10 E5 D5 E6 E4 F4 E3 C7 F3 G4 G3 B5 G7 H6 E8 H8 D7 D6 C8 E7 B3 H3 H2 H4 C5 C6 B4 B6 J2 A4 A3 A5 J3 J4 C2 D8 D2 F8 C4 E9 D3 G8 G2 B8 PASS C9 PASS G6 PASS H7 PASS F7 PASS PASS #Aloril, map_opening26 vs GNU Go 3.7.10 E5 C3 E3 F6 C5 G7 B4 C7 G5 H6 H5 J5 J4 J6 H4 G6 D6 D7 E6 E7 B6 B8 B7 A8 A7 F5 F4 C6 B3 F8 D3 E8 C2 C8 C4 G8 PASS D9 PASS C9 PASS #Aloril, map_opening27 vs GNU Go 3.7.10 ! E5 D5 E6 D6 E4 G3 D4 D7 E7 G6 B6 E2 F3 G2 D2 G4 G7 H7 G8 C5 B4 C8 C4 H8 E8 D1 C2 C1 B1 E1 B2 E3 F4 F6 F2 F1 D3 G1 H9 F7 F8 H6 F5 G5 J9 J8 G9 H4 B5 J5 D8 J6 B8 PASS C9 PASS C6 PASS C7 PASS PASS #Aloril, map_opening28 vs GNU Go 3.7.10; Minue: E7, E8 E5 C3 E3 G3 G5 E2 D2 F2 D3 C7 H4 C5 E7 D8 E8 C2 D1 C1 D7 C8 C6 B6 D5 D6 C4 B4 D4 E9 F9 E6 F6 D9 C6 D6 F8 C6 E6 A5 H3 B3 F3 A6 G4 A4 G2 B8 F1 A2 E1 B2 PASS #Aloril, map_opening29 vs GNU Go 3.7.10 E5 D4 E4 D5 E6 G7 D6 D3 F2 G4 C1 E8 D8 D9 C8 E7 H3 E3 F3 F4 C6 B5 B3 B4 C3 B6 B7 D7 C7 E2 E1 H5 F6 H4 G3 J3 J2 J4 H2 F8 C9 E9 G6 H6 F7 G8 C5 G5 C4 F5 D2 H8 A6 J7 A4 J8 A5 PASS PASS #Aloril, map_opening30 vs GNU Go 3.7.10 E5 C3 E3 G3 G5 E2 D2 F2 D3 C7 H4 F7 C4 H6 B6 B7 G6 G7 H5 H7 C6 D6 D5 A6 E6 D7 E7 E8 A5 A7 B4 F6 F5 J5 J4 J6 H3 B8 F3 G8 G4 F9 G2 D8 E1 E9 F1 G9 C2 C9 B3 PASS PASS #Aloril, map_opening31 vs GNU Go 3.7.10 E5 D5 E6 E4 F4 E3 C7 F3 G4 G3 B5 G7 H6 E8 H8 D7 D6 C8 E7 H4 H5 D8 B7 H3 C3 H7 J7 G5 F5 G8 G6 C4 B4 D3 C2 D2 C5 D4 D1 E1 C1 J5 J6 J4 F7 F2 F8 F1 G9 H2 B8 G1 C9 PASS E9 PASS D9 PASS PASS #Aloril, map_opening33 vs GNU Go 3.7.10 E5 C3 E3 F6 C5 G7 B4 G3 D7 F2 E2 E8 D8 D9 C9 E9 C8 E1 D1 F1 D2 E7 F3 G2 G4 H4 G5 H5 G6 H6 E6 F5 F4 F7 C4 H8 B3 H2 C2 J7 D3 G8 PASS J8 PASS H3 PASS J6 PASS #Aloril, map_opening34 vs GNU Go 3.7.10 E5 D5 E6 G5 E4 F7 E7 F3 C3 F8 E8 E9 D9 F9 D8 D2 E3 F2 E2 C2 E1 F1 F6 G6 F4 G4 F5 H7 C5 H3 B2 G8 D3 G3 C1 H8 D1 H6 D6 H2 D4 J5 PASS H5 PASS J7 PASS #Aloril, map_opening35 vs GNU Go 3.7.10 E5 D4 E4 E3 F3 D3 D5 F2 G3 C7 E7 B5 C5 B4 C4 C3 G2 G7 F8 E2 C6 B6 C8 B8 D7 B7 D9 G1 H1 F1 H2 B9 C9 B2 G8 A3 H7 C2 G6 A4 F7 A2 PASS #Aloril, map_opening36 vs GNU Go 3.7.10 E5 D4 E4 E3 F3 D3 D5 G7 B4 F2 G4 G3 F4 G2 F8 H3 H4 B2 C4 C3 B3 J4 J5 J3 H5 A2 A3 E1 C6 C2 G8 E2 H7 H1 F7 H2 G6 PASS PASS #Aloril, map_opening38 vs GNU Go 3.7.10 E5 D5 E6 E4 F4 E3 C7 F3 G4 G3 B5 G7 H6 E8 H8 D7 D6 C8 E7 H4 H5 H3 C3 H7 J7 G5 G6 D8 B7 G8 F5 C4 B4 D3 C2 D2 C5 D4 D1 E1 C1 J5 J6 J4 F7 F2 F8 F1 G9 H2 B8 G1 C9 PASS E9 PASS D9 PASS PASS #Aloril, map_opening41 vs GNU Go 3.7.10 E5 C4 E3 G7 C6 D3 D4 D2 E2 C3 B5 B2 A3 G4 E7 G2 F2 F8 E8 E9 D9 F9 D8 G3 F7 G8 G6 H6 G5 H5 G1 H1 F1 H2 F4 F3 B4 H9 C5 H8 B3 H4 D1 H7 C2 J3 A2 J4 B1 PASS PASS #Aloril, map_opening42 vs GNU Go 3.7.10 E5 D4 E4 E3 F3 D3 D5 G7 B4 F2 G4 G3 F4 G2 F8 C7 B6 G8 F7 H3 H4 B2 C3 C2 B3 J4 J5 J3 H5 A2 C4 A3 A4 D2 G6 E1 B7 D1 H7 F1 H8 PASS G9 PASS C8 PASS D7 PASS C6 PASS PASS #Aloril, map_opening44 vs GNU Go 3.7.10 E5 D5 E6 G5 E4 F3 E3 D6 E7 C8 G7 F2 C3 E2 B5 B6 C5 C6 D8 B1 D2 D1 C2 C1 H6 H3 H4 G4 H5 G2 B2 J4 J5 J3 F4 H1 G6 F5 F6 G3 A2 E1 A1 H2 B8 PASS C7 PASS C9 PASS B7 PASS D4 PASS D7 PASS A6 PASS PASS #Aloril, map_opening45 vs GNU Go 3.7.10 E5 C3 E3 F6 C5 G7 B4 G3 D7 F2 E2 E8 D8 D9 C9 E9 C8 E1 D1 F1 D2 E7 F3 G2 G4 H4 G5 H5 G6 H6 E6 F5 F4 F7 C4 H8 B3 J7 C2 G8 D3 H3 PASS J8 PASS J6 PASS #Aloril, map_opening47 vs GNU Go 3.7.10 ! E5 D5 E6 G5 E4 F7 E7 D4 D3 C7 C3 F8 E8 B5 B9 C4 B3 B7 C6 G3 F6 G6 F9 G8 G9 H9 E9 H8 F2 G2 F3 F1 E1 G1 E2 F4 F5 G4 D6 H7 C5 H6 B4 H4 B6 H2 A5 J5 C8 J6 D7 PASS B8 PASS A7 PASS PASS #Aloril, map_opening48 vs GNU Go 3.7.10; Minue: D3 (later??) E5 D5 E6 G5 E4 F3 E3 D6 E7 C8 G7 F2 C3 E2 B5 B6 C5 C6 D8 B1 D2 B3 C4 D1 B2 A2 C2 C1 H6 H3 H4 G4 H5 G2 A4 A1 A3 E1 J3 J2 J4 F4 G6 F5 F6 H2 D7 PASS B4 PASS C7 PASS B7 PASS A6 PASS D4 PASS B8 PASS C9 PASS PASS #Aloril, map_opening49 vs GNU Go 3.7.10 E5 D5 E6 G5 E4 F3 E3 D6 E7 C8 G7 F2 C3 E2 B5 B6 C5 C6 D8 B1 D2 B3 C4 D1 B2 C1 H6 C2 H4 D3 D4 B9 B7 H2 G4 B4 A4 A2 H3 A6 A5 J2 G3 G2 F4 A3 J3 D2 D7 PASS C7 PASS B8 PASS C9 PASS A7 PASS A9 PASS G6 PASS H5 PASS F5 PASS PASS #Aloril, map_opening50 vs GNU Go 3.7.10 E5 D4 E4 C6 E3 D3 F7 G3 H4 E2 B7 C7 B6 B8 C5 D5 B4 B3 D6 D8 E7 B5 A5 C3 A8 C4 B5 E8 D7 C8 F8 A3 A7 B9 E9 D9 F9 A4 H2 G2 H3 G4 G5 H1 F4 D2 J2 F3 J1 G1 H5 F1 F6 E1 PASS B2 PASS C1 PASS #Aloril, map_opening51 vs GNU Go 3.7.10 E5 D4 E4 C6 E3 D3 F7 G3 H4 E2 B7 C7 B6 B8 C5 D5 B4 B3 D6 D8 E7 B5 A5 C3 A8 C4 B5 C8 A7 A3 E8 A4 D9 F2 H3 H2 G4 F3 J2 F4 F5 H1 J3 J1 G5 D2 D7 B2 C9 C1 B9 G2 PASS B1 PASS #Aloril, map_opening54 vs GNU Go 3.7.10 E5 G5 F7 D6 F6 #Aloril, play1 vs CrazyStone 0006 E5 G5 F7 F3 C6 D3 H6 H5 B3 G6 G7 H7 H8 J6 C2 C4 B4 #Aloril, play2 vs CrazyStone 0006 *************** *** 134,137 **** E5 G4 E3 E6 F5 #Aloril, play14 vs CrazyStone 0006 E5 F4 E4 E3 D3 F2 G6 D2 C3 C7 D8 D7 E8 C8 B6 F5 F6 E6 D5 D6 C5 B7 F7 #Aloril, play15 vs CrazyStone 0006 - E5 G5 F7 F4 D3 E6 F6 E4 D4 F5 D5 H6 D7 B7 C8 B5 B3 B8 B9 #Aloril, play16 vs CrazyStone 0006 E5 G4 E3 D7 F6 #Aloril, play17 vs CrazyStone 0006 --- 124,144 ---- E5 G4 E3 E6 F5 #Aloril, play14 vs CrazyStone 0006 E5 F4 E4 E3 D3 F2 G6 D2 C3 C7 D8 D7 E8 C8 B6 F5 F6 E6 D5 D6 C5 B7 F7 #Aloril, play15 vs CrazyStone 0006 E5 G4 E3 D7 F6 #Aloril, play17 vs CrazyStone 0006 + E5 C4 E3 E7 D6 G3 G5 D2 E2 D3 G7 D7 C6 C7 B6 B7 A3 F2 E1 H5 H4 G4 H6 H3 J5 B2 B3 F8 E6 H8 G8 G9 A7 A8 A6 B9 F7 H9 J8 H7 J7 E9 J6 F9 J9 B8 F4 E8 B4 PASS C5 PASS D4 PASS C3 PASS F3 PASS G2 PASS H2 PASS J3 PASS C2 PASS D1 PASS F1 PASS B1 PASS A2 PASS #Aloril, slugGoTest http://cgos.boardspace.net/public/SGF/2006/11/01/345240.sgf + E5 C7 E7 G4 C5 G6 E3 D8 E8 B6 B5 B8 G2 H3 H7 H6 G7 H2 F3 #Aloril, MoGo_G3_10k http://cgos.boardspace.net/public/SGF/2006/11/01/345068.sgf + E5 F7 G5 D4 D6 H6 H5 C3 E8 B5 F3 E2 F2 F1 G1 E1 G2 B7 C8 E3 C7 B6 G8 #Aloril, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/01/345095.sgf + E5 F6 E6 C3 F7 D3 F4 D7 E2 C5 E8 D8 E7 D2 E3 E1 F1 D1 G2 E9 F9 D9 D6 C6 D4 C4 D5 #Aloril, GoJin-1.24 http://cgos.boardspace.net/public/SGF/2006/11/01/345201.sgf + E5 E7 G6 C7 E3 G3 H4 C4 D6 D7 C6 D2 E2 D3 B6 B7 A3 G8 H7 H8 C2 G7 H6 F6 F5 J8 A7 A8 A6 B8 E6 F7 J7 #Aloril, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/01/345334.sgf + E5 C7 E7 G4 C5 F6 E6 E3 F5 G5 G6 D8 B6 H6 G7 C3 H7 H5 F4 F3 B4 B3 J6 A4 J5 H3 A5 A3 J4 J3 D4 C4 B5 D3 E4 H4 J7 #Aloril, MoGo_G3 http://cgos.boardspace.net/public/SGF/2006/11/03/347213.sgf + E5 C7 E7 G4 C5 F6 E6 E3 F5 G5 G6 D8 B6 E8 F8 H6 G7 B7 E9 C9 A8 A7 B8 #Aloril, MoGo_G3 http://cgos.boardspace.net/public/SGF/2006/11/03/347213.sgf + E5 C7 E7 G4 C5 F2 G5 H4 H5 D8 B6 #Aloril, MoGo_G3_10k http://cgos.boardspace.net/public/SGF/2006/11/03/347228.sgf + E5 C7 E7 G4 C5 G2 G6 #Aloril, MoGo_G3_10k http://cgos.boardspace.net/public/SGF/2006/11/03/347292.sgf + E5 C7 E7 G4 C5 H5 E3 #Aloril, MoGo_G3_10k http://cgos.boardspace.net/public/SGF/2006/11/03/347646.sgf + E5 D7 C5 F6 F5 G6 H4 C6 G5 C3 B4 B2 E3 D2 E2 C1 A2 A3 B3 B6 B5 A1 D3 #Aloril, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/03/347169.sgf + E5 D4 E4 E3 F3 D5 E6 D6 E7 #Aloril, GoJin-1.23 http://cgos.boardspace.net/public/SGF/2006/11/03/347247.sgf + E5 E3 G4 C5 D6 C6 D7 G7 H6 #Aloril, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/03/347514.sgf + E5 C4 E3 F6 D6 B6 C2 #Aloril, Valkyria_UCT7 http://cgos.boardspace.net/public/SGF/2006/11/03/347522.sgf + E5 C5 D7 G5 E3 F7 C3 D4 E4 C7 E7 F8 C8 G3 F2 D6 E6 G2 G1 H1 F1 H2 E8 E9 D9 F9 F6 G6 F3 F4 F5 G4 B7 H7 C6 G8 D5 H8 C4 H6 B5 H4 D3 J5 PASS J4 PASS #Aloril, ggexp http://cgos.boardspace.net/public/SGF/2006/11/03/347536.sgf + E5 C6 E7 C3 C5 B5 C4 B4 F3 D8 C7 D7 D6 B6 E8 C8 D3 C2 D2 G7 H6 D1 E1 C1 E2 E9 F9 D9 F8 #Aloril, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/03/347732.sgf + E5 E7 G6 F3 D3 #Aloril, NeuroGo-A64_3400 http://cgos.boardspace.net/public/SGF/2006/11/04/347933.sgf + E5 F5 E6 E4 D4 F6 E7 F7 E3 F4 D3 E8 D8 F8 F3 D7 C7 G3 E9 F2 E2 F9 D9 G2 F1 G1 E1 H4 D6 #Aloril, SimpleBot Index: 9x9_white_opening.lst =================================================================== RCS file: /cvsroot/londerings/go/simple_go/9x9_white_opening.lst,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -r1.7 -r1.8 *** 9x9_white_opening.lst 1 Nov 2006 15:24:05 -0000 1.7 --- 9x9_white_opening.lst 5 Nov 2006 18:18:10 -0000 1.8 *************** *** 21,25 **** E5 G5 F7 F6 D7 E6 E7 D6 G7 C6 E4 C4 # Aloril, ggexp: http://cgos.boardspace.net/public/SGF/2006/10/06/316369.sgf G5 D5 D7 E6 E7 F6 F7 G6 G3 F2 H8 H7 H5 H2 H6 G7 G2 G1 H3 H1 F4 E3 C6 C5 G8 J7 B6 B5 A5 A4 A6 B4 D6 E5 J8 E4 C8 F3 B7 J6 B8 J5 F8 F5 D9 H4 D8 J3 PASS G4 PASS PASS #Aloril, gnugo_3.7.4 http://cgos.boardspace.net/public/SGF/2006/10/06/316411.sgf - G5 D5 C3 E3 #Aloril, NeuroGo http://cgos.boardspace.net/public/SGF/2006/10/06/316879.sgf E5 G5 G7 F6 F7 E6 D5 D6 E7 C6 C8 E3 F4 G3 C4 C2 B7 B6 H6 H5 J5 J4 J6 H3 A6 A5 A7 B5 G6 C7 B8 D7 D8 F5 H8 E4 F8 C3 E9 D4 G8 C5 D9 B4 F9 F3 J7 G4 PASS PASS #Aloril, gnugo_3.7.4 http://cgos.boardspace.net/public/SGF/2006/10/06/316892.sgf D5 F5 D6 F7 D3 F3 #Aloril, Lazarus-0.90: http://cgos.boardspace.net/public/SGF/2006/10/06/316904.sgf --- 21,24 ---- *************** *** 28,35 **** F5 D5 E4 D4 E3 E7 #Aloril, Lazarus-0.90: http://cgos.boardspace.net/public/SGF/2006/10/07/317142.sgf E5 G5 G6 C6 H5 D4 G4 E7 E3 D3 E2 D2 F8 E8 F7 E1 F1 D1 G2 F9 G9 E9 G8 D5 E6 D6 E4 D7 H7 B6 H6 A6 F2 PASS H4 PASS F6 PASS H3 PASS F5 PASS PASS #Aloril, gnugo_3.7.4: http://cgos.boardspace.net/public/SGF/2006/10/07/317160.sgf - G6 D5 F3 F5 G5 F6 G7 E3 E2 D3 F7 E7 F4 E8 D2 C2 F8 E4 E9 D9 F9 C8 F2 C1 D1 C3 G3 D6 H4 C7 H3 B6 H5 PASS H8 PASS H7 PASS J6 PASS J7 PASS #Aloril, map_opening1 vs GNU Go 3.7.4 G7 D4 G3 F5 D2 E7 H5 E3 E2 C3 C7 D8 C2 F3 F2 F8 B2 B3 A3 A4 A2 B4 G8 G6 H6 G4 H4 G5 F9 E9 G9 F7 D3 E4 H2 C8 J3 B7 G2 C6 H7 D7 J2 PASS J4 PASS #Aloril, map_opening2 vs GNU Go 3.7.4 E5 G5 C5 F7 G4 D6 D5 H4 C6 F4 D3 F3 D7 E8 D8 E2 D2 D1 C1 E1 B2 D9 C9 E9 B8 E7 E6 F6 E3 F2 F5 G3 E4 G6 C8 H7 C2 PASS C7 PASS B4 PASS B5 PASS A3 PASS B3 PASS #Aloril, map_opening3 vs GNU Go 3.7.4 - G6 D5 F3 F5 G5 F6 G7 E3 E2 D3 D2 C3 F7 E7 E8 D7 D8 C8 C2 F4 G4 B2 B1 A2 C1 D9 F8 C7 E9 C9 G3 B3 A1 E5 F1 PASS F2 PASS H8 PASS H7 PASS H2 PASS H3 PASS H5 PASS G9 PASS #Aloril, map_opening4 vs GNU Go 3.7.4 F6 D4 D3 E4 G4 D6 E7 D7 C3 E3 E2 F2 D1 G3 F5 B4 B3 D8 C4 C5 E8 H4 G8 H6 B5 B6 A4 A6 A5 F1 E1 G7 D2 H8 A3 F8 B2 G9 C1 E6 PASS F7 PASS E9 PASS G5 PASS F4 PASS E5 PASS G6 #Aloril, map_opening5 vs GNU Go 3.7.4 E5 G5 C7 C3 F7 F3 H6 H5 G6 C5 J5 J4 J6 G4 B6 D6 D7 E6 A3 E7 E8 F6 G7 B5 A5 C6 B7 B4 A4 B2 A2 B1 B3 C2 A6 A1 H8 E4 B8 F5 G9 D5 G8 G2 D8 PASS F8 PASS C9 PASS B9 PASS #Aloril, map_opening6 vs GNU Go 3.7.4 --- 27,32 ---- *************** *** 56,65 **** E5 G5 F5 G6 G4 C5 H4 E7 D6 D7 C6 D3 F3 B5 C7 H6 E2 D2 C8 D8 D1 C1 E1 C2 B6 E3 F2 D5 F6 F7 E6 C9 B9 D9 A5 A4 A6 B4 H5 J6 B8 E4 F4 J5 J4 G8 H3 PASS G2 PASS #Aloril, map_opening28 vs GNU Go 3.7.4 F6 D4 F4 D6 E3 E7 F7 D3 E2 E8 F8 D2 E5 F9 D5 C5 G9 E9 H8 E1 F1 D1 G2 E6 E4 C4 G8 C6 G3 PASS H4 PASS G4 PASS F2 PASS F5 PASS G6 PASS H7 PASS #Aloril, map_opening29 vs GNU Go 3.7.4 - F6 D4 E3 G3 D3 E4 C3 G5 C4 D6 G6 E7 B6 C7 B7 F2 E2 F3 B8 C8 C9 D9 B9 D8 C5 D5 F1 G1 E1 C6 B2 H6 B4 G7 A5 F7 C2 F5 A6 E6 A4 PASS #Aloril, map_opening30 vs GNU Go 3.7.4 F5 D5 E6 D6 E7 E3 G3 D7 F2 E2 E1 D1 F1 D2 E8 D8 D9 C9 E9 C8 F3 E4 F4 E5 F7 B3 G6 PASS G7 PASS G5 PASS H4 PASS H5 PASS #Aloril, map_opening31 vs GNU Go 3.7.4 G7 D4 F4 D7 C3 D3 C4 B5 D2 E2 C2 F3 A2 G5 B4 F8 C5 D5 C6 D6 C7 C8 B8 D9 B9 D1 C9 D8 C1 E1 B6 G4 A5 G8 B2 H7 A6 G6 B7 F7 PASS F5 PASS E4 PASS PASS #Aloril, map_opening32 vs GNU Go 3.7.4 G7 D4 F4 D7 D3 E3 E4 D2 C3 C2 E2 F3 G4 F2 C4 D5 B6 C5 B5 B8 H2 B3 E8 D8 E7 E6 D9 C9 E9 F6 G6 F7 G8 F8 G9 F9 G2 F1 G3 F5 G5 G1 H1 E1 E5 B4 H8 C6 H6 B7 J7 A6 J8 A5 PASS PASS #Aloril, map_opening33 vs GNU Go 3.7.4 G7 D4 G4 D6 D8 E7 E8 F5 G5 F3 G2 F2 G3 F7 F8 G6 H6 F6 H7 C7 C3 B2 C8 B8 F1 E1 G1 E2 B9 B7 F4 E4 A8 A7 D7 A9 C9 C6 A8 G8 H8 A9 E6 E5 A8 C2 A9 B3 H4 C4 G9 D3 H5 PASS F9 PASS H9 PASS PASS PASS #Aloril, map_opening34 vs GNU Go 3.7.4 - G7 D4 C3 D3 C4 C5 B5 C6 B6 C7 D2 E2 C2 G5 H5 G6 H6 F7 F8 G8 H4 H7 E1 F2 B7 B8 F1 G1 D1 G2 A8 B9 A7 C8 A9 H3 B3 G4 A4 J4 A3 J6 A5 J5 PASS E8 PASS F9 PASS PASS #Aloril, map_opening35 vs GNU Go 3.7.4 G7 D4 E5 C6 F3 E7 D2 F6 G6 F5 G5 F4 G4 E3 E2 C3 F8 E8 D3 E4 C2 B3 E9 D9 F9 D8 B2 A2 F7 B1 G3 A3 C1 A1 H8 D5 H2 E6 H6 B7 J3 PASS H3 PASS F2 PASS G8 PASS J7 PASS J8 PASS #Aloril, map_opening36 vs GNU Go 3.7.4 E5 G5 F5 G6 G4 C5 H4 E7 D6 D7 C6 D3 F3 B5 C7 H6 E2 D2 C8 D8 D1 C1 E1 C2 B6 E3 F2 D5 F6 F7 E6 C9 B9 D9 A5 A4 A6 B4 H5 J6 A8 E4 F4 J5 J4 G8 B8 PASS #Aloril, map_opening36 vs GNU Go 3.7.4 --- 53,60 ---- *************** *** 83,94 **** G7 D4 F4 D7 C3 D3 C4 B5 D2 E2 C2 F3 G4 C5 E8 D8 F7 G3 H3 H2 H4 E7 F8 F6 G6 E5 D9 C9 E9 C8 J2 G2 F5 E6 E4 E3 H1 G1 J3 J1 H8 H1 G9 B4 H7 B3 G5 B2 PASS C1 PASS D1 PASS PASS #Aloril, map_opening17 vs GNU Go 3.6 E5 G5 C5 F7 F3 C3 B4 E2 D7 F4 H4 E3 H5 G6 H2 G2 G3 F2 E4 H1 H6 H7 B2 B3 A3 C2 H3 E8 J6 J7 J2 J4 D8 D9 C9 E9 B8 E7 D4 D3 F5 G4 F6 G7 E6 B1 A2 G1 C4 J1 A4 J3 A1 C1 C6 J5 C8 PASS C7 PASS B6 PASS A7 PASS A8 PASS #Aloril, map_opening18 vs GNU Go 3.6 - F6 D4 E3 G3 D3 E4 C3 G5 G6 D6 C4 E8 H6 G8 B6 C5 B5 C7 B7 C8 F2 G2 G1 H1 F1 H2 F3 F4 B8 B9 A8 C6 A9 C9 B2 H7 D2 H5 C1 J6 B3 F7 B1 G7 B4 F5 PASS E6 PASS PASS #Aloril, map_opening19 vs GNU Go 3.6 E5 G5 C7 C3 F7 F3 H6 H5 J5 J4 J6 H4 G6 C5 B6 B5 A5 A4 A6 B4 C6 E4 D5 D4 F5 F4 E6 PASS E7 PASS G7 PASS D7 PASS PASS #Aloril, map_opening20 vs GNU Go 3.6 F6 D4 G3 D6 E7 F4 G4 D7 F5 F3 C3 B2 C4 C5 B5 C2 C6 D5 B7 B3 B4 C8 C7 B8 F2 E2 G2 E1 E8 D8 D9 C9 E9 E4 F1 E5 E6 D3 H5 A7 G7 B6 H8 A5 H6 A4 H7 PASS G5 PASS F8 PASS #Aloril, map_opening21 vs GNU Go 3.6 E5 G5 D7 F3 D3 F7 E2 F2 F1 E8 D8 D9 C9 E9 B8 G1 E1 G2 E3 E6 D6 E7 F4 G4 F5 F6 C5 H7 C2 PASS C7 PASS D5 PASS C3 PASS B7 PASS C4 PASS B9 PASS #Aloril, map_opening1 vs GNU Go 3.7.10 E5 G5 D7 F3 D3 F7 E8 F8 F9 E2 D2 D1 C1 E1 B2 G9 E9 G8 E7 E4 D4 E3 F6 G6 F5 F4 C5 H3 C8 PASS B7 PASS B4 PASS C6 PASS C2 PASS B8 PASS C4 PASS B6 PASS D6 PASS #Aloril, map_opening2 vs GNU Go 3.7.10 - G7 D4 C3 D3 C4 C5 B5 C6 B6 C7 D2 E2 C2 G5 H5 G6 H6 F7 G8 F8 J8 H4 H9 B7 E1 F2 F1 G1 D1 H2 F9 E8 E9 D9 G9 D8 J7 A6 A4 J5 J6 J4 A5 A7 B3 G3 A3 PASS B1 PASS B2 PASS #Aloril, map_opening3 vs GNU Go 3.7.10 G7 D4 G3 F5 G5 E7 C7 B6 D2 E3 E2 F3 F2 C3 F8 E8 C2 B2 E9 D9 F9 D8 B1 B3 F6 E6 F7 G4 H4 F4 H3 D3 A2 A3 C1 A1 H6 A2 H5 B7 G2 C8 H7 C6 H8 D7 J2 PASS H2 PASS #Aloril, map_opening4 vs GNU Go 3.7.10 - G6 D5 F3 F5 G5 F6 G7 E3 E2 D3 F4 D2 F7 E7 E8 D7 F2 D8 F8 E4 D1 C1 E1 C2 D9 C9 E9 C8 G3 B3 H4 B7 H3 PASS H5 PASS H8 PASS H7 PASS G9 PASS #Aloril, map_opening5 vs GNU Go 3.7.10 E5 G5 E7 E3 D5 C4 G6 H5 C5 B4 B5 H7 F4 G3 F3 F2 G4 H3 D4 D3 A4 B3 A3 A2 A5 C2 H4 J4 F5 F8 H6 E8 D7 D8 C7 C8 J5 G7 B8 J3 B9 J7 J6 F7 F6 C9 E4 G2 B7 PASS B6 PASS #Aloril, map_opening6 vs GNU Go 3.7.10 G5 D5 F7 D3 C7 G3 B5 H7 F4 G6 H5 F6 E7 F3 B3 C6 B6 C2 G8 H8 G7 H6 C4 D4 E6 E5 H9 F5 D6 B2 A2 C5 C3 B1 J8 J7 G9 A1 A3 D2 J9 H4 D8 J5 B7 G4 E8 E4 B4 PASS C8 PASS B9 PASS B8 PASS #Aloril, map_opening7 vs GNU Go 3.7.10 --- 78,86 ---- *************** *** 97,104 **** F6 D4 C3 D3 C4 C5 B5 C6 B6 E7 F7 G5 H6 H5 G6 E8 H8 G8 B7 C7 C8 F8 C2 D2 D1 E1 C1 E2 D8 D7 B8 D9 C9 E9 B3 F5 A4 J6 A5 H7 A3 G7 A7 E6 PASS J8 PASS H9 PASS PASS #Aloril, map_opening10 vs GNU Go 3.7.10 G7 D4 G4 D6 E3 D3 E2 E8 F8 E7 D2 C2 C1 B2 E9 D9 F9 D8 B1 F5 G5 F6 G6 F4 F3 F7 G8 A2 E4 E5 D1 C3 A1 B7 G2 PASS H3 PASS H2 PASS H4 PASS F2 PASS H7 PASS H9 PASS H8 PASS #Aloril, map_opening11 vs GNU Go 3.7.10 - G6 D5 F3 F5 G5 F6 G7 E3 E2 D3 F4 D2 F2 F7 E4 D4 G8 F8 F9 E9 G9 E8 D1 C1 E1 C2 E5 E6 H4 C7 G3 PASS H3 PASS H5 PASS H8 PASS H2 PASS G1 PASS #Aloril, map_opening12 vs GNU Go 3.7.10 F6 D4 F3 D7 C3 G7 C4 G6 D3 F5 B7 D5 G4 C5 B5 H5 H4 E4 E3 C8 J5 J6 J4 G5 C6 D6 C7 B8 A8 B9 A7 F4 A6 D8 A9 F7 G3 E6 B4 PASS A5 PASS B2 PASS C2 PASS H2 PASS G2 PASS E2 PASS A3 PASS #Aloril, map_opening13 vs GNU Go 3.7.10 E5 G5 F7 F6 D7 E6 E7 D6 G7 C6 G3 F4 E4 F3 F2 E2 B7 C7 C8 B6 H3 H4 G4 G2 E3 F5 C4 B3 H2 F1 H5 H6 J4 G6 H7 J6 J5 B8 B9 A7 C9 J7 J8 H8 G8 J9 G9 E8 E9 A9 A8 H1 J2 A9 D8 A8 H9 J8 J1 G1 F9 D3 F8 D4 PASS D5 PASS C3 PASS B4 PASS C5 PASS PASS #Aloril, map_opening14 vs GNU Go 3.7.10 - G6 D5 F3 F5 G5 F6 G7 E3 E2 D3 F4 D2 F2 F7 E4 D4 G8 F8 F9 E9 G9 E8 D1 C1 E1 C2 E5 E6 D6 D7 H4 C6 G3 PASS H3 PASS H5 PASS H8 PASS H2 PASS G1 PASS #Aloril, map_opening15 vs GNU Go 3.7.10 F5 D5 D6 C6 E6 C7 E3 D3 E2 E8 D2 G7 G6 C3 F7 G8 C2 B2 F8 F9 H6 H7 B1 B3 E7 D8 J7 J8 J6 E4 F4 A2 E5 D4 C1 D7 A1 C5 G5 H9 F3 PASS H4 PASS H3 PASS G3 PASS #Aloril, map_opening16 vs GNU Go 3.7.10 F5 D5 C7 E6 E3 C3 E2 B6 E8 F7 B7 G6 H3 F8 D7 H5 B1 D2 D3 C2 C4 B4 C5 C6 F9 G9 E9 G8 D4 B5 D6 A3 E5 G4 G3 A7 A8 A6 D1 C1 E1 B3 F6 E7 G5 H6 C8 H4 J4 J5 J3 F4 F3 E4 D5 H7 D8 A1 B8 B2 G2 PASS H1 PASS H2 PASS #Aloril, map_opening17 vs GNU Go 3.7.10 --- 89,94 ---- *************** *** 112,124 **** F5 D5 F7 E4 G3 D7 E2 D3 D2 C2 E8 D8 D9 E7 F8 C9 E9 C8 C1 B2 F4 E3 F2 E6 F6 B1 D1 E5 F3 C3 H4 B7 G5 PASS H5 PASS H2 PASS H3 PASS G7 PASS H8 PASS H7 PASS G9 PASS #Aloril, map_opening25 vs GNU Go 3.7.10 G5 D5 F7 D3 C7 G3 B5 H7 F4 G6 H5 F6 E7 F3 B3 C6 B6 C2 G8 H8 G7 H6 C4 D4 E6 E5 H9 F5 D6 B2 A2 C5 C3 B1 J8 J7 A3 J9 G9 J8 A1 D2 D8 G4 B7 H4 E8 J5 B4 E4 C8 PASS B9 PASS B8 PASS #Aloril, map_opening26 vs GNU Go 3.7.10 - G7 D4 C3 D3 C4 C5 B5 C6 B6 C7 D2 E2 C2 G5 H5 G6 H6 F7 G8 F8 J8 H4 H9 B7 E1 F2 F1 G1 D1 H2 F9 E8 E9 D9 G9 D8 J7 A6 A4 J5 A5 A7 J6 J4 B3 G3 A3 PASS B1 PASS B2 PASS #Aloril, map_opening27 vs GNU Go 3.7.10 E5 G5 C5 F7 F3 C3 B4 E2 D7 F4 H4 E3 H5 G6 G3 H1 E4 H6 E8 F8 B2 C2 F2 F1 H2 G1 J3 G4 G2 J5 B3 D4 J1 J2 F9 G9 J1 E1 D5 J2 E9 G8 J1 J6 D3 D2 C1 J2 C4 H3 E7 D1 B1 E6 D6 F6 D3 F5 D4 J4 C8 PASS B7 PASS B8 PASS A6 PASS B6 PASS D8 PASS #Aloril, map_opening28 vs GNU Go 3.7.10 F6 D4 C3 D3 C4 C5 B5 C6 B6 E7 F7 G5 H6 H5 G6 E8 G8 B7 D2 E2 C2 E1 F5 F4 G4 H4 D5 E5 C7 D6 C8 D8 C9 F8 H7 D7 B8 D1 C1 G3 J5 G9 H9 F9 J4 J3 J6 D9 E6 F3 A7 H3 H8 PASS B4 PASS A8 PASS A6 PASS #Aloril, map_opening29 vs GNU Go 3.7.10 E5 G5 C5 F7 F3 C3 B4 E2 D7 F4 H4 E3 H5 G6 G3 H1 E4 H6 E8 F8 B2 C2 F2 F1 H2 G1 C4 G4 B3 G2 F9 G9 E9 G8 D3 D2 C1 D4 D1 E1 B1 H3 D5 E7 D8 E6 D6 F5 D3 J2 D4 J5 B6 J4 B7 PASS C8 PASS B8 PASS A5 PASS A6 PASS #Aloril, map_opening30 vs GNU Go 3.7.10 F6 D4 C3 D3 C4 C5 B5 C6 B6 E7 F7 G5 H6 H5 G6 E8 G8 B7 D2 E2 C2 E1 F5 F4 G4 H4 D5 E5 C7 D6 C8 D8 C9 F8 H7 D7 B8 D1 C1 G3 J5 G9 H9 F9 J4 J3 J6 D9 E6 F3 A7 H3 B4 PASS H8 PASS A8 PASS A6 PASS #Aloril, map_opening31 vs GNU Go 3.7.10 - G7 D4 C3 D3 C4 C5 B5 C6 B6 C7 D2 E2 C2 G5 H5 G6 H6 F7 G8 F8 J8 H4 H9 B7 E1 F2 F1 G1 D1 H2 F9 E8 E9 D9 G9 D8 J7 A6 A4 J5 J6 J4 A5 A7 A3 G3 B2 PASS B4 PASS B1 PASS #Aloril, map_opening32 vs GNU Go 3.7.10 - G7 D4 C3 D3 C4 C5 B5 C6 B6 C7 D2 E2 C2 G5 H5 G6 H6 F7 G8 F8 J8 H4 H9 B7 E1 F2 F1 G1 D1 H2 F9 E8 E9 D9 G9 D8 J7 A6 A4 J5 A5 A7 A3 J4 J6 G3 B2 PASS B4 PASS B1 PASS #Aloril, map_opening33 vs GNU Go 3.7.10 E5 G5 F5 G6 F4 C6 G4 E7 C4 D5 D4 B5 B4 D6 H4 H5 J5 J6 J4 A4 A3 A5 B2 F6 C5 B6 E6 F7 B3 D8 E3 PASS D3 PASS F3 PASS G2 PASS F2 PASS H3 PASS #Aloril, map_opening34 vs GNU Go 3.7.10 G6 D5 C7 G4 E6 C4 H5 H4 E5 E4 B6 B5 J4 J3 J5 H3 F5 D6 D7 C6 B7 G5 H6 F4 A5 A4 A6 B3 E7 PASS F7 PASS G7 PASS H8 PASS G8 PASS C8 PASS E8 PASS D9 PASS C9 PASS #Aloril, map_opening35 vs GNU Go 3.7.10 ! E5 G5 F6 C6 D4 G6 G7 H7 F8 C4 H8 G2 #Aloril, play1 vs CrazyStone 0006 ! E5 G5 E6 C7 E4 C5 G3 F7 E7 F8 E8 D3 E3 D2 E2 C8 H4 H5 D1 C1 E1 C2 J5 J6 F6 G6 F9 G8 G9 H9 E9 H7 J4 G4 H3 D4 C9 B9 D9 B8 F4 D6 D5 D7 D8 F5 #Aloril, play2 vs CrazyStone 0006 --- 102,140 ---- F5 D5 F7 E4 G3 D7 E2 D3 D2 C2 E8 D8 D9 E7 F8 C9 E9 C8 C1 B2 F4 E3 F2 E6 F6 B1 D1 E5 F3 C3 H4 B7 G5 PASS H5 PASS H2 PASS H3 PASS G7 PASS H8 PASS H7 PASS G9 PASS #Aloril, map_opening25 vs GNU Go 3.7.10 G5 D5 F7 D3 C7 G3 B5 H7 F4 G6 H5 F6 E7 F3 B3 C6 B6 C2 G8 H8 G7 H6 C4 D4 E6 E5 H9 F5 D6 B2 A2 C5 C3 B1 J8 J7 A3 J9 G9 J8 A1 D2 D8 G4 B7 H4 E8 J5 B4 E4 C8 PASS B9 PASS B8 PASS #Aloril, map_opening26 vs GNU Go 3.7.10 E5 G5 C5 F7 F3 C3 B4 E2 D7 F4 H4 E3 H5 G6 G3 H1 E4 H6 E8 F8 B2 C2 F2 F1 H2 G1 J3 G4 G2 J5 B3 D4 J1 J2 F9 G9 J1 E1 D5 J2 E9 G8 J1 J6 D3 D2 C1 J2 C4 H3 E7 D1 B1 E6 D6 F6 D3 F5 D4 J4 C8 PASS B7 PASS B8 PASS A6 PASS B6 PASS D8 PASS #Aloril, map_opening28 vs GNU Go 3.7.10 F6 D4 C3 D3 C4 C5 B5 C6 B6 E7 F7 G5 H6 H5 G6 E8 G8 B7 D2 E2 C2 E1 F5 F4 G4 H4 D5 E5 C7 D6 C8 D8 C9 F8 H7 D7 B8 D1 C1 G3 J5 G9 H9 F9 J4 J3 J6 D9 E6 F3 A7 H3 H8 PASS B4 PASS A8 PASS A6 PASS #Aloril, map_opening29 vs GNU Go 3.7.10 E5 G5 C5 F7 F3 C3 B4 E2 D7 F4 H4 E3 H5 G6 G3 H1 E4 H6 E8 F8 B2 C2 F2 F1 H2 G1 C4 G4 B3 G2 F9 G9 E9 G8 D3 D2 C1 D4 D1 E1 B1 H3 D5 E7 D8 E6 D6 F5 D3 J2 D4 J5 B6 J4 B7 PASS C8 PASS B8 PASS A5 PASS A6 PASS #Aloril, map_opening30 vs GNU Go 3.7.10 F6 D4 C3 D3 C4 C5 B5 C6 B6 E7 F7 G5 H6 H5 G6 E8 G8 B7 D2 E2 C2 E1 F5 F4 G4 H4 D5 E5 C7 D6 C8 D8 C9 F8 H7 D7 B8 D1 C1 G3 J5 G9 H9 F9 J4 J3 J6 D9 E6 F3 A7 H3 B4 PASS H8 PASS A8 PASS A6 PASS #Aloril, map_opening31 vs GNU Go 3.7.10 E5 G5 F5 G6 F4 C6 G4 E7 C4 D5 D4 B5 B4 D6 H4 H5 J5 J6 J4 A4 A3 A5 B2 F6 C5 B6 E6 F7 B3 D8 E3 PASS D3 PASS F3 PASS G2 PASS F2 PASS H3 PASS #Aloril, map_opening34 vs GNU Go 3.7.10 G6 D5 C7 G4 E6 C4 H5 H4 E5 E4 B6 B5 J4 J3 J5 H3 F5 D6 D7 C6 B7 G5 H6 F4 A5 A4 A6 B3 E7 PASS F7 PASS G7 PASS H8 PASS G8 PASS C8 PASS E8 PASS D9 PASS C9 PASS #Aloril, map_opening35 vs GNU Go 3.7.10 ! E5 G5 E6 C7 E4 C5 G3 F7 E7 F8 E8 D3 E3 D2 E2 C8 H4 H5 D1 C1 E1 C2 J5 J6 F6 G6 F9 G8 G9 H9 E9 H7 J4 G4 H3 D4 C9 B9 D9 B8 F4 D6 D5 D7 D8 F5 #Aloril, play1 vs CrazyStone 0006 ! E5 G5 F6 C6 D4 F3 D7 C7 #Aloril, play2 vs CrazyStone 0006 ! E5 G5 F6 C6 D4 F3 G7 E7 #Aloril, play3 vs CrazyStone 0006 ! E5 G5 E6 C7 D4 G3 E3 E8 #Aloril, play4 vs CrazyStone 0006 ! E5 G5 F7 F6 D7 E6 E7 D6 G7 C6 E4 C4 G3 E2 D3 C2 E3 D2 F2 H4 C3 B3 G4 H3 H2 J2 G1 H1 G2 H5 C7 B7 B8 B6 B4 B2 H6 A8 B9 G6 H7 J6 J7 J5 C8 A7 A9 B5 E8 A4 D9 D4 PASS D5 PASS F5 PASS F4 PASS F3 PASS F1 PASS PASS #Aloril, ggexp http://cgos.boardspace.net/public/SGF/2006/11/01/345287.sgf ! E5 G5 F5 G6 G4 C5 C7 D6 D7 E6 F6 E7 F7 F8 G7 G8 H6 B5 D3 C2 D2 C3 C1 B1 D1 B2 D4 H8 H7 J7 J6 J8 C4 B4 D5 C6 H5 B7 F4 C8 H3 D8 G3 PASS F2 PASS E2 PASS #Aloril, ggexp http://cgos.boardspace.net/public/SGF/2006/11/02/345541.sgf ! C4 F5 D7 D5 C5 D4 C3 D6 C6 E7 D8 E8 E2 F3 F2 G2 E9 F9 D9 F8 G1 H2 E3 F4 H1 D3 D2 J2 E4 E5 F1 J1 C8 G3 B7 F6 B8 G7 C2 PASS B6 PASS B4 PASS A5 PASS A6 PASS #Aloril vs 3.7.10, slugGoTest http://cgos.boardspace.net/public/SGF/2006/11/02/345526.sgf ! C4 F5 D7 D5 C5 D4 C3 D6 C6 E7 D8 E8 E2 F3 E9 F9 D9 F8 F2 G2 G1 H2 E3 F4 H1 J2 D3 E4 F1 J1 C8 G3 B7 G7 B8 PASS B6 PASS B2 PASS C2 PASS B4 PASS A5 PASS A6 PASS #Aloril vs 3.7.4 and 3.6, slugGoTest http://cgos.boardspace.net/public/SGF/2006/11/02/345526.sgf ! C3 F6 D6 F3 F8 E7 D7 E8 D8 D9 C9 E9 B8 E4 D4 E2 D2 E5 D5 D1 C1 E1 E6 F7 D3 E3 #Aloril, Valkyria_UCT7 http://cgos.boardspace.net/public/SGF/2006/11/02/345385.sgf ! D3 E6 C7 F3 D5 F7 F5 E5 E4 F4 G5 H4 G7 H6 G8 F8 F6 E7 H7 H5 G6 F9 H9 J8 D6 E3 D4 J7 D2 E2 E1 F1 D1 G4 D8 H8 E8 E9 D9 G9 D7 J9 #Aloril, Valkyria_UCT7 http://cgos.boardspace.net/public/SGF/2006/11/02/345412.sgf ! C7 F4 C4 F6 H5 H4 G5 G4 F7 G7 G6 F5 H7 G8 H8 J5 H6 E7 F8 E8 F9 E9 G9 D3 C3 C2 B2 D2 D4 D6 C6 D5 C5 B1 A2 E4 C8 C9 B9 D9 B8 J6 J7 J4 D7 E6 B3 D8 A1 C1 #Aloril, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/02/345438.sgf ! C7 F4 C4 F6 H5 H4 G5 G4 F7 G7 E7 G8 E3 F2 E2 F3 F8 E4 D4 E6 D6 E1 D2 D1 C1 F1 C2 F9 E9 G9 D8 D5 C5 E5 G6 H7 C6 H6 C8 J5 C3 F5 D9 PASS #Aloril, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/02/345438.sgf ! E3 E6 C7 F4 F3 G4 H2 C5 E8 F7 F8 G8 #Aloril, Valkyria_UCT7 http://cgos.boardspace.net/public/SGF/2006/11/02/345455.sgf ! E5 G5 G7 F6 F3 F7 F8 E8 G8 D7 H6 H5 F9 C5 #Aloril, MoGo_G3 http://cgos.boardspace.net/public/SGF/2006/11/03/347431.sgf ! E5 G5 G7 F6 E6 F7 E7 F8 E8 C3 E3 C6 #Aloril, MoGo_G3_10k http://cgos.boardspace.net/public/SGF/2006/11/03/347573.sgf ! E5 G5 G7 F6 D6 F7 F8 E8 H8 D7 G9 C7 #Aloril, MoGo_G3 http://cgos.boardspace.net/public/SGF/2006/11/03/347623.sgf ! E5 G5 G7 F6 D7 F7 F8 E8 G8 E7 H6 D6 C7 C6 B6 B5 B7 C5 D8 E9 G3 H5 #Aloril, MoGo_G3 http://cgos.boardspace.net/public/SGF/2006/11/03/347820.sgf ! D4 F6 F5 G5 G6 G4 F4 F7 H6 G3 F3 G7 G2 H5 H3 H7 #Aloril, Valkyria_UCT7 http://cgos.boardspace.net/public/SGF/2006/11/03/347185.sgf ! E5 G5 F7 F6 D7 E6 E7 D6 G7 C6 E4 C4 G3 E2 E3 D2 F2 F4 H2 F3 B7 B6 C7 F1 H4 H5 G2 G4 J5 J6 J4 H7 J3 G8 F8 H8 A6 A5 A7 B5 G1 E1 G6 H6 G9 H9 F9 D3 A8 D4 C8 D5 J2 F5 B9 PASS #Aloril, ggexp http://cgos.boardspace.net/public/SGF/2006/11/03/347201.sgf ! D3 E6 G6 D5 #Aloril, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/03/347261.sgf ! F5 D5 D7 D3 C6 C5 E6 G4 G5 F4 B6 B5 H5 H4 A5 A4 A6 B4 J4 J3 J5 H3 E5 E4 D6 C3 F7 PASS G8 PASS E8 PASS F8 PASS D8 PASS H7 PASS H8 PASS G6 PASS #Aloril, slugGoTest http://cgos.boardspace.net/public/SGF/2006/11/03/347278.sgf ! G7 D4 C3 D3 C4 C5 B5 C6 B6 G5 E7 D7 D2 E2 C2 F3 E6 D5 B7 D8 E8 H6 H7 J7 J8 J6 H9 E5 G6 H5 D9 C9 E9 C8 F5 F4 F6 D1 C1 E1 B8 B9 A8 C7 D6 A9 H8 H2 A4 PASS B4 PASS B2 PASS A6 PASS #Aloril vs 3.7.10 and 3.7.4 and 3.6, ggexp http://cgos.boardspace.net/public/SGF/2006/11/03/347386.sgf ! E5 G5 F7 F6 E6 G7 E7 C3 G8 H7 H8 F3 C5 B4 #Aloril, Valkyria_UCT7 http://cgos.boardspace.net/public/SGF/2006/11/03/347467.sgf ! E6 E4 G5 C5 F3 D7 D3 D4 #Aloril, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/03/347566.sgf ! C3 F6 E6 F5 E7 F7 #Aloril, Valkyria_UCT7 http://cgos.boardspace.net/public/SGF/2006/11/03/347717.sgf ! E5 G5 C5 F7 G4 D6 H5 D5 D4 C6 C4 F5 F4 H6 H4 B6 B5 J6 E6 E7 A6 A7 A5 B7 F6 G6 E4 J5 J4 G8 #Aloril, Valkyria_UCT7 http://cgos.boardspace.net/public/SGF/2006/11/03/347807.sgf ! G5 D5 F7 D3 C7 G3 B5 H7 G6 D7 D8 E7 E8 H4 H6 H5 J6 C6 B6 B7 C8 C4 A2 B4 A4 B3 B2 A3 B8 F4 G4 H3 A5 E6 F5 E5 J5 F6 G7 J4 A7 C5 H8 C2 A8 B1 F8 A1 J7 F3 J8 PASS #Aloril, ggexp http://cgos.boardspace.net/public/SGF/2006/11/03/347879.sgf ! F7 E4 F5 G3 #Aloril, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/04/347893.sgf ! D6 F4 E3 E4 D3 D4 G2 F6 C5 C4 H4 B4 B2 B6 C8 F8 H6 G3 H2 H3 J3 C3 C2 F3 F2 G7 H7 H8 J8 H9 E7 G6 B5 A5 E8 B8 B9 C7 A8 B7 C9 D7 G5 F5 J7 E6 G4 B3 A3 A4 A2 J9 J5 D5 D1 C6 D2 D8 J2 E9 E2 F7 PASS A7 PASS D9 PASS A9 #Aloril vs 3.7.10, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/03/347708.sgf ! F6 D4 E3 E4 F4 D6 F7 D3 F3 E8 F8 E7 E2 D2 E9 D9 F9 D8 D1 C1 E1 C2 E5 D5 E6 C7 G5 B3 G6 PASS G4 PASS H7 PASS H6 PASS H3 PASS H4 PASS G2 PASS H2 PASS #Aloril vs 3.7.4 and 3.6, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/03/347708.sgf ! F6 D4 E3 E4 F3 F4 C2 D6 G5 G4 B4 H4 H5 F8 G8 G7 H8 F7 H7 G6 H6 J5 B6 C7 B7 G2 C8 D8 F2 G3 B8 D3 D2 C3 B3 F1 E2 E1 C5 D1 C1 G1 A2 D5 C6 D7 D9 E9 C9 C4 B2 J6 B5 J7 A7 J8 PASS F5 PASS E6 PASS G9 PASS H9 PASS PASS #Aloril vs 3.7.10, NeuroGo-1ply http://cgos.boardspace.net/public/SGF/2006/11/03/347708.sgf Index: config.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/config.py,v retrieving revision 1.64 retrieving revision 1.65 diff -C2 -r1.64 -r1.65 *** config.py 1 Nov 2006 15:24:05 -0000 1.64 --- config.py 5 Nov 2006 18:18:10 -0000 1.65 *************** *** 157,160 **** --- 157,162 ---- games_report_frequency = 1000000 games_per_second_estimate = 2000 + final_status_uct_capture_count = 1000 + manage_time = False statistics_limit = 20 Index: game.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/game.py,v retrieving revision 1.44 retrieving revision 1.45 diff -C2 -r1.44 -r1.45 *** game.py 1 Nov 2006 15:24:05 -0000 1.44 --- game.py 5 Nov 2006 18:18:10 -0000 1.45 *************** *** 811,815 **** """ result_list = [] ! if config.use_tactical_reading: self.score_position() for block in self.current_board.iterate_blocks(WHITE+BLACK): --- 811,850 ---- """ result_list = [] ! if config.use_c: ! if config.debug_flag: ! dprintnl("final_status_list:", status) ! self.check_all_unconditional(True, True) ! self.current_board.analyze_unconditional_status() ! for block in self.current_board.iterate_blocks(WHITE+BLACK): ! if block.status==status: ! if config.debug_flag: ! dprintnl(move_as_string(block.get_origin()), "unconditionally decided") ! result_list.append(block.get_origin()... [truncated message content] |
Update of /cvsroot/londerings/go/simple_go In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv11989 Modified Files: 9x9_black_opening.lst 9x9_white_opening.lst config.py game.py game_experimental.py map_opening_vs_gnugo.py Added Files: map_opening.py Log Message: map_opening against arbitary program; some openings against CrazyStone --- NEW FILE: map_opening.py --- # -*- coding: cp1252 -*- #! /usr/bin/env python # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # This program is distributed with GNU Go, a Go program. # # # # Write gn...@gn... or see http://www.gnu.org/software/gnugo/ # # for more information. # # # # Copyright 1999, 2000, 2001, 2002, 2003 and 2004 # # by the Free Software Foundation. # # # # This program is free software; you can redistribute it and/or # # modify it under the terms of the GNU General Public License # # as published by the Free Software Foundation - version 2. # # # # This program is distributed in the hope that it will be # # useful, but WITHOUT ANY WARRANTY; without even the implied # # warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR # # PURPOSE. See the GNU General Public License in file COPYING # # for more details. # # # # You should have received a copy of the GNU General Public # # License along with this program; if not, write to the Free # # Software Foundation, Inc., 59 Temple Place - Suite 330, # # Boston, MA 02111, USA. # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # some comments (like above) and # lots of code copied from twogtp.py from gnugo-3.6-pre4 # additions/changes by Aloril 2004,2005,2006 # minor changes by Blubb Fallo 2004 # Aloril modified to work with simple_go.py # Aloril later modified to map random games against gnugo usage = """ This program plays gnugo against opening book until it finds position not covered in opening book. Usage: start with command: python map_opening_vs_gnugo.py """ import popen2 import sys import string import time import os import traceback import random import utils import simple_go import config from play_gtp import get_next_filename, Logger, log import opening_tree SUPER_KO = "superko violation" UNKNOWN_POSITION = "unknown position" OPPONENT_RESIGNED = "opponent resigned" WE_RESIGNED = "we resigned" GAME_FINISHED = "game finished" def coords_to_sgf(size, board_coords): global debug board_coords = string.lower(board_coords) if board_coords == "pass": return "" letter = board_coords[0] digits = board_coords[1:] if letter > "i": sgffirst = chr(ord(letter) - 1) else: sgffirst = letter sgfsecond = chr(ord("a") + int(size) - int(digits)) return sgffirst + sgfsecond class GTP_connection: # # Class members: # outfile File to write to # infile File to read from def __init__(self, command): try: infile, outfile = popen2.popen2(command) except: print "popen2 failed" sys.exit(1) self.infile = infile self.outfile = outfile log_name = get_next_filename("gtpa%04i.log") self.log_fp = open(log_name, "w") self.log_fp.write(command+"\n") self.log_fp.flush() def exec_cmd(self, cmd): if cmd[-1]!="\n": cmd = cmd + "\n\n" self.outfile.write(cmd) self.outfile.flush() if self.log_fp: self.log_fp.write("Time: %f\n" % time.time()) self.log_fp.write(cmd + "\n\n") self.log_fp.flush() result = "" while 1: line = self.infile.readline() if not line: break line = string.replace(line, "\r", "") if not result and line=="\n": continue if self.log_fp: self.log_fp.write(line) self.log_fp.flush() result = result + line if line=="\n": break return result class Match: def __init__(self, size, command, color): self.engine_command = command self.engine = GTP_connection(command) self.color = color self.boardsize(size) def boardsize(self, size): if size<5 or size>19: return "? unacceptable size\n\n" self.size = size self.engine.exec_cmd("quit") self.engine = GTP_connection(self.engine_command) result = self.engine.exec_cmd("boardsize " + str(size)) if result[0]=="?": return result self.engine.exec_cmd("clear_board") self.opening_engine = simple_go.Game(size) self.opening_engine.save_c_state() self.opening_engine.opening_tree = opening_tree.OpeningTree(self.size, self.color) self.opening_engine.restore_c_state() if not self.opening_engine.opening_tree.opening_tree_dict: msg = "Opening tree not found for " + self.color print msg raise ValueError, msg def play(self, print_flag = False): self.boardsize(self.size) color = simple_go.BLACK self.last_found_opening = "None" while not self.opening_engine.has_2_passes(): if color==simple_go.BLACK: color_str = "black" else: color_str = "white" if color==self.color: move = self.opening_engine.generate_move() if move==simple_go.RESIGN_MOVE: return WE_RESIGNED self.opening_engine.make_move(move) move_str = simple_go.move_as_string(move) result = self.engine.exec_cmd("play %s %s" % (color_str, move_str)) if result[0]=="?": raise ValueError, "engine didn't accept move " + move_str stats = string.replace(self.opening_engine.statistics_str, "%s", "") else: move_str = self.engine.exec_cmd("genmove " + color_str) move_str = string.upper(move_str.split()[1]) move = simple_go.string_as_move(move_str) if not self.opening_engine.make_move(move): return SUPER_KO if move_str=="RESIGN": return OPPONENT_RESIGNED stats = self.opening_engine.score_estimate_as_string() if print_flag: print color_str, move_str color = self.opening_engine.current_board.side log("move made: %s %s: %s\n" % (color_str, move_str, stats)) log(str(self.opening_engine.current_board)) log("-"*60 + "\n") return GAME_FINISHED def map_opening(count, size=9): config.time_per_move_limit = 300 config.games_per_move_limit = 30000 config.resign_flag = True engine_cmd = "./map_opponent" color = simple_go.WHITE m = Match(size, engine_cmd, color) fp = open("map_opening_%ix%i.log" % (size, size), "a") fp.write("-"*60 + "\n") fp.write("engine command: %s\n" % engine_cmd) fp.flush() for i in range(count): t0 = time.time() result = m.play() t1 = time.time() score = m.opening_engine.chinese_score_position() score2 = m.opening_engine.score_estimate_as_string() if m.opening_engine.current_board.side!=color: score = -score msg = "%i %.3fs %s %.1f %s %s\n" % (i, t1-t0, result, score, score2, simple_go.move_list_as_string(m.opening_engine.move_history)) print msg fp.write(msg) fp.flush() log(result + "\n") log("="*60 + "\n") if result in (UNKNOWN_POSITION, WE_RESIGNED): break if result==GAME_FINISHED and score < 0: break fp.close() if __name__=="__main__": #print usage map_opening(10000, 9) Index: 9x9_black_opening.lst =================================================================== RCS file: /cvsroot/londerings/go/simple_go/9x9_black_opening.lst,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -r1.8 -r1.9 *** 9x9_black_opening.lst 31 Oct 2006 08:11:51 -0000 1.8 --- 9x9_black_opening.lst 1 Nov 2006 15:24:05 -0000 1.9 *************** *** 118,119 **** --- 118,137 ---- E5 C3 E3 G6 C5 G3 C7 F7 E8 F8 F2 E7 H2 D6 C6 D5 D4 D8 H4 G4 H5 G5 J8 C8 B8 E9 H7 B9 B7 C4 B4 B3 B5 A6 A4 H3 J3 H6 J6 G2 G1 B2 D2 A8 A7 A3 A9 C9 C2 G8 H1 H9 J2 H8 J4 A8 D3 F4 E4 A9 E6 D7 B1 G7 J7 F3 J5 J9 F5 F6 A2 PASS B6 PASS A5 PASS PASS #Aloril, map_opening53 vs GNU Go 3.7.10 E5 D4 E4 C6 E3 D3 F7 G3 H4 E2 B7 C7 B6 B8 C5 D5 B4 B3 D6 D8 E7 B5 A5 C3 A8 C4 B5 C8 A7 A3 E8 A4 D9 F2 H3 H2 G4 F3 J2 F4 F5 H1 J3 J1 G5 D2 D7 B2 C9 C1 B9 G2 PASS B1 PASS #Aloril, map_opening54 vs GNU Go 3.7.10 + E5 C3 E3 G6 C5 G3 C7 F7 E8 F8 F2 E7 H2 D6 C6 D5 D4 D8 H4 G4 H5 G5 J8 C8 B8 E9 H7 B9 B7 C4 B4 B3 B5 A6 A4 H3 J3 H6 J6 G2 G1 B2 D2 A8 A7 A3 A9 C9 C2 G8 H1 H9 J2 H8 J4 A8 D3 F4 E4 A9 E6 D7 B1 F3 J5 G7 J7 J9 F5 F6 A2 PASS B6 PASS A5 PASS PASS #Aloril, map_opening55 vs GNU Go 3.7.10 + E5 G5 F7 D6 F6 #Aloril, play1 vs CrazyStone 0006 + E5 G5 F7 F3 C6 D3 H6 H5 B3 G6 G7 H7 H8 J6 C2 C4 B4 #Aloril, play2 vs CrazyStone 0006 + E5 F4 E4 E3 D3 D4 F5 D2 C3 F2 C5 G4 G7 C7 B6 #Aloril, play3 vs CrazyStone 0006 + E5 F4 E4 E3 D3 F2 G6 #Aloril, play4 vs CrazyStone 0006 + E5 E4 F5 D5 D6 C5 G3 C6 D7 C7 E2 D8 E8 E7 E6 E9 F8 #Aloril, play5 vs CrazyStone 0006 + E5 F4 E4 E3 D3 F2 G6 F5 F6 D2 C3 C7 B6 #Aloril, play6 vs CrazyStone 0006 + E5 G4 E3 F5 E6 #Aloril, play7 vs CrazyStone 0006 + E5 F4 E4 E3 D3 E8 F3 G3 E2 #Aloril, play8 vs CrazyStone 0006 + E5 G4 E3 E7 F6 #Aloril, play9 vs CrazyStone 0006 + E5 G4 E3 F6 E6 E7 F5 G5 F7 G6 D7 E8 D8 F8 F3 C3 B4 #Aloril, play10 vs CrazyStone 0006 + E5 G4 E3 F5 E6 F6 E7 #Aloril, play11 vs CrazyStone 0006 + E5 G4 E3 F6 E6 E7 F5 G5 F7 G6 D7 E8 D8 F8 F3 G7 C5 #Aloril, play12 vs CrazyStone 0006 + E5 G4 E3 E7 F6 F7 G6 #Aloril, play13 vs CrazyStone 0006 + E5 G4 E3 E6 F5 #Aloril, play14 vs CrazyStone 0006 + E5 F4 E4 E3 D3 F2 G6 D2 C3 C7 D8 D7 E8 C8 B6 F5 F6 E6 D5 D6 C5 B7 F7 #Aloril, play15 vs CrazyStone 0006 + E5 G5 F7 F4 D3 E6 F6 E4 D4 F5 D5 H6 D7 B7 C8 B5 B3 B8 B9 #Aloril, play16 vs CrazyStone 0006 + E5 G4 E3 D7 F6 #Aloril, play17 vs CrazyStone 0006 Index: 9x9_white_opening.lst =================================================================== RCS file: /cvsroot/londerings/go/simple_go/9x9_white_opening.lst,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -r1.6 -r1.7 *** 9x9_white_opening.lst 27 Oct 2006 02:17:17 -0000 1.6 --- 9x9_white_opening.lst 1 Nov 2006 15:24:05 -0000 1.7 *************** *** 121,122 **** --- 121,124 ---- E5 G5 F5 G6 F4 C6 G4 E7 C4 D5 D4 B5 B4 D6 H4 H5 J5 J6 J4 A4 A3 A5 B2 F6 C5 B6 E6 F7 B3 D8 E3 PASS D3 PASS F3 PASS G2 PASS F2 PASS H3 PASS #Aloril, map_opening34 vs GNU Go 3.7.10 G6 D5 C7 G4 E6 C4 H5 H4 E5 E4 B6 B5 J4 J3 J5 H3 F5 D6 D7 C6 B7 G5 H6 F4 A5 A4 A6 B3 E7 PASS F7 PASS G7 PASS H8 PASS G8 PASS C8 PASS E8 PASS D9 PASS C9 PASS #Aloril, map_opening35 vs GNU Go 3.7.10 + E5 G5 F6 C6 D4 G6 G7 H7 F8 C4 H8 G2 #Aloril, play1 vs CrazyStone 0006 + E5 G5 E6 C7 E4 C5 G3 F7 E7 F8 E8 D3 E3 D2 E2 C8 H4 H5 D1 C1 E1 C2 J5 J6 F6 G6 F9 G8 G9 H9 E9 H7 J4 G4 H3 D4 C9 B9 D9 B8 F4 D6 D5 D7 D8 F5 #Aloril, play2 vs CrazyStone 0006 Index: config.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/config.py,v retrieving revision 1.63 retrieving revision 1.64 diff -C2 -r1.63 -r1.64 *** config.py 7 Oct 2006 08:32:24 -0000 1.63 --- config.py 1 Nov 2006 15:24:05 -0000 1.64 *************** *** 4,7 **** --- 4,8 ---- komi = 7.5 + resign_flag = False repeat_check = True use_threads_scoring_system = False Index: game.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/game.py,v retrieving revision 1.43 retrieving revision 1.44 diff -C2 -r1.43 -r1.44 *** game.py 9 Oct 2006 04:03:23 -0000 1.43 --- game.py 1 Nov 2006 15:24:05 -0000 1.44 *************** *** 72,75 **** --- 72,77 ---- then check for repetition (situational super-ko) """ + if move==RESIGN_MOVE: + return True if move==PASS_MOVE: return True Index: game_experimental.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/game_experimental.py,v retrieving revision 1.51 retrieving revision 1.52 diff -C2 -r1.51 -r1.52 *** game_experimental.py 9 Oct 2006 04:03:23 -0000 1.51 --- game_experimental.py 1 Nov 2006 15:24:05 -0000 1.52 *************** *** 913,923 **** win, lost = move_results[0][2] win_probability = win / (win + lost) ! final_score = self.score_estimate(100) ! if self.current_board.side==BLACK: ! final_score = -final_score ! if final_score>=0: ! score_str = "W+%.1f" % final_score ! else: ! score_str = "B+%.1f" % -final_score self.statistics_str = "%s %%swin %%s%s%%s prob. %.3f%%s" % \ (score_str, move_as_string(move_results[0][3]), win_probability) --- 913,917 ---- win, lost = move_results[0][2] win_probability = win / (win + lost) ! score_str = self.score_estimate_as_string() self.statistics_str = "%s %%swin %%s%s%%s prob. %.3f%%s" % \ (score_str, move_as_string(move_results[0][3]), win_probability) *************** *** 1136,1140 **** if move_results: score1, score2, result, move = move_results[0] ! if move!=PASS_MOVE and score2 < 0.01 and c_board.uct_game == c_board.random_uct_game: move = RESIGN_MOVE fp = open(saved_moved_file, "w") --- 1130,1135 ---- if move_results: score1, score2, result, move = move_results[0] ! if move!=PASS_MOVE and ((score1 < 0.01 and c_board.uct_game == c_board.random_uct_game) or \ ! (score1 < 0.05 and config.resign_flag)): move = RESIGN_MOVE fp = open(saved_moved_file, "w") *************** *** 1154,1157 **** --- 1149,1160 ---- return score + def chinese_score_position(self): + score = self.current_board.chinese_score_position() + if self.current_board.side==BLACK: + score = score - self.komi + else: + score = score + self.komi + return score + def score_estimate(self, count=100): score_sum = 0.0 *************** *** 1160,1163 **** --- 1163,1176 ---- return score_sum / count + def score_estimate_as_string(self, count=100): + final_score = self.score_estimate(count) + if self.current_board.side==BLACK: + final_score = -final_score + if final_score>=0: + score_str = "W+%.1f" % final_score + else: + score_str = "B+%.1f" % -final_score + return score_str + def evaluate_weakbot_resign(self): if self.check_all_unconditional(True, True): Index: map_opening_vs_gnugo.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/map_opening_vs_gnugo.py,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -r1.5 -r1.6 *** map_opening_vs_gnugo.py 31 Oct 2006 08:11:51 -0000 1.5 --- map_opening_vs_gnugo.py 1 Nov 2006 15:24:05 -0000 1.6 *************** *** 1,153 **** ! # -*- coding: cp1252 -*- ! #! /usr/bin/env python - # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # - # This program is distributed with GNU Go, a Go program. # - # # - # Write gn...@gn... or see http://www.gnu.org/software/gnugo/ # - # for more information. # - # # - # Copyright 1999, 2000, 2001, 2002, 2003 and 2004 # - # by the Free Software Foundation. # - # # - # This program is free software; you can redistribute it and/or # - # modify it under the terms of the GNU General Public License # - # as published by the Free Software Foundation - version 2. # - # # - # This program is distributed in the hope that it will be # - # useful, but WITHOUT ANY WARRANTY; without even the implied # - # warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR # - # PURPOSE. See the GNU General Public License in file COPYING # - # for more details. # - # # - # You should have received a copy of the GNU General Public # - # License along with this program; if not, write to the Free # - # Software Foundation, Inc., 59 Temple Place - Suite 330, # - # Boston, MA 02111, USA. # - # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # - - # some comments (like above) and - # lots of code copied from twogtp.py from gnugo-3.6-pre4 - # additions/changes by Aloril 2004,2005,2006 - - # minor changes by Blubb Fallo 2004 - - # Aloril modified to work with simple_go.py - - # Aloril later modified to map random games against gnugo - - usage = """ - - This program plays gnugo against opening book - until it finds position not covered in opening book. - - Usage: - start with command: - python map_opening_vs_gnugo.py - - """ - - import popen2 - import sys - import string - import time - import os - import traceback - import random - import utils - import simple_go - import config - from play_gtp import get_next_filename, Logger, log - import opening_tree - - SUPER_KO = "superko violation" - UNKNOWN_POSITION = "unknown position" - GAME_FINISHED = "game finished" - - def coords_to_sgf(size, board_coords): - global debug - - board_coords = string.lower(board_coords) - if board_coords == "pass": - return "" - letter = board_coords[0] - digits = board_coords[1:] - if letter > "i": - sgffirst = chr(ord(letter) - 1) - else: - sgffirst = letter - sgfsecond = chr(ord("a") + int(size) - int(digits)) - return sgffirst + sgfsecond - - - class GTP_connection: - - # - # Class members: - # outfile File to write to - # infile File to read from - - def __init__(self, command): - try: - infile, outfile = popen2.popen2(command) - except: - print "popen2 failed" - sys.exit(1) - self.infile = infile - self.outfile = outfile - log_name = get_next_filename("gtpa%04i.log") - self.log_fp = open(log_name, "w") - self.log_fp.write(command+"\n") - self.log_fp.flush() - - def exec_cmd(self, cmd): - if cmd[-1]!="\n": - cmd = cmd + "\n\n" - self.outfile.write(cmd) - self.outfile.flush() - if self.log_fp: - self.log_fp.write("Time: %f\n" % time.time()) - self.log_fp.write(cmd + "\n\n") - self.log_fp.flush() - result = "" - while 1: - line = self.infile.readline() - if not line: break - if not result and line=="\n": continue - if self.log_fp: - self.log_fp.write(line) - self.log_fp.flush() - result = result + line - if line=="\n": break - - return result - - - class Match: - def __init__(self, size, command, color): - self.engine_command = command - self.engine = GTP_connection(command) - self.color = color - self.boardsize(size) - - def boardsize(self, size): - if size<5 or size>19: - return "? unacceptable size\n\n" - self.size = size - self.engine.exec_cmd("quit") - self.engine = GTP_connection(self.engine_command) - result = self.engine.exec_cmd("boardsize " + str(size)) - if result[0]=="?": - return result - self.engine.exec_cmd("clear_board") - self.opening_engine = simple_go.Game(size) - self.opening_engine.save_c_state() - self.opening_engine.opening_tree = opening_tree.OpeningTree(self.size, self.color) - self.opening_engine.restore_c_state() - if not self.opening_engine.opening_tree.opening_tree_dict: - msg = "Opening tree not found for " + self.color - print msg - raise ValueError, msg def play(self, print_flag = False): self.boardsize(self.size) --- 1,6 ---- ! from map_opening import * + class MatchGNUGo(Match): def play(self, print_flag = False): self.boardsize(self.size) |
From: Aloril <al...@us...> - 2006-10-31 08:12:04
|
Update of /cvsroot/londerings/go/simple_go In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv8130 Modified Files: 9x9_black_opening.lst map_opening_vs_gnugo.py opening_tree.py Added Files: opening2sgf.py Log Message: black opening againt GNU Go now maybe complete; script to convert opening tree to sgf file --- NEW FILE: opening2sgf.py --- import string import simple_go, opening_tree def create_tree(size, color, g, tree): if g.has_2_passes(): return "" #if len(g.move_history) <= 5: print simple_go.move_list_as_string(g.move_history) if g.current_board.side==simple_go.WHITE: sgfcolor = ";W" else: sgfcolor = ";B" if color==g.current_board.side: result = tree.get_move(g) if not result: return "" move, no, line, name = result sgf = simple_go.move_as_sgf(move, g.size) s = "%s[%s]C[lineno %i\n%s\n%s]\n" % (sgfcolor, sgf, no, line, name) if not g.make_move(move): raise ValueError, "illegal move: %s" % (simple_go.move_as_string(move)) s += create_tree(size, color, g, tree) g.undo_move() return s base_history = tuple(g.move_history[:]) seen_moves = {} for move in g.list_moves(): if not g.make_move(move): raise ValueError, "illegal move: %s" % (simple_go.move_as_string(move)) result = tree.get_move(g) if result: move2, no, line, name = result if not g.make_move(move2): raise ValueError, "illegal move: %s" % (simple_go.move_as_string(move2)) best_move_list = None for ref in simple_go.all_ref_coords: ref_move_lst = tuple(g.reflect_move_history(ref)) if base_history!=ref_move_lst[:len(base_history)]: continue if not best_move_list or ref_move_lst < best_move_list: best_move_list = ref_move_lst seen_moves[best_move_list[-2]] = True g.undo_move() g.undo_move() s_lst = [] no = 0 for move in seen_moves: sgf = simple_go.move_as_sgf(move, g.size) letter_no = ord('A') + no if letter_no > 200: letter = 'z' else: letter = chr(letter_no) if letter > 'Z': letter = chr(ord('a') + no - 26) if letter > 'z': letter = 'z' if sgf: s_lst.append("LB[%s:%s]" % (sgf, letter)) else: s_lst.append("C[PASS]") no += 1 if len(seen_moves) > 1: prefix = "(" postfix = ")" else: prefix = "" postfix = "" for move in seen_moves: if not g.make_move(move): raise ValueError, "illegal move: %s" % (simple_go.move_as_string(move)) sgf = simple_go.move_as_sgf(move, g.size) s_lst.append("%s%s[%s]\n" % (prefix, sgfcolor, sgf)) s_lst.append(create_tree(size, color, g, tree)) s_lst.append(postfix) g.undo_move() return string.join(s_lst, "") def create_sgf(size, color): tree = opening_tree.OpeningTree(size, color) if tree.opening_tree_dict: print "Using opening file:", tree.file_name if tree.error_msg: print tree.error_msg else: if color==simple_go.WHITE: color_s = "white" else: color_s = "black" sgf_filename = "%ix%i_%s_opening.sgf" % (size, size, color_s) print "Creating", sgf_filename g = simple_go.Game(size) s = "(;GM[1]SZ[%i]RU[Chinese]" % g.size s += create_tree(size, color, g, tree) s += ")" fp = open(sgf_filename, "w") fp.write(s) fp.close() if __name__=="__main__": for size in (9, 13): for color in (simple_go.BLACK, simple_go.WHITE): create_sgf(size, color) Index: 9x9_black_opening.lst =================================================================== RCS file: /cvsroot/londerings/go/simple_go/9x9_black_opening.lst,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -r1.7 -r1.8 *** 9x9_black_opening.lst 28 Oct 2006 06:47:01 -0000 1.7 --- 9x9_black_opening.lst 31 Oct 2006 08:11:51 -0000 1.8 *************** *** 51,62 **** E5 D4 E4 D3 D5 F6 E3 F8 B4 G3 G5 H5 H4 H6 G4 C7 E7 F7 D7 D8 E8 E9 C8 D9 C9 F9 B7 J4 G6 H7 G7 G8 J3 J5 F5 H8 H3 E6 D6 H9 C6 PASS C3 PASS D2 PASS C4 PASS G2 PASS F3 PASS PASS #Aloril, map_opening27 vs GNU Go 3.7.4 E5 D4 E4 D3 D5 G7 E3 E2 F2 D2 G3 D7 B4 B3 C4 C3 B6 B1 C8 D8 H6 F1 G1 E1 A3 A2 A4 B2 H7 G8 H8 PASS C7 PASS D6 PASS G6 PASS F7 PASS F8 PASS G9 PASS E7 PASS E8 PASS D9 PASS PASS #Aloril, map_opening28 vs GNU Go 3.7.4 ! E5 C3 E3 E7 C5 B4 B5 D2 E2 B2 G6 C7 B7 G8 F7 F8 H7 B8 C6 D7 A8 H8 C8 D8 B9 J8 G7 E1 F1 D1 F2 J7 J6 E6 F5 F6 H5 A5 A6 A4 C4 A2 D9 E9 C9 D3 D4 D6 D5 E8 PASS B3 PASS G9 PASS #Aloril, map_opening29 vs GNU Go 3.7.4 ! E5 D5 E6 E4 F4 F3 D4 C4 E3 D6 C3 B4 D7 C7 E8 C8 B3 B6 A4 B5 D8 D9 E9 C9 A5 A6 A3 B7 G3 A8 F2 B8 G7 C6 PASS #Aloril, map_opening30 vs GNU Go 3.7.4 ! E5 C5 D7 D3 G6 G3 D4 C4 E3 D2 E2 H5 H1 H6 G7 B7 D1 C2 C1 B1 E1 B2 C8 B8 D5 C7 D8 B9 C6 B6 D6 C9 D9 A3 H7 B3 G5 B5 G4 B4 H4 PASS H3 PASS G2 PASS F3 PASS J6 PASS J5 PASS PASS #Aloril, map_opening31 vs GNU Go 3.7.4 ! E5 D4 E4 D3 D5 F6 E3 F8 B4 C7 H5 H7 B6 F5 G4 B7 C6 A6 D7 D8 E7 E8 A5 A7 F7 G6 G7 G8 H6 J7 J6 H8 C3 C9 G5 D9 D2 F9 C4 B8 F4 B9 E6 PASS PASS #Aloril, map_opening32 vs GNU Go 3.7.4 ! E5 C3 E3 G3 G5 F4 E4 H4 F2 C6 H5 E7 F7 F8 G7 G8 D7 E8 D6 H7 H6 C7 D8 H8 E6 J7 B8 B7 C4 B4 D3 C2 C5 B5 C8 A8 D2 D1 E1 C1 E9 J9 F6 F9 D9 J6 J5 B9 C9 A7 A9 D5 D4 B9 B3 B2 A9 A3 B9 B6 G2 A4 J4 A2 H3 H9 G4 PASS F3 PASS F5 PASS PASS #Aloril, map_opening33 vs GNU Go 3.7.4 ! E5 C4 E3 G6 C6 D2 E2 B4 F7 G7 F8 G8 H5 E1 F1 D1 F2 B2 D3 C3 B5 C5 B6 A5 A6 A4 D5 D4 E4 A2 H6 C2 H7 PASS H8 PASS G5 PASS F6 PASS G9 PASS PASS #Aloril, map_opening34 vs GNU Go 3.7.4 ! E5 D4 E4 D3 D5 F6 E3 F8 B4 C7 H5 H7 B6 F5 G4 B7 C6 H6 D7 D8 E7 E8 F7 G5 H4 A6 A5 A7 G7 G8 G6 J6 J5 H8 C3 C9 D2 D9 C4 F9 F4 B8 E6 B9 PASS #Aloril, map_opening35 vs GNU Go 3.7.4 ! E5 D4 E4 D3 D5 G7 E3 E2 F2 D2 G3 B4 E7 F8 H6 H8 E8 B6 C5 B8 B5 A5 C4 B3 C3 C2 E1 B2 C7 B7 C8 B9 C9 D1 F1 C6 D6 A8 H7 A3 G6 B1 F7 A4 G8 PASS F9 PASS J8 PASS H9 PASS PASS #Aloril, map_opening36 vs GNU Go 3.7.4 ! E5 C5 D7 E4 F5 G3 D4 B7 C4 C8 F2 E3 E2 D3 F3 G4 F4 G2 H5 B4 C3 E8 D8 G8 D9 H4 G5 B3 C2 B2 C6 B6 C7 B1 D5 B5 B8 A8 C9 C1 D1 A9 B9 A7 H7 A5 H8 PASS G7 PASS H2 PASS G1 PASS J4 PASS H3 PASS F8 PASS G9 PASS E7 PASS E9 PASS PASS #Aloril, map_opening37 vs GNU Go 3.7.4 ! E5 D4 E4 D3 D5 E3 G3 C7 C5 F7 B3 F3 G4 G6 B6 H5 G5 B7 F6 G7 E7 E8 D7 D8 H4 C6 B5 A6 A5 A7 H6 H7 J5 J7 J6 D6 E6 C9 C3 C8 C4 F8 D2 H8 F2 G9 E2 F9 F4 PASS PASS #Aloril, map_opening38 vs GNU Go 3.7.4 --- 51,119 ---- E5 D4 E4 D3 D5 F6 E3 F8 B4 G3 G5 H5 H4 H6 G4 C7 E7 F7 D7 D8 E8 E9 C8 D9 C9 F9 B7 J4 G6 H7 G7 G8 J3 J5 F5 H8 H3 E6 D6 H9 C6 PASS C3 PASS D2 PASS C4 PASS G2 PASS F3 PASS PASS #Aloril, map_opening27 vs GNU Go 3.7.4 E5 D4 E4 D3 D5 G7 E3 E2 F2 D2 G3 D7 B4 B3 C4 C3 B6 B1 C8 D8 H6 F1 G1 E1 A3 A2 A4 B2 H7 G8 H8 PASS C7 PASS D6 PASS G6 PASS F7 PASS F8 PASS G9 PASS E7 PASS E8 PASS D9 PASS PASS #Aloril, map_opening28 vs GNU Go 3.7.4 ! E5 C3 E3 E7 C5 B4 B5 D2 E2 B2 G6 C7 B7 G8 F7 F8 H7 B8 C6 D7 A8 H8 C8 D8 B9 J8 G7 E1 F1 D1 F2 J7 J6 E6 F5 F6 H5 A5 A6 A4 C4 A2 D9 E9 C9 D3 D4 D6 D5 E8 PASS B3 PASS G9 PASS #Aloril, map_opening1 vs GNU Go 3.6 ! E5 D5 E6 E4 F4 F3 D4 C4 E3 D6 C3 B4 D7 C7 E8 C8 B3 B6 A4 B5 D8 D9 E9 C9 A5 A6 A3 B7 G3 A8 F2 B8 G7 C6 PASS #Aloril, map_opening2 vs GNU Go 3.6 ! E5 C5 D7 D3 G6 G3 D4 C4 E3 D2 E2 H5 H1 H6 G7 B7 D1 C2 C1 B1 E1 B2 C8 B8 D5 C7 D8 B9 C6 B6 D6 C9 D9 A3 H7 B3 G5 B5 G4 B4 H4 PASS H3 PASS G2 PASS F3 PASS J6 PASS J5 PASS PASS #Aloril, map_opening3 vs GNU Go 3.6 ! E5 D4 E4 D3 D5 F6 E3 F8 B4 C7 H5 H7 B6 F5 G4 B7 C6 A6 D7 D8 E7 E8 A5 A7 F7 G6 G7 G8 H6 J7 J6 H8 C3 C9 G5 D9 D2 F9 C4 B8 F4 B9 E6 PASS PASS #Aloril, map_opening4 vs GNU Go 3.6 ! E5 C3 E3 G3 G5 F4 E4 H4 F2 C6 H5 E7 F7 F8 G7 G8 D7 E8 D6 H7 H6 C7 D8 H8 E6 J7 B8 B7 C4 B4 D3 C2 C5 B5 C8 A8 D2 D1 E1 C1 E9 J9 F6 F9 D9 J6 J5 B9 C9 A7 A9 D5 D4 B9 B3 B2 A9 A3 B9 B6 G2 A4 J4 A2 H3 H9 G4 PASS F3 PASS F5 PASS PASS #Aloril, map_opening5 vs GNU Go 3.6 ! E5 C4 E3 G6 C6 D2 E2 B4 F7 G7 F8 G8 H5 E1 F1 D1 F2 B2 D3 C3 B5 C5 B6 A5 A6 A4 D5 D4 E4 A2 H6 C2 H7 PASS H8 PASS G5 PASS F6 PASS G9 PASS PASS #Aloril, map_opening6 vs GNU Go 3.6 ! E5 D4 E4 D3 D5 F6 E3 F8 B4 C7 H5 H7 B6 F5 G4 B7 C6 H6 D7 D8 E7 E8 F7 G5 H4 A6 A5 A7 G7 G8 G6 J6 J5 H8 C3 C9 D2 D9 C4 F9 F4 B8 E6 B9 PASS #Aloril, map_opening7 vs GNU Go 3.6 ! E5 D4 E4 D3 D5 G7 E3 E2 F2 D2 G3 B4 E7 F8 H6 H8 E8 B6 C5 B8 B5 A5 C4 B3 C3 C2 E1 B2 C7 B7 C8 B9 C9 D1 F1 C6 D6 A8 H7 A3 G6 B1 F7 A4 G8 PASS F9 PASS J8 PASS H9 PASS PASS #Aloril, map_opening8 vs GNU Go 3.6 ! E5 C5 D7 E4 F5 G3 D4 B7 C4 C8 F2 E3 E2 D3 F3 G4 F4 G2 H5 B4 C3 E8 D8 G8 D9 H4 G5 B3 C2 B2 C6 B6 C7 B1 D5 B5 B8 A8 C9 C1 D1 A9 B9 A7 H7 A5 H8 PASS G7 PASS H2 PASS G1 PASS J4 PASS H3 PASS F8 PASS G9 PASS E7 PASS E9 PASS PASS #Aloril, map_opening9 vs GNU Go 3.6 ! E5 D4 E4 D3 D5 E3 G3 C7 C5 F7 B3 F3 G4 G6 B6 H5 G5 B7 F6 G7 E7 E8 D7 D8 H4 C6 B5 A6 A5 A7 H6 H7 J5 J7 J6 D6 E6 C9 C3 C8 C4 F8 D2 H8 F2 G9 E2 F9 F4 PASS PASS #Aloril, map_opening10 vs GNU Go 3.6 ! E5 D4 E4 D3 D5 E3 G3 C7 C5 F7 B3 F3 G4 G6 B6 H5 G5 B7 F6 H6 E7 E8 D7 D8 H4 G8 A7 A8 A6 C6 B5 B8 J5 J6 J4 D6 E6 F9 C3 G7 C4 G9 F2 C8 D2 E9 E2 PASS F4 PASS PASS #Aloril, map_opening11 vs GNU Go 3.6 ! E5 D4 E4 F6 E6 D3 E7 F7 E3 C6 H7 H6 G7 G6 F8 G3 F2 H2 H5 C8 D2 C2 D5 C5 D8 C7 C1 B2 B1 B4 C9 B9 D9 B8 D7 A2 D6 A1 D1 B6 G5 A7 F5 B5 J6 A8 G2 B3 G4 C4 H3 PASS H1 PASS J2 PASS F3 PASS PASS #Aloril, map_opening12 vs GNU Go 3.6 ! E5 D4 E4 D3 D5 E3 G3 C7 C5 F7 B3 F3 G4 G6 B6 H5 G5 B7 F6 H6 E7 E8 D7 D8 H4 G8 A7 A8 A6 C6 B5 B8 J5 J6 J4 D6 E6 F9 C3 G9 C4 G7 D2 C8 F2 E9 E2 PASS F4 PASS PASS #Aloril, map_opening13 vs GNU Go 3.6 ! E5 C3 E3 F6 C5 F8 G4 B4 B5 C7 H6 H7 G6 G7 B7 C8 B8 J6 H5 B9 J5 J7 D6 F5 F4 D7 E6 E7 G5 F7 A8 C6 B6 C9 D2 A9 C4 H8 B3 G9 A4 F9 C2 PASS D3 PASS PASS #Aloril, map_opening1 vs GNU Go 3.7.10 ! E5 C5 D7 G5 E3 F7 C3 C7 E7 F8 B6 B7 C6 G3 E8 F2 E2 E1 F3 G2 F6 G6 D1 F5 E6 F1 D2 E9 D9 F9 F4 G4 B5 H7 C4 H8 D5 H5 C8 J6 B8 G7 A7 J5 PASS H3 PASS J2 PASS H2 PASS #Aloril, map_opening2 vs GNU Go 3.7.10 ! E5 C4 E3 C7 C5 B5 C6 B6 F7 G3 H2 H3 G2 D3 D2 C2 D4 C3 E2 E8 F8 D7 E7 D6 D5 D8 C1 B1 D1 F9 G9 E9 G8 B2 E6 B8 G4 C9 H4 B7 F3 B4 J3 PASS PASS #Aloril, map_opening3 vs GNU Go 3.7.10 ! E5 C4 E3 D7 F7 G3 H2 H3 G2 D5 E6 D6 C2 E8 F8 F9 G9 E9 G8 B3 E7 D8 B2 E4 F4 D4 D3 F3 F2 H4 G5 A2 C3 B4 B1 A3 A1 C7 H5 B8 J4 B6 J3 C9 G4 B7 PASS #Aloril, map_opening4 vs GNU Go 3.7.10 ! E5 C5 D7 G5 E3 F7 C3 C7 E7 F8 B6 C6 D8 C8 B5 B7 C4 F6 E6 G3 F2 G2 F4 G4 G1 H1 F1 H2 F3 F5 E9 F9 E8 H6 C9 G7 D6 H7 D5 H4 B8 H8 A7 J5 PASS J6 PASS #Aloril, map_opening5 vs GNU Go 3.7.10 ! E5 C5 D7 D3 G6 G3 D4 C4 E3 D2 E2 H5 H1 B7 C8 B8 D1 C2 C1 B1 E1 B2 C6 H3 H6 B6 C7 B9 D5 C9 D9 B3 G5 A5 H4 B5 J5 B4 H2 PASS G4 PASS G2 PASS F3 PASS J3 PASS PASS #Aloril, map_opening6 vs GNU Go 3.7.10 ! E5 C4 E3 G6 C6 F4 E4 D2 E2 B4 G8 H4 H2 H3 G2 A7 B5 A5 B6 A6 B8 D3 D1 C1 E1 B2 B7 A8 B9 D5 D6 D4 A9 A4 E6 C5 G7 B3 H6 B1 G5 PASS F6 PASS G4 PASS G3 PASS F3 PASS H5 PASS F5 PASS J4 PASS J3 PASS PASS #Aloril, map_opening7 vs GNU Go 3.7.10 ! E5 C5 D7 G5 E3 F7 C3 C7 E7 F8 B6 C6 D8 C8 B5 B7 C4 B9 A8 A7 E9 F6 E6 G3 F2 G2 F4 G4 G1 F9 H2 H3 F3 J2 H1 E8 D9 F5 F1 J3 J1 H6 C9 G7 D5 H7 D6 H8 A6 J5 B8 H5 A9 PASS PASS #Aloril, map_opening8 vs GNU Go 3.7.10 ! E5 C3 E3 G3 G5 E2 D2 F2 D3 H2 C7 G7 H6 E7 H7 H8 J8 C2 D1 G8 C4 D6 D8 H4 B4 H5 G6 J6 J7 J5 G4 F3 F4 E1 E8 J3 F8 J2 B3 G1 B2 PASS C1 PASS F7 PASS G9 PASS H9 PASS D7 PASS E6 PASS C6 PASS D5 PASS PASS #Aloril, map_opening9 vs GNU Go 3.7.10 ! E5 C5 D7 G5 E3 F7 C3 C7 E7 F8 B6 C6 D8 C8 B5 B7 C4 B9 A8 A7 E9 G3 F6 G6 F2 F9 H2 H3 G2 J2 F4 F5 E6 E8 D9 G4 F3 H1 G1 J3 J1 B4 B3 H1 A4 J1 D5 H7 A6 H8 D6 H5 C9 J6 B8 G7 A9 J5 PASS #Aloril, map_opening10 vs GNU Go 3.7.10 ! E5 D4 E4 D3 D5 E3 G3 G7 B4 B2 F2 B3 C4 E2 C3 C2 D1 C5 B5 C6 B6 C7 B7 C8 B8 B9 E1 D2 F3 E7 H6 H7 G6 J6 J5 J7 H5 F6 F5 E6 D6 D7 C1 A8 B1 C9 A7 A9 A2 F8 A3 E8 PASS G8 PASS H9 PASS H8 PASS #Aloril, map_opening11 vs GNU Go 3.7.10 ! E5 C4 E3 G5 C6 D2 G7 G2 E2 D3 H6 F4 E4 H5 H4 G4 J5 B5 B6 A6 C5 B4 A7 A5 B7 E1 F1 D1 F2 D4 D5 B2 G6 A3 F5 B3 G3 C1 H2 PASS G1 PASS F3 PASS PASS #Aloril, map_opening12 vs GNU Go 3.7.10 ! E5 D5 E6 G5 E4 F3 E3 F7 D7 F2 F4 G4 F6 G6 E8 E2 D2 C5 G8 B7 B3 C8 A6 D1 C2 C7 H7 H6 G7 A7 A4 C1 B1 E1 J6 H3 J5 H5 J4 J3 F5 H4 J7 G2 E7 H2 F8 G1 C4 PASS B5 PASS D4 PASS C6 PASS D6 PASS B6 PASS D8 PASS C9 PASS B8 PASS A8 PASS PASS #Aloril, map_opening13 vs GNU Go 3.7.10 ! E5 C3 E3 G6 C5 G3 C7 F7 E8 F8 F2 E7 H2 D6 C6 D8 H4 G4 H5 G5 J8 D5 D4 C8 B8 E9 H7 G9 H6 B9 B7 G2 G1 D2 B4 H3 J3 C4 B3 F3 E2 H8 G7 E6 F5 F6 E4 G8 J7 A8 A7 C9 J9 A9 D7 F4 C2 H9 D3 PASS D1 PASS PASS #Aloril, map_opening14 vs GNU Go 3.7.10 ! E5 D4 E4 D5 E6 G7 D6 C2 B5 E3 F3 E2 H6 F2 G3 G2 B3 H3 H4 H2 J4 B2 C3 D3 C5 A2 A3 C4 B4 J3 G4 D1 H7 C1 G8 E1 F7 PASS G6 PASS PASS #Aloril, map_opening15 vs GNU Go 3.7.10 ! E5 C4 E3 G5 C6 D2 G7 G2 E2 D3 H6 F4 E4 H5 H4 G4 J5 B5 B6 A6 C5 B7 B4 A5 C3 B3 D4 A4 B2 C7 D8 H3 J4 C2 A3 F3 F2 PASS A7 PASS G6 PASS F5 PASS C1 PASS D1 PASS D7 PASS C8 PASS B8 PASS J3 PASS G1 PASS H2 J2 J1 PASS G3 PASS PASS #Aloril, map_opening16 vs GNU Go 3.7.10 ! E5 D4 E4 D5 E6 G7 D6 D3 F2 G4 C1 E8 D8 D9 C8 E7 H3 H4 G3 C9 B9 E9 B8 B5 C6 J3 J2 J4 H2 F6 F5 G5 F4 D7 C7 H6 D2 F7 C5 H7 C4 H5 C3 G8 E3 H9 B4 H8 B6 PASS A5 PASS PASS #Aloril, map_opening17 vs GNU Go 3.7.10 ! E5 C4 E3 G7 C6 D3 D4 D2 E2 C3 B5 B2 A3 G4 E7 G2 F2 F8 E8 E9 D9 F9 D8 G3 F7 G8 G6 H6 G5 H5 G1 H1 F1 F4 E4 H2 F5 F3 B4 H9 B3 H4 C5 H8 D1 H7 C2 J3 A2 J4 B1 PASS PASS #Aloril, map_opening18 vs GNU Go 3.7.10 ! E5 D5 E6 E4 F4 E3 C7 F3 G4 G3 B5 B3 C4 C3 D4 H3 D3 D2 H4 J4 J5 J3 H5 B4 C5 A5 A6 A4 B6 A2 D6 E2 G7 B2 PASS C2 PASS G2 PASS F1 PASS E1 PASS #Aloril, map_opening19 vs GNU Go 3.7.10 ! E5 D4 E4 D5 E6 G7 D6 D3 F2 G4 C1 E8 D8 D9 C8 E7 H3 E3 F3 B5 C6 F4 B3 B4 C3 B6 B7 D7 C7 E2 E1 H5 F6 H4 G3 J3 J2 J4 H2 F7 C9 E9 G6 H6 C5 F5 C4 G5 D2 H8 A6 J7 A4 G8 A5 J8 PASS #Aloril, map_opening20 vs GNU Go 3.7.10 ! E5 C3 E3 G6 C5 G3 C7 F7 E8 F8 F2 E7 H2 D6 C6 D5 D4 D8 H4 G4 H5 G5 J8 C8 B8 E9 H7 G9 H6 B9 B7 G2 G1 D2 B4 H3 J3 C4 B3 F3 E2 H8 J7 G7 C2 H9 E6 D7 A8 C9 F4 F5 E4 J9 J4 A9 F6 PASS D3 PASS D1 PASS PASS #Aloril, map_opening21 vs GNU Go 3.7.10 ! E5 D4 E4 D5 E6 G7 D6 D3 F2 G4 C1 E8 D8 D9 C8 E7 H3 E3 F3 F4 C6 B5 B3 B4 C3 B6 B7 D7 C7 E2 E1 H5 F6 H4 G3 J3 J2 J4 H2 F7 C9 E9 G6 H6 C5 F5 C4 G5 D2 H8 A6 J7 A4 G8 A5 J8 PASS #Aloril, map_opening22 vs GNU Go 3.7.10 ! E5 C4 E3 G5 C6 D2 G7 G2 E2 D3 H6 F4 E4 H5 H4 G4 J5 B5 B6 A6 C5 B7 B4 A5 C3 B3 D4 A4 B2 C7 D8 H3 J4 C2 A3 F3 F2 PASS A7 PASS G6 PASS F5 PASS C1 PASS D1 PASS D7 PASS C8 PASS B8 PASS J3 PASS G1 PASS H2 H1 G3 PASS J1 PASS PASS #Aloril, map_opening23 vs GNU Go 3.7.10 ! E5 D4 E4 D5 E6 G7 D6 D3 F2 G4 C1 E8 D8 D9 C8 E7 H3 E3 F3 F4 C6 B5 B3 B4 C3 B6 B7 D7 C7 E2 E1 H5 F6 H4 G3 J3 J2 J4 H2 F8 C9 E9 G6 H6 F7 G8 C5 F5 C4 G5 D2 H8 A6 J7 A4 J8 A5 PASS PASS #Aloril, map_opening24 vs GNU Go 3.7.10 ! E5 D5 E6 D6 E4 E7 F7 C3 D2 E8 F8 D7 D4 C4 B2 B3 C2 F9 G9 E9 G8 A2 B1 D3 E3 G3 H4 A3 A1 C8 F3 B7 G4 B5 H3 C6 G2 B6 PASS B8 PASS B4 PASS #Aloril, map_opening25 vs GNU Go 3.7.10 ! E5 D5 E6 E4 F4 E3 C7 F3 G4 G3 B5 G7 H6 E8 H8 D7 D6 C8 E7 B3 H3 H2 H4 C5 C6 B4 B6 J2 A4 A3 A5 J3 J4 C2 D8 D2 F8 C4 E9 D3 G8 G2 B8 PASS C9 PASS G6 PASS H7 PASS F7 PASS PASS #Aloril, map_opening26 vs GNU Go 3.7.10 ! E5 C3 E3 F6 C5 G7 B4 C7 G5 H6 H5 J5 J4 J6 H4 G6 D6 D7 E6 E7 B6 B8 B7 A8 A7 F5 F4 C6 B3 F8 D3 E8 C2 C8 C4 G8 PASS D9 PASS C9 PASS #Aloril, map_opening27 vs GNU Go 3.7.10 ! E5 D5 E6 D6 E4 G3 D4 D7 F8 G6 B5 B6 C5 D8 B7 G8 F7 E2 D2 G7 F2 G2 F3 G4 G1 H1 F1 F9 E9 G9 E8 H2 F5 F6 E7 G5 F4 H8 C6 H6 A6 J7 C7 J8 E3 PASS E1 PASS C8 PASS D9 PASS PASS #Aloril, map_opening28 vs GNU Go 3.7.10 ! E5 C3 E3 G3 G5 E2 D2 F2 D3 C7 H4 C5 E7 D8 E8 C2 D1 C1 D7 C8 C6 B6 D5 D6 C4 B4 D4 E9 F9 E6 F6 D9 C6 D6 F8 C6 E6 A5 H3 B3 F3 A6 G4 A4 G2 B8 F1 A2 E1 B2 PASS #Aloril, map_opening29 vs GNU Go 3.7.10 ! E5 D4 E4 D5 E6 G7 D6 D3 F2 G4 C1 E8 D8 D9 C8 E7 H3 E3 F3 F4 C6 B5 B3 B4 C3 B6 B7 D7 C7 E2 E1 H5 F6 H4 G3 J3 J2 J4 H2 F8 C9 E9 G6 H6 F7 G8 C5 G5 C4 F5 D2 H8 A6 J7 A4 J8 A5 PASS PASS #Aloril, map_opening30 vs GNU Go 3.7.10 ! E5 C3 E3 G3 G5 E2 D2 F2 D3 C7 H4 F7 C4 H6 B6 B7 G6 G7 H5 H7 C6 D6 D5 A6 E6 D7 E7 E8 A5 A7 B4 F6 F5 J5 J4 J6 H3 B8 F3 G8 G4 F9 G2 D8 E1 E9 F1 G9 C2 C9 B3 PASS PASS #Aloril, map_opening31 vs GNU Go 3.7.10 ! E5 C3 E3 G6 C5 G3 C7 F7 E8 F8 F2 E7 H2 D6 C6 D5 D4 D8 H4 G4 H5 G5 J8 C8 B8 E9 H7 B9 B7 G9 H6 G2 G1 D2 B4 H3 J3 C4 B3 F3 E2 H8 J7 G7 E6 D7 A8 H9 J4 C9 A9 F5 E4 J9 C2 F6 F4 PASS D3 PASS D1 PASS PASS #Aloril, map_opening32 vs GNU Go 3.7.10 ! E5 D5 E6 E4 F4 E3 C7 F3 G4 G3 B5 G7 H6 E8 H8 D7 D6 C8 E7 H4 H5 D8 B7 H3 C3 H7 J7 G5 F5 G8 G6 C4 B4 D3 C2 D2 C5 D4 D1 E1 C1 J5 J6 J4 F7 F2 F8 F1 G9 H2 B8 G1 C9 PASS E9 PASS D9 PASS PASS #Aloril, map_opening33 vs GNU Go 3.7.10 ! E5 C3 E3 F6 C5 G7 B4 G3 D7 F2 E2 E8 D8 D9 C9 E9 C8 E1 D1 F1 D2 E7 F3 G2 G4 H4 G5 H5 G6 H6 E6 F5 F4 F7 C4 H8 B3 H2 C2 J7 D3 G8 PASS J8 PASS H3 PASS J6 PASS #Aloril, map_opening34 vs GNU Go 3.7.10 ! E5 D5 E6 G5 E4 F7 E7 F3 C3 F8 E8 E9 D9 F9 D8 D2 E3 F2 E2 C2 E1 F1 F6 G6 F4 G4 F5 H7 C5 H3 B2 G8 D3 G3 C1 H8 D1 H6 D6 H2 D4 J5 PASS H5 PASS J7 PASS #Aloril, map_opening35 vs GNU Go 3.7.10 ! E5 D4 E4 E3 F3 D3 D5 F2 G3 C7 E7 B5 C5 B4 C4 C3 G2 G7 F8 E2 C6 B6 C8 B8 D7 B7 D9 G1 H1 F1 H2 B9 C9 B2 G8 A3 H7 C2 G6 A4 F7 A2 PASS #Aloril, map_opening36 vs GNU Go 3.7.10 ! E5 C3 E3 G6 C5 G3 C7 F7 E8 F8 F2 E7 H2 D6 C6 D5 D4 D8 H4 G4 H5 G5 J8 C8 B8 E9 H7 B9 B7 C4 B4 B3 B5 G9 H6 A6 A4 G2 G1 B2 D2 D7 H3 H8 J7 G7 A8 H9 C2 C9 E6 F3 F4 F5 E4 J9 B1 A9 D3 F6 A2 PASS A3 PASS A5 PASS B6 PASS A7 PASS PASS #Aloril, map_opening37 vs GNU Go 3.7.10 ! E5 D4 E4 E3 F3 D3 D5 G7 B4 F2 G4 G3 F4 G2 F8 H3 H4 B2 C4 C3 B3 J4 J5 J3 H5 A2 A3 E1 C6 C2 G8 E2 H7 H1 F7 H2 G6 PASS PASS #Aloril, map_opening38 vs GNU Go 3.7.10 ! E5 C3 E3 G6 C5 G3 C7 F7 E8 F8 F2 E7 H2 D6 C6 D5 D4 D8 H4 G4 H5 G5 J8 C8 B8 E9 H7 B9 B7 C4 B4 B3 B5 A6 A4 G9 H6 G2 G1 B2 D2 D7 H3 H8 J7 G7 A8 H9 F4 F3 E6 F5 E4 J9 A9 C9 C2 F6 B1 PASS D3 PASS A2 PASS A3 PASS B6 PASS A5 PASS A7 PASS PASS #Aloril, map_opening39 vs GNU Go 3.7.10 ! E5 D5 E6 G5 E4 F7 E7 D4 E3 C2 G3 F8 H6 H7 G6 F6 G7 H8 H5 C7 E8 D8 E9 D3 E2 D2 D7 C8 D6 C6 D1 C1 E1 D9 G8 B5 G4 B3 F5 C4 F9 B4 J7 B6 H9 PASS J8 PASS PASS #Aloril, map_opening40 vs GNU Go 3.7.10 ! E5 D5 E6 E4 F4 E3 C7 F3 G4 G3 B5 G7 H6 E8 H8 D7 D6 C8 E7 H4 H5 H3 C3 H7 J7 G5 G6 D8 B7 G8 F5 C4 B4 D3 C2 D2 C5 D4 D1 E1 C1 J5 J6 J4 F7 F2 F8 F1 G9 H2 B8 G1 C9 PASS E9 PASS D9 PASS PASS #Aloril, map_opening41 vs GNU Go 3.7.10 ! E5 C4 E3 G7 C6 D3 D4 D2 E2 C3 B5 B2 A3 G4 E7 G2 F2 F8 E8 E9 D9 F9 D8 G3 F7 G8 G6 H6 G5 H5 G1 H1 F1 H2 F4 F3 B4 H9 C5 H8 B3 H4 D1 H7 C2 J3 A2 J4 B1 PASS PASS #Aloril, map_opening42 vs GNU Go 3.7.10 ! E5 D5 E6 D6 E4 G3 D4 D7 F8 G6 B5 B6 C5 D8 B7 G8 F7 G7 F2 G2 F3 G4 G1 H1 F1 F9 E9 G9 E8 H2 F5 F6 E7 G5 F4 H8 C6 H6 A6 J7 C7 J8 C8 PASS D9 PASS PASS #Aloril, map_opening43 vs GNU Go 3.7.10 ! E5 D4 E4 E3 F3 D3 D5 G7 B4 F2 G4 G3 F4 G2 F8 C7 B6 G8 F7 H3 H4 B2 C3 C2 B3 J4 J5 J3 H5 A2 C4 A3 A4 D2 G6 E1 B7 D1 H7 F1 H8 PASS G9 PASS C8 PASS D7 PASS C6 PASS PASS #Aloril, map_opening44 vs GNU Go 3.7.10 ! E5 D5 E6 G5 E4 F3 E3 D6 E7 C8 G7 F2 C3 E2 B5 B6 C5 C6 D8 B1 D2 D1 C2 C1 H6 H3 H4 G4 H5 G2 B2 J4 J5 J3 F4 H1 G6 F5 F6 G3 A2 E1 A1 H2 B8 PASS C7 PASS C9 PASS B7 PASS D4 PASS D7 PASS A6 PASS PASS #Aloril, map_opening45 vs GNU Go 3.7.10 ! E5 C3 E3 G6 C5 G3 C7 F7 E8 F8 F2 E7 H2 D6 C6 D5 D4 D8 H4 G4 H5 G5 J8 C8 B8 E9 H7 B9 B7 C4 B4 B3 B5 A6 A4 H3 J3 H6 J6 G2 G1 B2 D2 A8 A7 A3 A9 C9 C2 G8 H1 H8 J2 H9 J4 A8 D3 F4 E4 A9 B1 E6 F5 G7 J7 F3 J5 J9 F6 D7 A2 PASS B6 PASS A5 PASS PASS #Aloril, map_opening46 vs GNU Go 3.7.10 ! E5 C3 E3 F6 C5 G7 B4 G3 D7 F2 E2 E8 D8 D9 C9 E9 C8 E1 D1 F1 D2 E7 F3 G2 G4 H4 G5 H5 G6 H6 E6 F5 F4 F7 C4 H8 B3 J7 C2 G8 D3 H3 PASS J8 PASS J6 PASS #Aloril, map_opening47 vs GNU Go 3.7.10 ! E5 D5 E6 G5 E4 F7 E7 D4 E3 C2 G3 F8 H6 G6 E8 H5 B5 B4 B3 C5 A4 B6 C4 C7 B2 B8 C9 J2 H4 D3 C3 E2 F2 G4 H3 F4 F3 J4 J3 F1 J5 H7 J6 H1 H2 G1 G8 G7 F9 H8 G9 A7 D6 B1 C6 C8 D9 B9 A5 A6 D8 D7 D2 A8 E1 PASS C1 PASS A1 PASS G2 PASS J1 PASS F6 PASS F5 PASS H9 PASS J7 PASS J8 PASS PASS #Aloril, map_opening48 vs GNU Go 3.7.10 ! E5 D5 E6 G5 E4 F3 E3 D6 E7 C8 G7 F2 C3 E2 B5 B6 C5 C6 D8 B1 D2 B3 C4 D1 B2 A2 C2 C1 H6 H3 H4 G4 H5 G2 A4 A1 A3 E1 J3 J2 J4 F4 G6 F5 F6 H2 D7 PASS B4 PASS C7 PASS B7 PASS A6 PASS D4 PASS B8 PASS C9 PASS PASS #Aloril, map_opening49 vs GNU Go 3.7.10 ! E5 D5 E6 G5 E4 F3 E3 D6 E7 C8 G7 F2 C3 E2 B5 B6 C5 C6 D8 B1 D2 B3 C4 D1 B2 C1 H6 C2 H4 D3 D4 B9 B7 H2 G4 B4 A4 A2 H3 A6 A5 J2 G3 G2 F4 A3 J3 D2 D7 PASS C7 PASS B8 PASS C9 PASS A7 PASS A9 PASS G6 PASS H5 PASS F5 PASS PASS #Aloril, map_opening50 vs GNU Go 3.7.10 ! E5 D4 E4 C6 E3 D3 F7 G3 H4 E2 B7 C7 B6 B8 C5 D5 B4 B3 D6 D8 E7 B5 A5 C3 A8 C4 B5 E8 D7 C8 F8 A3 A7 B9 E9 D9 F9 A4 H2 G2 H3 G4 G5 H1 F4 D2 J2 F3 J1 G1 H5 F1 F6 E1 PASS B2 PASS C1 PASS #Aloril, map_opening51 vs GNU Go 3.7.10 ! E5 D5 E6 G5 E4 F7 E7 D4 E3 C2 G3 F8 H6 G6 E8 H5 B5 B4 B3 C5 A4 C3 B6 B2 C4 A2 B4 E2 F2 E1 D3 D2 F1 E9 D9 F9 D8 J2 H4 J4 H3 J3 H2 H1 G1 F6 F5 G4 F4 A3 J1 J5 H1 H7 C6 G7 D6 H8 PASS B1 PASS H9 PASS J6 PASS #Aloril, map_opening52 vs GNU Go 3.7.10 ! E5 C3 E3 G6 C5 G3 C7 F7 E8 F8 F2 E7 H2 D6 C6 D5 D4 D8 H4 G4 H5 G5 J8 C8 B8 E9 H7 B9 B7 C4 B4 B3 B5 A6 A4 H3 J3 H6 J6 G2 G1 B2 D2 A8 A7 A3 A9 C9 C2 G8 H1 H9 J2 H8 J4 A8 D3 F4 E4 A9 E6 D7 B1 G7 J7 F3 J5 J9 F5 F6 A2 PASS B6 PASS A5 PASS PASS #Aloril, map_opening53 vs GNU Go 3.7.10 ! E5 D4 E4 C6 E3 D3 F7 G3 H4 E2 B7 C7 B6 B8 C5 D5 B4 B3 D6 D8 E7 B5 A5 C3 A8 C4 B5 C8 A7 A3 E8 A4 D9 F2 H3 H2 G4 F3 J2 F4 F5 H1 J3 J1 G5 D2 D7 B2 C9 C1 B9 G2 PASS B1 PASS #Aloril, map_opening54 vs GNU Go 3.7.10 Index: map_opening_vs_gnugo.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/map_opening_vs_gnugo.py,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -r1.4 -r1.5 *** map_opening_vs_gnugo.py 28 Oct 2006 06:47:01 -0000 1.4 --- map_opening_vs_gnugo.py 31 Oct 2006 08:11:51 -0000 1.5 *************** *** 183,187 **** def map_opening(count, size=9): ! engine_cmd = "/usr/local/src/gnugo-3.6/interface/gnugo --mode gtp --chinese-rules --never-resign --capture-all-dead" m = Match(size, engine_cmd, simple_go.BLACK) fp = open("map_opening_%ix%i.log" % (size, size), "a") --- 183,187 ---- def map_opening(count, size=9): ! engine_cmd = "/usr/local/src/gnugo-3.7.10/interface/gnugo --mode gtp --chinese-rules --never-resign --capture-all-dead" m = Match(size, engine_cmd, simple_go.BLACK) fp = open("map_opening_%ix%i.log" % (size, size), "a") Index: opening_tree.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/opening_tree.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** opening_tree.py 4 Oct 2006 10:17:16 -0000 1.1 --- opening_tree.py 31 Oct 2006 08:11:51 -0000 1.2 *************** *** 31,35 **** for ref in all_ref_coords: ref_move_lst = tuple(g.reflect_move_history(ref)) ! ref_move = ref(move, size) value = (ref_move, i, line, ref.__name__) if ref_move_lst in self.opening_tree_dict: --- 31,38 ---- for ref in all_ref_coords: ref_move_lst = tuple(g.reflect_move_history(ref)) ! if move==PASS_MOVE: ! ref_move = move ! else: ! ref_move = ref(move, size) value = (ref_move, i, line, ref.__name__) if ref_move_lst in self.opening_tree_dict: *************** *** 54,62 **** def get_move(self, g): ! for ref in all_ref_coords: ! ref_move_lst = g.reflect_move_history(ref) ! if g.move_history != ref_move_lst: ! continue ! ref_move_lst = tuple(ref_move_lst) ! if ref_move_lst in self.opening_tree_dict: ! return self.opening_tree_dict[ref_move_lst] --- 57,62 ---- def get_move(self, g): ! ref_move_lst = tuple(g.move_history) ! if ref_move_lst in self.opening_tree_dict: ! return self.opening_tree_dict[ref_move_lst] ! return |
From: Aloril <al...@us...> - 2006-10-28 06:47:17
|
Update of /cvsroot/londerings/go/simple_go In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv30626 Modified Files: 9x9_black_opening.lst map_opening_vs_gnugo.py Log Message: opening black, GNU Go as white: 3.7.4 done, 3.6 maybe done Index: 9x9_black_opening.lst =================================================================== RCS file: /cvsroot/londerings/go/simple_go/9x9_black_opening.lst,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -r1.6 -r1.7 *** 9x9_black_opening.lst 21 Oct 2006 13:06:55 -0000 1.6 --- 9x9_black_opening.lst 28 Oct 2006 06:47:01 -0000 1.7 *************** *** 23,24 **** --- 23,62 ---- E5 C5 D7 D4 F3 #Aloril, antigoamuct-1.6: http://cgos.boardspace.net/public/SGF/2006/10/07/317029.sgf E5 C7 E7 G4 C5 F6 E6 E3 F5 G5 C3 F7 F8 D8 E8 #Aloril, MoGoSmallQdV1.1: http://cgos.boardspace.net/public/SGF/2006/10/07/317061.sgf + E5 C4 E3 D6 E6 D7 F8 G3 F2 E8 G6 H5 H2 D2 E7 H6 H7 D8 D3 C3 D5 C5 E2 C2 E9 D9 F9 E1 F1 D1 D4 B6 H3 C7 H4 B7 G5 B5 J6 B3 J5 B8 G2 A4 G4 A3 F3 PASS PASS #Aloril, map_opening1 vs GNU Go 3.7.4 + E5 C3 E3 C6 F7 G3 H2 H3 G2 D7 E8 D8 D2 C2 D5 C5 D4 C4 E7 D1 E1 C1 D9 C9 E9 B8 D3 D6 E6 B7 H4 C8 G4 B5 F3 B3 J3 A6 PASS A7 PASS #Aloril, map_opening2 vs GNU Go 3.7.4 + E5 C3 E3 C5 E7 G7 G5 G8 E8 H6 H5 D2 E2 B7 C8 B8 C6 B6 C7 E1 F1 D1 F2 C9 D9 B9 D3 C2 D5 D4 E4 C4 G6 B4 H7 A5 J6 A6 H8 A4 G9 PASS F8 PASS F7 PASS PASS #Aloril, map_opening3 vs GNU Go 3.7.4 + E5 C5 D7 D3 G6 G3 D4 C4 E3 D2 E2 H5 H1 B7 C8 B8 D1 C2 C1 B1 E1 B2 C6 B6 C7 B9 D5 C9 D9 A5 H6 A6 G5 B3 H4 B4 J5 PASS H3 PASS G2 PASS G4 PASS F3 PASS PASS #Aloril, map_opening4 vs GNU Go 3.7.4 + E5 C3 E3 E7 C5 B4 B5 D2 E2 B2 G6 C7 B7 G8 F7 F8 H7 B8 C6 C8 H8 A8 D1 C1 E1 D6 E6 D4 D5 D7 D3 C2 A4 A3 C4 A5 A6 A4 G9 F9 H9 G7 F6 D9 B6 A7 E4 E8 H6 A2 PASS #Aloril, map_opening5 vs GNU Go 3.7.4 + E5 C3 E3 G7 C5 B4 B5 D2 E2 B2 G5 D7 B7 F6 H6 H7 C8 D8 E6 E7 J7 J8 J6 H9 G6 E1 F1 D1 F2 F5 F4 F7 A4 A3 A5 C4 D4 C7 B8 C9 B9 D9 D3 C2 D6 C6 B6 H8 G4 A2 PASS F8 PASS #Aloril, map_opening6 vs GNU Go 3.7.4 + E5 C4 E3 C6 F7 G3 F2 D2 D8 B8 C7 B7 D3 C3 E2 C2 D6 C5 C8 B9 D1 C1 E1 D4 E4 C9 D9 D5 E6 B5 G4 A6 H3 A7 G2 A5 F3 PASS PASS #Aloril, map_opening7 vs GNU Go 3.7.4 + E5 D4 E4 D5 E6 E3 F3 C7 D8 E2 F2 D3 B8 B7 C8 F1 G1 E1 G2 A8 D6 C6 D7 B9 C9 A7 A9 B5 B9 C2 G7 B3 F4 C4 PASS B4 PASS B2 PASS B6 PASS #Aloril, map_opening8 vs GNU Go 3.7.4 + E5 C5 D7 G5 E3 B7 G7 G2 C3 C8 D8 C7 H6 H4 G3 H3 G4 F2 H5 E2 D2 J2 B4 B5 A5 A6 A4 C6 J4 H1 C4 D9 E9 C9 E8 F3 F4 D1 C1 E1 D5 D6 E6 J3 J5 A7 G6 B9 F5 PASS PASS #Aloril, map_opening9 vs GNU Go 3.7.4 + E5 C5 D7 E4 F5 G3 D4 B7 C4 C8 F2 E3 E2 H5 H7 G2 D3 G6 G7 E8 F7 B5 G4 H4 J2 J3 F3 H2 B4 D5 D8 D9 D6 A5 F9 E9 C7 B8 A4 C6 F8 E6 E7 C9 G5 H6 F6 J7 J8 J6 H8 F1 E1 G1 F4 A6 D2 J4 PASS A7 PASS A9 PASS J1 PASS #Aloril, map_opening10 vs GNU Go 3.7.4 + E5 C4 E3 G6 C6 D2 E2 B4 F7 G7 F8 G8 H5 A7 B7 A6 D3 C2 C3 B3 D1 B2 B6 A2 A4 A8 B5 A5 B8 H3 G5 F2 G2 H2 F3 PASS F1 D5 D6 PASS A9 PASS H6 PASS H7 H8 G9 PASS F6 PASS H9 PASS J8 PASS D4 PASS C5 PASS C1 PASS A5 PASS PASS PASS A3 PASS B1 PASS A1 PASS H4 PASS G3 PASS J3 PASS H1 PASS J2 PASS PASS #Aloril, map_opening11 vs GNU Go 3.7.4 + E5 C4 E3 C7 C5 D4 D5 D2 B3 B4 C2 E2 F3 F2 D3 C3 B2 G3 B5 F7 G4 H3 H4 H1 H7 F8 A8 D1 J3 J2 J4 C1 B1 H2 C8 G2 D7 PASS C6 PASS B7 PASS E7 PASS G7 PASS F6 PASS G8 PASS E8 PASS F9 PASS E4 PASS A4 PASS PASS #Aloril, map_opening12 vs GNU Go 3.7.4 + E5 C3 E3 G3 G5 F4 E4 H4 F2 C6 H5 E7 F7 F8 G7 G8 D7 E8 D6 H7 H6 C7 D8 H8 E6 J7 B8 B5 D2 C2 A6 B7 A7 C8 C9 A5 C5 C4 B6 B3 F6 D1 E1 C1 D3 J6 J5 E9 D9 D4 D5 A2 G2 B2 J4 B4 H3 G9 G4 J9 F3 PASS F5 PASS PASS #Aloril, map_opening13 vs GNU Go 3.7.4 + E5 D5 E6 E4 F4 F3 D4 C4 E3 D6 C3 D7 E7 G7 H6 B4 B3 E8 F8 D8 F7 A3 A2 A4 B2 F9 G9 E9 G8 C7 G3 B6 F2 B8 H7 A7 G6 B5 PASS A8 PASS C8 PASS #Aloril, map_opening14 vs GNU Go 3.7.4 + E5 C4 E3 C7 C5 D4 D5 D2 B3 B4 C2 E2 F3 F2 D3 C3 B2 G3 B5 F7 G4 H3 H4 H1 H7 F8 A8 D1 J3 J2 J4 C1 B1 F4 E4 F5 G6 G5 H5 H2 F6 G2 C8 PASS D7 PASS C6 PASS B7 PASS E8 PASS E7 PASS G7 PASS G8 PASS F9 PASS A4 PASS PASS #Aloril, map_opening15 vs GNU Go 3.7.4 + E5 D4 E4 E3 F3 D5 E6 C7 D8 E2 F2 D3 B8 B7 C8 F1 G1 E1 G2 A8 D7 D6 B9 A7 A9 C2 G7 B3 PASS C4 PASS B2 PASS C6 PASS B4 PASS B5 PASS #Aloril, map_opening16 vs GNU Go 3.7.4 + E5 C4 E3 G7 C6 D2 H6 E2 F3 F2 G2 G1 H2 B5 B6 A6 C5 B4 D4 A7 C3 B3 C2 C8 E8 D3 B2 E7 D8 D7 C7 G6 F8 H5 H8 H7 G8 E6 F5 A8 B8 A3 D1 PASS E1 PASS F1 PASS C9 J6 H4 PASS G5 PASS H1 G4 G3 PASS F4 PASS F7 PASS F6 PASS D6 PASS J8 PASS J7 PASS H6 H7 J5 PASS G7 PASS A2 PASS B7 PASS A5 PASS A9 PASS A4 PASS PASS #Aloril, map_opening17 vs GNU Go 3.7.4 + E5 D4 E4 D3 D5 E3 G3 C7 C5 B4 B5 F7 B3 F3 G4 G2 H2 C2 F2 E2 G1 B2 C4 D1 A2 C3 A4 B1 H7 F8 A8 F4 F5 A1 A3 E1 F1 PASS G7 PASS C8 PASS D7 PASS B7 PASS C6 PASS F6 PASS G8 PASS E7 PASS E8 PASS F9 PASS PASS #Aloril, map_opening18 vs GNU Go 3.7.4 + E5 D4 E4 D3 D5 G7 E3 E2 F2 D2 G3 D7 B4 B3 C4 C3 B6 B1 C8 D8 H6 A4 B5 A5 A6 A3 E1 D1 F1 B2 H7 G8 H8 PASS G6 PASS F7 PASS C7 PASS E7 PASS F8 PASS G9 PASS D6 PASS E8 PASS D9 PASS PASS #Aloril, map_opening19 vs GNU Go 3.7.4 + E5 D4 E4 C5 E7 D3 E3 G7 H6 C7 D2 C2 E2 D8 E8 E9 F9 D9 F8 D1 E1 C1 D7 C8 C6 B6 D6 B5 D5 C3 H7 B9 G6 B8 G8 C4 F7 B7 PASS B3 PASS A4 PASS A5 PASS #Aloril, map_opening20 vs GNU Go 3.7.4 + E5 D5 E6 D4 E4 E3 F3 C7 D8 E2 F2 D3 B8 B7 C8 F1 G1 E1 G2 A8 D7 D6 B9 A7 A9 C2 F7 B3 PASS B6 PASS C5 PASS C3 PASS B5 PASS A4 PASS B4 PASS #Aloril, map_opening21 vs GNU Go 3.7.4 + E5 C4 E3 G7 C6 D2 H6 E2 F3 F2 G2 G1 H2 B5 B6 A6 C5 B4 D4 A8 C3 C2 B3 B2 A3 A2 D3 H1 F1 E1 J2 F1 H4 J1 H7 B1 G8 PASS F7 PASS G6 PASS A4 PASS A5 PASS A7 PASS B8 PASS A9 PASS PASS #Aloril, map_opening22 vs GNU Go 3.7.4 + E5 C5 D7 E4 F5 G3 D4 B7 C4 C8 F2 E3 E2 H5 H7 G2 D3 G6 G7 E8 F7 B5 G4 H4 J2 J3 F3 H2 B4 D5 D8 D9 D6 A5 F9 E9 C7 B8 A4 C6 F8 E6 E7 C9 G5 H6 F6 J7 J8 J6 H8 F1 E1 G1 F4 A6 D2 A7 PASS J4 PASS A9 PASS J1 PASS #Aloril, map_opening23 vs GNU Go 3.7.4 + E5 C3 E3 G3 G5 F4 E4 H4 F2 C6 H5 E7 F7 F8 G7 G8 D7 E8 D6 H7 H6 C7 D8 H8 E6 J7 B8 B5 D2 C2 A6 B7 A7 C8 C9 A5 C5 C4 B6 B3 F6 D1 E1 C1 D3 J6 J5 D4 E9 J9 F9 G9 D9 D5 C6 A2 G2 B2 J4 B4 H3 PASS G4 PASS F3 PASS F5 PASS PASS #Aloril, map_opening24 vs GNU Go 3.7.4 + E5 D4 E4 F6 E6 F7 C3 D3 C4 D5 G5 E3 F3 B6 C5 F2 G3 G2 D6 H6 H2 C7 C6 B5 D7 C8 D8 A8 G9 A2 B4 A4 B2 A3 C9 B9 D9 B3 C2 B1 C1 A5 A1 B8 B1 B7 G6 PASS G7 PASS F8 PASS F5 PASS E7 PASS H7 PASS J6 PASS H5 PASS D2 PASS E2 PASS F1 PASS G1 PASS PASS #Aloril, map_opening25 vs GNU Go 3.7.4 + E5 C5 D7 E4 F5 G3 D4 B7 C4 C8 F2 E3 E2 H5 H7 G2 D3 G6 G7 E8 F7 B5 G4 H4 J2 J3 F3 H2 B4 D5 D8 D9 D6 A5 F9 E9 C7 B8 A4 C6 F8 E6 E7 C9 G5 H6 F6 J7 J8 J6 H8 F1 E1 G1 F4 A6 D2 A7 PASS J4 PASS J1 PASS A9 PASS #Aloril, map_opening26 vs GNU Go 3.7.4 + E5 D4 E4 D3 D5 F6 E3 F8 B4 G3 G5 H5 H4 H6 G4 C7 E7 F7 D7 D8 E8 E9 C8 D9 C9 F9 B7 J4 G6 H7 G7 G8 J3 J5 F5 H8 H3 E6 D6 H9 C6 PASS C3 PASS D2 PASS C4 PASS G2 PASS F3 PASS PASS #Aloril, map_opening27 vs GNU Go 3.7.4 + E5 D4 E4 D3 D5 G7 E3 E2 F2 D2 G3 D7 B4 B3 C4 C3 B6 B1 C8 D8 H6 F1 G1 E1 A3 A2 A4 B2 H7 G8 H8 PASS C7 PASS D6 PASS G6 PASS F7 PASS F8 PASS G9 PASS E7 PASS E8 PASS D9 PASS PASS #Aloril, map_opening28 vs GNU Go 3.7.4 + E5 C3 E3 E7 C5 B4 B5 D2 E2 B2 G6 C7 B7 G8 F7 F8 H7 B8 C6 D7 A8 H8 C8 D8 B9 J8 G7 E1 F1 D1 F2 J7 J6 E6 F5 F6 H5 A5 A6 A4 C4 A2 D9 E9 C9 D3 D4 D6 D5 E8 PASS B3 PASS G9 PASS #Aloril, map_opening29 vs GNU Go 3.7.4 + E5 D5 E6 E4 F4 F3 D4 C4 E3 D6 C3 B4 D7 C7 E8 C8 B3 B6 A4 B5 D8 D9 E9 C9 A5 A6 A3 B7 G3 A8 F2 B8 G7 C6 PASS #Aloril, map_opening30 vs GNU Go 3.7.4 + E5 C5 D7 D3 G6 G3 D4 C4 E3 D2 E2 H5 H1 H6 G7 B7 D1 C2 C1 B1 E1 B2 C8 B8 D5 C7 D8 B9 C6 B6 D6 C9 D9 A3 H7 B3 G5 B5 G4 B4 H4 PASS H3 PASS G2 PASS F3 PASS J6 PASS J5 PASS PASS #Aloril, map_opening31 vs GNU Go 3.7.4 + E5 D4 E4 D3 D5 F6 E3 F8 B4 C7 H5 H7 B6 F5 G4 B7 C6 A6 D7 D8 E7 E8 A5 A7 F7 G6 G7 G8 H6 J7 J6 H8 C3 C9 G5 D9 D2 F9 C4 B8 F4 B9 E6 PASS PASS #Aloril, map_opening32 vs GNU Go 3.7.4 + E5 C3 E3 G3 G5 F4 E4 H4 F2 C6 H5 E7 F7 F8 G7 G8 D7 E8 D6 H7 H6 C7 D8 H8 E6 J7 B8 B7 C4 B4 D3 C2 C5 B5 C8 A8 D2 D1 E1 C1 E9 J9 F6 F9 D9 J6 J5 B9 C9 A7 A9 D5 D4 B9 B3 B2 A9 A3 B9 B6 G2 A4 J4 A2 H3 H9 G4 PASS F3 PASS F5 PASS PASS #Aloril, map_opening33 vs GNU Go 3.7.4 + E5 C4 E3 G6 C6 D2 E2 B4 F7 G7 F8 G8 H5 E1 F1 D1 F2 B2 D3 C3 B5 C5 B6 A5 A6 A4 D5 D4 E4 A2 H6 C2 H7 PASS H8 PASS G5 PASS F6 PASS G9 PASS PASS #Aloril, map_opening34 vs GNU Go 3.7.4 + E5 D4 E4 D3 D5 F6 E3 F8 B4 C7 H5 H7 B6 F5 G4 B7 C6 H6 D7 D8 E7 E8 F7 G5 H4 A6 A5 A7 G7 G8 G6 J6 J5 H8 C3 C9 D2 D9 C4 F9 F4 B8 E6 B9 PASS #Aloril, map_opening35 vs GNU Go 3.7.4 + E5 D4 E4 D3 D5 G7 E3 E2 F2 D2 G3 B4 E7 F8 H6 H8 E8 B6 C5 B8 B5 A5 C4 B3 C3 C2 E1 B2 C7 B7 C8 B9 C9 D1 F1 C6 D6 A8 H7 A3 G6 B1 F7 A4 G8 PASS F9 PASS J8 PASS H9 PASS PASS #Aloril, map_opening36 vs GNU Go 3.7.4 + E5 C5 D7 E4 F5 G3 D4 B7 C4 C8 F2 E3 E2 D3 F3 G4 F4 G2 H5 B4 C3 E8 D8 G8 D9 H4 G5 B3 C2 B2 C6 B6 C7 B1 D5 B5 B8 A8 C9 C1 D1 A9 B9 A7 H7 A5 H8 PASS G7 PASS H2 PASS G1 PASS J4 PASS H3 PASS F8 PASS G9 PASS E7 PASS E9 PASS PASS #Aloril, map_opening37 vs GNU Go 3.7.4 + E5 D4 E4 D3 D5 E3 G3 C7 C5 F7 B3 F3 G4 G6 B6 H5 G5 B7 F6 G7 E7 E8 D7 D8 H4 C6 B5 A6 A5 A7 H6 H7 J5 J7 J6 D6 E6 C9 C3 C8 C4 F8 D2 H8 F2 G9 E2 F9 F4 PASS PASS #Aloril, map_opening38 vs GNU Go 3.7.4 Index: map_opening_vs_gnugo.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/map_opening_vs_gnugo.py,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** map_opening_vs_gnugo.py 27 Oct 2006 02:17:17 -0000 1.3 --- map_opening_vs_gnugo.py 28 Oct 2006 06:47:01 -0000 1.4 *************** *** 183,189 **** def map_opening(count, size=9): ! #engine_cmd = "/usr/local/src/gnugo-3.7.4/interface/gnugo --mode gtp --chinese-rules --never-resign --capture-all-dead" ! engine_cmd = "/usr/local/src/gnugo-3.7.10/interface/gnugo --mode gtp --chinese-rules --never-resign --capture-all-dead" ! m = Match(size, engine_cmd, simple_go.WHITE) fp = open("map_opening_%ix%i.log" % (size, size), "a") fp.write("-"*60 + "\n") --- 183,188 ---- def map_opening(count, size=9): ! engine_cmd = "/usr/local/src/gnugo-3.6/interface/gnugo --mode gtp --chinese-rules --never-resign --capture-all-dead" ! m = Match(size, engine_cmd, simple_go.BLACK) fp = open("map_opening_%ix%i.log" % (size, size), "a") fp.write("-"*60 + "\n") |
From: Aloril <al...@us...> - 2006-10-27 02:17:31
|
Update of /cvsroot/londerings/go/simple_go In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv10791 Modified Files: 9x9_white_opening.lst map_opening_vs_gnugo.py Log Message: white opening: GNU Go 3.6 and 3.7.10 as black done Index: 9x9_white_opening.lst =================================================================== RCS file: /cvsroot/londerings/go/simple_go/9x9_white_opening.lst,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -r1.5 -r1.6 *** 9x9_white_opening.lst 24 Oct 2006 03:49:58 -0000 1.5 --- 9x9_white_opening.lst 27 Oct 2006 02:17:17 -0000 1.6 *************** *** 68,69 **** --- 68,122 ---- G7 D4 F3 D7 F5 E2 F2 E3 E8 D8 F7 F1 G1 E1 H2 E6 D9 C9 E9 C8 E5 D5 E7 F6 G6 D6 E4 D3 G3 B3 G5 B7 H3 PASS G4 PASS H1 PASS #Aloril, map_opening3 vs GNU Go 3.6 E5 G5 G6 C6 H5 D4 G4 E7 E4 D3 F8 E8 F7 F2 E9 D9 F9 C8 H2 G3 H3 E3 G2 F3 F4 D5 E6 D6 F1 E1 G1 B2 F6 B7 H4 E2 H7 PASS H6 PASS G8 PASS F5 PASS #Aloril, map_opening4 vs GNU Go 3.6 + E5 G5 F7 F6 D7 E6 D6 D5 D4 C5 E4 C4 E2 C2 G2 H3 G3 H2 E7 G4 G7 H6 B6 B5 C6 D3 A5 A4 A6 B3 H7 G6 J6 J5 J7 J4 C8 E3 B7 F4 B8 F5 E8 D2 G8 F2 D9 E1 C9 G1 PASS F3 PASS PASS #Aloril, map_opening5 vs GNU Go 3.6 + E5 G5 F6 C6 D7 D4 C7 E4 C5 C4 B5 B4 G6 H5 H6 D5 B6 D6 F5 F4 G4 H4 J5 H3 J4 J3 J6 E6 E7 A5 B7 A6 A7 A4 G7 G3 F8 PASS G8 PASS E8 PASS B8 PASS H8 PASS C9 PASS C8 PASS D9 PASS #Aloril, map_opening6 vs GNU Go 3.6 + G7 D4 G3 F5 D7 G5 E5 E4 F4 E6 E8 F2 C6 D6 C3 C4 B4 B5 A4 C5 B2 C7 C8 B7 H6 H5 J5 J4 J6 H4 D2 E3 E2 F3 F1 G1 E1 G2 E7 G6 H7 B8 B9 F7 F8 A5 F6 D5 F7 A8 C9 D3 A9 B6 B3 G4 C1 H3 B1 PASS D9 PASS E9 PASS H8 PASS G9 PASS PASS PASS #Aloril, map_opening7 vs GNU Go 3.6 + E5 G5 C5 F7 F3 C3 B4 E2 D7 F4 H4 E3 H5 G6 H2 G2 G3 F2 E4 H1 H6 H7 B3 C2 G8 F8 D3 D2 B2 G4 E8 F9 C1 D1 B1 D4 D5 E6 D6 E9 D9 C4 E7 F6 F5 H3 C8 J2 C7 H8 B5 G9 B6 G7 C9 J4 PASS J6 PASS J5 PASS PASS #Aloril, map_opening8 vs GNU Go 3.6 + G7 D4 E5 C6 F3 E7 D2 F6 G6 F5 G5 F4 G4 E3 E2 C3 F8 E8 D3 E4 C2 B3 E9 D9 F9 D8 F7 B2 B1 C1 D1 F2 G3 A2 G2 A1 F1 C1 C4 B4 B1 C5 C1 E6 G1 D5 PASS PASS #Aloril, map_opening9 vs GNU Go 3.6 + G7 D4 F3 D7 F5 E2 F2 E3 E8 D8 F7 F1 G1 E1 H2 E6 D9 C9 E9 C8 E5 D5 E7 F6 G6 D6 E4 D3 G4 B3 G2 B7 G5 PASS H8 PASS G8 PASS G3 PASS H6 PASS H4 PASS J7 PASS J8 PASS #Aloril, map_opening10 vs GNU Go 3.6 + F6 D4 F3 D7 E7 D6 D2 E3 E2 F4 H7 G3 G2 F2 F1 H2 F3 C3 H3 F2 G1 H4 E8 D8 D9 C9 E9 C8 H6 G5 H5 G6 G7 F5 E6 E5 J4 J3 J5 C2 F8 D3 G8 D1 H9 E1 H8 H1 PASS PASS #Aloril, map_opening11 vs GNU Go 3.6 + G7 D4 F4 D7 D3 E3 E4 D2 C3 C2 C4 D5 E2 F3 F2 G3 G2 G4 B2 F8 H3 H4 C5 F5 B7 C6 B6 C8 H2 B8 J4 J5 J3 H6 A8 C7 B9 C9 A7 A9 B5 B9 A4 E5 B3 H7 A5 G8 B1 G6 C1 F7 D1 PASS E1 PASS #Aloril, map_opening12 vs GNU Go 3.6 + E5 G5 C5 F7 F3 C3 B4 E2 D7 F4 H4 E3 H5 G6 H2 G2 G3 F2 E4 H1 H6 H7 B2 B3 A3 C2 H3 E8 D8 D9 J6 J7 J2 J4 C9 E9 B8 E7 D4 D3 F5 G4 F6 G7 E6 B1 A2 G1 C4 J1 A4 J3 A1 C1 B6 J5 C7 PASS B7 PASS D6 PASS B9 PASS #Aloril, map_opening12 vs GNU Go 3.6 + F6 D4 F3 D7 E7 D6 D2 E3 E2 F4 H7 G3 F2 G2 E8 H5 D8 C8 C9 B8 H6 C3 G5 G4 H4 H3 J5 B9 D9 E5 F5 J3 J4 E6 F7 C2 G7 D1 J6 D3 PASS E1 PASS F1 PASS PASS #Aloril, map_opening13 vs GNU Go 3.6 + F6 D4 G3 D6 E7 F4 G4 D7 F5 F3 C3 B2 C4 C5 B5 C2 C6 D5 B7 B3 B4 C8 C7 B8 F2 E2 G2 E1 E8 D8 D9 C9 E9 E4 F1 E5 E6 D3 G7 A7 H5 B6 H8 A5 H6 A4 H7 PASS G5 PASS F8 PASS #Aloril, map_opening14 vs GNU Go 3.6 + E5 G5 F5 G6 G4 C5 H4 E7 D6 D7 C6 D3 F3 B5 C7 H6 E2 D2 C8 D8 D1 C1 E1 C2 B6 E3 F2 D5 F7 F8 F6 G7 E6 D9 A5 A4 A6 B3 C9 G8 H5 E4 F4 J5 J4 J6 B8 F9 H3 PASS G2 PASS J2 PASS H2 PASS #Aloril, map_opening15 vs GNU Go 3.6 + E5 G5 C5 F7 F3 C3 B4 E2 D7 F4 H4 E3 H5 G6 H2 G2 G3 F2 E4 H1 H6 H7 B2 B3 A3 C2 H3 E8 J6 J7 J2 J4 D8 D9 C9 E9 B8 E7 D4 D3 F5 G4 F6 G7 E6 B1 A2 G1 C4 J1 A4 J3 A1 C1 B6 J5 C7 PASS B7 PASS D6 PASS B9 PASS #Aloril, map_opening16 vs GNU Go 3.6 + G7 D4 F4 D7 C3 D3 C4 B5 D2 E2 C2 F3 G4 C5 E8 D8 F7 G3 H3 H2 H4 E7 F8 F6 G6 E5 D9 C9 E9 C8 J2 G2 F5 E6 E4 E3 H1 G1 J3 J1 H8 H1 G9 B4 H7 B3 G5 B2 PASS C1 PASS D1 PASS PASS #Aloril, map_opening17 vs GNU Go 3.6 + E5 G5 C5 F7 F3 C3 B4 E2 D7 F4 H4 E3 H5 G6 H2 G2 G3 F2 E4 H1 H6 H7 B2 B3 A3 C2 H3 E8 J6 J7 J2 J4 D8 D9 C9 E9 B8 E7 D4 D3 F5 G4 F6 G7 E6 B1 A2 G1 C4 J1 A4 J3 A1 C1 C6 J5 C8 PASS C7 PASS B6 PASS A7 PASS A8 PASS #Aloril, map_opening18 vs GNU Go 3.6 + F6 D4 E3 G3 D3 E4 C3 G5 G6 D6 C4 E8 H6 G8 B6 C5 B5 C7 B7 C8 F2 G2 G1 H1 F1 H2 F3 F4 B8 B9 A8 C6 A9 C9 B2 H7 D2 H5 C1 J6 B3 F7 B1 G7 B4 F5 PASS E6 PASS PASS #Aloril, map_opening19 vs GNU Go 3.6 + E5 G5 C7 C3 F7 F3 H6 H5 J5 J4 J6 H4 G6 C5 B6 B5 A5 A4 A6 B4 C6 E4 D5 D4 F5 F4 E6 PASS E7 PASS G7 PASS D7 PASS PASS #Aloril, map_opening20 vs GNU Go 3.6 + F6 D4 G3 D6 E7 F4 G4 D7 F5 F3 C3 B2 C4 C5 B5 C2 C6 D5 B7 B3 B4 C8 C7 B8 F2 E2 G2 E1 E8 D8 D9 C9 E9 E4 F1 E5 E6 D3 H5 A7 G7 B6 H8 A5 H6 A4 H7 PASS G5 PASS F8 PASS #Aloril, map_opening21 vs GNU Go 3.6 + E5 G5 D7 F3 D3 F7 E2 F2 F1 E8 D8 D9 C9 E9 B8 G1 E1 G2 E3 E6 D6 E7 F4 G4 F5 F6 C5 H7 C2 PASS C7 PASS D5 PASS C3 PASS B7 PASS C4 PASS B9 PASS #Aloril, map_opening1 vs GNU Go 3.7.10 + E5 G5 D7 F3 D3 F7 E8 F8 F9 E2 D2 D1 C1 E1 B2 G9 E9 G8 E7 E4 D4 E3 F6 G6 F5 F4 C5 H3 C8 PASS B7 PASS B4 PASS C6 PASS C2 PASS B8 PASS C4 PASS B6 PASS D6 PASS #Aloril, map_opening2 vs GNU Go 3.7.10 + G7 D4 C3 D3 C4 C5 B5 C6 B6 C7 D2 E2 C2 G5 H5 G6 H6 F7 G8 F8 J8 H4 H9 B7 E1 F2 F1 G1 D1 H2 F9 E8 E9 D9 G9 D8 J7 A6 A4 J5 J6 J4 A5 A7 B3 G3 A3 PASS B1 PASS B2 PASS #Aloril, map_opening3 vs GNU Go 3.7.10 + G7 D4 G3 F5 G5 E7 C7 B6 D2 E3 E2 F3 F2 C3 F8 E8 C2 B2 E9 D9 F9 D8 B1 B3 F6 E6 F7 G4 H4 F4 H3 D3 A2 A3 C1 A1 H6 A2 H5 B7 G2 C8 H7 C6 H8 D7 J2 PASS H2 PASS #Aloril, map_opening4 vs GNU Go 3.7.10 + G6 D5 F3 F5 G5 F6 G7 E3 E2 D3 F4 D2 F7 E7 E8 D7 F2 D8 F8 E4 D1 C1 E1 C2 D9 C9 E9 C8 G3 B3 H4 B7 H3 PASS H5 PASS H8 PASS H7 PASS G9 PASS #Aloril, map_opening5 vs GNU Go 3.7.10 + E5 G5 E7 E3 D5 C4 G6 H5 C5 B4 B5 H7 F4 G3 F3 F2 G4 H3 D4 D3 A4 B3 A3 A2 A5 C2 H4 J4 F5 F8 H6 E8 D7 D8 C7 C8 J5 G7 B8 J3 B9 J7 J6 F7 F6 C9 E4 G2 B7 PASS B6 PASS #Aloril, map_opening6 vs GNU Go 3.7.10 + G5 D5 F7 D3 C7 G3 B5 H7 F4 G6 H5 F6 E7 F3 B3 C6 B6 C2 G8 H8 G7 H6 C4 D4 E6 E5 H9 F5 D6 B2 A2 C5 C3 B1 J8 J7 G9 A1 A3 D2 J9 H4 D8 J5 B7 G4 E8 E4 B4 PASS C8 PASS B9 PASS B8 PASS #Aloril, map_opening7 vs GNU Go 3.7.10 + F5 D5 D6 C6 E6 C7 E3 D3 E2 E8 D2 G7 C3 H5 H3 B4 C4 C5 B3 G4 B5 G3 G2 F4 G6 H6 B6 B7 F3 E4 D4 H4 H2 A6 A4 J3 J2 J4 A5 A7 C2 E7 A3 D7 F2 E5 PASS G5 PASS F6 PASS PASS #Aloril, map_opening8 vs GNU Go 3.7.10 + F5 D5 E7 E3 C6 G4 G5 H4 E4 D4 H5 B5 F4 F3 B6 E6 F6 D6 D7 C5 E5 J5 J6 J4 H7 A6 B7 A7 A8 A5 B8 G3 G8 D3 F8 B2 H6 PASS F7 PASS C7 PASS D8 PASS C9 PASS B9 PASS #Aloril, map_opening9 vs GNU Go 3.7.10 + F6 D4 C3 D3 C4 C5 B5 C6 B6 E7 F7 G5 H6 H5 G6 E8 H8 G8 B7 C7 C8 F8 C2 D2 D1 E1 C1 E2 D8 D7 B8 D9 C9 E9 B3 F5 A4 J6 A5 H7 A3 G7 A7 E6 PASS J8 PASS H9 PASS PASS #Aloril, map_opening10 vs GNU Go 3.7.10 + G7 D4 G4 D6 E3 D3 E2 E8 F8 E7 D2 C2 C1 B2 E9 D9 F9 D8 B1 F5 G5 F6 G6 F4 F3 F7 G8 A2 E4 E5 D1 C3 A1 B7 G2 PASS H3 PASS H2 PASS H4 PASS F2 PASS H7 PASS H9 PASS H8 PASS #Aloril, map_opening11 vs GNU Go 3.7.10 + G6 D5 F3 F5 G5 F6 G7 E3 E2 D3 F4 D2 F2 F7 E4 D4 G8 F8 F9 E9 G9 E8 D1 C1 E1 C2 E5 E6 H4 C7 G3 PASS H3 PASS H5 PASS H8 PASS H2 PASS G1 PASS #Aloril, map_opening12 vs GNU Go 3.7.10 + F6 D4 F3 D7 C3 G7 C4 G6 D3 F5 B7 D5 G4 C5 B5 H5 H4 E4 E3 C8 J5 J6 J4 G5 C6 D6 C7 B8 A8 B9 A7 F4 A6 D8 A9 F7 G3 E6 B4 PASS A5 PASS B2 PASS C2 PASS H2 PASS G2 PASS E2 PASS A3 PASS #Aloril, map_opening13 vs GNU Go 3.7.10 + E5 G5 F7 F6 D7 E6 E7 D6 G7 C6 G3 F4 E4 F3 F2 E2 B7 C7 C8 B6 H3 H4 G4 G2 E3 F5 C4 B3 H2 F1 H5 H6 J4 G6 H7 J6 J5 B8 B9 A7 C9 J7 J8 H8 G8 J9 G9 E8 E9 A9 A8 H1 J2 A9 D8 A8 H9 J8 J1 G1 F9 D3 F8 D4 PASS D5 PASS C3 PASS B4 PASS C5 PASS PASS #Aloril, map_opening14 vs GNU Go 3.7.10 + G6 D5 F3 F5 G5 F6 G7 E3 E2 D3 F4 D2 F2 F7 E4 D4 G8 F8 F9 E9 G9 E8 D1 C1 E1 C2 E5 E6 D6 D7 H4 C6 G3 PASS H3 PASS H5 PASS H8 PASS H2 PASS G1 PASS #Aloril, map_opening15 vs GNU Go 3.7.10 + F5 D5 D6 C6 E6 C7 E3 D3 E2 E8 D2 G7 G6 C3 F7 G8 C2 B2 F8 F9 H6 H7 B1 B3 E7 D8 J7 J8 J6 E4 F4 A2 E5 D4 C1 D7 A1 C5 G5 H9 F3 PASS H4 PASS H3 PASS G3 PASS #Aloril, map_opening16 vs GNU Go 3.7.10 + F5 D5 C7 E6 E3 C3 E2 B6 E8 F7 B7 G6 H3 F8 D7 H5 B1 D2 D3 C2 C4 B4 C5 C6 F9 G9 E9 G8 D4 B5 D6 A3 E5 G4 G3 A7 A8 A6 D1 C1 E1 B3 F6 E7 G5 H6 C8 H4 J4 J5 J3 F4 F3 E4 D5 H7 D8 A1 B8 B2 G2 PASS H1 PASS H2 PASS #Aloril, map_opening17 vs GNU Go 3.7.10 + E5 G5 G7 F6 F7 E6 E7 D6 C8 C3 G3 H4 E3 H2 C2 D2 D3 B2 G2 C4 B6 D7 D8 C7 B7 H6 H7 C5 J6 J5 J7 G6 B5 B4 A4 A3 A5 C6 F8 C1 E9 H3 B8 E2 D9 F2 F9 G1 H8 F3 G9 G4 PASS D4 PASS E4 PASS F5 PASS D5 PASS PASS #Aloril, map_opening18 vs GNU Go 3.7.10 + G6 D5 C7 G4 E6 C4 H5 H4 E5 E4 B6 B5 J4 J3 J5 H3 F5 D6 D7 C6 B7 G5 H6 F4 A5 A4 A6 B3 F6 PASS E8 PASS F7 PASS D8 PASS F8 PASS B8 PASS C9 PASS B9 PASS #Aloril, map_opening19 vs GNU Go 3.7.10 + F6 D4 C3 D3 C4 C5 B5 C6 B6 E7 F7 G5 H6 H5 G6 E8 G8 B7 D2 E2 C2 E1 F5 F4 J5 H4 J4 J3 J6 H3 D5 D6 E5 E4 F8 A6 A4 D1 C1 E6 E9 D9 F9 C8 B3 A7 A5 F3 J7 PASS J8 PASS H9 PASS A3 PASS A2 PASS #Aloril, map_opening20 vs GNU Go 3.7.10 + E5 G5 C6 F3 D3 F7 D7 E8 D8 E2 D2 D9 C9 E9 C8 D1 C1 E1 B2 E3 E4 F4 E6 E7 F6 G6 F5 H3 C3 G7 D6 PASS B3 PASS D4 PASS B1 PASS B7 PASS B6 PASS #Aloril, map_opening21 vs GNU Go 3.7.10 + F6 D4 F3 D7 C3 G7 C4 G6 D3 F5 B7 D5 G4 C5 B5 H5 H4 E4 E3 C8 J5 J6 J4 G5 C6 D6 C7 B8 A8 B9 A7 F4 A6 D8 A9 F7 G3 E6 B4 PASS B2 PASS C2 PASS A5 PASS H2 PASS G2 PASS E2 PASS A3 PASS #Aloril, map_opening22 vs GNU Go 3.7.10 + F5 D5 F7 E4 G3 D7 E2 D3 D2 C2 E8 D8 D9 E7 F8 C9 E9 C8 C1 B2 F4 E3 F2 E6 F6 B1 D1 E5 F3 C3 H4 B7 H2 PASS G5 PASS H3 PASS H6 PASS G6 PASS G8 PASS H7 PASS #Aloril, map_opening23 vs GNU Go 3.7.10 + E5 G5 G7 F6 F7 E6 E7 D6 C8 C3 G3 H4 E3 H2 C2 D2 D3 B2 C4 B3 H3 J3 E2 C1 G2 D5 B6 C5 B5 B4 D4 H6 G6 F5 E4 H7 H8 J8 G8 G4 F2 E1 D7 H1 C6 J2 A4 A3 A5 J9 H9 J7 B8 G1 E8 F1 A7 F4 B7 F3 D8 PASS #Aloril, map_opening24 vs GNU Go 3.7.10 + F5 D5 F7 E4 G3 D7 E2 D3 D2 C2 E8 D8 D9 E7 F8 C9 E9 C8 C1 B2 F4 E3 F2 E6 F6 B1 D1 E5 F3 C3 H4 B7 G5 PASS H5 PASS H2 PASS H3 PASS G7 PASS H8 PASS H7 PASS G9 PASS #Aloril, map_opening25 vs GNU Go 3.7.10 + G5 D5 F7 D3 C7 G3 B5 H7 F4 G6 H5 F6 E7 F3 B3 C6 B6 C2 G8 H8 G7 H6 C4 D4 E6 E5 H9 F5 D6 B2 A2 C5 C3 B1 J8 J7 A3 J9 G9 J8 A1 D2 D8 G4 B7 H4 E8 J5 B4 E4 C8 PASS B9 PASS B8 PASS #Aloril, map_opening26 vs GNU Go 3.7.10 + G7 D4 C3 D3 C4 C5 B5 C6 B6 C7 D2 E2 C2 G5 H5 G6 H6 F7 G8 F8 J8 H4 H9 B7 E1 F2 F1 G1 D1 H2 F9 E8 E9 D9 G9 D8 J7 A6 A4 J5 A5 A7 J6 J4 B3 G3 A3 PASS B1 PASS B2 PASS #Aloril, map_opening27 vs GNU Go 3.7.10 + E5 G5 C5 F7 F3 C3 B4 E2 D7 F4 H4 E3 H5 G6 G3 H1 E4 H6 E8 F8 B2 C2 F2 F1 H2 G1 J3 G4 G2 J5 B3 D4 J1 J2 F9 G9 J1 E1 D5 J2 E9 G8 J1 J6 D3 D2 C1 J2 C4 H3 E7 D1 B1 E6 D6 F6 D3 F5 D4 J4 C8 PASS B7 PASS B8 PASS A6 PASS B6 PASS D8 PASS #Aloril, map_opening28 vs GNU Go 3.7.10 + F6 D4 C3 D3 C4 C5 B5 C6 B6 E7 F7 G5 H6 H5 G6 E8 G8 B7 D2 E2 C2 E1 F5 F4 G4 H4 D5 E5 C7 D6 C8 D8 C9 F8 H7 D7 B8 D1 C1 G3 J5 G9 H9 F9 J4 J3 J6 D9 E6 F3 A7 H3 H8 PASS B4 PASS A8 PASS A6 PASS #Aloril, map_opening29 vs GNU Go 3.7.10 + E5 G5 C5 F7 F3 C3 B4 E2 D7 F4 H4 E3 H5 G6 G3 H1 E4 H6 E8 F8 B2 C2 F2 F1 H2 G1 C4 G4 B3 G2 F9 G9 E9 G8 D3 D2 C1 D4 D1 E1 B1 H3 D5 E7 D8 E6 D6 F5 D3 J2 D4 J5 B6 J4 B7 PASS C8 PASS B8 PASS A5 PASS A6 PASS #Aloril, map_opening30 vs GNU Go 3.7.10 + F6 D4 C3 D3 C4 C5 B5 C6 B6 E7 F7 G5 H6 H5 G6 E8 G8 B7 D2 E2 C2 E1 F5 F4 G4 H4 D5 E5 C7 D6 C8 D8 C9 F8 H7 D7 B8 D1 C1 G3 J5 G9 H9 F9 J4 J3 J6 D9 E6 F3 A7 H3 B4 PASS H8 PASS A8 PASS A6 PASS #Aloril, map_opening31 vs GNU Go 3.7.10 + G7 D4 C3 D3 C4 C5 B5 C6 B6 C7 D2 E2 C2 G5 H5 G6 H6 F7 G8 F8 J8 H4 H9 B7 E1 F2 F1 G1 D1 H2 F9 E8 E9 D9 G9 D8 J7 A6 A4 J5 J6 J4 A5 A7 A3 G3 B2 PASS B4 PASS B1 PASS #Aloril, map_opening32 vs GNU Go 3.7.10 + G7 D4 C3 D3 C4 C5 B5 C6 B6 C7 D2 E2 C2 G5 H5 G6 H6 F7 G8 F8 J8 H4 H9 B7 E1 F2 F1 G1 D1 H2 F9 E8 E9 D9 G9 D8 J7 A6 A4 J5 A5 A7 A3 J4 J6 G3 B2 PASS B4 PASS B1 PASS #Aloril, map_opening33 vs GNU Go 3.7.10 + E5 G5 F5 G6 F4 C6 G4 E7 C4 D5 D4 B5 B4 D6 H4 H5 J5 J6 J4 A4 A3 A5 B2 F6 C5 B6 E6 F7 B3 D8 E3 PASS D3 PASS F3 PASS G2 PASS F2 PASS H3 PASS #Aloril, map_opening34 vs GNU Go 3.7.10 + G6 D5 C7 G4 E6 C4 H5 H4 E5 E4 B6 B5 J4 J3 J5 H3 F5 D6 D7 C6 B7 G5 H6 F4 A5 A4 A6 B3 E7 PASS F7 PASS G7 PASS H8 PASS G8 PASS C8 PASS E8 PASS D9 PASS C9 PASS #Aloril, map_opening35 vs GNU Go 3.7.10 Index: map_opening_vs_gnugo.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/map_opening_vs_gnugo.py,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -r1.2 -r1.3 *** map_opening_vs_gnugo.py 24 Oct 2006 03:49:58 -0000 1.2 --- map_opening_vs_gnugo.py 27 Oct 2006 02:17:17 -0000 1.3 *************** *** 184,188 **** def map_opening(count, size=9): #engine_cmd = "/usr/local/src/gnugo-3.7.4/interface/gnugo --mode gtp --chinese-rules --never-resign --capture-all-dead" ! engine_cmd = "/usr/local/src/gnugo-3.6/interface/gnugo --mode gtp --chinese-rules --never-resign --capture-all-dead" m = Match(size, engine_cmd, simple_go.WHITE) fp = open("map_opening_%ix%i.log" % (size, size), "a") --- 184,188 ---- def map_opening(count, size=9): #engine_cmd = "/usr/local/src/gnugo-3.7.4/interface/gnugo --mode gtp --chinese-rules --never-resign --capture-all-dead" ! engine_cmd = "/usr/local/src/gnugo-3.7.10/interface/gnugo --mode gtp --chinese-rules --never-resign --capture-all-dead" m = Match(size, engine_cmd, simple_go.WHITE) fp = open("map_opening_%ix%i.log" % (size, size), "a") |
From: Aloril <al...@us...> - 2006-10-24 03:50:09
|
Update of /cvsroot/londerings/go/simple_go In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv10326 Modified Files: 9x9_white_opening.lst map_opening_vs_gnugo.py Log Message: white GNU Go 3.7.4 almost done; GNU Go 3.6 started Index: 9x9_white_opening.lst =================================================================== RCS file: /cvsroot/londerings/go/simple_go/9x9_white_opening.lst,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -r1.4 -r1.5 *** 9x9_white_opening.lst 21 Oct 2006 13:06:55 -0000 1.4 --- 9x9_white_opening.lst 24 Oct 2006 03:49:58 -0000 1.5 *************** *** 34,39 **** F6 D4 D3 E4 G4 D6 E7 D7 C3 E3 E2 F2 D1 G3 F5 B4 B3 D8 C4 C5 E8 H4 G8 H6 B5 B6 A4 A6 A5 F1 E1 G7 D2 H8 A3 F8 B2 G9 C1 E6 PASS F7 PASS E9 PASS G5 PASS F4 PASS E5 PASS G6 #Aloril, map_opening5 vs GNU Go 3.7.4 E5 G5 C7 C3 F7 F3 H6 H5 G6 C5 J5 J4 J6 G4 B6 D6 D7 E6 A3 E7 E8 F6 G7 B5 A5 C6 B7 B4 A4 B2 A2 B1 B3 C2 A6 A1 H8 E4 B8 F5 G9 D5 G8 G2 D8 PASS F8 PASS C9 PASS B9 PASS #Aloril, map_opening6 vs GNU Go 3.7.4 ! E5 G5 F7 F6 D7 E6 E7 D6 G7 C6 G3 F4 E4 F3 F2 E2 B7 C7 C8 B6 H4 H5 H2 F1 G2 J3 E3 D2 D3 C3 B8 J8 H8 J7 A6 A5 A7 B5 H7 H6 G6 F5 H9 J6 J9 J4 E8 J2 D9 D4 C9 D5 E9 G4 PASS H3 PASS G1 PASS H1 #Aloril, map_opening7 vs GNU Go 3.7.4 ! E5 G5 E7 E3 D5 C4 G6 H5 C5 B4 B5 H7 F4 G3 F3 F2 G4 H3 D4 D3 A4 B3 A3 A2 A5 C2 H4 J4 F5 F8 E8 H6 G8 G7 F7 H8 F9 F6 E6 H9 G9 G6 E4 G2 E9 E2 D8 B2 C7 J5 C8 J3 B6 D2 #Aloril, map_opening8 vs GNU Go 3.7.4 F6 D4 F3 D7 E7 D6 E5 E3 F4 D8 D5 C5 E8 E2 F2 E9 F9 D9 G8 F1 G1 E1 H2 E4 E6 C4 F8 C6 G3 B7 H3 B3 H7 PASS H8 PASS G5 PASS G6 PASS H1 PASS #Aloril, map_opening9 vs GNU Go 3.7.4 ! G7 D4 F4 D7 C3 D3 C4 B5 D2 E2 C2 F3 A2 G5 F5 G4 B4 F8 D5 C5 D6 C6 F6 E7 A5 B7 A6 E1 A7 B8 H6 H8 G6 H3 A8 D1 B1 B9 B6 C7 A4 A9 C1 E6 B2 E5 PASS G8 PASS H7 PASS H5 PASS J6 PASS E4 PASS F7 #Aloril, map_opening10 vs GNU Go 3.7.4 --- 34,69 ---- F6 D4 D3 E4 G4 D6 E7 D7 C3 E3 E2 F2 D1 G3 F5 B4 B3 D8 C4 C5 E8 H4 G8 H6 B5 B6 A4 A6 A5 F1 E1 G7 D2 H8 A3 F8 B2 G9 C1 E6 PASS F7 PASS E9 PASS G5 PASS F4 PASS E5 PASS G6 #Aloril, map_opening5 vs GNU Go 3.7.4 E5 G5 C7 C3 F7 F3 H6 H5 G6 C5 J5 J4 J6 G4 B6 D6 D7 E6 A3 E7 E8 F6 G7 B5 A5 C6 B7 B4 A4 B2 A2 B1 B3 C2 A6 A1 H8 E4 B8 F5 G9 D5 G8 G2 D8 PASS F8 PASS C9 PASS B9 PASS #Aloril, map_opening6 vs GNU Go 3.7.4 ! E5 G5 F7 F6 D7 E6 E7 D6 G7 C6 G3 F4 E4 F3 F2 E2 B7 C7 C8 B6 H4 H5 H2 F1 G2 J3 E3 D2 D3 C3 B8 J8 H8 J7 A6 A5 A7 B5 H7 H6 G6 F5 H9 J6 J9 J4 E8 J2 D9 D4 C9 D5 E9 G4 PASS H3 PASS G1 PASS H1 PASS PASS #Aloril, map_opening7 vs GNU Go 3.7.4 ! E5 G5 E7 E3 D5 C4 G6 H5 C5 B4 B5 H7 F4 G3 F3 F2 G4 H3 D4 D3 A4 B3 A3 A2 A5 C2 H4 J4 F5 F8 E8 H6 G8 G7 F7 H8 F9 F6 E6 H9 G9 G6 E4 G2 E9 E2 D8 B2 C7 J5 C8 J3 B6 D2 PASS PASS #Aloril, map_opening8 vs GNU Go 3.7.4 F6 D4 F3 D7 E7 D6 E5 E3 F4 D8 D5 C5 E8 E2 F2 E9 F9 D9 G8 F1 G1 E1 H2 E4 E6 C4 F8 C6 G3 B7 H3 B3 H7 PASS H8 PASS G5 PASS G6 PASS H1 PASS #Aloril, map_opening9 vs GNU Go 3.7.4 ! G7 D4 F4 D7 C3 D3 C4 B5 D2 E2 C2 F3 A2 G5 F5 G4 B4 F8 D5 C5 D6 C6 F6 E7 A5 B7 A6 E1 A7 B8 H6 H8 G6 H3 A8 D1 B1 B9 B6 C7 A4 A9 C1 E6 B2 E5 PASS G8 PASS H7 PASS H5 PASS J6 PASS E4 PASS F7 PASS #Aloril, map_opening10 vs GNU Go 3.7.4 ! F6 D4 F4 D6 E7 E3 F3 D7 E8 E2 F2 D8 E5 E9 D5 C5 F9 D9 G8 F1 G1 E1 H2 E6 E4 C3 F7 B7 G2 PASS G7 PASS G9 PASS G5 PASS G4 PASS H6 PASS H7 PASS #Aloril, map_opening11 vs GNU Go 3.7.4 ! E5 G5 G7 F6 F7 E6 D5 D6 E7 C6 C8 E3 F4 G3 C4 C2 B7 B6 H6 H5 A6 A5 A7 B5 J5 J4 J6 H3 G6 C7 B8 D7 D8 F5 H8 E4 F8 C3 E9 D4 G8 C5 D9 B4 F9 F3 J7 G4 PASS PASS #Aloril, map_opening12 vs GNU Go 3.7.4 ! F6 D4 D3 E4 G4 D6 E3 F4 F3 E7 C4 C5 B4 G5 H4 H5 J5 J6 J4 H6 A7 B5 A5 B6 A6 B8 B7 C7 A8 B9 A4 C8 A9 E6 C2 F7 G2 G6 B3 F5 G3 PASS B2 PASS D2 PASS H2 PASS E1 PASS E2 PASS J3 PASS #Aloril, map_opening13 vs GNU Go 3.7.4 ! F6 D4 E5 D5 F3 E7 F7 E8 D2 E4 F4 G8 C3 B4 B3 H6 H5 G6 G5 C4 J6 J7 J5 G7 A4 A5 A3 B5 F8 F9 E6 D6 F5 E3 E2 D3 G2 H8 H3 D7 B2 B7 C1 PASS G3 PASS B1 PASS D1 PASS F2 PASS #Aloril, map_opening14 vs GNU Go 3.7.4 ! G5 D5 D3 E4 E3 F4 F3 G4 G7 F8 H2 H3 C4 C5 G3 H4 B4 B5 A5 A6 A4 B6 J2 J3 H8 H6 D4 F5 C2 G6 B3 H5 B2 G8 G2 F7 E2 H7 D1 H9 C1 J8 PASS PASS #Aloril, map_opening15 vs GNU Go 3.7.4 ! F5 D5 D6 C6 E6 C7 E3 D3 E2 E8 G8 D2 E4 F7 D4 C4 G7 F6 G6 E1 F1 D1 C3 C2 G2 F8 F9 E9 G9 D7 E5 C5 E7 D8 H5 B3 H3 PASS G4 PASS G3 PASS F2 PASS H6 PASS H4 PASS #Aloril, map_opening16 vs GNU Go 3.7.4 ! F6 D4 F3 D7 E7 D6 E5 E3 F4 D8 D5 C5 E8 E2 F2 E9 F9 D9 G8 F1 G1 E1 H2 E4 E6 C4 F8 C6 G3 B7 H3 B3 H7 PASS H8 PASS H1 PASS G5 PASS G6 PASS #Aloril, map_opening17 vs GNU Go 3.7.4 ! E5 G5 F6 C6 D7 D4 C7 E4 C5 C4 B5 B4 G6 H5 H6 D5 B6 D6 F5 F4 G4 H4 J5 H3 J4 J3 J6 E6 E7 A5 B7 A6 A7 A4 H7 G3 G8 PASS F8 PASS F7 PASS B8 PASS D8 PASS C9 PASS B9 PASS #Aloril, map_opening18 vs GNU Go 3.7.4 ! E5 G5 C5 F7 D7 F3 D3 E2 D2 E8 D8 D9 C9 E9 C8 D1 C1 E1 C2 E3 E4 F4 E6 F6 E7 F8 F5 H4 B3 H6 C4 PASS B2 PASS D4 PASS B7 PASS B8 PASS C6 PASS #Aloril, map_opening19 vs GNU Go 3.7.4 ! E5 G5 C5 F7 F3 C3 B4 E2 D7 F4 H4 E3 H5 G6 G3 H1 E4 H6 E8 F8 B2 C2 F2 F1 H3 B3 A3 H2 J2 G2 D3 D2 J3 E1 F9 G9 E9 G8 D4 B1 A2 J5 F5 G4 E7 F6 E6 J6 C4 J4 A4 C1 A1 J1 C8 PASS B7 PASS B8 PASS B6 PASS C6 PASS #Aloril, map_opening20 vs GNU Go 3.7.4 ! G7 D4 F3 D7 F5 E2 F2 E3 E8 D8 E1 D1 F1 D2 F7 E6 D9 C9 E9 C8 E5 D5 E7 F6 G6 D6 E4 C3 G4 B5 G5 PASS G3 PASS H8 PASS G8 PASS H2 PASS H3 PASS H6 PASS J7 PASS J8 PASS PASS #Aloril, map_opening21 vs GNU Go 3.7.4 ! F6 D4 G3 D6 E7 F4 G4 D7 F5 F3 C3 B2 C4 C5 E5 D5 F2 E2 G2 E4 E8 D8 D9 C9 E9 C8 E1 D2 D1 C1 F1 C2 E6 B4 G7 B3 H5 D3 H6 PASS G6 PASS H4 PASS H8 PASS G8 PASS J7 PASS J8 PASS #Aloril, map_opening22 vs GNU Go 3.7.4 ! F6 D4 G4 D6 E3 E7 F7 D3 E2 E8 F8 D2 E9 D9 F9 D8 D1 C1 E1 C2 E5 E4 F4 D5 E6 B5 F2 PASS H5 PASS H6 PASS G3 PASS G6 PASS G2 PASS H4 PASS #Aloril, map_opening23 vs GNU Go 3.7.4 ! F6 D4 E4 E3 E5 D5 D6 C6 D7 F3 C7 B6 G4 H3 H4 G3 B7 A6 J3 J2 J4 H2 A7 B4 F4 C3 G7 PASS F8 PASS H8 PASS H6 PASS G5 PASS G8 PASS E6 PASS H7 PASS F7 PASS #Aloril, map_opening24 vs GNU Go 3.7.4 ! F6 D4 D3 E4 G4 D6 E3 F4 F3 E7 C4 C5 B4 G5 H4 H5 J5 J6 J4 H6 A7 B5 A5 B6 A6 B8 B7 C7 A8 B9 F5 G7 A4 C8 A9 F7 C2 E6 G2 G6 B3 E5 G3 PASS B2 PASS D2 PASS H2 PASS E1 PASS E2 PASS J3 PASS #Aloril, map_opening25 vs GNU Go 3.7.4 ! E5 G5 D7 F3 G7 D4 C5 C4 B5 F6 F7 E6 B4 D6 C6 D5 E7 B3 A3 B2 H6 H5 J5 J4 J6 H4 A2 G6 H7 B1 A4 A1 B7 C3 C8 E4 B8 F5 D8 G2 B6 PASS F8 PASS E9 PASS D9 PASS #Aloril, map_opening27 vs GNU Go 3.7.4 ! E5 G5 F5 G6 G4 C5 H4 E7 D6 D7 C6 D3 F3 B5 C7 H6 E2 D2 C8 D8 D1 C1 E1 C2 B6 E3 F2 D5 F6 F7 E6 C9 B9 D9 A5 A4 A6 B4 H5 J6 B8 E4 F4 J5 J4 G8 H3 PASS G2 PASS #Aloril, map_opening28 vs GNU Go 3.7.4 ! F6 D4 F4 D6 E3 E7 F7 D3 E2 E8 F8 D2 E5 F9 D5 C5 G9 E9 H8 E1 F1 D1 G2 E6 E4 C4 G8 C6 G3 PASS H4 PASS G4 PASS F2 PASS F5 PASS G6 PASS H7 PASS #Aloril, map_opening29 vs GNU Go 3.7.4 ! F6 D4 E3 G3 D3 E4 C3 G5 C4 D6 G6 E7 B6 C7 B7 F2 E2 F3 B8 C8 C9 D9 B9 D8 C5 D5 F1 G1 E1 C6 B2 H6 B4 G7 A5 F7 C2 F5 A6 E6 A4 PASS #Aloril, map_opening30 vs GNU Go 3.7.4 ! F5 D5 E6 D6 E7 E3 G3 D7 F2 E2 E1 D1 F1 D2 E8 D8 D9 C9 E9 C8 F3 E4 F4 E5 F7 B3 G6 PASS G7 PASS G5 PASS H4 PASS H5 PASS #Aloril, map_opening31 vs GNU Go 3.7.4 ! G7 D4 F4 D7 C3 D3 C4 B5 D2 E2 C2 F3 A2 G5 B4 F8 C5 D5 C6 D6 C7 C8 B8 D9 B9 D1 C9 D8 C1 E1 B6 G4 A5 G8 B2 H7 A6 G6 B7 F7 PASS F5 PASS E4 PASS PASS #Aloril, map_opening32 vs GNU Go 3.7.4 ! G7 D4 F4 D7 D3 E3 E4 D2 C3 C2 E2 F3 G4 F2 C4 D5 B6 C5 B5 B8 H2 B3 E8 D8 E7 E6 D9 C9 E9 F6 G6 F7 G8 F8 G9 F9 G2 F1 G3 F5 G5 G1 H1 E1 E5 B4 H8 C6 H6 B7 J7 A6 J8 A5 PASS PASS #Aloril, map_opening33 vs GNU Go 3.7.4 ! G7 D4 G4 D6 D8 E7 E8 F5 G5 F3 G2 F2 G3 F7 F8 G6 H6 F6 H7 C7 C3 B2 C8 B8 F1 E1 G1 E2 B9 B7 F4 E4 A8 A7 D7 A9 C9 C6 A8 G8 H8 A9 E6 E5 A8 C2 A9 B3 H4 C4 G9 D3 H5 PASS F9 PASS H9 PASS PASS PASS #Aloril, map_opening34 vs GNU Go 3.7.4 ! G7 D4 C3 D3 C4 C5 B5 C6 B6 C7 D2 E2 C2 G5 H5 G6 H6 F7 F8 G8 H4 H7 E1 F2 B7 B8 F1 G1 D1 G2 A8 B9 A7 C8 A9 H3 B3 G4 A4 J4 A3 J6 A5 J5 PASS E8 PASS F9 PASS PASS #Aloril, map_opening35 vs GNU Go 3.7.4 ! G7 D4 E5 C6 F3 E7 D2 F6 G6 F5 G5 F4 G4 E3 E2 C3 F8 E8 D3 E4 C2 B3 E9 D9 F9 D8 B2 A2 F7 B1 G3 A3 C1 A1 H8 D5 H2 E6 H6 B7 J3 PASS H3 PASS F2 PASS G8 PASS J7 PASS J8 PASS #Aloril, map_opening36 vs GNU Go 3.7.4 ! E5 G5 F5 G6 G4 C5 H4 E7 D6 D7 C6 D3 F3 B5 C7 H6 E2 D2 C8 D8 D1 C1 E1 C2 B6 E3 F2 D5 F6 F7 E6 C9 B9 D9 A5 A4 A6 B4 H5 J6 A8 E4 F4 J5 J4 G8 B8 PASS #Aloril, map_opening36 vs GNU Go 3.7.4 ! G7 D4 F4 D7 C3 D3 C4 B5 D2 E2 C2 F3 G4 C5 E8 D8 G3 G2 H2 G1 B4 A2 F7 E6 A3 B2 A5 B6 H1 E1 E5 D5 E4 E3 D9 C9 E9 C8 E7 F6 G6 F5 G5 D6 H8 D1 H6 C1 J3 B3 H3 A4 G8 A6 J7 PASS J8 PASS #Aloril, map_opening1 vs GNU Go 3.6 ! G7 D4 F4 D7 D3 E3 E4 D2 C3 C2 C4 D5 E2 F3 F2 G3 G2 G4 B2 F8 H3 H4 B6 C5 B5 C7 H2 F5 J4 J5 J3 H6 B7 B8 A8 C9 C6 D6 A7 B9 A9 E5 C1 G8 B1 H7 B4 G6 B3 F7 D1 C8 D2 PASS PASS #Aloril, map_opening2 vs GNU Go 3.6 ! G7 D4 F3 D7 F5 E2 F2 E3 E8 D8 F7 F1 G1 E1 H2 E6 D9 C9 E9 C8 E5 D5 E7 F6 G6 D6 E4 D3 G3 B3 G5 B7 H3 PASS G4 PASS H1 PASS #Aloril, map_opening3 vs GNU Go 3.6 ! E5 G5 G6 C6 H5 D4 G4 E7 E4 D3 F8 E8 F7 F2 E9 D9 F9 C8 H2 G3 H3 E3 G2 F3 F4 D5 E6 D6 F1 E1 G1 B2 F6 B7 H4 E2 H7 PASS H6 PASS G8 PASS F5 PASS #Aloril, map_opening4 vs GNU Go 3.6 Index: map_opening_vs_gnugo.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/map_opening_vs_gnugo.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** map_opening_vs_gnugo.py 21 Oct 2006 13:06:55 -0000 1.1 --- map_opening_vs_gnugo.py 24 Oct 2006 03:49:58 -0000 1.2 *************** *** 39,43 **** usage = """ ! This program tries plays gnugo against opening book until it finds position not covered in opening book. --- 39,43 ---- usage = """ ! This program plays gnugo against opening book until it finds position not covered in opening book. *************** *** 183,189 **** def map_opening(count, size=9): ! m = Match(size, "/usr/local/src/gnugo-3.7.4/interface/gnugo --mode gtp --chinese-rules --never-resign --capture-all-dead", simple_go.WHITE) fp = open("map_opening_%ix%i.log" % (size, size), "a") fp.write("-"*60 + "\n") fp.flush() for i in range(count): --- 183,192 ---- def map_opening(count, size=9): ! #engine_cmd = "/usr/local/src/gnugo-3.7.4/interface/gnugo --mode gtp --chinese-rules --never-resign --capture-all-dead" ! engine_cmd = "/usr/local/src/gnugo-3.6/interface/gnugo --mode gtp --chinese-rules --never-resign --capture-all-dead" ! m = Match(size, engine_cmd, simple_go.WHITE) fp = open("map_opening_%ix%i.log" % (size, size), "a") fp.write("-"*60 + "\n") + fp.write("engine command: %s\n" % engine_cmd) fp.flush() for i in range(count): *************** *** 191,197 **** result = m.play() t1 = time.time() ! msg = "%i %.3fs %s %s %s" % (i, t1-t0, result, simple_go.move_list_as_string(m.opening_engine.move_history), m.last_found_opening) print msg ! fp.write(msg + "\n") fp.flush() if result==UNKNOWN_POSITION: --- 194,200 ---- result = m.play() t1 = time.time() ! msg = "%i %.3fs %s %s %s\n" % (i, t1-t0, result, simple_go.move_list_as_string(m.opening_engine.move_history), m.last_found_opening) print msg ! fp.write(msg) fp.flush() if result==UNKNOWN_POSITION: *************** *** 200,204 **** if __name__=="__main__": ! print usage ! map_opening(1000, 9) --- 203,207 ---- if __name__=="__main__": ! #print usage ! map_opening(10000, 9) |
From: Aloril <al...@us...> - 2006-10-21 13:07:06
|
Update of /cvsroot/londerings/go/simple_go In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv17206 Modified Files: 9x9_black_opening.lst 9x9_white_opening.lst test_c_board.py Added Files: map_opening_vs_gnugo.py Log Message: more opening games; opening tree vs gnugo script --- NEW FILE: map_opening_vs_gnugo.py --- # -*- coding: cp1252 -*- #! /usr/bin/env python # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # This program is distributed with GNU Go, a Go program. # # # # Write gn...@gn... or see http://www.gnu.org/software/gnugo/ # # for more information. # # # # Copyright 1999, 2000, 2001, 2002, 2003 and 2004 # # by the Free Software Foundation. # # # # This program is free software; you can redistribute it and/or # # modify it under the terms of the GNU General Public License # # as published by the Free Software Foundation - version 2. # # # # This program is distributed in the hope that it will be # # useful, but WITHOUT ANY WARRANTY; without even the implied # # warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR # # PURPOSE. See the GNU General Public License in file COPYING # # for more details. # # # # You should have received a copy of the GNU General Public # # License along with this program; if not, write to the Free # # Software Foundation, Inc., 59 Temple Place - Suite 330, # # Boston, MA 02111, USA. # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # some comments (like above) and # lots of code copied from twogtp.py from gnugo-3.6-pre4 # additions/changes by Aloril 2004,2005,2006 # minor changes by Blubb Fallo 2004 # Aloril modified to work with simple_go.py # Aloril later modified to map random games against gnugo usage = """ This program tries plays gnugo against opening book until it finds position not covered in opening book. Usage: start with command: python map_opening_vs_gnugo.py """ import popen2 import sys import string import time import os import traceback import random import utils import simple_go import config from play_gtp import get_next_filename, Logger, log import opening_tree SUPER_KO = "superko violation" UNKNOWN_POSITION = "unknown position" GAME_FINISHED = "game finished" def coords_to_sgf(size, board_coords): global debug board_coords = string.lower(board_coords) if board_coords == "pass": return "" letter = board_coords[0] digits = board_coords[1:] if letter > "i": sgffirst = chr(ord(letter) - 1) else: sgffirst = letter sgfsecond = chr(ord("a") + int(size) - int(digits)) return sgffirst + sgfsecond class GTP_connection: # # Class members: # outfile File to write to # infile File to read from def __init__(self, command): try: infile, outfile = popen2.popen2(command) except: print "popen2 failed" sys.exit(1) self.infile = infile self.outfile = outfile log_name = get_next_filename("gtpa%04i.log") self.log_fp = open(log_name, "w") self.log_fp.write(command+"\n") self.log_fp.flush() def exec_cmd(self, cmd): if cmd[-1]!="\n": cmd = cmd + "\n\n" self.outfile.write(cmd) self.outfile.flush() if self.log_fp: self.log_fp.write("Time: %f\n" % time.time()) self.log_fp.write(cmd + "\n\n") self.log_fp.flush() result = "" while 1: line = self.infile.readline() if not line: break if not result and line=="\n": continue if self.log_fp: self.log_fp.write(line) self.log_fp.flush() result = result + line if line=="\n": break return result class Match: def __init__(self, size, command, color): self.engine_command = command self.engine = GTP_connection(command) self.color = color self.boardsize(size) def boardsize(self, size): if size<5 or size>19: return "? unacceptable size\n\n" self.size = size self.engine.exec_cmd("quit") self.engine = GTP_connection(self.engine_command) result = self.engine.exec_cmd("boardsize " + str(size)) if result[0]=="?": return result self.engine.exec_cmd("clear_board") self.opening_engine = simple_go.Game(size) self.opening_engine.save_c_state() self.opening_engine.opening_tree = opening_tree.OpeningTree(self.size, self.color) self.opening_engine.restore_c_state() if not self.opening_engine.opening_tree.opening_tree_dict: msg = "Opening tree not found for " + self.color print msg raise ValueError, msg def play(self, print_flag = False): self.boardsize(self.size) color = simple_go.BLACK self.last_found_opening = "None" while not self.opening_engine.has_2_passes(): if color==simple_go.BLACK: color_str = "black" else: color_str = "white" if color==self.color: result = self.opening_engine.opening_tree.get_move(self.opening_engine) if not result: print "Unknown position:", self.opening_engine print self.opening_engine.current_board return UNKNOWN_POSITION move, no, line, name = result self.last_found_opening = "Opening: %s from %i: %s %s" % (simple_go.move_as_string(move), no, line, name) self.opening_engine.make_move(move) move_str = simple_go.move_as_string(move) result = self.engine.exec_cmd("play %s %s" % (color_str, move_str)) if result[0]=="?": raise ValueError, "engine didn't accept move " + move_str else: move_str = self.engine.exec_cmd("genmove " + color_str) move = simple_go.string_as_move(move_str.split()[1]) if not self.opening_engine.make_move(move): return SUPER_KO if print_flag: print color_str, move_str color = self.opening_engine.current_board.side return GAME_FINISHED def map_opening(count, size=9): m = Match(size, "/usr/local/src/gnugo-3.7.4/interface/gnugo --mode gtp --chinese-rules --never-resign --capture-all-dead", simple_go.WHITE) fp = open("map_opening_%ix%i.log" % (size, size), "a") fp.write("-"*60 + "\n") fp.flush() for i in range(count): t0 = time.time() result = m.play() t1 = time.time() msg = "%i %.3fs %s %s %s" % (i, t1-t0, result, simple_go.move_list_as_string(m.opening_engine.move_history), m.last_found_opening) print msg fp.write(msg + "\n") fp.flush() if result==UNKNOWN_POSITION: break fp.close() if __name__=="__main__": print usage map_opening(1000, 9) Index: 9x9_black_opening.lst =================================================================== RCS file: /cvsroot/londerings/go/simple_go/9x9_black_opening.lst,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -r1.5 -r1.6 *** 9x9_black_opening.lst 7 Oct 2006 08:32:24 -0000 1.5 --- 9x9_black_opening.lst 21 Oct 2006 13:06:55 -0000 1.6 *************** *** 18,20 **** E5 C7 E7 G4 C5 E3 G6 #Aloril, MoGoSmallQdV3: http://cgos.boardspace.net/public/SGF/2006/10/06/316701.sgf E5 C4 E3 G7 C6 D2 H6 #Aloril, ggexp: http://cgos.boardspace.net/public/SGF/2006/10/06/316802.sgf ! E5 C4 E3 G6 C6 D2 E2 B4 F7 G7 F8 G8 H5 A7 B7 A6 D3 C2 C3 B3 D1 B2 B6 A2 A4 A8 B5 A5 B8 H3 G5 F2 G2 H2 F3 PASS F1 E6 F6 PASS D6 PASS E7 PASS H6 PASS H7 H8 J8 PASS G9 PASS H9 PASS A9 PASS D4 PASS C5 PASS C1 PASS B1 PASS E1 PASS A1 PASS A3 PASS H4 PASS G3 PASS J3 PASS J2 PASS H1 #Aloril, gnugo_3.7.4 http://cgos.boardspace.net/public/SGF/2006/10/06/316823.sgf --- 18,24 ---- E5 C7 E7 G4 C5 E3 G6 #Aloril, MoGoSmallQdV3: http://cgos.boardspace.net/public/SGF/2006/10/06/316701.sgf E5 C4 E3 G7 C6 D2 H6 #Aloril, ggexp: http://cgos.boardspace.net/public/SGF/2006/10/06/316802.sgf ! E5 C4 E3 G6 C6 D2 E2 B4 F7 G7 F8 G8 H5 A7 B7 A6 D3 C2 C3 B3 D1 B2 B6 A2 A4 A8 B5 A5 B8 H3 G5 F2 G2 H2 F3 PASS F1 E6 F6 PASS D6 PASS E7 PASS H6 PASS H7 H8 J8 PASS G9 PASS H9 PASS A9 PASS D4 PASS C5 PASS C1 PASS B1 PASS E1 PASS A1 PASS A3 PASS H4 PASS G3 PASS J3 PASS J2 PASS H1 PASS PASS #Aloril, gnugo_3.7.4 http://cgos.boardspace.net/public/SGF/2006/10/06/316823.sgf ! E5 C4 E3 D6 E6 D7 F8 D3 E7 D8 D5 C5 E2 D2 C6 B6 D4 E1 F1 D1 G2 E8 F9 #Aloril, ggexp http://cgos.boardspace.net/public/SGF/2006/10/06/316862.sgf ! E5 G7 E7 E4 F5 #Aloril, GoJin-1.22: http://cgos.boardspace.net/public/SGF/2006/10/06/316976.sgf ! E5 C5 D7 D4 F3 #Aloril, antigoamuct-1.6: http://cgos.boardspace.net/public/SGF/2006/10/07/317029.sgf ! E5 C7 E7 G4 C5 F6 E6 E3 F5 G5 C3 F7 F8 D8 E8 #Aloril, MoGoSmallQdV1.1: http://cgos.boardspace.net/public/SGF/2006/10/07/317061.sgf Index: 9x9_white_opening.lst =================================================================== RCS file: /cvsroot/londerings/go/simple_go/9x9_white_opening.lst,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** 9x9_white_opening.lst 6 Oct 2006 14:22:42 -0000 1.3 --- 9x9_white_opening.lst 21 Oct 2006 13:06:55 -0000 1.4 *************** *** 20,22 **** C3 F6 E7 E4 E6 E5 F7 C5 E2 G6 # Aloril, antigoamuct-1.6: http://cgos.boardspace.net/public/SGF/2006/10/06/316355.sgf E5 G5 F7 F6 D7 E6 E7 D6 G7 C6 E4 C4 # Aloril, ggexp: http://cgos.boardspace.net/public/SGF/2006/10/06/316369.sgf ! G5 D5 D7 E6 E7 F6 F7 G6 G3 F2 H8 H7 H5 H2 H6 G7 G2 G1 H3 H1 F4 E3 C6 C5 G8 J7 B6 B5 A5 A4 A6 B4 D6 E5 J8 E4 PASS F3 PASS F5 PASS G4 PASS H4 PASS J3 PASS J5 PASS J6 #Aloril, gnugo_3.7.4 http://cgos.boardspace.net/public/SGF/2006/10/06/316411.sgf --- 20,39 ---- C3 F6 E7 E4 E6 E5 F7 C5 E2 G6 # Aloril, antigoamuct-1.6: http://cgos.boardspace.net/public/SGF/2006/10/06/316355.sgf E5 G5 F7 F6 D7 E6 E7 D6 G7 C6 E4 C4 # Aloril, ggexp: http://cgos.boardspace.net/public/SGF/2006/10/06/316369.sgf ! G5 D5 D7 E6 E7 F6 F7 G6 G3 F2 H8 H7 H5 H2 H6 G7 G2 G1 H3 H1 F4 E3 C6 C5 G8 J7 B6 B5 A5 A4 A6 B4 D6 E5 J8 E4 C8 F3 B7 J6 B8 J5 F8 F5 D9 H4 D8 J3 PASS G4 PASS PASS #Aloril, gnugo_3.7.4 http://cgos.boardspace.net/public/SGF/2006/10/06/316411.sgf ! G5 D5 C3 E3 #Aloril, NeuroGo http://cgos.boardspace.net/public/SGF/2006/10/06/316879.sgf ! E5 G5 G7 F6 F7 E6 D5 D6 E7 C6 C8 E3 F4 G3 C4 C2 B7 B6 H6 H5 J5 J4 J6 H3 A6 A5 A7 B5 G6 C7 B8 D7 D8 F5 H8 E4 F8 C3 E9 D4 G8 C5 D9 B4 F9 F3 J7 G4 PASS PASS #Aloril, gnugo_3.7.4 http://cgos.boardspace.net/public/SGF/2006/10/06/316892.sgf ! D5 F5 D6 F7 D3 F3 #Aloril, Lazarus-0.90: http://cgos.boardspace.net/public/SGF/2006/10/06/316904.sgf ! E5 G5 G7 F6 F4 F7 #Aloril, MoGoSmallQdV3: http://cgos.boardspace.net/public/SGF/2006/10/06/316958.sgf ! E5 G5 C6 F3 E6 F7 #Aloril, antigoamuct-1.6: http://cgos.boardspace.net/public/SGF/2006/10/07/317087.sgf ! F5 D5 E4 D4 E3 E7 #Aloril, Lazarus-0.90: http://cgos.boardspace.net/public/SGF/2006/10/07/317142.sgf ! E5 G5 G6 C6 H5 D4 G4 E7 E3 D3 E2 D2 F8 E8 F7 E1 F1 D1 G2 F9 G9 E9 G8 D5 E6 D6 E4 D7 H7 B6 H6 A6 F2 PASS H4 PASS F6 PASS H3 PASS F5 PASS PASS #Aloril, gnugo_3.7.4: http://cgos.boardspace.net/public/SGF/2006/10/07/317160.sgf ! G6 D5 F3 F5 G5 F6 G7 E3 E2 D3 F7 E7 F4 E8 D2 C2 F8 E4 E9 D9 F9 C8 F2 C1 D1 C3 G3 D6 H4 C7 H3 B6 H5 PASS H8 PASS H7 PASS J6 PASS J7 PASS #Aloril, map_opening1 vs GNU Go 3.7.4 ! G7 D4 G3 F5 D2 E7 H5 E3 E2 C3 C7 D8 C2 F3 F2 F8 B2 B3 A3 A4 A2 B4 G8 G6 H6 G4 H4 G5 F9 E9 G9 F7 D3 E4 H2 C8 J3 B7 G2 C6 H7 D7 J2 PASS J4 PASS #Aloril, map_opening2 vs GNU Go 3.7.4 ! E5 G5 C5 F7 G4 D6 D5 H4 C6 F4 D3 F3 D7 E8 D8 E2 D2 D1 C1 E1 B2 D9 C9 E9 B8 E7 E6 F6 E3 F2 F5 G3 E4 G6 C8 H7 C2 PASS C7 PASS B4 PASS B5 PASS A3 PASS B3 PASS #Aloril, map_opening3 vs GNU Go 3.7.4 ! G6 D5 F3 F5 G5 F6 G7 E3 E2 D3 D2 C3 F7 E7 E8 D7 D8 C8 C2 F4 G4 B2 B1 A2 C1 D9 F8 C7 E9 C9 G3 B3 A1 E5 F1 PASS F2 PASS H8 PASS H7 PASS H2 PASS H3 PASS H5 PASS G9 PASS #Aloril, map_opening4 vs GNU Go 3.7.4 ! F6 D4 D3 E4 G4 D6 E7 D7 C3 E3 E2 F2 D1 G3 F5 B4 B3 D8 C4 C5 E8 H4 G8 H6 B5 B6 A4 A6 A5 F1 E1 G7 D2 H8 A3 F8 B2 G9 C1 E6 PASS F7 PASS E9 PASS G5 PASS F4 PASS E5 PASS G6 #Aloril, map_opening5 vs GNU Go 3.7.4 ! E5 G5 C7 C3 F7 F3 H6 H5 G6 C5 J5 J4 J6 G4 B6 D6 D7 E6 A3 E7 E8 F6 G7 B5 A5 C6 B7 B4 A4 B2 A2 B1 B3 C2 A6 A1 H8 E4 B8 F5 G9 D5 G8 G2 D8 PASS F8 PASS C9 PASS B9 PASS #Aloril, map_opening6 vs GNU Go 3.7.4 ! E5 G5 F7 F6 D7 E6 E7 D6 G7 C6 G3 F4 E4 F3 F2 E2 B7 C7 C8 B6 H4 H5 H2 F1 G2 J3 E3 D2 D3 C3 B8 J8 H8 J7 A6 A5 A7 B5 H7 H6 G6 F5 H9 J6 J9 J4 E8 J2 D9 D4 C9 D5 E9 G4 PASS H3 PASS G1 PASS H1 #Aloril, map_opening7 vs GNU Go 3.7.4 ! E5 G5 E7 E3 D5 C4 G6 H5 C5 B4 B5 H7 F4 G3 F3 F2 G4 H3 D4 D3 A4 B3 A3 A2 A5 C2 H4 J4 F5 F8 E8 H6 G8 G7 F7 H8 F9 F6 E6 H9 G9 G6 E4 G2 E9 E2 D8 B2 C7 J5 C8 J3 B6 D2 #Aloril, map_opening8 vs GNU Go 3.7.4 ! F6 D4 F3 D7 E7 D6 E5 E3 F4 D8 D5 C5 E8 E2 F2 E9 F9 D9 G8 F1 G1 E1 H2 E4 E6 C4 F8 C6 G3 B7 H3 B3 H7 PASS H8 PASS G5 PASS G6 PASS H1 PASS #Aloril, map_opening9 vs GNU Go 3.7.4 ! G7 D4 F4 D7 C3 D3 C4 B5 D2 E2 C2 F3 A2 G5 F5 G4 B4 F8 D5 C5 D6 C6 F6 E7 A5 B7 A6 E1 A7 B8 H6 H8 G6 H3 A8 D1 B1 B9 B6 C7 A4 A9 C1 E6 B2 E5 PASS G8 PASS H7 PASS H5 PASS J6 PASS E4 PASS F7 #Aloril, map_opening10 vs GNU Go 3.7.4 Index: test_c_board.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/test_c_board.py,v retrieving revision 1.45 retrieving revision 1.46 diff -C2 -r1.45 -r1.46 *** test_c_board.py 7 Oct 2006 08:32:24 -0000 1.45 --- test_c_board.py 21 Oct 2006 13:06:55 -0000 1.46 *************** *** 1175,1184 **** #g.set_komi(g.komi + 100) ! def sgf2string(): ! g = load_sgf.load_file("kgs/t") print g.current_board print c_board.score_board() print move_list_as_string(g.move_history) def gen_both_uct(g): config.use_uct_tactics = False --- 1175,1193 ---- #g.set_komi(g.komi + 100) ! def sgf2string(file_name = "kgs/t"): ! g = load_sgf.load_file(file_name) print g.current_board print c_board.score_board() print move_list_as_string(g.move_history) + def string2sgf(moves_str, file_name, size=9): + g = Game(size) + for move in string_as_move_list(moves_str): + g.make_move(move) + print g.current_board + fp = open(file_name, "w") + fp.write(str(g)) + fp.close() + def gen_both_uct(g): config.use_uct_tactics = False |
From: Aloril <al...@us...> - 2006-10-09 04:03:35
|
Update of /cvsroot/londerings/go/simple_go In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv32458 Modified Files: game.py game_experimental.py Log Message: fixed super-ko bug in both uct (inside just tactical uct it remains at the moment unfixed); also added generic guard in generate_move against illegal moves Index: game.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/game.py,v retrieving revision 1.42 retrieving revision 1.43 diff -C2 -r1.42 -r1.43 *** game.py 7 Oct 2006 18:35:18 -0000 1.42 --- game.py 9 Oct 2006 04:03:23 -0000 1.43 *************** *** 849,853 **** return random.choice(self.list_moves()) ! def generate_move(self, remove_opponent_dead=False, pass_allowed=True): """generate move using scored move generator """ --- 849,853 ---- return random.choice(self.list_moves()) ! def do_generate_move(self, remove_opponent_dead=False, pass_allowed=True): """generate move using scored move generator """ *************** *** 891,894 **** --- 891,902 ---- return self.select_scored_move(remove_opponent_dead, pass_allowed) + def generate_move(self, remove_opponent_dead=False, pass_allowed=True): + move = self.do_generate_move(remove_opponent_dead, pass_allowed) + if not self.legal_move(move): + if config.debug_flag: + dprintnl("illegal move returned by do_generate_move: ", move_as_string(move), "changed to PASS") + move = PASS_MOVE + return move + def save_c_state(self): self.saved_move_list = self.move_history[:] Index: game_experimental.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/game_experimental.py,v retrieving revision 1.50 retrieving revision 1.51 diff -C2 -r1.50 -r1.51 *** game_experimental.py 7 Oct 2006 18:35:19 -0000 1.50 --- game_experimental.py 9 Oct 2006 04:03:23 -0000 1.51 *************** *** 1511,1515 **** self.statistics_str += """ %%stactical block %s %.3f defend %%s%s%%s %.3f attack %%s%s%%s %.3f%%s""" % (move_as_string(pos), prob_score, move_as_string(move_defend), score1, move_as_string(move_attack), score2) ratio2 = prob_score ! if ratio > ratio2: if config.debug_flag: dprintnl("win uct ratio prefered:", move_as_string(move), ratio, ratio2) --- 1511,1515 ---- self.statistics_str += """ %%stactical block %s %.3f defend %%s%s%%s %.3f attack %%s%s%%s %.3f%%s""" % (move_as_string(pos), prob_score, move_as_string(move_defend), score1, move_as_string(move_attack), score2) ratio2 = prob_score ! if ratio > ratio2 or not self.legal_move(move2): if config.debug_flag: dprintnl("win uct ratio prefered:", move_as_string(move), ratio, ratio2) |
From: Aloril <al...@us...> - 2006-10-07 18:35:29
|
Update of /cvsroot/londerings/go/simple_go In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv25172 Modified Files: game.py game_experimental.py play_gtp.py Log Message: concise statistics for log and chat Index: game.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/game.py,v retrieving revision 1.41 retrieving revision 1.42 diff -C2 -r1.41 -r1.42 *** game.py 7 Oct 2006 08:32:24 -0000 1.41 --- game.py 7 Oct 2006 18:35:18 -0000 1.42 *************** *** 47,50 **** --- 47,51 ---- self.opening_tree = None self.komi = config.komi + self.statistics_str = "" if config.use_c: c_board.clear_board(size) Index: game_experimental.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/game_experimental.py,v retrieving revision 1.49 retrieving revision 1.50 diff -C2 -r1.49 -r1.50 *** game_experimental.py 7 Oct 2006 08:37:32 -0000 1.49 --- game_experimental.py 7 Oct 2006 18:35:19 -0000 1.50 *************** *** 910,915 **** dprintnl() self.uct_results = (move_results[0][0], move_results[0][2], global_count) #score, (win, lost), all_moves_total win, lost = move_results[0][2] ! self.win_probability = win / (win + lost) return move_results --- 910,925 ---- dprintnl() self.uct_results = (move_results[0][0], move_results[0][2], global_count) #score, (win, lost), all_moves_total + #statistics-str win, lost = move_results[0][2] ! win_probability = win / (win + lost) ! final_score = self.score_estimate(100) ! if self.current_board.side==BLACK: ! final_score = -final_score ! if final_score>=0: ! score_str = "W+%.1f" % final_score ! else: ! score_str = "B+%.1f" % -final_score ! self.statistics_str = "%s %%swin %%s%s%%s prob. %.3f%%s" % \ ! (score_str, move_as_string(move_results[0][3]), win_probability) return move_results *************** *** 973,977 **** # return move self.time0 = time.time() ! self.win_probability = -1.0 self.uct_results = None #if self.size <= 9 and len(self.move_history)==0: --- 983,987 ---- # return move self.time0 = time.time() ! self.statistics_str = "" self.uct_results = None #if self.size <= 9 and len(self.move_history)==0: *************** *** 1490,1493 **** --- 1500,1504 ---- if config.debug_flag: dprintnl("win uct selected by ratio:", move_as_string(move)) + self.statistics_str = self.statistics_str % ('(', '*', '*', ')') return move move2 = self.select_tactical_uct(remove_opponent_dead, pass_allowed, use_area_switch=False) *************** *** 1495,1507 **** if config.debug_flag: dprintnl("no tactical result, win uct selected:", move_as_string(move)) return move ! ratio2 = self.tactical_uct_results[0][1] if ratio > ratio2: if config.debug_flag: dprintnl("win uct ratio prefered:", move_as_string(move), ratio, ratio2) return move else: if config.debug_flag: dprintnl("tactical uct ratio prefered:", move_as_string(move2), ratio, ratio2) return move2 finally: --- 1506,1526 ---- if config.debug_flag: dprintnl("no tactical result, win uct selected:", move_as_string(move)) + self.statistics_str = self.statistics_str % ('(', '*', '*', ')') return move ! score, prob_score, pos, move_defend, score1, defend_count, move_attack, score2, attack_count = self.tactical_uct_results[0] ! self.statistics_str += """ %%stactical block %s %.3f defend %%s%s%%s %.3f attack %%s%s%%s %.3f%%s""" % (move_as_string(pos), prob_score, move_as_string(move_defend), score1, move_as_string(move_attack), score2) ! ratio2 = prob_score if ratio > ratio2: if config.debug_flag: dprintnl("win uct ratio prefered:", move_as_string(move), ratio, ratio2) + self.statistics_str = self.statistics_str % ('(', '*', '*', ')', '', '', '', '', '', '') return move else: if config.debug_flag: dprintnl("tactical uct ratio prefered:", move_as_string(move2), ratio, ratio2) + if self.current_board.goban[pos]==self.current_board.side: + self.statistics_str = self.statistics_str % ('', '', '', '', '(', '*', '*', '', '', ')') + else: + self.statistics_str = self.statistics_str % ('', '', '', '', '(', '', '', '*', '*', ')') return move2 finally: Index: play_gtp.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/play_gtp.py,v retrieving revision 1.80 retrieving revision 1.81 diff -C2 -r1.80 -r1.81 *** play_gtp.py 7 Oct 2006 08:32:24 -0000 1.80 --- play_gtp.py 7 Oct 2006 18:35:19 -0000 1.81 *************** *** 60,63 **** --- 60,75 ---- debug = 1 + chat_help_msg = """Explanation of statistics: + move made: <my last move> <thinking time>s || + <average score of 100 random games> || + win prob. <best move> <probability between 0 and 1 inclusive with best move> || + tactical block <origin> <score_difference_function(defense, attack) value roughly in range 0.0-1.0> || + defend <best move> <living probability with best defense move> || + attack <best move> <living probability with best attack move> || + Selected method is in parenthesis. + Selected move is inside asterisks. + If you type just help this message is repeated otherwise you get just statistics. + """ + def get_next_filename(pattern): i = 1 *************** *** 188,191 **** --- 200,205 ---- self.move_generated = False self.move_made_last_time = 0 + self.chat_nicks_seen = {} + self.statistics_str = "" log(version.name + " " + version.number + "\n") *************** *** 294,297 **** --- 308,312 ---- def genmove_plain(self, color, remove_opponent_dead=False, pass_allowed=True): + self.statistics_str = "" if config.always_remove_opponent_dead: remove_opponent_dead = True *************** *** 353,357 **** else: time_str = "" ! log("move made: %s %s %s\n" % (color, move, time_str)) self.move_made_last_time = time_now log(str(self.engine.current_board)) --- 368,377 ---- else: time_str = "" ! statistics_str = "move made: %s %s %s" % (color, move, time_str) ! if self.engine.statistics_str: ! self.statistics_str = statistics_str + " " + string.replace(self.engine.statistics_str, "%s", "") ! self.engine.statistics_str = "" ! statistics_str = self.statistics_str ! log(statistics_str + "\n") self.move_made_last_time = time_now log(str(self.engine.current_board)) *************** *** 462,475 **** def chat(self, chat_type, name, msg): ! if hasattr(self.engine, "win_probability"): ! score = self.engine.score_estimate(100) ! if self.engine.current_board.side==simple_go.BLACK: ! score = -score ! if score>=0: ! score_str = "W+%.1f" % score ! else: ! score_str = "B+%.1f" % -score ! return "win probability: %.3f, score estimate with 100 random games: %s" % \ ! (self.engine.win_probability, score_str) white_score, black_score = self.engine.current_board.unconditional_score(simple_go.WHITE + simple_go.BLACK) unresolved = self.engine.size**2 - white_score - black_score --- 482,491 ---- def chat(self, chat_type, name, msg): ! if self.statistics_str: ! reply = self.statistics_str #move and thinking time added ! if msg=="help" or name not in self.chat_nicks_seen: ! self.chat_nicks_seen[name] = True ! reply += " " + chat_help_msg ! return reply white_score, black_score = self.engine.current_board.unconditional_score(simple_go.WHITE + simple_go.BLACK) unresolved = self.engine.size**2 - white_score - black_score |
From: Aloril <al...@us...> - 2006-10-07 08:37:45
|
Update of /cvsroot/londerings/go/simple_go In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv28128 Modified Files: game_experimental.py Log Message: 9x9 chat report too and fixed potential creashing problem with chat Index: game_experimental.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/game_experimental.py,v retrieving revision 1.48 retrieving revision 1.49 diff -C2 -r1.48 -r1.49 *** game_experimental.py 7 Oct 2006 08:32:24 -0000 1.48 --- game_experimental.py 7 Oct 2006 08:37:32 -0000 1.49 *************** *** 910,913 **** --- 910,915 ---- dprintnl() self.uct_results = (move_results[0][0], move_results[0][2], global_count) #score, (win, lost), all_moves_total + win, lost = move_results[0][2] + self.win_probability = win / (win + lost) return move_results *************** *** 971,974 **** --- 973,977 ---- # return move self.time0 = time.time() + self.win_probability = -1.0 self.uct_results = None #if self.size <= 9 and len(self.move_history)==0: *************** *** 1475,1479 **** def select_both_uct(self, remove_opponent_dead=False, pass_allowed=True): old_time_per_move_limit = config.time_per_move_limit - self.win_probability = "?" try: config.time_per_move_limit /= 2.0 --- 1478,1481 ---- *************** *** 1482,1486 **** return move score, (win, lost), total = self.uct_results - self.win_probability = win / (win + lost) ratio = (win+lost) / total if config.debug_flag: --- 1484,1487 ---- |
Update of /cvsroot/londerings/go/simple_go In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv26184 Modified Files: 9x9_black_opening.lst config.py game.py game_experimental.py play_gtp.py test_c_board.py version.py Log Message: if size is > 9, then both tactical and win uct enabled, chat answers with current board situation Index: 9x9_black_opening.lst =================================================================== RCS file: /cvsroot/londerings/go/simple_go/9x9_black_opening.lst,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -r1.4 -r1.5 *** 9x9_black_opening.lst 6 Oct 2006 14:22:42 -0000 1.4 --- 9x9_black_opening.lst 7 Oct 2006 08:32:24 -0000 1.5 *************** *** 15,16 **** --- 15,20 ---- E5 C4 E3 D6 E6 D7 F8 G3 F2 G5 H2 H3 H6 #Aloril, ggexp: http://cgos.boardspace.net/public/SGF/2006/10/06/316292.sgf E5 D4 E4 E3 F3 D5 E6 #Aloril, AnchorMan: http://cgos.boardspace.net/public/SGF/2006/10/06/316383.sgf + E5 D5 E6 E4 F4 D6 E7 D4 F3 #Aloril, Lazarus-0.90: http://cgos.boardspace.net/public/SGF/2006/10/06/316678.sgf + E5 C7 E7 G4 C5 E3 G6 #Aloril, MoGoSmallQdV3: http://cgos.boardspace.net/public/SGF/2006/10/06/316701.sgf + E5 C4 E3 G7 C6 D2 H6 #Aloril, ggexp: http://cgos.boardspace.net/public/SGF/2006/10/06/316802.sgf + E5 C4 E3 G6 C6 D2 E2 B4 F7 G7 F8 G8 H5 A7 B7 A6 D3 C2 C3 B3 D1 B2 B6 A2 A4 A8 B5 A5 B8 H3 G5 F2 G2 H2 F3 PASS F1 E6 F6 PASS D6 PASS E7 PASS H6 PASS H7 H8 J8 PASS G9 PASS H9 PASS A9 PASS D4 PASS C5 PASS C1 PASS B1 PASS E1 PASS A1 PASS A3 PASS H4 PASS G3 PASS J3 PASS J2 PASS H1 #Aloril, gnugo_3.7.4 http://cgos.boardspace.net/public/SGF/2006/10/06/316823.sgf Index: config.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/config.py,v retrieving revision 1.62 retrieving revision 1.63 diff -C2 -r1.62 -r1.63 *** config.py 4 Oct 2006 10:17:15 -0000 1.62 --- config.py 7 Oct 2006 08:32:24 -0000 1.63 *************** *** 136,139 **** --- 136,145 ---- use_uct_tactics = use_uct and False + def use_both_uct(size): + global use_uct + if use_uct and size > 9: + return True + return False + tactics_area_treshold = 0.01 Index: game.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/game.py,v retrieving revision 1.40 retrieving revision 1.41 diff -C2 -r1.40 -r1.41 *** game.py 4 Oct 2006 10:17:15 -0000 1.40 --- game.py 7 Oct 2006 08:32:24 -0000 1.41 *************** *** 881,884 **** --- 881,886 ---- #return self.uct_ld_score_moves(remove_opponent_dead, pass_allowed) return self.select_tactical_uct(remove_opponent_dead, pass_allowed) + elif config.use_both_uct(self.size): + return self.select_both_uct(remove_opponent_dead, pass_allowed) elif config.use_uct: return self.select_uct_move(remove_opponent_dead, pass_allowed) Index: game_experimental.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/game_experimental.py,v retrieving revision 1.47 retrieving revision 1.48 diff -C2 -r1.47 -r1.48 *** game_experimental.py 5 Oct 2006 12:26:53 -0000 1.47 --- game_experimental.py 7 Oct 2006 08:32:24 -0000 1.48 *************** *** 909,912 **** --- 909,913 ---- if config.debug_flag: dprintnl() + self.uct_results = (move_results[0][0], move_results[0][2], global_count) #score, (win, lost), all_moves_total return move_results *************** *** 970,973 **** --- 971,975 ---- # return move self.time0 = time.time() + self.uct_results = None #if self.size <= 9 and len(self.move_history)==0: # middle = (self.size + 1)//2 *************** *** 1139,1142 **** --- 1141,1150 ---- return score + def score_estimate(self, count=100): + score_sum = 0.0 + for i in range(count): + score_sum += self.get_random_score() + return score_sum / count + def evaluate_weakbot_resign(self): if self.check_all_unconditional(True, True): *************** *** 1226,1232 **** return False ! def select_tactical_uct(self, remove_opponent_dead=False, pass_allowed=True): c_board.set_use_area_scoring_board(False) self.time0 = time.time() if config.time_per_move_limit < 5.0: self.fast_flag = True --- 1234,1241 ---- return False ! def select_tactical_uct(self, remove_opponent_dead=False, pass_allowed=True, use_area_switch=True): c_board.set_use_area_scoring_board(False) self.time0 = time.time() + self.tactical_uct_results = None if config.time_per_move_limit < 5.0: self.fast_flag = True *************** *** 1338,1341 **** --- 1347,1354 ---- result_moves = self.list_tactical_result_moves(pos_lst, block_move_statistics, biggest_size) if self.check_switch_to_area_uct(result_moves, total_count, nodes_count): + if not use_area_switch: + if config.debug_flag: + dprintnl("Not using area switch, return PASS_MOVE") + return PASS_MOVE old_time_per_move_limit = config.time_per_move_limit config.time_per_move_limit = config.time_per_move_limit * 0.66 *************** *** 1349,1352 **** --- 1362,1369 ---- if result_moves: if self.check_switch_to_area_uct(result_moves, total_count, nodes_count): + if not use_area_switch: + if config.debug_flag: + dprintnl("Not using area switch, return PASS_MOVE") + return PASS_MOVE if config.debug_flag: dprintnl("Using 1/3 time results") *************** *** 1357,1360 **** --- 1374,1378 ---- if config.debug_flag: dprintnl("selected move:", move, move_as_string(move)) + self.tactical_uct_results = result_moves return move if config.debug_flag: *************** *** 1455,1456 **** --- 1473,1508 ---- return move + def select_both_uct(self, remove_opponent_dead=False, pass_allowed=True): + old_time_per_move_limit = config.time_per_move_limit + self.win_probability = "?" + try: + config.time_per_move_limit /= 2.0 + move = self.select_uct_move(remove_opponent_dead, pass_allowed) + if not self.uct_results: + return move + score, (win, lost), total = self.uct_results + self.win_probability = win / (win + lost) + ratio = (win+lost) / total + if config.debug_flag: + dprintnl("win uct:", move_as_string(move), ratio, self.uct_results) + if move!=PASS_MOVE and ratio > 0.1: + if config.debug_flag: + dprintnl("win uct selected by ratio:", move_as_string(move)) + return move + move2 = self.select_tactical_uct(remove_opponent_dead, pass_allowed, use_area_switch=False) + if move2==PASS_MOVE or not self.tactical_uct_results: + if config.debug_flag: + dprintnl("no tactical result, win uct selected:", move_as_string(move)) + return move + ratio2 = self.tactical_uct_results[0][1] + if ratio > ratio2: + if config.debug_flag: + dprintnl("win uct ratio prefered:", move_as_string(move), ratio, ratio2) + return move + else: + if config.debug_flag: + dprintnl("tactical uct ratio prefered:", move_as_string(move2), ratio, ratio2) + return move2 + finally: + config.time_per_move_limit = old_time_per_move_limit + Index: play_gtp.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/play_gtp.py,v retrieving revision 1.79 retrieving revision 1.80 diff -C2 -r1.79 -r1.80 *** play_gtp.py 6 Oct 2006 14:22:42 -0000 1.79 --- play_gtp.py 7 Oct 2006 08:32:24 -0000 1.80 *************** *** 462,465 **** --- 462,475 ---- def chat(self, chat_type, name, msg): + if hasattr(self.engine, "win_probability"): + score = self.engine.score_estimate(100) + if self.engine.current_board.side==simple_go.BLACK: + score = -score + if score>=0: + score_str = "W+%.1f" % score + else: + score_str = "B+%.1f" % -score + return "win probability: %.3f, score estimate with 100 random games: %s" % \ + (self.engine.win_probability, score_str) white_score, black_score = self.engine.current_board.unconditional_score(simple_go.WHITE + simple_go.BLACK) unresolved = self.engine.size**2 - white_score - black_score Index: test_c_board.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/test_c_board.py,v retrieving revision 1.44 retrieving revision 1.45 diff -C2 -r1.44 -r1.45 *** test_c_board.py 6 Oct 2006 14:22:42 -0000 1.44 --- test_c_board.py 7 Oct 2006 08:32:24 -0000 1.45 *************** *** 1181,1184 **** --- 1181,1217 ---- print move_list_as_string(g.move_history) + def gen_both_uct(g): + config.use_uct_tactics = False + print move_as_string(g.generate_move()) + print "-"*60 + config.use_uct_tactics = True + print move_as_string(g.generate_move()) + + def test_both_uct(): + config.time_per_move_limit = 10 + c_board.clear_result_table() + #g = Game(13) + #g = load_sgf.load_file("kgs/unconditional_dead_removal_test.sgf"); g.make_move(PASS_MOVE); g.make_move(string_as_move("B5")); g.make_move(PASS_MOVE) + g = load_sgf.load_file("kgs/win_move_test.sgf") + #g = load_sgf.load_file("kgs/win_move_test2.sgf") + print g.current_board + #move = g.generate_weak_move(); print g.make_move(move); print move_as_string(move) + move = g.generate_move() + print g.make_move(move) + print move_as_string(move) + + def play_vs_weakbot(): + config.time_per_move_limit = 10 + c_board.set_random_seed(1) + c_board.clear_result_table() + g = Game(13) + while not g.has_2_passes(): + if g.current_board.side==WHITE: + move = g.generate_move() + else: + move = g.generate_weak_move() + print g.make_move(move) + print move_as_string(move) + if __name__=="__main__": g = Game(9) Index: version.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/version.py,v retrieving revision 1.75 retrieving revision 1.76 diff -C2 -r1.75 -r1.76 *** version.py 4 Oct 2006 10:17:16 -0000 1.75 --- version.py 7 Oct 2006 08:32:24 -0000 1.76 *************** *** 1,5 **** ! number = "0.4.1_1tactics_0_9_opening_tree" name = "SimpleGo" ! message = ": For more info see http://londerings.novalis.org/wlog/index.php?title=SimpleGo_v0.4.1 Source code is at http://londerings.cvs.sourceforge.net/londerings/go/simple_go/ : " #number = "0.1.8 C version resign" --- 1,5 ---- ! number = "0.4.1_win_and_tactics_uct" name = "SimpleGo" ! message = ": If you chat to me privately, I will respond with my current guess about game when opponent is thinking. For more info see http://londerings.novalis.org/wlog/index.php?title=SimpleGo_v0.4.1 Source code is at http://londerings.cvs.sourceforge.net/londerings/go/simple_go/ : " #number = "0.1.8 C version resign" |
Update of /cvsroot/londerings/go/simple_go In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv32060 Modified Files: 9x9_black_opening.lst 9x9_white_opening.lst play_gtp.py test_c_board.py time_settings.py Added Files: check_opening.py Log Message: timing data to logfile including opponent times; don't complain about missing timing data; opening tree update --- NEW FILE: check_opening.py --- import simple_go, opening_tree def check_tree(size, color): tree = opening_tree.OpeningTree(size, color) if tree.opening_tree_dict: print "Using opening file:", tree.file_name if tree.error_msg: print tree.error_msg if __name__=="__main__": for size in (9, 13): for color in (simple_go.BLACK, simple_go.WHITE): check_tree(size, color) Index: 9x9_black_opening.lst =================================================================== RCS file: /cvsroot/londerings/go/simple_go/9x9_black_opening.lst,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** 9x9_black_opening.lst 6 Oct 2006 08:28:44 -0000 1.3 --- 9x9_black_opening.lst 6 Oct 2006 14:22:42 -0000 1.4 *************** *** 13,14 **** --- 13,16 ---- E5 E6 F5 D5 D4 F6 G5 #Aloril, Lazarus-0.90: http://cgos.boardspace.net/public/SGF/2006/10/05/315736.sgf E5 E4 F5 D5 D6 G5 F4 F3 D4 G4 E3 #Aloril, AnchorMan: http://cgos.boardspace.net/public/SGF/2006/10/05/315753.sgf + E5 C4 E3 D6 E6 D7 F8 G3 F2 G5 H2 H3 H6 #Aloril, ggexp: http://cgos.boardspace.net/public/SGF/2006/10/06/316292.sgf + E5 D4 E4 E3 F3 D5 E6 #Aloril, AnchorMan: http://cgos.boardspace.net/public/SGF/2006/10/06/316383.sgf Index: 9x9_white_opening.lst =================================================================== RCS file: /cvsroot/londerings/go/simple_go/9x9_white_opening.lst,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -r1.2 -r1.3 *** 9x9_white_opening.lst 6 Oct 2006 08:28:44 -0000 1.2 --- 9x9_white_opening.lst 6 Oct 2006 14:22:42 -0000 1.3 *************** *** 18,19 **** --- 18,22 ---- E5 G5 G7 F6 #Aloril, MoGoSmallQdV3: http://cgos.boardspace.net/public/SGF/2006/10/05/315654.sgf F6 D4 E6 F4 #Aloril, ControlBoy: cgos.boardspace.net/public/SGF/2006/10/05/315769.sgf + C3 F6 E7 E4 E6 E5 F7 C5 E2 G6 # Aloril, antigoamuct-1.6: http://cgos.boardspace.net/public/SGF/2006/10/06/316355.sgf + E5 G5 F7 F6 D7 E6 E7 D6 G7 C6 E4 C4 # Aloril, ggexp: http://cgos.boardspace.net/public/SGF/2006/10/06/316369.sgf + G5 D5 D7 E6 E7 F6 F7 G6 G3 F2 H8 H7 H5 H2 H6 G7 G2 G1 H3 H1 F4 E3 C6 C5 G8 J7 B6 B5 A5 A4 A6 B4 D6 E5 J8 E4 PASS F3 PASS F5 PASS G4 PASS H4 PASS J3 PASS J5 PASS J6 #Aloril, gnugo_3.7.4 http://cgos.boardspace.net/public/SGF/2006/10/06/316411.sgf Index: play_gtp.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/play_gtp.py,v retrieving revision 1.78 retrieving revision 1.79 diff -C2 -r1.78 -r1.79 *** play_gtp.py 4 Oct 2006 10:17:16 -0000 1.78 --- play_gtp.py 6 Oct 2006 14:22:42 -0000 1.79 *************** *** 187,190 **** --- 187,191 ---- self.chat_count = 0 self.move_generated = False + self.move_made_last_time = 0 log(version.name + " " + version.number + "\n") *************** *** 347,351 **** if self.engine.play_randomly_initialization_done: self.engine.update_fast_random_status() ! log("move made: %s %s\n" % (color, move)) log(str(self.engine.current_board)) log("-"*60 + "\n") --- 348,358 ---- if self.engine.play_randomly_initialization_done: self.engine.update_fast_random_status() ! time_now = time.time() ! if self.move_made_last_time: ! time_str = "%.3fs" % (time_now - self.move_made_last_time,) ! else: ! time_str = "" ! log("move made: %s %s %s\n" % (color, move, time_str)) ! self.move_made_last_time = time_now log(str(self.engine.current_board)) log("-"*60 + "\n") Index: test_c_board.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/test_c_board.py,v retrieving revision 1.43 retrieving revision 1.44 diff -C2 -r1.43 -r1.44 *** test_c_board.py 6 Oct 2006 08:28:44 -0000 1.43 --- test_c_board.py 6 Oct 2006 14:22:42 -0000 1.44 *************** *** 1175,1178 **** --- 1175,1184 ---- #g.set_komi(g.komi + 100) + def sgf2string(): + g = load_sgf.load_file("kgs/t") + print g.current_board + print c_board.score_board() + print move_list_as_string(g.move_history) + if __name__=="__main__": g = Game(9) Index: time_settings.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/time_settings.py,v retrieving revision 1.39 retrieving revision 1.40 diff -C2 -r1.39 -r1.40 *** time_settings.py 8 Sep 2006 18:16:12 -0000 1.39 --- time_settings.py 6 Oct 2006 14:22:42 -0000 1.40 *************** *** 87,91 **** raise ValueError, "number of timing data levels doesn't match with code" else: ! utils.dprintnl("No timing data for size %i, use 'python -i run_test.py' and then 'play_all_sizes()' to generate it" % size) def reset( self ): --- 87,92 ---- raise ValueError, "number of timing data levels doesn't match with code" else: ! if not config.use_c: ! utils.dprintnl("No timing data for size %i, use 'python -i run_test.py' and then 'play_all_sizes()' to generate it" % size) def reset( self ): |
From: Aloril <al...@us...> - 2006-10-06 08:28:48
|
Update of /cvsroot/londerings/go/simple_go In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv24862 Modified Files: 9x9_black_opening.lst 9x9_white_opening.lst test_c_board.py Log Message: update opening tree Index: 9x9_black_opening.lst =================================================================== RCS file: /cvsroot/londerings/go/simple_go/9x9_black_opening.lst,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -r1.2 -r1.3 *** 9x9_black_opening.lst 5 Oct 2006 12:26:53 -0000 1.2 --- 9x9_black_opening.lst 6 Oct 2006 08:28:44 -0000 1.3 *************** *** 4,5 **** --- 4,14 ---- E5 E4 F5 #Aloril E5 E3 G4 #Minue + E5 D6 E6 D7 D5 #Aloril, GoJin-1.20: http://cgos.boardspace.net/public/SGF/2006/10/05/315521.sgf + E5 D4 E4 D3 D5 C5 C6 B5 G7 #Aloril, ggexp: http://cgos.boardspace.net/public/SGF/2006/10/05/315586.sgf + E5 D4 E4 C6 E3 D3 F7 G3 H4 #Aloril, ggexp: http://cgos.boardspace.net/public/SGF/2006/10/05/315598.sgf + E5 C5 D7 D3 G6 G3 D4 C4 E3 D2 E2 H5 H1 H6 G7 #Aloril, ggexp: http://cgos.boardspace.net/public/SGF/2006/10/05/315635.sgf + E5 C7 E7 G4 C5 #Aloril, MoGoSmallQdV3: http://cgos.boardspace.net/public/SGF/2006/10/05/315682.sgf + E5 E6 F5 D6 D5 C5 C4 #Aloril, GoJin-1.17: http://cgos.boardspace.net/public/SGF/2006/10/05/315695.sgf + E5 D4 E4 E3 F3 E2 D5 C4 G7 #Aloril, ggexp: http://cgos.boardspace.net/public/SGF/2006/10/05/315705.sgf + E5 E6 F5 D5 D4 F6 G5 #Aloril, Lazarus-0.90: http://cgos.boardspace.net/public/SGF/2006/10/05/315736.sgf + E5 E4 F5 D5 D6 G5 F4 F3 D4 G4 E3 #Aloril, AnchorMan: http://cgos.boardspace.net/public/SGF/2006/10/05/315753.sgf Index: 9x9_white_opening.lst =================================================================== RCS file: /cvsroot/londerings/go/simple_go/9x9_white_opening.lst,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** 9x9_white_opening.lst 4 Oct 2006 10:17:15 -0000 1.1 --- 9x9_white_opening.lst 6 Oct 2006 08:28:44 -0000 1.2 *************** *** 16,17 **** --- 16,19 ---- C5 F5 F6 G6 E5 E4 E6 F4 G7 D4 #yamadawakio-yukawamituhisa E7 E4 C6 G4 F5 G5 C3 C4 D3 D4 #shimojimayouhei-suzukikeishi + E5 G5 G7 F6 #Aloril, MoGoSmallQdV3: http://cgos.boardspace.net/public/SGF/2006/10/05/315654.sgf + F6 D4 E6 F4 #Aloril, ControlBoy: cgos.boardspace.net/public/SGF/2006/10/05/315769.sgf Index: test_c_board.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/test_c_board.py,v retrieving revision 1.42 retrieving revision 1.43 diff -C2 -r1.42 -r1.43 *** test_c_board.py 5 Oct 2006 12:26:53 -0000 1.42 --- test_c_board.py 6 Oct 2006 08:28:44 -0000 1.43 *************** *** 1076,1080 **** #g = load_sgf.load_file("kgs/SimpleBot-WeakBot50k_fake_tournament_phony_problem.sgf") #g = load_sgf.load_file("kgs/nekkets-SimpleBot_problem.sgf") ! g = load_sgf.load_file("kgs/caol-SimpleBot_problem.sgf") #g = Game(5) #g.set_komi(24.5) --- 1076,1081 ---- #g = load_sgf.load_file("kgs/SimpleBot-WeakBot50k_fake_tournament_phony_problem.sgf") #g = load_sgf.load_file("kgs/nekkets-SimpleBot_problem.sgf") ! #g = load_sgf.load_file("kgs/caol-SimpleBot_problem.sgf") ! g = load_sgf.load_file("kgs/Aloriless-Orego_problem.sgf") #g = Game(5) #g.set_komi(24.5) *************** *** 1084,1088 **** config.games_per_move_limit = 1000000000000 #config.uct_count = lambda size:config.games_per_move_limit ! config.use_uct_tactics = True #c_board.set_use_area_scoring_board(False) #config.use_uct_tactics = False --- 1085,1089 ---- config.games_per_move_limit = 1000000000000 #config.uct_count = lambda size:config.games_per_move_limit ! config.use_uct_tactics = not True #c_board.set_use_area_scoring_board(False) #config.use_uct_tactics = False |
Update of /cvsroot/londerings/go/simple_go In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv17705 Modified Files: 9x9_black_opening.lst game_experimental.py montecarlo.c test_c_board.py Added Files: 13x13_black_opening.lst 13x13_white_opening.lst Log Message: added random 1-tactics to capture uct too --- NEW FILE: 13x13_black_opening.lst --- G7 F6 G6 #Aloril G7 G6 H7 #Aloril G7 E5 G5 #Aloril G7 F5 E7 #Aloril G7 G5 K7 #Aloril G7 D4 K4 #Aloril G7 E4 J4 #Aloril G7 F4 K5 #Aloril G7 G4 K5 #Aloril G7 C3 D4 #Aloril G7 D3 D5 #Aloril G7 E3 D5 #Aloril G7 F3 D4 #Aloril G7 G3 D4 #Aloril --- NEW FILE: 13x13_white_opening.lst --- G7 D4 #Aloril F6 G7 #Aloril G6 G7 #Aloril E5 G7 #Aloril F5 G7 #Aloril G5 G7 #Aloril D4 K10 #Aloril E4 D10 #Aloril F4 G7 #Aloril G4 G7 #Aloril C3 D4 #Aloril D3 K10 #Aloril E3 K10 #Aloril F3 D10 #Aloril G3 G7 #Aloril Index: 9x9_black_opening.lst =================================================================== RCS file: /cvsroot/londerings/go/simple_go/9x9_black_opening.lst,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** 9x9_black_opening.lst 4 Oct 2006 10:17:15 -0000 1.1 --- 9x9_black_opening.lst 5 Oct 2006 12:26:53 -0000 1.2 *************** *** 1,5 **** ! E5 C3 E3 # Aloril ! E5 D4 E4 # Minue ! E5 D3 C5 # Aloril ! E5 E4 F5 # Aloril ! E5 E3 G4 # Minue --- 1,5 ---- ! E5 C3 E3 #Aloril ! E5 D4 E4 #Minue ! E5 D3 C5 #Aloril ! E5 E4 F5 #Aloril ! E5 E3 G4 #Minue Index: game_experimental.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/game_experimental.py,v retrieving revision 1.46 retrieving revision 1.47 diff -C2 -r1.46 -r1.47 *** game_experimental.py 3 Oct 2006 14:34:22 -0000 1.46 --- game_experimental.py 5 Oct 2006 12:26:53 -0000 1.47 *************** *** 1143,1147 **** dprintnl("weakbot resign evaluation, all decided:", False) return False ! required_diff = self.size**2/3.61 cboard = self.current_board return_value = True --- 1143,1147 ---- dprintnl("weakbot resign evaluation, all decided:", False) return False ! required_diff = self.size**2/3.61/2.0 cboard = self.current_board return_value = True *************** *** 1162,1166 **** i += 1 avg_score = score_sum / i ! if avg_score > -required_diff/2.0: return_value = False if config.debug_flag: --- 1162,1166 ---- i += 1 avg_score = score_sum / i ! if avg_score > -required_diff: return_value = False if config.debug_flag: Index: montecarlo.c =================================================================== RCS file: /cvsroot/londerings/go/simple_go/montecarlo.c,v retrieving revision 1.30 retrieving revision 1.31 diff -C2 -r1.30 -r1.31 *** montecarlo.c 2 Oct 2006 10:23:11 -0000 1.30 --- montecarlo.c 5 Oct 2006 12:26:53 -0000 1.31 *************** *** 548,551 **** --- 548,576 ---- } + int get_random_1_tactic_moves_restricted(int available_ind, int available_moves[BOARDMAX], + int available_moves_1_tactics[BOARDMAX], + signed char available_score_1_tactics[BOARDMAX]) + { + int available_count_1_tactics = 0; + int i, k, pos, pos2, ok; + for(i = 0; i < available_ind; i++) { + ok = FALSE; + pos = available_moves[i]; + for(k = 0; k < 4; k++) { + pos2 = pos + delta[k]; + if(IS_STONE(board[pos2]) && countlib(pos2)==1) { + ok = TRUE; + break; + } + } + if(ok) { + available_moves_1_tactics[available_count_1_tactics] = pos; + available_score_1_tactics[available_count_1_tactics++] = 0; + } + } + return available_count_1_tactics; + } + + int play_liberty_shape_random_move_tactics(int color) { *************** *** 878,882 **** } ! int init_available_local(int block, int available_moves[BOARDMAX], signed char available_score[BOARDMAX], int color) { int k, pos; --- 903,907 ---- } ! int init_available_local(int block, int available_moves[BOARDMAX], signed char available_score[BOARDMAX], int color, int *accurate_flag) { int k, pos; *************** *** 889,895 **** --- 914,922 ---- int adj_count, adj_blocks[MAXCHAIN]; int adj_liberty_count, adj_liberties[MAXLIBS]; + *accurate_flag = FALSE; if(color==board[block]) { //defender to move int capture_count = play_accurate_tactics(block, OTHER_COLOR(color)); if(capture_count) { //seems opponent can capture, play only liberties and capture adjacent blocks now + *accurate_flag = TRUE; undo_game(capture_count); //simple_showboard(stdout); printf("\n"); mprintf("%m\n", I(block), J(block)); *************** *** 1010,1014 **** } ! int play_liberty_shape_eye_random_move(int color) { /* play random move according to liberty shape score (like weakbot50k) --- 1037,1041 ---- } ! int play_liberty_shape_eye_random_move_from_list(int color, int available_ind, int available_moves[BOARDMAX], signed char available_score[BOARDMAX]) { /* play random move according to liberty shape score (like weakbot50k) *************** *** 1022,1036 **** #endif int best_move = PASS_MOVE; - int available_moves[BOARDMAX]; - int available_ind = 0; - signed char available_score[BOARDMAX]; #if DUMP_SGF && !LIBERTY_SHAPE_EYE_RANDOM_FAST long long eval_count0 = eval_count; #endif - if(capture_goal > 0) { - available_ind = init_available_local(capture_goal, available_moves, available_score, color); - } else { - available_ind = list_empty_board(available_moves); - } #if LIBERTY_SHAPE_EYE_RANDOM_FAST //just return non eye move randomly --- 1049,1055 ---- *************** *** 1101,1104 **** --- 1120,1171 ---- } + int play_liberty_shape_eye_random_move(int color) + { + /* play random move according to liberty shape score (like weakbot50k) + also use some eye scoring (disabled) + */ + int available_ind; + int available_moves[BOARDMAX]; + signed char available_score[BOARDMAX]; + int accurate_flag = FALSE; + int move; + if(capture_goal > 0) { + available_ind = init_available_local(capture_goal, available_moves, available_score, color, &accurate_flag); + if(accurate_flag) { + return play_liberty_shape_eye_random_move_from_list(color, available_ind, available_moves, available_score); + } + if(gg_drand() <= LIBERTY_SHAPE_RANDOM_TACTICS_RATIO) { //prefers tactics? + int available_count_1_tactics; + int available_moves_1_tactics[BOARDMAX]; + signed char available_score_1_tactics[BOARDMAX]; + available_count_1_tactics = + get_random_1_tactic_moves_restricted(available_ind, available_moves, + available_moves_1_tactics, available_score_1_tactics); + move = play_liberty_shape_eye_random_move_from_list(color, available_count_1_tactics, + available_moves_1_tactics, available_score_1_tactics); + if(move != PASS_MOVE) { + return move; + } + } + return play_liberty_shape_eye_random_move_from_list(color, available_ind, available_moves, available_score); + } else { + if(gg_drand() <= LIBERTY_SHAPE_RANDOM_TACTICS_RATIO) { //prefers tactics? + double available_score_double[BOARDMAX]; + available_ind = get_random_1_tactic_moves(available_moves, available_score_double); + int i; + for(i = 0; i < available_ind; i++) { + available_moves[i] = -available_moves[i]; + } + move = play_liberty_shape_eye_random_move_from_list(color, available_ind, available_moves, available_score); + if(move != PASS_MOVE) { + return move; + } + } + available_ind = list_empty_board(available_moves); + return play_liberty_shape_eye_random_move_from_list(color, available_ind, available_moves, available_score); + } + return PASS_MOVE; + } + #define FUDGE 10.0 int play_pattern_random_move(int color) *************** *** 1387,1391 **** } #if 1 ! move = play_random_move(color); #else // test random players against each other if(color==WHITE) { --- 1454,1462 ---- } #if 1 ! if(capture_goal > 0) { ! move = play_liberty_shape_eye_random_move(color); ! } else { ! move = play_random_move(color); ! } #else // test random players against each other if(color==WHITE) { *************** *** 2100,2104 **** if(capture_goal > 0) { signed char available_score[BOARDMAX]; ! move_list_max = init_available_local(capture_goal, move_list, available_score, color); move_list[move_list_max++] = PASS_MOVE; int count2 = play_accurate_tactics(capture_goal, color); --- 2171,2176 ---- if(capture_goal > 0) { signed char available_score[BOARDMAX]; ! int accurate_flag; ! move_list_max = init_available_local(capture_goal, move_list, available_score, color, &accurate_flag); move_list[move_list_max++] = PASS_MOVE; int count2 = play_accurate_tactics(capture_goal, color); *************** *** 2382,2386 **** if(capture_goal > 0) { signed char available_score[BOARDMAX]; ! move_list_max = init_available_local(capture_goal, move_list, available_score, color); move_list[move_list_max++] = PASS_MOVE; } --- 2454,2459 ---- if(capture_goal > 0) { signed char available_score[BOARDMAX]; ! int accurate_flag; ! move_list_max = init_available_local(capture_goal, move_list, available_score, color, &accurate_flag); move_list[move_list_max++] = PASS_MOVE; } *************** *** 2518,2522 **** { signed char available_score[BOARDMAX]; ! int move_list_max = init_available_local(capture_goal, move_list, available_score, color); move_list[move_list_max++] = PASS_MOVE; int count2 = play_accurate_tactics(capture_goal, color); --- 2591,2596 ---- { signed char available_score[BOARDMAX]; ! int accurate_flag; ! int move_list_max = init_available_local(capture_goal, move_list, available_score, color, &accurate_flag); move_list[move_list_max++] = PASS_MOVE; int count2 = play_accurate_tactics(capture_goal, color); Index: test_c_board.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/test_c_board.py,v retrieving revision 1.41 retrieving revision 1.42 diff -C2 -r1.41 -r1.42 *** test_c_board.py 4 Oct 2006 10:17:16 -0000 1.41 --- test_c_board.py 5 Oct 2006 12:26:53 -0000 1.42 *************** *** 1073,1078 **** #g = load_sgf.load_file("kgs/miyaki-SimpleBot_ladder_test.sgf") #g = load_sgf.load_file("kgs/CrazyStone-minue622_ladder_test.sgf") ! g = load_sgf.load_file("kgs/StoneCrazy-SimpleBot_missed_life.sgf") #g = load_sgf.load_file("kgs/SimpleBot-WeakBot50k_fake_tournament_phony_problem.sgf") #g = Game(5) #g.set_komi(24.5) --- 1073,1080 ---- #g = load_sgf.load_file("kgs/miyaki-SimpleBot_ladder_test.sgf") #g = load_sgf.load_file("kgs/CrazyStone-minue622_ladder_test.sgf") ! #g = load_sgf.load_file("kgs/StoneCrazy-SimpleBot_missed_life.sgf") #g = load_sgf.load_file("kgs/SimpleBot-WeakBot50k_fake_tournament_phony_problem.sgf") + #g = load_sgf.load_file("kgs/nekkets-SimpleBot_problem.sgf") + g = load_sgf.load_file("kgs/caol-SimpleBot_problem.sgf") #g = Game(5) #g.set_komi(24.5) |
From: Aloril <al...@us...> - 2006-10-04 10:17:27
|
Update of /cvsroot/londerings/go/simple_go In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv13373 Modified Files: config.py game.py play_gtp.py test_c_board.py utils.py version.py Added Files: 9x9_black_opening.lst 9x9_white_opening.lst opening_tree.py Log Message: opening tree --- NEW FILE: 9x9_black_opening.lst --- E5 C3 E3 # Aloril E5 D4 E4 # Minue E5 D3 C5 # Aloril E5 E4 F5 # Aloril E5 E3 G4 # Minue --- NEW FILE: 9x9_white_opening.lst --- E5 G5 C6 F3 E3 E2 F4 D3 E4 G3 #konishi kazuko-yamamoto kentar E5 G5 C5 F7 G4 D6 D5 H4 G3 F5 #yamadawakio-zan lyu E5 G5 G6 C6 C5 C4 D5 B5 D7 H6 #m.kurahashi-n.furuta F6 D4 D5 C5 E4 E3 E5 C6 D3 C4 #lee yann-kurahashi F6 D4 C6 G4 C3 G7 D3 F7 G6 E6 #konishi kazuko-takei takashi D4 F6 F4 D6 C6 C7 C5 G4 G3 G5 #saitotadashi-yamadawakio E4 E6 G5 C5 C7 G6 H6 F5 F4 H5 #kurahashi-yamadawakio E6 E4 D4 D3 C4 C3 E3 E5 D6 F3 #h.hasegawa-a.tukuda G7 D4 D7 F4 E2 D2 E3 D3 G3 G4 #m. kurahashi -y. enda D3 E6 E5 D5 F5 D4 E3 F6 G6 D6 #imai kazuhiro-inoriyouko D3 E6 C6 F4 G7 G5 E7 D4 C3 D7 #s.aragaki-m.kurahashi D3 E6 G7 G6 H6 G5 H5 F7 G8 G4 #s.fujii-n.yata F7 E4 C6 E6 E7 F6 D6 C4 G6 G5 #imaikazuhiro-shimojimayouhei F7 E4 G5 C4 F3 E3 F2 D7 E2 F6 #so youkoku-oda hiromitu E3 E6 G5 D4 E4 D5 E8 G6 C7 H5 #t.sano-s.fujii C5 F5 F6 G6 E5 E4 E6 F4 G7 D4 #yamadawakio-yukawamituhisa E7 E4 C6 G4 F5 G5 C3 C4 D3 D4 #shimojimayouhei-suzukikeishi --- NEW FILE: opening_tree.py --- import os from game import * class OpeningTree: def __init__(self, size, color): self.opening_tree_dict = {} self.color = color self.size = size if color==BLACK: color_name = "black" else: color_name = "white" self.file_name = "%ix%i_%s_opening.lst" % (size, size, color_name) self.error_msg = "" if not os.path.exists(self.file_name): return i = 0 for line in open(self.file_name): line = line[:-1] i += 1 g = Game(size) pos = line.find("#") if pos >=0: line_moves = line[:pos] else: line_moves = line for move in string_as_move_list(line_moves): if g.current_board.side != color: g.make_move(move) continue for ref in all_ref_coords: ref_move_lst = tuple(g.reflect_move_history(ref)) ref_move = ref(move, size) value = (ref_move, i, line, ref.__name__) if ref_move_lst in self.opening_tree_dict: old_value = self.opening_tree_dict[ref_move_lst] old_move_history = ref_move_lst + (old_value[0],) new_move_history = ref_move_lst + (ref_move,) if i != old_value[1] and self.different_move(old_move_history, new_move_history): self.error_msg += "Conflict between %s and %s\nmoves: %s and %s\n%s\n" % (old_value, value, move_as_string(ref_move), move_as_string(old_value[0]), g.current_board) continue self.opening_tree_dict[ref_move_lst] = value g.make_move(move) def different_move(self, old_move_history, new_move_history): for ref1 in all_ref_coords: list1 = reflect_move_list(old_move_history, ref1, self.size) for ref2 in all_ref_coords: list2 = reflect_move_list(new_move_history, ref2, self.size) if list1==list2: return False return True def get_move(self, g): for ref in all_ref_coords: ref_move_lst = g.reflect_move_history(ref) if g.move_history != ref_move_lst: continue ref_move_lst = tuple(ref_move_lst) if ref_move_lst in self.opening_tree_dict: return self.opening_tree_dict[ref_move_lst] Index: config.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/config.py,v retrieving revision 1.61 retrieving revision 1.62 diff -C2 -r1.61 -r1.62 *** config.py 2 Oct 2006 03:45:47 -0000 1.61 --- config.py 4 Oct 2006 10:17:15 -0000 1.62 *************** *** 138,142 **** tactics_area_treshold = 0.01 ! use_opening_library = False # time management settings --- 138,144 ---- tactics_area_treshold = 0.01 ! use_opening_library = True ! opening_library_type = "flat" ! #opening_library_type = "cgos_opponent" # time management settings Index: game.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/game.py,v retrieving revision 1.39 retrieving revision 1.40 diff -C2 -r1.39 -r1.40 *** game.py 22 Sep 2006 14:54:04 -0000 1.39 --- game.py 4 Oct 2006 10:17:15 -0000 1.40 *************** *** 179,192 **** return string.join(s) def symmetry_canonical_game_history(self): best = None best_func = None for ref in all_ref_coords: ! ref_moves = [] ! for move in self.move_history: ! if move==PASS_MOVE: ! ref_moves.append(move) ! else: ! ref_moves.append(ref(move, self.size)) if best==None or ref_moves < best: best = ref_moves --- 179,190 ---- return string.join(s) + def reflect_move_history(self, ref): + return reflect_move_list(self.move_history, ref, self.size) + def symmetry_canonical_game_history(self): best = None best_func = None for ref in all_ref_coords: ! ref_moves = self.reflect_move_history(ref) if best==None or ref_moves < best: best = ref_moves *************** *** 860,874 **** return self.generate_weak_move(remove_opponent_dead, pass_allowed) if self.opening_tree: ! result = self.opening_tree.get_move() ! if result: ! score, score2, counts, move = result if config.debug_flag: ! dprintnl("opening tree: %f %f %s %s" % (score, score2, counts, move_as_string(move))) ! #result0 = self.opening_tree0.get_move() ! #if not result0: ! # dprintnl("was not found in 0 tree") ! return move ! if config.debug_flag: ! dprintnl("opening tree: no move found") #return PASS_MOVE if config.use_uct_tactics: --- 858,880 ---- return self.generate_weak_move(remove_opponent_dead, pass_allowed) if self.opening_tree: ! if config.opening_library_type=="flat": ! result = self.opening_tree.get_move(self) ! if result: ! move, no, line, name = result ! if config.debug_flag: ! dprintnl("opening tree: %s from %i: %s %s" % (move_as_string(move), no, line, name)) ! return move ! else: # "cgos_opponent" ! result = self.opening_tree.get_move() ! if result: ! score, score2, counts, move = result ! if config.debug_flag: ! dprintnl("opening tree: %f %f %s %s" % (score, score2, counts, move_as_string(move))) ! #result0 = self.opening_tree0.get_move() ! #if not result0: ! # dprintnl("was not found in 0 tree") ! return move if config.debug_flag: ! dprintnl("opening tree: no move found") #return PASS_MOVE if config.use_uct_tactics: *************** *** 882,885 **** --- 888,903 ---- return self.select_scored_move(remove_opponent_dead, pass_allowed) + def save_c_state(self): + self.saved_move_list = self.move_history[:] + while self.undo_move(): pass + + def restore_c_state(self): + if config.use_c: + c_board.clear_board(self.size) + for move in self.saved_move_list: + self.make_move(move) + self.set_komi(self.komi) + + def as_image(self): """return current position as black and white image Index: play_gtp.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/play_gtp.py,v retrieving revision 1.77 retrieving revision 1.78 diff -C2 -r1.77 -r1.78 *** play_gtp.py 3 Oct 2006 14:34:22 -0000 1.77 --- play_gtp.py 4 Oct 2006 10:17:16 -0000 1.78 *************** *** 43,47 **** import simple_go ! import cgos_opening_tree import version --- 43,47 ---- import simple_go ! import cgos_opening_tree, opening_tree import version *************** *** 298,317 **** if config.use_opening_library and not self.engine.opening_tree: color_letter = string.upper(color[0]) ! opening_file = cgos_opening_tree.find_opening_from_web(color_letter) ! if opening_file!="None": if color_letter=="W": ! self.engine.white_name = version.name + " " + version.number ! self.engine.black_name = cgos_opening_tree.opponent else: ! self.engine.white_name = cgos_opening_tree.opponent ! self.engine.black_name = version.name + " " + version.number ! log("Using opening file: %s\n" % opening_file) ! #self.engine.opening_tree0 = self.opening_tree[string.upper(color[0]) + "0"] ! #self.engine.opening_tree0.game = self.engine ! #self.engine.opening_tree = self.opening_tree[string.upper(color[0])] ! self.engine.opening_tree = cgos_opening_tree.OpeningTree(opening_file, self.engine) ! if self.engine.opening_tree.hash_tree: ! log("Opening file OK\n") ! #self.engine.opening_tree.game = self.engine if config.use_weak_genmove and self.engine.evaluate_weakbot_resign(): move = simple_go.RESIGN_MOVE --- 298,330 ---- if config.use_opening_library and not self.engine.opening_tree: color_letter = string.upper(color[0]) ! if config.opening_library_type=="flat": if color_letter=="W": ! opening_color = simple_go.WHITE else: ! opening_color = simple_go.BLACK ! self.engine.save_c_state() ! self.engine.opening_tree = opening_tree.OpeningTree(self.engine.size, opening_color) ! self.engine.restore_c_state() ! if self.engine.opening_tree.opening_tree_dict: ! log("Using opening file: %s\n" % self.engine.opening_tree.file_name) ! if self.engine.opening_tree.error_msg: ! log(self.engine.opening_tree.error_msg) ! else: # "cgos_opponent" ! opening_file = cgos_opening_tree.find_opening_from_web(color_letter) ! if opening_file!="None": ! if color_letter=="W": ! self.engine.white_name = version.name + " " + version.number ! self.engine.black_name = cgos_opening_tree.opponent ! else: ! self.engine.white_name = cgos_opening_tree.opponent ! self.engine.black_name = version.name + " " + version.number ! log("Using opening file: %s\n" % opening_file) ! #self.engine.opening_tree0 = self.opening_tree[string.upper(color[0]) + "0"] ! #self.engine.opening_tree0.game = self.engine ! #self.engine.opening_tree = self.opening_tree[string.upper(color[0])] ! self.engine.opening_tree = cgos_opening_tree.OpeningTree(opening_file, self.engine) ! if self.engine.opening_tree.hash_tree: ! log("Opening file OK\n") ! #self.engine.opening_tree.game = self.engine if config.use_weak_genmove and self.engine.evaluate_weakbot_resign(): move = simple_go.RESIGN_MOVE Index: test_c_board.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/test_c_board.py,v retrieving revision 1.40 retrieving revision 1.41 diff -C2 -r1.40 -r1.41 *** test_c_board.py 3 Oct 2006 14:34:22 -0000 1.40 --- test_c_board.py 4 Oct 2006 10:17:16 -0000 1.41 *************** *** 1173,1177 **** if __name__=="__main__": ! #g = Game(9) #test_uct(1) #show_result_tree() --- 1173,1177 ---- if __name__=="__main__": ! g = Game(9) #test_uct(1) #show_result_tree() Index: utils.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/utils.py,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -r1.15 -r1.16 *** utils.py 1 Sep 2006 04:43:25 -0000 1.15 --- utils.py 4 Oct 2006 10:17:16 -0000 1.16 *************** *** 116,119 **** --- 116,129 ---- all_ref_coords = (ref_coords0, ref_coords1, ref_coords2, ref_coords3, ref_coords4, ref_coords5, ref_coords6, ref_coords7) + def reflect_move_list(move_list, ref, size): + ref_moves = [] + for move in move_list: + if move==PASS_MOVE: + ref_moves.append(move) + else: + ref_moves.append(ref(move, size)) + return ref_moves + + def goban2ref_board(board): simple_board = [] Index: version.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/version.py,v retrieving revision 1.74 retrieving revision 1.75 diff -C2 -r1.74 -r1.75 *** version.py 3 Oct 2006 14:34:22 -0000 1.74 --- version.py 4 Oct 2006 10:17:16 -0000 1.75 *************** *** 1,3 **** ! number = "0.4.1_1tactics_0_9_absolute_weak_resign" name = "SimpleGo" message = ": For more info see http://londerings.novalis.org/wlog/index.php?title=SimpleGo_v0.4.1 Source code is at http://londerings.cvs.sourceforge.net/londerings/go/simple_go/ : " --- 1,3 ---- ! number = "0.4.1_1tactics_0_9_opening_tree" name = "SimpleGo" message = ": For more info see http://londerings.novalis.org/wlog/index.php?title=SimpleGo_v0.4.1 Source code is at http://londerings.cvs.sourceforge.net/londerings/go/simple_go/ : " |
From: Aloril <al...@us...> - 2006-10-03 14:34:35
|
Update of /cvsroot/londerings/go/simple_go In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv9237 Modified Files: c_boardmodule.c game_experimental.py idiot_bot.py load_sgf.py play_gtp.py play_simple_gtp.py test_c_board.py version.py weakbot.c Log Message: hopefully less likely to resign at yose; added resign code to weakbot50k and play_simple_gtp based bots Index: c_boardmodule.c =================================================================== RCS file: /cvsroot/londerings/go/simple_go/c_boardmodule.c,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -r1.23 -r1.24 *** c_boardmodule.c 2 Oct 2006 10:23:10 -0000 1.23 --- c_boardmodule.c 3 Oct 2006 14:34:22 -0000 1.24 *************** *** 527,530 **** --- 527,554 ---- + + static PyObject *cboard_play_random_game(PyObject *self, PyObject *args) + { + int color, game_len; + if(!PyArg_ParseTuple(args, "i", &color)) { + return NULL; + } + game_len = play_random_game(BLACK); + return PyInt_FromLong(game_len); + } + + static PyObject *cboard_undo_random_game(PyObject *self, PyObject *args) + { + int game_len; + if(!PyArg_ParseTuple(args, "i", &game_len)) { + return NULL; + } + undo_game(game_len); + Py_INCREF(Py_None); + return Py_None; + } + + + static PyMethodDef cBoardMethods[] = { {"test", cboard_test, METH_VARARGS}, *************** *** 566,569 **** --- 590,595 ---- {"random_uct_game", cboard_random_uct_game, METH_VARARGS}, {"generate_weakbot_move", cboard_generate_weakbot_move, METH_VARARGS}, + {"play_random_game", cboard_play_random_game, METH_VARARGS}, + {"undo_random_game", cboard_undo_random_game, METH_VARARGS}, {NULL, NULL} /* Sentinel */ }; Index: game_experimental.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/game_experimental.py,v retrieving revision 1.45 retrieving revision 1.46 diff -C2 -r1.45 -r1.46 *** game_experimental.py 2 Oct 2006 10:23:10 -0000 1.45 --- game_experimental.py 3 Oct 2006 14:34:22 -0000 1.46 *************** *** 1131,1156 **** return PASS_MOVE def evaluate_weakbot_resign(self): if self.check_all_unconditional(True, True): dprintnl("weakbot resign evaluation, all decided:", False) return False ! old_komi = self.komi cboard = self.current_board ! if cboard.side==BLACK: ! self.set_komi(old_komi - self.size**2/3.61) ! else: ! self.set_komi(old_komi + self.size**2/3.61) ! c_board.set_use_area_bonus(False) ! return_value = False for i in range(100): ! c_board.uct_game(self.c_color(), 1) ! result = c_board.get_result_table(self.c_color()) ! if result and result[0] > 0: break ! else: ! return_value = True ! self.set_komi(old_komi) if config.debug_flag: ! dprintnl("weakbot resign evaluation:", return_value, i, result) c_board.set_use_area_bonus(True) return return_value --- 1131,1170 ---- return PASS_MOVE + def get_random_score(self): + game_len = c_board.play_random_game(self.c_color()) + score = c_board.score_board() + if self.current_board.side!=BLACK: + score = -score + c_board.undo_random_game(game_len) + return score + def evaluate_weakbot_resign(self): if self.check_all_unconditional(True, True): dprintnl("weakbot resign evaluation, all decided:", False) return False ! required_diff = self.size**2/3.61 cboard = self.current_board ! return_value = True ! #initial_ok_count = 0 ! #ok_count = 0 ! score_sum = 0.0 for i in range(100): ! score = self.get_random_score() ! score += required_diff ! score_sum += score ! if score > 0: ! return_value = False break ! #else: ! # ok_count += 1 ! # if return_value: ! # initial_ok_count += 1 ! i += 1 ! avg_score = score_sum / i ! if avg_score > -required_diff/2.0: ! return_value = False if config.debug_flag: ! #dprintnl("weakbot resign evaluation:", return_value, i, initial_ok_count, ok_count, avg_score) ! dprintnl("weakbot resign evaluation:", return_value, i, avg_score) c_board.set_use_area_bonus(True) return return_value Index: idiot_bot.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/idiot_bot.py,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -r1.5 -r1.6 *** idiot_bot.py 2 Oct 2006 10:23:11 -0000 1.5 --- idiot_bot.py 3 Oct 2006 14:34:22 -0000 1.6 *************** *** 23,27 **** play_gtp.GTP_player.__init__(self) self.engine = simple_go.Game(19) ! self.version = "0.0.4.resign" self.name = "IdiotBot: I play mostly randomly: if I'm too easy, try humans, GnuGo1pt2 or WeakBot50k. My info contains links to my source code: " --- 23,27 ---- play_gtp.GTP_player.__init__(self) self.engine = simple_go.Game(19) ! self.version = "0.0.4.resign2" self.name = "IdiotBot: I play mostly randomly: if I'm too easy, try humans, GnuGo1pt2 or WeakBot50k. My info contains links to my source code: " Index: load_sgf.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/load_sgf.py,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -r1.11 -r1.12 *** load_sgf.py 2 Oct 2006 03:45:47 -0000 1.11 --- load_sgf.py 3 Oct 2006 14:34:22 -0000 1.12 *************** *** 1,3 **** ! import string, simple_go, re, sys, time def sgf_to_coords(size, sgf_coords): --- 1,3 ---- ! import string, config, simple_go, re, sys, time def sgf_to_coords(size, sgf_coords): *************** *** 43,49 **** sz = re.match(r".*SZ\[(\d+)\].*", header, re.DOTALL) if sz: ! g = game_class(int(sz.group(1))) else: ! raise ValueError, "no size tag" komi = re.match(r".*KM\[([\d\.]+)\].*", header, re.DOTALL) if komi: --- 43,52 ---- sz = re.match(r".*SZ\[(\d+)\].*", header, re.DOTALL) if sz: ! size = int(sz.group(1)) ! if not 5 <= size <= 19 and config.use_c: ! raise ValueError, ("size outside range for C", name) ! g = game_class(size) else: ! raise ValueError, ("no size tag", name) komi = re.match(r".*KM\[([\d\.]+)\].*", header, re.DOTALL) if komi: *************** *** 56,61 **** g.make_move(simple_go.PASS_MOVE) if not g.make_move(sgf2tuple(g.size, move)): ! raise ValueError, move for move_str in moves: m = re.match(r".*?(\w+)\[(.*?)\](.*)", move_str, re.DOTALL) if m: --- 59,66 ---- g.make_move(simple_go.PASS_MOVE) if not g.make_move(sgf2tuple(g.size, move)): ! raise ValueError, (move, name, g) for move_str in moves: + if config.use_c and len(g.move_history) > 1400: + raise ValueError, ("too long game for C", name, g) m = re.match(r".*?(\w+)\[(.*?)\](.*)", move_str, re.DOTALL) if m: *************** *** 67,73 **** g.make_move(simple_go.PASS_MOVE) if not g.make_move(sgf2tuple(g.size, move)): ! print g.current_board, simple_go.move_as_string(sgf2tuple(g.size, move)) ! print simple_go.move_list_as_string(g.move_history) ! raise ValueError, move elif color in ("AW", "AB"): while move and color in ("AW", "AB"): --- 72,78 ---- g.make_move(simple_go.PASS_MOVE) if not g.make_move(sgf2tuple(g.size, move)): ! #print g.current_board, simple_go.move_as_string(sgf2tuple(g.size, move)) ! #print simple_go.move_list_as_string(g.move_history) ! raise ValueError, (move, name, g) elif color in ("AW", "AB"): while move and color in ("AW", "AB"): *************** *** 75,79 **** g.make_move(simple_go.PASS_MOVE) if not g.make_move(sgf2tuple(g.size, move)): ! raise ValueError, move m = re.match(r"\[(.*?)\](.*)", rest, re.DOTALL) if m: --- 80,84 ---- g.make_move(simple_go.PASS_MOVE) if not g.make_move(sgf2tuple(g.size, move)): ! raise ValueError, (move, name, g) m = re.match(r"\[(.*?)\](.*)", rest, re.DOTALL) if m: Index: play_gtp.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/play_gtp.py,v retrieving revision 1.76 retrieving revision 1.77 diff -C2 -r1.76 -r1.77 *** play_gtp.py 2 Oct 2006 10:23:11 -0000 1.76 --- play_gtp.py 3 Oct 2006 14:34:22 -0000 1.77 *************** *** 314,318 **** log("Opening file OK\n") #self.engine.opening_tree.game = self.engine ! move = self.engine.generate_move(remove_opponent_dead, pass_allowed) self.move_generated = True move = string.lower(simple_go.move_as_string(move, self.engine.size)) --- 314,321 ---- log("Opening file OK\n") #self.engine.opening_tree.game = self.engine ! if config.use_weak_genmove and self.engine.evaluate_weakbot_resign(): ! move = simple_go.RESIGN_MOVE ! else: ! move = self.engine.generate_move(remove_opponent_dead, pass_allowed) self.move_generated = True move = string.lower(simple_go.move_as_string(move, self.engine.size)) Index: play_simple_gtp.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/play_simple_gtp.py,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -r1.6 -r1.7 *** play_simple_gtp.py 3 Jun 2006 09:40:09 -0000 1.6 --- play_simple_gtp.py 3 Oct 2006 14:34:22 -0000 1.7 *************** *** 49,53 **** import config from play_gtp import get_next_filename, Logger, log ! config.debug_flag = False debug = 1 --- 49,53 ---- import config from play_gtp import get_next_filename, Logger, log ! config.debug_flag = True debug = 1 *************** *** 222,245 **** def genmove_plain(self, color, pass_allowed=1): t0 = time.time() ! move = self.engine.exec_cmd("reg_genmove " + color) ! if move[0]=="=": move = move[2:] ! while move and move[-1]=="\n": move = move[:-1] ! if string.upper(move[:4])=="PASS" or move[:2]=="??": ! move = self.slave.exec_cmd("reg_genmove " + color) ! if move[0]=="=": move = move[2:] ! while move and move[-1]=="\n": move = move[:-1] ! log("overruled pass with: " + move + "\n") ! result = self.play_plain(color, move) ! if result[0]=="?": ! move = self.slave.exec_cmd("reg_genmove " + color) if move[0]=="=": move = move[2:] while move and move[-1]=="\n": move = move[:-1] ! log("overruled illegal move with gnugo3.6: " + move + "\n") result = self.play_plain(color, move) if result[0]=="?": ! move = self.simple_engine.generate_move() ! move = simple_go.move_as_string(move, self.size) ! log("overruled illegal move with simplego: " + move + "\n") ! self.play_plain(color, move) time_used = time.time() - t0 time_per_move = self.time / 30.0 --- 222,248 ---- def genmove_plain(self, color, pass_allowed=1): t0 = time.time() ! if self.simple_engine.evaluate_weakbot_resign(): ! move = "resign" ! else: ! move = self.engine.exec_cmd("reg_genmove " + color) if move[0]=="=": move = move[2:] while move and move[-1]=="\n": move = move[:-1] ! if string.upper(move[:4])=="PASS" or move[:2]=="??": ! move = self.slave.exec_cmd("reg_genmove " + color) ! if move[0]=="=": move = move[2:] ! while move and move[-1]=="\n": move = move[:-1] ! log("overruled pass with: " + move + "\n") result = self.play_plain(color, move) if result[0]=="?": ! move = self.slave.exec_cmd("reg_genmove " + color) ! if move[0]=="=": move = move[2:] ! while move and move[-1]=="\n": move = move[:-1] ! log("overruled illegal move with gnugo3.6: " + move + "\n") ! result = self.play_plain(color, move) ! if result[0]=="?": ! move = self.simple_engine.generate_move() ! move = simple_go.move_as_string(move, self.size) ! log("overruled illegal move with simplego: " + move + "\n") ! self.play_plain(color, move) time_used = time.time() - t0 time_per_move = self.time / 30.0 Index: test_c_board.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/test_c_board.py,v retrieving revision 1.39 retrieving revision 1.40 diff -C2 -r1.39 -r1.40 *** test_c_board.py 2 Oct 2006 10:23:11 -0000 1.39 --- test_c_board.py 3 Oct 2006 14:34:22 -0000 1.40 *************** *** 1149,1154 **** if g.current_board.side==WHITE: continue ! print "="*60 ! print g.current_board print i resign_flag = g.evaluate_weakbot_resign() --- 1149,1154 ---- if g.current_board.side==WHITE: continue ! #print "="*60 ! #print g.current_board print i resign_flag = g.evaluate_weakbot_resign() Index: version.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/version.py,v retrieving revision 1.73 retrieving revision 1.74 diff -C2 -r1.73 -r1.74 *** version.py 2 Oct 2006 10:23:11 -0000 1.73 --- version.py 3 Oct 2006 14:34:22 -0000 1.74 *************** *** 3,7 **** message = ": For more info see http://londerings.novalis.org/wlog/index.php?title=SimpleGo_v0.4.1 Source code is at http://londerings.cvs.sourceforge.net/londerings/go/simple_go/ : " ! #number = "0.1.8 C version" #name = "WeakBot50k" #message = ": Make your group(s) *impossible* to kill even when you *pass* *all* of your moves and then I will pass. If I'm too hard, try IdiotBot. If I'm too easy, try humans or DrunkenGnu. Source code is at http://londerings.cvs.sourceforge.net/londerings/go/simple_go/ : " --- 3,7 ---- message = ": For more info see http://londerings.novalis.org/wlog/index.php?title=SimpleGo_v0.4.1 Source code is at http://londerings.cvs.sourceforge.net/londerings/go/simple_go/ : " ! #number = "0.1.8 C version resign" #name = "WeakBot50k" #message = ": Make your group(s) *impossible* to kill even when you *pass* *all* of your moves and then I will pass. If I'm too hard, try IdiotBot. If I'm too easy, try humans or DrunkenGnu. Source code is at http://londerings.cvs.sourceforge.net/londerings/go/simple_go/ : " Index: weakbot.c =================================================================== RCS file: /cvsroot/londerings/go/simple_go/weakbot.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** weakbot.c 27 Sep 2006 05:40:01 -0000 1.3 --- weakbot.c 3 Oct 2006 14:34:22 -0000 1.4 *************** *** 133,137 **** score -= 0.5; // self-atari move } ! mprintf("%o%1m: %f\n", move, score); popgo(); if(score > best_score) { --- 133,137 ---- score -= 0.5; // self-atari move } ! //mprintf("%o%1m: %f\n", move, score); popgo(); if(score > best_score) { *************** *** 141,145 **** } } ! mprintf("%obest: %1m\n", best_move); return best_move; } --- 141,145 ---- } } ! //mprintf("%obest: %1m\n", best_move); return best_move; } |
Update of /cvsroot/londerings/go/simple_go In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv3316 Modified Files: c_boardmodule.c game_experimental.py idiot_bot.py montecarlo.c montecarlo.h play_gtp.py test_c_board.py version.py Log Message: resignation for weak bots: if 100 random games all give at least 100 point lead for opponent: resign; chat support: chat current unconditional score as reply Index: c_boardmodule.c =================================================================== RCS file: /cvsroot/londerings/go/simple_go/c_boardmodule.c,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -r1.22 -r1.23 *** c_boardmodule.c 2 Oct 2006 03:45:47 -0000 1.22 --- c_boardmodule.c 2 Oct 2006 10:23:10 -0000 1.23 *************** *** 478,481 **** --- 478,490 ---- } + static PyObject *cboard_set_use_area_bonus(PyObject *self, PyObject *args) + { + if(!PyArg_ParseTuple(args, "i", &use_area_bonus)) { + return NULL; + } + Py_INCREF(Py_None); + return Py_None; + } + static PyObject *cboard_report_result_table_stats(PyObject *self, PyObject *args) { *************** *** 553,556 **** --- 562,566 ---- {"set_forbidden_move", cboard_set_forbidden_move, METH_VARARGS}, {"set_use_area_scoring_board", cboard_set_use_area_scoring_board, METH_VARARGS}, + {"set_use_area_bonus", cboard_set_use_area_bonus, METH_VARARGS}, {"report_result_table_stats", cboard_report_result_table_stats, METH_VARARGS}, {"random_uct_game", cboard_random_uct_game, METH_VARARGS}, Index: game_experimental.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/game_experimental.py,v retrieving revision 1.44 retrieving revision 1.45 diff -C2 -r1.44 -r1.45 *** game_experimental.py 2 Oct 2006 03:45:47 -0000 1.44 --- game_experimental.py 2 Oct 2006 10:23:10 -0000 1.45 *************** *** 1131,1134 **** --- 1131,1159 ---- return PASS_MOVE + def evaluate_weakbot_resign(self): + if self.check_all_unconditional(True, True): + dprintnl("weakbot resign evaluation, all decided:", False) + return False + old_komi = self.komi + cboard = self.current_board + if cboard.side==BLACK: + self.set_komi(old_komi - self.size**2/3.61) + else: + self.set_komi(old_komi + self.size**2/3.61) + c_board.set_use_area_bonus(False) + return_value = False + for i in range(100): + c_board.uct_game(self.c_color(), 1) + result = c_board.get_result_table(self.c_color()) + if result and result[0] > 0: + break + else: + return_value = True + self.set_komi(old_komi) + if config.debug_flag: + dprintnl("weakbot resign evaluation:", return_value, i, result) + c_board.set_use_area_bonus(True) + return return_value + def list_tactical_result_moves(self, pos_lst, block_move_statistics, biggest_size): cboard = self.current_board *************** *** 1143,1147 **** score2 = attack_lost_count / float(attack_win_count + attack_lost_count) prob_score = prob_diff_gaussian(score1, score2) ! score = prob_score * cboard.blocks[pos].size() / biggest_size result_moves.append((score, prob_score, pos, move_defend, score1, (defend_win_count, defend_lost_count), --- 1168,1172 ---- score2 = attack_lost_count / float(attack_win_count + attack_lost_count) prob_score = prob_diff_gaussian(score1, score2) ! score = prob_score * cboard.blocks[pos].size() #/ biggest_size result_moves.append((score, prob_score, pos, move_defend, score1, (defend_win_count, defend_lost_count), *************** *** 1282,1286 **** if move1_result and move2_result: score = prob_diff_gaussian(score1, score2) ! score = score * cboard.blocks[best_move].size() / biggest_size block_statistics[best_move] = count, score else: --- 1307,1311 ---- if move1_result and move2_result: score = prob_diff_gaussian(score1, score2) ! score = score * cboard.blocks[best_move].size() #/ biggest_size block_statistics[best_move] = count, score else: Index: idiot_bot.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/idiot_bot.py,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -r1.4 -r1.5 *** idiot_bot.py 7 Mar 2006 06:56:32 -0000 1.4 --- idiot_bot.py 2 Oct 2006 10:23:11 -0000 1.5 *************** *** 11,15 **** #For handicap placement also using SimpleBot v0.1.X engine ! import sys, os import play_gtp import simple_go --- 11,15 ---- #For handicap placement also using SimpleBot v0.1.X engine ! import sys, os, string import play_gtp import simple_go *************** *** 23,34 **** play_gtp.GTP_player.__init__(self) self.engine = simple_go.Game(19) ! self.version = "0.0.3" ! self.name = "IdiotBot: I play mostly randomly: if I'm too easy, try WeakBot50k. Its maybe 60 stones stronger. 30k humans are often 80 stones stronger. My info contains links to my source code: " ! def genmove_plain(self, color, remove_opponent_dead=True, pass_allowed=True): self.check_side2move(color) ! move = self.engine.select_random_no_eye_fill_move(remove_opponent_dead, pass_allowed) ! move = simple_go.move_as_string(move, self.engine.size) self.play_plain(color, move) return move --- 23,36 ---- play_gtp.GTP_player.__init__(self) self.engine = simple_go.Game(19) ! self.version = "0.0.4.resign" ! self.name = "IdiotBot: I play mostly randomly: if I'm too easy, try humans, GnuGo1pt2 or WeakBot50k. My info contains links to my source code: " def genmove_plain(self, color, remove_opponent_dead=True, pass_allowed=True): self.check_side2move(color) ! if self.engine.evaluate_weakbot_resign(): ! move = simple_go.RESIGN_MOVE ! else: ! move = self.engine.select_random_no_eye_fill_move(remove_opponent_dead, pass_allowed) ! move = string.lower(simple_go.move_as_string(move, self.engine.size)) self.play_plain(color, move) return move Index: montecarlo.c =================================================================== RCS file: /cvsroot/londerings/go/simple_go/montecarlo.c,v retrieving revision 1.29 retrieving revision 1.30 diff -C2 -r1.29 -r1.30 *** montecarlo.c 2 Oct 2006 03:45:47 -0000 1.29 --- montecarlo.c 2 Oct 2006 10:23:11 -0000 1.30 *************** *** 15,18 **** --- 15,19 ---- long long eval_count = 0; int use_area_scoring_board = FALSE; + int use_area_bonus = TRUE; #define DUMP_SGF FALSE *************** *** 1208,1212 **** #elif LIBERTY_SHAPE_EYE_RANDOM ! #define play_random_move play_liberty_shape_eye_random_move #elif PATTERN_RANDOM --- 1209,1213 ---- #elif LIBERTY_SHAPE_EYE_RANDOM ! #define play_random_move play_liberty_shape_eye_random_move #elif PATTERN_RANDOM *************** *** 1968,1971 **** --- 1969,1975 ---- double area_and_length_score_as_lost(double score, int white_length, int black_length, int color) { + if(!use_area_bonus) { + return 0.0; + } double area_score = area_score_as_lost(score); double length_score; Index: montecarlo.h =================================================================== RCS file: /cvsroot/londerings/go/simple_go/montecarlo.h,v retrieving revision 1.26 retrieving revision 1.27 diff -C2 -r1.26 -r1.27 *** montecarlo.h 2 Oct 2006 03:45:47 -0000 1.26 --- montecarlo.h 2 Oct 2006 10:23:11 -0000 1.27 *************** *** 76,80 **** #define RESULT_ENTRIES (1<<18) #else ! #define RESULT_ENTRIES (1<<20) //200MB: (1<<20) #endif void report_result_table_stats(); --- 76,80 ---- #define RESULT_ENTRIES (1<<18) #else ! #define RESULT_ENTRIES (1<<17) //200MB: (1<<20) #endif void report_result_table_stats(); *************** *** 92,95 **** --- 92,96 ---- extern int use_area_scoring_board; + extern int use_area_bonus; #define AREA_SCORE_FACTOR 0.001 #define GAME_LENGTH_SCORE_FACTOR 0.0 //(AREA_SCORE_FACTOR * 0.01) Index: play_gtp.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/play_gtp.py,v retrieving revision 1.75 retrieving revision 1.76 diff -C2 -r1.75 -r1.76 *** play_gtp.py 27 Sep 2006 05:40:01 -0000 1.75 --- play_gtp.py 2 Oct 2006 10:23:11 -0000 1.76 *************** *** 185,188 **** --- 185,189 ---- self.log_fp = open(log_name, "w") self.clock = None + self.chat_count = 0 self.move_generated = False log(version.name + " " + version.number + "\n") *************** *** 272,275 **** --- 273,277 ---- sys.exit(1) self.move_generated = False + self.chat_count = 0 return self.ok("") *************** *** 436,439 **** --- 438,454 ---- return self.error("no moves") + def chat(self, chat_type, name, msg): + white_score, black_score = self.engine.current_board.unconditional_score(simple_go.WHITE + simple_go.BLACK) + unresolved = self.engine.size**2 - white_score - black_score + if chat_type=="private": + reply = "unconditional score: W:%i B:%i unresolved:%i (result: %s)" % (white_score, black_score, unresolved, self.final_score_as_string()) + else: + if self.chat_count==0: + reply = "Hi" + else: + reply = "Thanks" + self.chat_count = self.chat_count + 1 + return reply + def list_commands(self): result = string.join(("list_commands", *************** *** 456,459 **** --- 471,475 ---- "time_settings", "time_left", + "kgs-chat", "get_random_seed" ), "\n") *************** *** 542,545 **** --- 558,563 ---- else: result = self.error("unknown") + elif cmd=="kgs-chat": + result = self.ok(self.chat(cmd_lst[1], cmd_lst[2], cmd_lst[3])) elif cmd=="quit": result = "=\n\n" Index: test_c_board.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/test_c_board.py,v retrieving revision 1.38 retrieving revision 1.39 diff -C2 -r1.38 -r1.39 *** test_c_board.py 2 Oct 2006 03:45:47 -0000 1.38 --- test_c_board.py 2 Oct 2006 10:23:11 -0000 1.39 *************** *** 1073,1084 **** #g = load_sgf.load_file("kgs/miyaki-SimpleBot_ladder_test.sgf") #g = load_sgf.load_file("kgs/CrazyStone-minue622_ladder_test.sgf") ! g = Game(5) ! g.set_komi(24.5) print g.current_board config.fast_time_limit = 0.1 ! config.time_per_move_limit = 100000000000 config.games_per_move_limit = 1000000000000 #config.uct_count = lambda size:config.games_per_move_limit ! config.use_uct_tactics = not True #c_board.set_use_area_scoring_board(False) #config.use_uct_tactics = False --- 1073,1086 ---- #g = load_sgf.load_file("kgs/miyaki-SimpleBot_ladder_test.sgf") #g = load_sgf.load_file("kgs/CrazyStone-minue622_ladder_test.sgf") ! g = load_sgf.load_file("kgs/StoneCrazy-SimpleBot_missed_life.sgf") ! #g = load_sgf.load_file("kgs/SimpleBot-WeakBot50k_fake_tournament_phony_problem.sgf") ! #g = Game(5) ! #g.set_komi(24.5) print g.current_board config.fast_time_limit = 0.1 ! config.time_per_move_limit = 100 config.games_per_move_limit = 1000000000000 #config.uct_count = lambda size:config.games_per_move_limit ! config.use_uct_tactics = True #c_board.set_use_area_scoring_board(False) #config.use_uct_tactics = False *************** *** 1119,1122 **** --- 1121,1175 ---- print move_as_string(c_board.generate_weakbot_move(g.c_color())) + def show_resign_probability(g): + c_board.clear_result_table() + move = g.generate_move() + result = c_board.get_result_table(g.c_color()) + if not result: + score = "?" + else: + score = result2score(result) + print score, result, move_as_string(move) + return score + + def test_resign_probability(): + #g = load_sgf.load_file("kgs/namy-IdiotBot.sgf") + g = load_sgf.load_file("kgs/gtgrouch-IdiotBot.sgf") + moves = g.move_history[:] + while g.undo_move(): + pass + config.fast_time_limit = 100 + config.time_per_move_limit = 100 + config.games_per_move_limit = 100 + komi = g.komi + i = 0 + result_table = [] + for move in moves: + i += 1 + g.make_move(move) + if g.current_board.side==WHITE: + continue + print "="*60 + print g.current_board + print i + resign_flag = g.evaluate_weakbot_resign() + #g.set_komi(komi) + #print i, "normal komi" + #score1 = show_resign_probability(g) + + #print "-"*60 + #g.set_komi(komi + 100) + #print i, "+100 komi" + #score2 = show_resign_probability(g) + + #print "-"*60 + #g.set_komi(komi - 100) + #print i, "-100 komi" + #score3 = show_resign_probability(g) + #result_table.append((i, score1, score2, score3)) + result_table.append((i, resign_flag)) + + pprint(result_table) + #g.set_komi(g.komi + 100) + if __name__=="__main__": #g = Game(9) *************** *** 1131,1135 **** #play_tactical_game() #test_tactical_uct(g) ! g = test_tactical_uct2() #test_weakbot() #g = Game(2) --- 1184,1188 ---- #play_tactical_game() #test_tactical_uct(g) ! #g = test_tactical_uct2() #test_weakbot() #g = Game(2) Index: version.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/version.py,v retrieving revision 1.72 retrieving revision 1.73 diff -C2 -r1.72 -r1.73 *** version.py 2 Oct 2006 03:45:47 -0000 1.72 --- version.py 2 Oct 2006 10:23:11 -0000 1.73 *************** *** 1,3 **** ! number = "0.4.1_1tactics_0_9_absolute" name = "SimpleGo" message = ": For more info see http://londerings.novalis.org/wlog/index.php?title=SimpleGo_v0.4.1 Source code is at http://londerings.cvs.sourceforge.net/londerings/go/simple_go/ : " --- 1,3 ---- ! number = "0.4.1_1tactics_0_9_absolute_weak_resign" name = "SimpleGo" message = ": For more info see http://londerings.novalis.org/wlog/index.php?title=SimpleGo_v0.4.1 Source code is at http://londerings.cvs.sourceforge.net/londerings/go/simple_go/ : " |
From: Aloril <al...@us...> - 2006-10-02 03:45:58
|
Update of /cvsroot/londerings/go/simple_go In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv6424 Modified Files: c_board.h c_boardmodule.c config.py game_experimental.py load_sgf.py montecarlo.c montecarlo.h test_bayesian.py test_c_board.py version.py Log Message: gives 'infinite' score to solved positions: solves 4x4 go board using only uct and without unconditional reading, tactical uct untested Index: c_board.h =================================================================== RCS file: /cvsroot/londerings/go/simple_go/c_board.h,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** c_board.h 22 Sep 2006 14:54:04 -0000 1.3 --- c_board.h 2 Oct 2006 03:45:47 -0000 1.4 *************** *** 17,20 **** extern int forbidden_moves[BOARDSIZE]; ! #define WORST_SCORE -1000000000 --- 17,22 ---- extern int forbidden_moves[BOARDSIZE]; ! #define INFINITE_COUNT 1E20 ! #define WORST_SCORE -1E30 + #define SCORE_IS_ABSOLUTE(score) (fabs(score) >= INFINITE_COUNT - 1.0) Index: c_boardmodule.c =================================================================== RCS file: /cvsroot/londerings/go/simple_go/c_boardmodule.c,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -r1.21 -r1.22 *** c_boardmodule.c 27 Sep 2006 05:40:01 -0000 1.21 --- c_boardmodule.c 2 Oct 2006 03:45:47 -0000 1.22 *************** *** 238,245 **** } for(i = 0; i < count; i++) { uct_game_normal(0, color); } ! Py_INCREF(Py_None); ! return Py_None; } --- 238,249 ---- } for(i = 0; i < count; i++) { + double win_count, lost_count; + get_result_table(&win_count, &lost_count, color); + if(SCORE_IS_ABSOLUTE(win_count) || SCORE_IS_ABSOLUTE(lost_count)) { + break; + } uct_game_normal(0, color); } ! return PyInt_FromLong(i); } Index: config.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/config.py,v retrieving revision 1.60 retrieving revision 1.61 diff -C2 -r1.60 -r1.61 *** config.py 27 Sep 2006 05:40:01 -0000 1.60 --- config.py 2 Oct 2006 03:45:47 -0000 1.61 *************** *** 142,149 **** # time management settings fast_time_limit = 10 ! #time_per_move_limit = 25 ! #games_per_move_limit = 2**63 #let time to limit usually... ! time_per_move_limit = 1000 ! games_per_move_limit = 1000 games_report_frequency = 1000000 games_per_second_estimate = 2000 --- 142,149 ---- # time management settings fast_time_limit = 10 ! time_per_move_limit = 25 ! games_per_move_limit = 2**63 #let time to limit usually... ! #time_per_move_limit = 1000 ! #games_per_move_limit = 1000 games_report_frequency = 1000000 games_per_second_estimate = 2000 Index: game_experimental.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/game_experimental.py,v retrieving revision 1.43 retrieving revision 1.44 diff -C2 -r1.43 -r1.44 *** game_experimental.py 22 Sep 2006 14:54:04 -0000 1.43 --- game_experimental.py 2 Oct 2006 03:45:47 -0000 1.44 *************** *** 970,973 **** --- 970,979 ---- # return move self.time0 = time.time() + #if self.size <= 9 and len(self.move_history)==0: + # middle = (self.size + 1)//2 + # move = (middle, middle) + # if config.debug_flag: + # dprintnl("no moves, play tengen:", move_as_string(move)) + # return move if config.time_per_move_limit <= config.fast_time_limit or c_board.uct_game == c_board.random_uct_game: self.fast_flag = True *************** *** 1020,1029 **** while not games_count or self.time_usage_ok(games_count): if pos: ! c_board.uct_capture(pos, self.c_color(), config.uct_count(self.size)) else: ! c_board.uct_game(self.c_color(), config.uct_count(self.size)) status_done = False nodes_count = c_board.get_trymove_counter() - start_nodes ! games_count += config.uct_count(self.size) result_enough = False --- 1026,1037 ---- while not games_count or self.time_usage_ok(games_count): if pos: ! games_count_add = c_board.uct_capture(pos, self.c_color(), config.uct_count(self.size)) else: ! games_count_add = c_board.uct_game(self.c_color(), config.uct_count(self.size)) ! if not games_count_add: #solved ! break status_done = False nodes_count = c_board.get_trymove_counter() - start_nodes ! games_count += games_count_add result_enough = False Index: load_sgf.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/load_sgf.py,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -r1.10 -r1.11 *** load_sgf.py 31 Aug 2006 05:01:48 -0000 1.10 --- load_sgf.py 2 Oct 2006 03:45:47 -0000 1.11 *************** *** 90,93 **** --- 90,103 ---- return g + def game2gtp(g): + print "boardsize %i\n" % g.size + color = "black" + for move in g.move_history: + print "play %s %s\n" % (color, simple_go.move_as_string(move)) + if color=="black": + color = "white" + else: + color = "black" + def test_time_usage(file_name, color): g = load_file(file_name) Index: montecarlo.c =================================================================== RCS file: /cvsroot/londerings/go/simple_go/montecarlo.c,v retrieving revision 1.28 retrieving revision 1.29 diff -C2 -r1.28 -r1.29 *** montecarlo.c 27 Sep 2006 05:40:01 -0000 1.28 --- montecarlo.c 2 Oct 2006 03:45:47 -0000 1.29 *************** *** 1923,1927 **** int move_list_max; int move; ! int total_count, last_total_count = 0; move_list_max = list_board_and_pass(move_list); for(i = 0; i < move_list_max; i++) { --- 1923,1927 ---- int move_list_max; int move; ! double total_count, last_total_count = 0; move_list_max = list_board_and_pass(move_list); for(i = 0; i < move_list_max; i++) { *************** *** 2036,2040 **** } ! void uct_game_normal(int block_pos, int color0) { int i; --- 2036,2040 ---- } ! void old_uct_game_normal(int block_pos, int color0) { int i; *************** *** 2052,2055 **** --- 2052,2056 ---- int move_list[board_size*board_size + 1]; int move_list_max; + Hash_data hash_history[MAX_MONTE_CARLO_STACK]; int print_flag = FALSE; int print_flag2 = FALSE; *************** *** 2068,2071 **** --- 2069,2073 ---- //dump_stack(); while(uct_flag && stackp < MAX_MONTE_CARLO_STACK) { + hash_history[count] = board_hash; int other_color; double move_win_count, move_lost_count; *************** *** 2112,2141 **** move = move_list[i]; if(trymove(move, color, NULL, NO_MOVE)) { ! move_node = get_result_table(&move_lost_count, &move_win_count, other_color); ! if(move_node) { ! n = move_win_count + move_lost_count; ! v = move_win_count / n; ! score = v + sqrt((2*log(t))/(10*n)); ! //printf("%i: move found: (%i, %i), (%i+%i) %f %f %f\n", count, i, j, ! // move_win_count, move_lost_count, n, v, score); } else { ! score = 100.0; #if CAPTURE_PREVIOUS_ATARI ! //among unknowns prefer capturing self atari moves ! if(move==previous_move_atari_move) { ! score += 1.0; ! } #endif ! } ! //printf("score: %f ", score); ! score += gg_drand() * 1E-7; ! //if(count==0) { ! // mprintf("%o%m %f | ", I(move), J(move), score); ! //} ! //printf(" -> %f\n", score); ! popgo(); ! if(score > best_score) { ! best_score = score; ! best_move = move; } } --- 2114,2157 ---- move = move_list[i]; if(trymove(move, color, NULL, NO_MOVE)) { ! int is_super_ko = FALSE; ! if(move!=PASS_MOVE) { ! int j; ! for(j = 0; j <= count; j++) { ! if(hashdata_is_equal(hash_history[j], board_hash)) { ! is_super_ko = TRUE; ! break; ! } ! } ! } ! if(is_super_ko) { ! popgo(); } else { ! move_node = get_result_table(&move_lost_count, &move_win_count, other_color); ! if(move_node) { ! n = move_win_count + move_lost_count; ! v = move_win_count / n; ! score = v + sqrt((2*log(t))/(10*n)); ! //printf("%i: move found: (%i, %i), (%i+%i) %f %f %f\n", count, i, j, ! // move_win_count, move_lost_count, n, v, score); ! } else { ! score = 100.0; #if CAPTURE_PREVIOUS_ATARI ! //among unknowns prefer capturing self atari moves ! if(move==previous_move_atari_move) { ! score += 1.0; ! } #endif ! } ! //printf("score: %f ", score); ! score += gg_drand() * 1E-7; ! //if(count==0) { ! // mprintf("%o%m %f | ", I(move), J(move), score); ! //} ! //printf(" -> %f\n", score); ! popgo(); ! if(score > best_score) { ! best_score = score; ! best_move = move; ! } } } *************** *** 2495,2496 **** --- 2511,2717 ---- } + int list_capture_goal_moves_uct(int color, int *move_list) + { + signed char available_score[BOARDMAX]; + int move_list_max = init_available_local(capture_goal, move_list, available_score, color); + move_list[move_list_max++] = PASS_MOVE; + int count2 = play_accurate_tactics(capture_goal, color); + if(count2) { + undo_game(count2-1); + int move, stack_color; + get_move_from_stack(stackp - 1, &move, &stack_color); + popgo(); + if(stack_color==color) { //we know capturing move, ignore uct and random games and play it! + move_list_max = 0; + move_list[move_list_max++] = move; + } + } + return move_list_max; + } + + typedef struct { + Hash_data hash_history[MAX_MONTE_CARLO_STACK]; + int move_list[MAX_BOARD * MAX_BOARD + 1]; + int move_list_max; + int block_color; + } UctSearchInfo; + + #if 0 + void show_current(char *msg, int color, double win_score, double lost_score) + { + double win_count, lost_count; + simple_showboard(stdout); printf("\n\n"); + dump_stack(); + get_result_table(&win_count, &lost_count, color); + printf("%s add: %f %f, total: %f, %f\n\n", msg, win_score, lost_score, win_count, lost_count); + printf("------------------------------------------------------------\n"); + } + #else + #define show_current(msg, color, win_score, lost_score) + #endif + + void score_final_position(UctSearchInfo *info, int color, double *win_result, double *lost_result) + { + double score = uct_score(capture_goal, info->block_color, color); + if(score > 0) { + *win_result = INFINITE_COUNT; + *lost_result = 0.0; + } else { + *win_result = 0.0; + *lost_result = INFINITE_COUNT; + } + update_result_table(*win_result, *lost_result, color); + } + + void score_with_random_game(UctSearchInfo *info, int color, double *win_result, double *lost_result, int depth) + { + int white_length, black_length; + int random_length = play_random_game(color); + double score = uct_score(capture_goal, info->block_color, color); + get_game_length(depth + random_length, &white_length, &black_length); + undo_game(random_length); + if(score > 0) { + *win_result = 1.0; + *lost_result = area_and_length_score_as_lost(score, white_length, black_length, color); + } else { + *win_result = area_and_length_score_as_lost(score, white_length, black_length, color); + *lost_result = 1.0; + } + update_result_table(*win_result, *lost_result, color); + } + + void score_absolute(int color, double score, double *win_result, double *lost_result) + { + if(score > 0) { + *win_result = score; + *lost_result = 0.0; + } else { + *win_result = 0.0; + *lost_result = -score; + } + update_result_table(*win_result, *lost_result, color); + } + + void score_recursive(int color, double second_best_score, double child_win_result, double child_lost_result, double *win_result, double *lost_result) + { + double win_count, lost_count; + get_result_table(&win_count, &lost_count, color); + if(SCORE_IS_ABSOLUTE(child_lost_result) && !SCORE_IS_ABSOLUTE(second_best_score)) { + child_lost_result = 1.0; + } + update_result_table(win_count + child_win_result, lost_count + child_lost_result, color); + *win_result = child_win_result; + *lost_result = child_lost_result; + } + + void uct_game_recursive(UctSearchInfo *info, int color, int depth, double *win_result, double *lost_result) + { + double win_count, lost_count; + double score; + int i; + int other_color; + double move_win_count, move_lost_count; + int move, best_move = NO_MOVE; + ResultNode *node, *move_node; + double best_score = WORST_SCORE; + double second_best_score = WORST_SCORE; + double v, t, n; + + if(stackp >= MAX_MONTE_CARLO_STACK || get_pass_count() >= 2 || + (capture_goal > 0 && board[capture_goal]==EMPTY)) { + score_final_position(info, color, win_result, lost_result); + show_current("final position", color, *win_result, *lost_result); + return; + } + + info->hash_history[depth] = board_hash; + node = get_result_table(&win_count, &lost_count, color); + if(!node) { + score_with_random_game(info, color, win_result, lost_result, depth); + show_current("random game", color, *win_result, *lost_result); + return; + } + + if(capture_goal > 0) { + info->move_list_max = list_capture_goal_moves_uct(color, info->move_list); + } + t = win_count + lost_count; + other_color = OTHER_COLOR(color); + for(i = 0; i < info->move_list_max; i++) { + move = info->move_list[i]; + if(trymove(move, color, NULL, NO_MOVE)) { + int is_super_ko = FALSE; + if(move!=PASS_MOVE) { + int j; + for(j = 0; j <= depth; j++) { + if(hashdata_is_equal(info->hash_history[j], board_hash)) { + is_super_ko = TRUE; + break; + } + } + } + if(is_super_ko) { + popgo(); + } else { + move_node = get_result_table(&move_lost_count, &move_win_count, other_color); + if(move_node) { + n = move_win_count + move_lost_count; + if(SCORE_IS_ABSOLUTE(n)) { + score = move_win_count - move_lost_count; + } else { + v = move_win_count / n; + score = v + sqrt((2*log(t))/(10*n)); + //printf("%i: move found: (%i, %i), (%i+%i) %f %f %f\n", count, i, j, + // move_win_count, move_lost_count, n, v, score); + } + } else { + score = 100.0; + } + //printf("score: %f ", score); + score += gg_drand() * 1E-7; + //if(count==0) { + // mprintf("%o%m %f | ", I(move), J(move), score); + //} + //printf(" -> %f\n", score); + popgo(); + if(score > best_score) { + second_best_score = best_score; + best_score = score; + best_move = move; + } else if(score > second_best_score) { + second_best_score = score; + } + } + } + } + + if(best_score==WORST_SCORE) { + score_final_position(info, color, win_result, lost_result); + show_current("final because no ok move", color, *win_result, *lost_result); + return; + } + if(SCORE_IS_ABSOLUTE(best_score)) { + score_absolute(color, best_score, win_result, lost_result); + show_current("absolute", color, *win_result, *lost_result); + return; + } + trymove(best_move, color, NULL, NO_MOVE); + uct_game_recursive(info, other_color, depth + 1, &lost_count, &win_count); + popgo(); + score_recursive(color, second_best_score, win_count, lost_count, win_result, lost_result); + show_current("normal scoring", color, *win_result, *lost_result); + } + + void uct_game_normal(int block_pos, int color) + { + UctSearchInfo info; + double win_result, lost_result; + info.block_color = GRAY; + info.move_list_max = list_board_and_pass(info.move_list); + capture_goal = block_pos; + if(capture_goal > 0) { + info.block_color = board[capture_goal]; + ASSERT1(IS_STONE(info.block_color), capture_goal); + } + uct_game_recursive(&info, color, 0, &win_result, &lost_result); + } Index: montecarlo.h =================================================================== RCS file: /cvsroot/londerings/go/simple_go/montecarlo.h,v retrieving revision 1.25 retrieving revision 1.26 diff -C2 -r1.25 -r1.26 *** montecarlo.h 27 Sep 2006 05:40:01 -0000 1.25 --- montecarlo.h 2 Oct 2006 03:45:47 -0000 1.26 *************** *** 76,80 **** #define RESULT_ENTRIES (1<<18) #else ! #define RESULT_ENTRIES (1<<17) //200MB: (1<<20) #endif void report_result_table_stats(); --- 76,80 ---- #define RESULT_ENTRIES (1<<18) #else ! #define RESULT_ENTRIES (1<<20) //200MB: (1<<20) #endif void report_result_table_stats(); Index: test_bayesian.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/test_bayesian.py,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -r1.11 -r1.12 *** test_bayesian.py 31 Aug 2006 05:01:48 -0000 1.11 --- test_bayesian.py 2 Oct 2006 03:45:47 -0000 1.12 *************** *** 623,624 **** --- 623,642 ---- result_sum += play_game_c(g, string_as_move("A1")) print move_str, result_sum + + def liberty_statistics(seed, count, game_factory=FastRandomFactory): + random.seed(seed) + for i in range(count): + g = game_factory() + cboard = g.current_board + while not g.has_2_passes(): + statistics = {} + for block in cboard.iterate_blocks(BLACK+WHITE): + lib_count = cboard.block_liberties(block) + if lib_count > 2: + continue + key = lib_count, block.size() + statistics[key] = statistics.get(key, 0) + 1 + print cboard + pprint(statistics) + move = g.generate_move() + g.make_move(move) Index: test_c_board.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/test_c_board.py,v retrieving revision 1.37 retrieving revision 1.38 diff -C2 -r1.37 -r1.38 *** test_c_board.py 27 Sep 2006 05:40:01 -0000 1.37 --- test_c_board.py 2 Oct 2006 03:45:47 -0000 1.38 *************** *** 1069,1076 **** #g = load_sgf.load_file("kgs/9x9_ha9.sgf") #g = load_sgf.load_file("kgs/Aloriless-SimpleBot_pass_problem.sgf") ! g = load_sgf.load_file("kgs/simple_areas_scoring.sgf") #g = load_sgf.load_file("kgs/super_ko_violation_best.sgf") print g.current_board ! config.time_per_move_limit = 13 config.use_uct_tactics = not True #c_board.set_use_area_scoring_board(False) --- 1069,1083 ---- #g = load_sgf.load_file("kgs/9x9_ha9.sgf") #g = load_sgf.load_file("kgs/Aloriless-SimpleBot_pass_problem.sgf") ! #g = load_sgf.load_file("kgs/simple_areas_scoring.sgf") #g = load_sgf.load_file("kgs/super_ko_violation_best.sgf") + #g = load_sgf.load_file("kgs/miyaki-SimpleBot_ladder_test.sgf") + #g = load_sgf.load_file("kgs/CrazyStone-minue622_ladder_test.sgf") + g = Game(5) + g.set_komi(24.5) print g.current_board ! config.fast_time_limit = 0.1 ! config.time_per_move_limit = 100000000000 ! config.games_per_move_limit = 1000000000000 ! #config.uct_count = lambda size:config.games_per_move_limit config.use_uct_tactics = not True #c_board.set_use_area_scoring_board(False) *************** *** 1113,1117 **** if __name__=="__main__": ! g = Game(9) #test_uct(1) #show_result_tree() --- 1120,1124 ---- if __name__=="__main__": ! #g = Game(9) #test_uct(1) #show_result_tree() *************** *** 1124,1128 **** #play_tactical_game() #test_tactical_uct(g) ! #g = test_tactical_uct2() #test_weakbot() pass --- 1131,1140 ---- #play_tactical_game() #test_tactical_uct(g) ! g = test_tactical_uct2() #test_weakbot() + #g = Game(2) + #g.make_move(string_as_move("A1")) + #g.make_move(string_as_move("PASS")) + #g.make_move(string_as_move("B2")) + #uct_search(1, g) pass Index: version.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/version.py,v retrieving revision 1.71 retrieving revision 1.72 diff -C2 -r1.71 -r1.72 *** version.py 27 Sep 2006 05:40:01 -0000 1.71 --- version.py 2 Oct 2006 03:45:47 -0000 1.72 *************** *** 1,3 **** ! number = "0.4.1_1tactics_0_9" name = "SimpleGo" message = ": For more info see http://londerings.novalis.org/wlog/index.php?title=SimpleGo_v0.4.1 Source code is at http://londerings.cvs.sourceforge.net/londerings/go/simple_go/ : " --- 1,3 ---- ! number = "0.4.1_1tactics_0_9_absolute" name = "SimpleGo" message = ": For more info see http://londerings.novalis.org/wlog/index.php?title=SimpleGo_v0.4.1 Source code is at http://londerings.cvs.sourceforge.net/londerings/go/simple_go/ : " |
Update of /cvsroot/londerings/go/simple_go In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv10393 Modified Files: c_boardmodule.c config.py montecarlo.c montecarlo.h play_gtp.py test_c_board.py version.py weakbot.c Log Message: probabilistic 1-tactics added to random play; get random seed Index: c_boardmodule.c =================================================================== RCS file: /cvsroot/londerings/go/simple_go/c_boardmodule.c,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -r1.20 -r1.21 *** c_boardmodule.c 22 Sep 2006 14:54:04 -0000 1.20 --- c_boardmodule.c 27 Sep 2006 05:40:01 -0000 1.21 *************** *** 145,148 **** --- 145,158 ---- } + static PyObject *cboard_get_random_seed(PyObject *self, PyObject *args) + { + unsigned int seed; + if(!PyArg_ParseTuple(args, "")) { + return NULL; + } + seed = get_random_seed(); + return PyInt_FromLong(seed); + } + static PyObject *cboard_rand(PyObject *self, PyObject *args) { *************** *** 513,516 **** --- 523,527 ---- {"board_as_string", cboard_board_as_string, METH_VARARGS}, {"set_random_seed", cboard_set_random_seed, METH_VARARGS}, + {"get_random_seed", cboard_get_random_seed, METH_VARARGS}, {"rand", cboard_rand, METH_VARARGS}, {"alpha_beta_search", cboard_alpha_beta_search, METH_VARARGS}, *************** *** 549,553 **** (void) Py_InitModule("c_board", cBoardMethods); init_size(9); ! gg_srand(1); init_result_table(); init_pattern_result_table(); --- 560,565 ---- (void) Py_InitModule("c_board", cBoardMethods); init_size(9); ! //gg_srand(1); ! set_random_seed(time(0)); init_result_table(); init_pattern_result_table(); Index: config.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/config.py,v retrieving revision 1.59 retrieving revision 1.60 diff -C2 -r1.59 -r1.60 *** config.py 22 Sep 2006 14:54:04 -0000 1.59 --- config.py 27 Sep 2006 05:40:01 -0000 1.60 *************** *** 142,147 **** # time management settings fast_time_limit = 10 ! time_per_move_limit = 25 ! games_per_move_limit = 2**63 #let time to limit usually... games_report_frequency = 1000000 games_per_second_estimate = 2000 --- 142,149 ---- # time management settings fast_time_limit = 10 ! #time_per_move_limit = 25 ! #games_per_move_limit = 2**63 #let time to limit usually... ! time_per_move_limit = 1000 ! games_per_move_limit = 1000 games_report_frequency = 1000000 games_per_second_estimate = 2000 Index: montecarlo.c =================================================================== RCS file: /cvsroot/londerings/go/simple_go/montecarlo.c,v retrieving revision 1.27 retrieving revision 1.28 diff -C2 -r1.27 -r1.28 *** montecarlo.c 8 Sep 2006 18:16:12 -0000 1.27 --- montecarlo.c 27 Sep 2006 05:40:01 -0000 1.28 *************** *** 528,531 **** --- 528,650 ---- } + int get_random_1_tactic_moves(int *available, double *available_score) + { + int pos, move; + int available_count = 0; + signed char mx[BOARDMAX]; + memset(mx, 0, sizeof(mx)); + for(pos = 0; pos < BOARDMAX; pos++) { + if(IS_STONE(board[pos]) && !mx[pos]) { + mark_string(pos, mx, 1); + if(countlib(pos)==1) { + findlib(pos, 1, &move); + available[available_count] = -move; + available_score[available_count++] = -1; + } + } + } + return available_count; + } + + int play_liberty_shape_random_move_tactics(int color) + { + /* play random move according to liberty shape score (like weakbot50k) + */ + int i, j; + int ind, pos; + int k; + int ok, has_color, has_other_color; + int other_color = OTHER_COLOR(color); + int available_count; + int available[board_size*board_size]; + double available_score[board_size*board_size]; + double score; + int tactics_flag = FALSE; + available_count = 0; + if(gg_drand() <= LIBERTY_SHAPE_RANDOM_TACTICS_RATIO) { //prefers tactics? + available_count = get_random_1_tactic_moves(available, available_score); + } + if(available_count) { + tactics_flag = TRUE; + } else { + for (i = 0; i < board_size; i++) { + for (j = 0; j < board_size; j++) { + if (BOARD(i, j) == EMPTY) { + pos = POS(i, j); + available[available_count] = -pos; + available_score[available_count++] = -1; + } + } + } + } + + int rejection_count = 0; + while(available_count && rejection_count < 100) { + double drand = gg_drand(); + if(drand < 0.1 / available_count && !tactics_flag) { // give pass a chance, for example seki needs this + return PASS_MOVE; + } + ind = gg_rand() % available_count; + pos = available[ind]; + if(pos < 0) { + pos = -pos; + ok = FALSE; + has_color = has_other_color = FALSE; + for (k = 0; k < 4; k++) { + int neighbor_pos = pos + delta[k]; + int neighbor = board[neighbor_pos]; + if(neighbor==EMPTY) { + ok = TRUE; + break; + } else if(neighbor==color) { + if(has_other_color || countlib(neighbor_pos)==1) { + ok = TRUE; + break; + } + has_color = TRUE; + } else if(neighbor==other_color) { + if(has_color || countlib(neighbor_pos)==1) { + ok = TRUE; + break; + } + has_other_color = TRUE; + } + } + if(!ok) { + available[ind] = available[available_count - 1]; + available_score[ind] = available_score[available_count - 1]; + available_count--; + continue; + } + available[ind] = pos; + } + score = available_score[ind]; + if(score < 0) { + score = liberty_score_move(pos, color); + score = score2probability(score); + available_score[ind] = score; + } + drand = gg_drand(); + if(drand > score) { + rejection_count++; + //printf("rejected: %f %f\n", drand, score); + continue; + } + //printf("ok: %f %f\n", drand, score); + available[ind] = available[available_count - 1]; + available_score[ind] = available_score[available_count - 1]; + available_count--; + + if(trymove(pos, color, NULL, NO_MOVE)) { + //simple_showboard(stdout);printf("\n\n"); + return pos; + } + } + if(tactics_flag) { + return play_liberty_shape_random_move(color); + } + return PASS_MOVE; + } + int play_best_liberty_shape_random_move(int color) { *************** *** 1082,1085 **** --- 1201,1207 ---- #define play_random_move play_liberty_shape_random_move + #elif LIBERTY_SHAPE_RANDOM_TACTICS + #define play_random_move play_liberty_shape_random_move_tactics + #elif BEST_LIBERTY_SHAPE_RANDOM #define play_random_move play_best_liberty_shape_random_move Index: montecarlo.h =================================================================== RCS file: /cvsroot/londerings/go/simple_go/montecarlo.h,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -r1.24 -r1.25 *** montecarlo.h 22 Sep 2006 14:54:04 -0000 1.24 --- montecarlo.h 27 Sep 2006 05:40:01 -0000 1.25 *************** *** 6,10 **** #define COMPLETELY_RANDOM FALSE #define BROWN_RANDOM FALSE ! #define LIBERTY_SHAPE_RANDOM TRUE #define BEST_LIBERTY_SHAPE_RANDOM FALSE #define LIBERTY_SHAPE_EYE_RANDOM FALSE --- 6,12 ---- #define COMPLETELY_RANDOM FALSE #define BROWN_RANDOM FALSE ! #define LIBERTY_SHAPE_RANDOM FALSE ! #define LIBERTY_SHAPE_RANDOM_TACTICS TRUE ! #define LIBERTY_SHAPE_RANDOM_TACTICS_RATIO 0.9 #define BEST_LIBERTY_SHAPE_RANDOM FALSE #define LIBERTY_SHAPE_EYE_RANDOM FALSE Index: play_gtp.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/play_gtp.py,v retrieving revision 1.74 retrieving revision 1.75 diff -C2 -r1.74 -r1.75 *** play_gtp.py 8 Sep 2006 18:16:12 -0000 1.74 --- play_gtp.py 27 Sep 2006 05:40:01 -0000 1.75 *************** *** 456,459 **** --- 456,460 ---- "time_settings", "time_left", + "get_random_seed" ), "\n") return self.ok(result) *************** *** 536,539 **** --- 537,545 ---- elif cmd=="time_settings": result = self.ok(self.clock.set_time(cmd_lst[1:])) + elif cmd=="get_random_seed": + if config.use_c: + result = self.ok(str(config.c_board.get_random_seed())) + else: + result = self.error("unknown") elif cmd=="quit": result = "=\n\n" Index: test_c_board.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/test_c_board.py,v retrieving revision 1.36 retrieving revision 1.37 diff -C2 -r1.36 -r1.37 *** test_c_board.py 22 Sep 2006 14:54:04 -0000 1.36 --- test_c_board.py 27 Sep 2006 05:40:01 -0000 1.37 *************** *** 1108,1111 **** --- 1108,1112 ---- #g = load_sgf.load_file("kgs/1tactics.sgf") g = load_sgf.load_file("kgs/liberty_bonus.sgf") + #g = load_sgf.load_file("kgs/t") #g.make_move(PASS_MOVE) print move_as_string(c_board.generate_weakbot_move(g.c_color())) *************** *** 1124,1127 **** #test_tactical_uct(g) #g = test_tactical_uct2() ! test_weakbot() pass --- 1125,1128 ---- #test_tactical_uct(g) #g = test_tactical_uct2() ! #test_weakbot() pass Index: version.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/version.py,v retrieving revision 1.70 retrieving revision 1.71 diff -C2 -r1.70 -r1.71 *** version.py 22 Sep 2006 15:16:31 -0000 1.70 --- version.py 27 Sep 2006 05:40:01 -0000 1.71 *************** *** 1,3 **** ! number = "0.4.1.tactical&area_uct_(random_uct11) faster14" name = "SimpleGo" message = ": For more info see http://londerings.novalis.org/wlog/index.php?title=SimpleGo_v0.4.1 Source code is at http://londerings.cvs.sourceforge.net/londerings/go/simple_go/ : " --- 1,3 ---- ! number = "0.4.1_1tactics_0_9" name = "SimpleGo" message = ": For more info see http://londerings.novalis.org/wlog/index.php?title=SimpleGo_v0.4.1 Source code is at http://londerings.cvs.sourceforge.net/londerings/go/simple_go/ : " Index: weakbot.c =================================================================== RCS file: /cvsroot/londerings/go/simple_go/weakbot.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -r1.2 -r1.3 *** weakbot.c 22 Sep 2006 15:16:31 -0000 1.2 --- weakbot.c 27 Sep 2006 05:40:01 -0000 1.3 *************** *** 133,137 **** score -= 0.5; // self-atari move } ! //mprintf("%o%1m: %f\n", move, score); popgo(); if(score > best_score) { --- 133,137 ---- score -= 0.5; // self-atari move } ! mprintf("%o%1m: %f\n", move, score); popgo(); if(score > best_score) { *************** *** 141,145 **** } } ! //mprintf("%obest: %1m\n", best_move); return best_move; } --- 141,145 ---- } } ! mprintf("%obest: %1m\n", best_move); return best_move; } |
From: Aloril <al...@us...> - 2006-09-22 15:16:38
|
Update of /cvsroot/londerings/go/simple_go In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv6222 Modified Files: version.py weakbot.c Log Message: added some comments for new weakbot code Index: version.py =================================================================== RCS file: /cvsroot/londerings/go/simple_go/version.py,v retrieving revision 1.69 retrieving revision 1.70 diff -C2 -r1.69 -r1.70 *** version.py 22 Sep 2006 14:54:04 -0000 1.69 --- version.py 22 Sep 2006 15:16:31 -0000 1.70 *************** *** 3,7 **** message = ": For more info see http://londerings.novalis.org/wlog/index.php?title=SimpleGo_v0.4.1 Source code is at http://londerings.cvs.sourceforge.net/londerings/go/simple_go/ : " ! number = "0.1.8 C version" ! name = "WeakBot50k" ! message = ": Make your group(s) *impossible* to kill even when you *pass* *all* of your moves and then I will pass. If I'm too hard, try IdiotBot. If I'm too easy, try humans or DrunkenGnu. Source code is at http://londerings.cvs.sourceforge.net/londerings/go/simple_go/ : " --- 3,7 ---- message = ": For more info see http://londerings.novalis.org/wlog/index.php?title=SimpleGo_v0.4.1 Source code is at http://londerings.cvs.sourceforge.net/londerings/go/simple_go/ : " ! #number = "0.1.8 C version" ! #name = "WeakBot50k" ! #message = ": Make your group(s) *impossible* to kill even when you *pass* *all* of your moves and then I will pass. If I'm too hard, try IdiotBot. If I'm too easy, try humans or DrunkenGnu. Source code is at http://londerings.cvs.sourceforge.net/londerings/go/simple_go/ : " Index: weakbot.c =================================================================== RCS file: /cvsroot/londerings/go/simple_go/weakbot.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** weakbot.c 22 Sep 2006 14:54:04 -0000 1.1 --- weakbot.c 22 Sep 2006 15:16:31 -0000 1.2 *************** *** 36,40 **** double score_block(int block, int color) { ! //score unconditional blocks double score; double size, liberties, max_liberties, liberty_ratio; --- 36,41 ---- double score_block(int block, int color) { ! //score blocks that are not yet decided unconditionally ! //basically compare liberties block has to how much liberties its possible to have for block with this amount of stones double score; double size, liberties, max_liberties, liberty_ratio; *************** *** 56,61 **** } } ! ! max_liberties = size * 2.0 + 2.0; liberty_ratio = liberties / max_liberties; liberty_ratio = 1.0 - liberty_ratio; --- 57,61 ---- } } ! max_liberties = size * 2.0 + 2.0; // maximum amount of liberties block of this size can have liberty_ratio = liberties / max_liberties; liberty_ratio = 1.0 - liberty_ratio; *************** *** 71,74 **** --- 71,75 ---- double weak_score_board(int color) { + //score all blocks that are not yet unconditionally decided, only once/each block of course int i; signed char mx[BOARDMAX]; *************** *** 77,81 **** memset(unconditional_flags, 0, sizeof(unconditional_flags)); score = get_unconditional_score(unconditional_flags, color); ! score += gg_drand() * 1E-3; memset(mx, 0, sizeof(mx)); for(i = 0; i < BOARDMAX; i++) { --- 78,82 ---- memset(unconditional_flags, 0, sizeof(unconditional_flags)); score = get_unconditional_score(unconditional_flags, color); ! score += gg_drand() * 1E-3; // select randomly among equally scored moves memset(mx, 0, sizeof(mx)); for(i = 0; i < BOARDMAX; i++) { *************** *** 92,95 **** --- 93,100 ---- void get_1_tactics_score(int tactical_score[BOARDMAX], int color) { + // implements 1 liberty tactics: if block can gain more than 1 liberties, then: + // if our block: play on liberty to get more liberties (hmm.. it doesn't try to capture surrounding blocks directly here..) + // if opponent block: capture it + // however, if there is no escape for block (doesn't gain at least 2 liberties), we don't give any bonus here int pos, move; signed char mx[BOARDMAX]; *************** *** 111,114 **** --- 116,120 ---- int generate_weakbot_move(int color) { + // go trough all legal moves that are not forbidden by caller and score them and return best of those int move, best_move; double score, best_score; |