[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnugo-devel] matcher_check_3_7.7b
From: |
Evan Berggren Daniel |
Subject: |
[gnugo-devel] matcher_check_3_7.7b |
Date: |
Thu, 29 Aug 2002 15:02:46 -0400 (EDT) |
A new version of the --stable patch. Fixes the bug that caused move
colors to be written to the sgf file backwards. Also turns on
autoflushing to the sgf file, so that the partial file is visible while
the game is in progress.
Thanks
Evan Daniel
Index: matcher_check
===================================================================
RCS file: /cvsroot/gnugo/gnugo/interface/gtp_examples/matcher_check,v
retrieving revision 1.11
diff -u -r1.11 matcher_check
--- matcher_check 27 Aug 2002 13:25:43 -0000 1.11
+++ matcher_check 29 Aug 2002 18:58:36 -0000
@@ -36,7 +36,6 @@
# be captured, and that vertex go unused until a new piece was
# played in that spot, resulting in a false positive. However,
# this should be rare (?).
-# FIXME: get random seeds when an error is detected.
# FIXME: better $verbose levels
package TWOGTP_A;
@@ -80,7 +79,10 @@
my $move;
my $toplay;
my $randseed;
-
+my $stable;
+my $pids;
+my $stable_move = "";
+my $noilcheck;
my $helpstring = "
@@ -100,6 +102,8 @@
--loadsgf <filename> (file to analyze)
--movecount <number of moves to check>
--randseed <number> (sets the random seed)
+ --stable \'<path to stable version> --mode gtp [program options]\'
+ --noilcheck (turns off illegal transition checks)
--help (show this)
@@ -112,10 +116,12 @@
"handicap|h=i" => \$handicap,
"size|boardsize|s=i" => \$size,
"sgffile|o=s" => \$sgffilename,
- "loadsgf|o=s" => \$loadfile,
+ "loadsgf|l=s" => \$loadfile,
"games=i" => \$games,
"movecount=i" => \$movecount,
"randseed=i" => \$randseed,
+ "stable=s" => \$stable,
+ "noilcheck" => \$noilcheck,
"help" => \$wanthelp,
);
@@ -130,11 +136,12 @@
warn "Defaulting program to: $program\n";
}
-die $helpstring unless defined $program;
-
# create FileHandles
my $prog_in = new FileHandle; # stdin of program
my $prog_out = new FileHandle; # stdout of program
+my $stable_in = new FileHandle; # stdin of stable version
+my $stable_out = new FileHandle; # stdout of stable version
+
if ($loadfile)
{
@@ -145,6 +152,11 @@
";
exit;
}
+
+ if (defined($stable)) {
+ warn "When loading a file, --stable is ignored.";
+ }
+
$pidp = open2($prog_out, $prog_in, $program);
print "program pid: $pidp\n" if $verbose;
@@ -178,6 +190,11 @@
$pidp = open2($prog_out, $prog_in, $program);
print "program pid: $pidp\n" if $verbose;
+ if (defined($stable)) {
+ $pids = open2($stable_out, $stable_in, $stable);
+ print "stable pid: $pids\n" if $verbose;
+ }
+
$sgffile = rename_sgffile($games, $sgffilename) if defined $sgffilename;
if ((defined $sgffilename) && !open(SGFFILEHANDLE, ">$sgffile")) {
@@ -185,17 +202,38 @@
undef($sgffilename);
}
+ #set autoflushing for sgf file
+ select(SGFFILEHANDLE);
+ $| = 1;
+
print $prog_in "boardsize $size\n";
eat_no_response($prog_out);
print $prog_in "komi $komi\n";
eat_no_response($prog_out);
+ if (defined($stable)) {
+ print $stable_in "komi $komi\n";
+ eat_no_response($stable_out);
+ print $stable_in "boardsize $size\n";
+ eat_no_response($stable_out);
+ }
+
if (defined($randseed)) {
print $prog_in "set_random_seed $randseed\n";
eat_no_response($prog_out);
+ if (defined($stable)) {
+ print $stable_in "set_random_seed $randseed\n";
+ eat_no_response($stable_out);
+ }
} else {
print $prog_in "get_random_seed\n";
- print "random seed " . eat_one_line($prog_out) . "\n";
+ my $rand = eat_one_line($prog_out);
+ print "random seed $rand\n";
+ if (defined($stable)) {
+ $rand =~ s/^= //smg;
+ print $stable_in "set_random_seed $rand\n";
+ eat_no_response($stable_out);
+ }
}
print SGFFILEHANDLE
"(;GM[1]FF[4]RU[Japanese]SZ[$size]HA[$handicap]KM[$komi]"
@@ -210,6 +248,11 @@
else {
$toplay = 'W';
print $prog_in "fixed_handicap $handicap\n";
+ if (defined($stable)) {
+ print $stable_in "fixed_handicap $handicap\n";
+ eat_handicap($stable_out);
+ }
+
$handicap_stones = eat_handicap($prog_out);
if (defined $sgffilename) {
print SGFFILEHANDLE $handicap_stones;
@@ -220,21 +263,34 @@
while ($pass < 2) {
if ($toplay eq 'B') {
print $prog_in "genmove_black\n";
+ print $stable_in "gg_genmove black\n" if defined($stable);
} else {
print $prog_in "genmove_white\n";
+ print $stable_in "gg_genmove white\n" if defined($stable);
}
$move = eat_move($prog_out);
- print "$toplay plays $move\n" if $verbose;
+ $stable_move = eat_move($stable_out) if defined ($stable);
+ if ($move ne $stable_move and defined ($stable)) {
+ print "At move $movenum, $toplay\:\n";
+ print "Test version played $move\n";
+ print "Stable version played $stable_move\n";
+ } else {
+ print "$toplay plays $move\n" if $verbose;
+ }
+
+ $sgfmove = standard_to_sgf($move);
+ print SGFFILEHANDLE ";$toplay\[$sgfmove\]\n" if defined $sgffilename;
if ($toplay eq 'B') {
+ print $stable_in "black $move\n" if defined($stable);
$toplay = 'W';
} else {
+ print $stable_in "white $move\n" if defined($stable);
$toplay = 'B';
}
+ eat_no_response($stable_out) if defined($stable);
- $sgfmove = standard_to_sgf($move);
- print SGFFILEHANDLE ";$toplay\[$sgfmove\]\n" if defined $sgffilename;
if ($move =~ /PASS/i) {
$pass++;
} else {
@@ -245,7 +301,7 @@
eat_no_response($prog_out);
}
- check_matcher($prog_in, $prog_out);
+ check_matcher($prog_in, $prog_out) if !defined($noilcheck);
$movenum++; #next move
}
print $prog_in "estimate_score\n";
@@ -263,7 +319,10 @@
#make sure gnugo dies correctly.
close $prog_in;
close $prog_out;
+ close $stable_in;
+ close $stable_out;
waitpid $pidp, 0;
+ waitpid $pids, 0;
print "games remaining: $games\n";
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gnugo-devel] matcher_check_3_7.7b,
Evan Berggren Daniel <=