Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: What has happened with Crafty?

Author: Dann Corbit

Date: 16:11:35 03/24/00

Go up one level in this thread


On March 24, 2000 at 18:51:27, Bertil Eklund wrote:
>I have followed Crafty for some years now even if Crafty has been a good program
>it has always been a bit after "the best professionals" but now from version
>17.x (not 17.01 that in some games played suicidal-chess according
>king-security, castling right in to an ongoing attack against its king)
>I think the latest versions is on "par" with a lot of the better commercial
>programs. I want to know what is the difference between Crafty from today and
>the earlier versions? What is the reasons for the improved play? I understand
>that Crafty plays better with the tuned books from Chessbase-engines but this is
>only a little part of Craftys better play. Craftys play with Tablebases is
>excellent, but I guess it must be a lot of other improvements as well.
>
>This is written before I know the results from our testings, but I think Craftys
>results are going to surprise many people. I have been busy with the excellent
>program Shredder4.
>
>Remember also that Crafty dislikes Amd K6-2, a K6-2 450 is about equal to a
>Pentium 333(for Crafty). The difference is about 30-35 %clockwise.

It is never a mystery.  Bob tells exactly what has happened from generation to
generation.  Here is the history from 17.0 forward:

17.0    connected passed pawn scoring modified so that connected passers
        don't get any sort of bonus, except for those cases where the
        opponent has a rook or more.  this will avoid liking positions
        where crafty has two connected passers on the d/e files, and the
        opponent has passers on the b/g files.  the split passers win if
        all pieces are traded, while the connected passers are better
        when pieces are present.  a new scoring term evaluates the
        "split" passers similar to outside passers, this at the request
        (make that demand) of GM Roman Dzindzichashvili. Book() now finds
        the most popular move as the move to ponder.  this eliminated all
        'puzzling' searches which result in clearing the hash tables two
        times for every book move, which can slow it down when a large
        hash table is used.  new book option for playing against computer
        opponents was written for this version.  Crafty now supports two
        "books.bin" type files, books.bin and bookc.bin (the bookc create
        command can be used to make bookc.bin).  bookc will only be used
        when crafty is playing a computer.  this is supplied by xboard or
        winboard when playing on a server, or can be included int the
        crafty.rc/.craftyrc file when playing directly.  bookc.bin will
        be used when playing a computer only, and should be used to avoid
        unsound lines that are fine against humans, but not against other
        computers.  if you don't use a bookc.bin, it will use the normal
        books.bin as always.  if you use both, it will only use bookc.bin
        in games that have been started and then given the 'computer'
        command.  minor adjustment to EGTB probe code so that it will
        always probe TBs at ply=2 (if the right number of pieces are on
        the board) but won't probe beyond ply=2 unless the move at the
        previous ply was a capture/promotion and the total pieces drops
        into the proper range for TB probes.  this makes the 6 piece
        files far more efficient as before it would continuously probe
        after reaching 6 piece endings, even if it didn't have the right
        file.  Now after the capture that takes us to a 6 piece ending
        we probe one time...  and if there is no hit we don't probe at
        the next node (or any successors) unless there is another capture
        or promotion that might take us to a database we have.  the book
        (binary) format has once again been modified, meaning that to use
        16.20 and beyond the book.bin/books.bin files must be re-built
        from the raw PGN input.  this new format includes an entry for
        the CAP project score, so that deep searches can be used to guide
        opening book lines.  a new weight (bookw CAP) controls how much
        this affects book move ordering/selection.  a new import command
        will take the raw CAPS data and merge it into the book.bin after
        the file has been built.  serious bug in SetBoard() would leave
        old EP status set in test suites.  this has been fixed.  outpost
        knight code was modified so that a knight in a hole is good, a
        knight in a hole supported by a pawn is better, supported by two
        pawns is still better, and if the opponent has no knights or a
        bishop that can attack this knight it is even better.  the out-
        post bonus for a bishop was removed.  a pretty serious parallel
        search bug surfaced.  in non-parallel searches, Crafty _always_
        completed the current ply=1 move after the time limit is reached,
        just to be sure that this move isn't going to become a new best
        move.  however, when parallel searching, this was broken, and at
        the moment time runs out, the search would be stopped if the
        parallel split was done at the root of the tree, which means that
        where the search would normally find a new best move, it would
        not.  this has been fixed.  new "store <val>" command can be used
        to make "position learning" remember the current position and the
        score (val) you supply.  this is useful in analyze mode to move
        into the game, then let crafty know that the current position is
        either lost or won (with a specific score).

17.1    book structure fixed, since compilers can't quite agree on how
        structures ought to be aligned, for reasons not clear to me.  a
        serious eval bug that could produce gross scores when one side
        had two queens was fixed.

17.2    isolated pawn scoring tweaked a bit, plus a couple of bugs in the
        way EvaluateDevelopment() was called were fixed.

17.3    passed pawn scores increased somewhat to improve endgame play.

17.4    minor bug with "black" command (extra line from unknown origin)
        would make "black" command fail to do anything.  minor tweaks to
        passed pawn scoring again...  and a slight performance improve-
        ment in how EvaluateKingSafety() is called.  code for "bk"
        from xboard was somehow lost.  it now provides a book hint.

17.4    minor bug with "black" command (extra line from unknown origin)
        would make "black" command fail to do anything.  minor tweaks to
        passed pawn scoring again...  and a slight performance improve-

17.5    rewrite of outside passed pawn/pawn majority code.  it is now
        much faster by using pre-computed bitmaps to recognize the right
        patterns.

17.6    minor fix in interupt.c, which screwed up handling some commands
        while pondering.  minor fix to score for weak back rank.  score
        was in units of 'defects' but should have been in units of
        "centipawns".   minor bug in "drawn.c" could mis-classify some
        positions as drawn when they were not.

17.7    repair to DrawScore() logic to stop the occasional backward sign
        that could create some funny-looking scores (-20 and +20 for
        example).  minor fix to majority code to recognize the advantage
        of having a majority when the opponent has no passers or majority
        even if the candidate in the majority is not an 'outside' passer
        candidate.  minor change to passed pawns so that a protected
        passed pawn is not considered a winning advantage if the
        opponent has two or more passed pawns.  but in input_status
        would cause an infinite loop if you reset a game to a position
        that was in book, after searching a position that was not in
        the book.  bug in position learning fixed also.  this was caused
        by the new hashing scheme Tim Mann introduced to avoid locking
        the hash table.  I completed the changes he suggested, but forgot
        about how it might affect the position learning since it is also
        hash-based.  needless to say, I broke it quite nicely, thank you.

17.8    this is the version used in the first ICC computer chess
        tournament.  Crafty won with a score of 7.0/8.0 which included
        only 2 draws and no losses.  changes are minimal except for a few
        non-engine syntax changes to eliminate warnings and fix a bad bug
        in 'bench.c' that would crash if there was no books.bin file.

17.9    LearnPosition() called with wrong arguments from main() which
        effectively disabled position learning.  this was broken in 17.7
        but is now fixed.

17.10   minor change to "threat" extension now only extends if the null-
        move search returns "mated in 1" and not "mated in N".  this
        tends to shrink the trees a bit with no noticable effect in
        tactical strength.  EvaluatePawns() was not doing a reasonable
        job of recognizing blocked pawns and candidate passers.  it did
        not do well in recognizing that the pawn supporting a candidate
        could not advance far enough to help make a real passed pawn.
        minor change to RepetitionCheck() to not count two-fold repeats
        as draws in the first two plies, which prevents some odd-looking
        repeats at the expense of a little inefficiency.  Ugly repetition
        bug fixed.  rephead was off by one for whatever side crafty was
        playing which would screw up repetition detection in some cases.
        minor bug in main() that would report stalemate on some mates
        when the ponder score was forgotten.




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.