Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: The key to improving a program

Author: Tom Likens

Date: 07:17:47 05/26/04

Go up one level in this thread


On May 25, 2004 at 20:47:33, Tord Romstad wrote:

>On May 25, 2004 at 20:45:08, Tord Romstad wrote:
>
>>Unfortunately I don't know to make sure my program is bug free.  I have
>>plenty of bugs, even a couple of simple, obvious, eye-catching and very
>>serious-looking bugs which for some mysterious reason appear to make the
>>program much stronger (every time I try to make the one-line change needed
>>to fix the bugs the playing strength drops by about 100 Elo points).  But
>>here are a couple of techniques I have found useful:
>>
>>1. Whenever you try out some new pruning technique (for instance when you
>>   introduce hash table pruning), don't add the actual pruning to the engine
>>   immidiately.  Instead, set a flag which says "I would have pruned this
>>   position if my new trick was enabled" (for instance, if the hash table
>>   entry for the position contains a lower bound which is higher than beta,
>>   and the depth of the entry is sufficiently big).  If it later turns out
>>   that the pruning decision was wrong (in the above example, if the search
>>   doesn't fail high, despite the lower bound >= beta in the hash table),
>>   you probably have a bug.  Write the position to a log file.  By inspecting
>>   the log file, you should be able to spot the most serious bugs.  This
>>   technique is not only useful when adding non-speculative pruning, but
>>   also when implementing various sorts of speculative forward pruning.  It
>>   can be used not only to find bugs, but also to detect holes and missing
>>   special cases in forward pruning tricks.
>>
>>2. Write a function to compute a mirror image of the position on the board
>>   (i.e. black and white sides interchanged).  Find a big file of EPD
>>   positions, and let your engine parse the file and evaluate each position
>>   and its mirror image.  This helps you find asymmetry bugs in the evaluation
>>   function.  This test should be done almost every time you do a change in
>>   the eval.  It is surprising how easy it is to introduce new asymmetry bugs.
>
>I forgot:
>
>3. The most effective way to discover hash table bugs is to implement an MTD
>   search.  :-)
>
>Tord

Hey Tord,

Are you sure this isn't the *most* effective way to ADD them! ;-) ;-)

--tom



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.