Computer Chess Club Archives


Search

Terms

Messages

Subject: Symbolic: Status report 2004.08.02

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.