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.