Computer Chess Club Archives


Search

Terms

Messages

Subject: Symbolic: Status report 2005.05.19

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.