Author: Steven Edwards
Date: 12:10:07 08/02/04
Symbolic: Status report 2004.08.02
Symbolic's toolkit now has a fully functional chess clock and time allocation
logic that allows for one, two, and three segment time controls; included are
sudden death, repeating, and increment capabilities. I've also added the
ability of specifying operator time overhead although this probably won't be
used often given that nearly all competition will take place via an automated
interface. In the Old Days long ago, operator overhead time allocation was a
necessary function as humans served as physical intermediates between programs;
I would allocate ten seconds per move and that wasn't always enough.
I now realize that the best chess clock implementation for a chess playing
program is not to implement the chess clock in the engine at all. Rather, the
better idea is to write an emulation of a fully functional (and well specified)
commercial digital chess clock and implement it as a service. Someday I might
write one of these. Not any time soon, though.
Given that nearly a year has passed since the inception of the Symbolic project,
it's reasonable to ask why it has taken this long to get the chess clock and
time control fully operational, especially in the light of the fact that my old
program Spector had an even more elaborate clock subsystem back in the 1980s.
The answer is that I can average only a very few hours per week doing coding and
also that up until the recent advent of automated competition support in
Symbolic, there was little need for sophisticated clock and time control
functionality. Also, it wasn't feasible to copy the old clock code from Spector
as its clocks only counted up and they didn't have increment capability.
(Plenty of Spector's other code has been lifted, however.) Back in the Old Days
the common practice was to have an engine's clock mimic the physical chess
clocks of the day and just about all of these were simple conversions of common
mechanical clocks. Anyway, now that I've got xboard to run automated matches,
there can still be progress on those days that I'm stuck in bed or otherwise out
of service. So I'm hopeful that the previous and admittedly slow rate of
advance will soon show improvement.
The CTXboard class response to the xboard "bk" command has been cleaned up a bit
and expanded to have more statistics for each book move; these now include a
win/lose/draw count, a total count, a winning expectation, and a percent chance
of the move being picked by the book manager. The formatting needs of the raw
output to xboard are not immediately obvious and getting it right required a
examination of xboard's receiving code along with numerous test runs. I may
later add tablebase probe output to CTXboard's "bk" response as there is
currently no "tb" xboard command.
The toolkit's hint generator has been augmented to try a one second search if no
hint is available from the predicted variation. This search will automatically
handle probing the book and the tablebases; if these show nothing, an old style
iterative search is run. The hint generator code is also used to generate a
move for pondering purposes if needed.
Some more work has been done with having CTXboard handle the xboard "setboard"
command, but it's not quite there yet. The xboard "draw" offer command is now
accepted, but the offer itself is declined always. The "post"/"nopost" commands
are processed by the set/reset of an internal mode flag, but CTXboard doesn't
yet have the ability to "show thinking"; I'm not sure if I'll get around to
implementing this any time soon. The opportunity search integration needs a lot
of work and then a lot of testing. After all of the above is stabilized, I
should then be able to move away from the toolkit and return to work on
Symbolic's Lisp chess engine, the real purpose of this little project.
The "ds" (display status) command in the interactive command processor (class
CTCommProc) has been expanded to show more information about the transposition
tables, the current search strategy selections, and several other data. Here's
an example:
Identity: Symbolic v2004.08.02
Local date/time: 2004.08.02 04:24:41
Current directory: /Users/sje/tmp
Clock: [04:58.70 (2) > 04:55.08 (1)] [running]
Time control: G/300
Level: Chess clock
Stategies: White: iter Black: iter
Main transposition table: 128K entries total size: 3 MBytes
Pawn transposition table: 128K entries total size: 2 MBytes
Opening book pathname: /Users/sje/tmp/Book
Opening book total positions: 774814
Opening book win/lose/draw for this position: [1122 1841 3504] total: 6467
Opening book expectation for this position: 0.44441
Tablebase directory pathname: /Users/sje/tmp/TB
FEN: rnbqkb1r/pppppppp/5n2/8/2PP4/8/PP2PPPP/RNBQKBNR b KQkq - 0 2
Move count: twenty-two
Move list: (Na6 Nc6 Nd5 Ne4 Ng4 Ng8 Nh5 Rg8 a5 a6 b5 b6 c5 c6 d5 d6 e5 e6 g5 g6
h5 h6)
And while I'm in cut and paste mode, here's the output from the "help" command:
Commands:
acc Activate: chess clock
agtf Activate: general trace flags
aos Activate: opportunity search
bash Call the bash shell
bookc Compile opening book file
call Call command batch file
db Display: board
dcc Display: chess clock
dfen Display: FEN
dlev Display: level
dm Display: move list
dobf Display: opening book file name
dobm Display: opening book moves
dpgn Display: PGN
dpv Display: predicted variation
dpzm Display: ply zero moves
ds Display: context status
dsb Display: simple board
dsss Display: search selection strategy
dt Display: timestamp
dtbd Display: tablebase directory name
dtbm Display: tablebase moves
dtbmp Display: tablebase move pick
dtc Display: time control
dtp Display: tag pair(s)
dtpl Display: tag pair list
dutc Display: UTC timestamp
echo Echo the command parameters
emp Enumerate movepaths to depth
esv Execute supplied variation
eval Evaluate the current position
exit Exit the command processor
faepd File analyze (EPD)
fbepd File benchmark scanner (EPD)
flpgn File load (PGN)
fnepd File normalization (EPD)
fnpgn File normalization (PGN)
fpepd File preprocessing (EPD)
fspgn File save (PGN)
g Go search and play N move(s)
gall Go and play the rest of the game
gsb Game scroll: move backward
gse Game scroll: move to end
gsf Game scroll: move forward
gss Game scroll: move to start
gst Game scroll: truncate
help Show this help text
hint Show a hint
id Show program identification
lisp Lisp interpreter
lm Locate mate in N
lmp Locate mate (parallel) N0 N1 TC
nc New context
ng New game
noop No operation
pcc Passivate: chess clock
pgtf Passivate: general trace flags
pos Passivate: opportunity search
rcc Reset: chess clock
rcf Reset: context flag(s)
resign Resign the game
return Return from called batch file
robf Reset: opening book file name
rpv Reset: predicted variation
rtbd Reset: tablebase directory name
rtc Reset: time control
rtp Reset: tag pair(s)
rtpl Reset: tag pair list
rtt Reset: transposition table
s Search for a move, but do not play it
scc Set: chess clock
scf Set: context flag(s)
sfen Set: FEN
slevcc Set: level (chess clock)
slevfi Set: level (fixed iteration count)
slevft Set: level (fixed time)
slevnt Set: level (nominal time)
slevul Set: level (unlimited)
sobf Set: opening book file name
soos Set: operator overhead seconds
spcl Set: transposition table per color log
sres Set: result
ssss Set: search selection strategy
stbd Set: tablebase directory name
stc Set: time control
stp Set: tag pair
stpld Set: tag pair list default
tb Take back N move(s)
tbg Take back the entire game
tbt Take back two moves
test Perform test
x Execute shell command
Context flags:
adcc auto display: chess clock
adts auto display: timestamp
ascb auto spin chessboard display
bpov board display from black point of view
brep beep on program move reply
codb cognitive option: debug
codf cognitive option: diagram with CCC FEN
comc cognitive option: monochrome output
cosh cognitive option: show narration in real time
cosk cognitive option: KS trace
cosp cognitive option: speak narration in real time
cosr cognitive option: stat report to "Report.txt"
cost cognitive option: story to "Narrative.txt"
dbug debugging activation
echo echo batch file commands
lsan long SAN move descriptions
nadb no auto display: chessboard
npmt no probing of main transposition table
npob no probing of opening book
nppt no probing of pawn transposition table
nptb no probing of tablebases
nrep no auto reply
ntnm no try null move
spmo simplified played move output
trai trace: EPD analysis input
trao trace: EPD analysis output
tras trace: EPD analysis scoring
trcv trace: current variation
trfi trace: first time down (per iteration)
trfm trace: first time down (per ply zero move)
trfp trace: node frequency and period
trmu trace: machine utilization
trnc trace: node count
tros trace: opportunity search
trpm trace: predicted move
trpv trace: predicted variation
trpz trace: ply zero operations
trrs trace: result score
trrv trace: refutation variation
trsi trace: search iterations
trss trace: search statistics
trsw trace: score window
trtc trace: time (wall clock)
trtt trace: transposition table summaries
trtu trace: time (computational usage)
uapr use augmented position representation
ussa use speech synthesis for verbose announcements
ussm use speech synthesis for moves
verb verbose messages
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.