Author: Steven Edwards
Date: 01:08:34 05/19/05
Symbolic: Status report 2005.05.19 I've added a couple of new intrnsics into the ChessLisp interpreter in support of the GA subproject. These are sorting functions that operate on tag/value lists. (Only integral values are currently supported; these include position evaluations.) The first is tva-sort (tag value ascending) and the second is tvd-sort (tag value descending). The second function is currenlty the only one in use at the moment and it's deployed for ranking move/score lists generated my testing an evolved organism on a single test suite position. The sorting operations could have been done explicitly in Lisp, but for efficiency 's sake were moved into the C++ interpreter domain. An alternative solution would be to code complete support for a generic Lisp sort function as is implemented in Common Lisp, but this would take too long. The sort was coded as a basic split/merge with the worst case running in O(N log N) time using O(log N) call stack depth. Sorting a million element list took only a three seconds on a modest computer. -------- Inside the interpreter, the basic Generate intrinsic always returns a move list with the moves presented in canonical order (SAN ASCII ascending) and this is the order in which an organism is tested. The intermediate output of the test is a list of move/score dotted pairs in reversed move order (typical of Lisp list construction). This intermediate list in fed into the tvd-sort intrinsic and its output is the move/score list with the best (according to the organism) move/score pairs at the top. The GA then comes up with a MatchPoints metric by assigning four points if the first ranked move is in the test position's best move list, two points if the second ranked move is in the list, and one point if the third ranked move can be matched. These points are summed, so a test problem with up to three multiple best moves is handled appropriately. The rationale for looking at the first three moves is based on the intended problem domain and application of the evolved move suggestion function. First, there are unlikely to be more than three good mating attack moves in a position. Second, there is the superstition that a good positive correlation exists between ranking the first three moves and with ranking all the moves. Third, Symbolic's intended plan goal elaboration facility is unlikely to generate more than three initial move choices for any given theme. -------- Also to assist with the GA subproject, I created a new test suite based on BWTC. It consists of about 550 positions where a forced mating sequence was detected via long analysis and the mate distance was at least three. (Symbolic's Lisp intrinsics solve MateIn1 and MateIn2 immediately.) This suite, Symbo1.epd, better reflects the kinds of positions that Symbolic will see in its planning and exploration. I'm now running this suite through the revised GA and will report results as they are produced. -------- Inside the toolkit, I've added a simple but fast en prise detection routine that, given a position and a color, returns a bitboard of all the en prise men for that color. This is being used for tempo scoring in the toolkit's position evaluator and will later make an appearance in the interpreter as an intrinsic. This is now being tested at ICC and FICS. -------- More to come.
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.