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.