Changes

Jump to: navigation, search

Debugging

No change in size, 13:54, 31 December 2018
no edit summary
'''[[Main Page|Home]] * [[Programming]] * Debugging'''
[[FILE:Max_und_moritz-05-12.gifjpg|border|right|thumb|link=http://www.wilhelm-busch-seiten.de/werke/maxundmoritz/streich5.html
| Hin und her und rundherum<br/>Kriecht es, fliegt es mit Gebrumm <ref>[https://en.wikipedia.org/wiki/Wilhelm_Busch Wilhelm-Busch], [http://www.wilhelm-busch-seiten.de/werke/maxundmoritz/streich5.html Max und Moritz - Fünfter Streich] from [http://www.wilhelm-busch-seiten.de/index.html Wilhelm-Busch Seiten von Jochen Schöpflin] (German)</ref> ]]
* Implement an [[MTD(f)]] search, even if you intend to use [[Principal Variation Search|PVS]]. MTD(f) is great for debugging the hash table; all sorts of obscure bugs which are very tricky to find in PVS or other conventional searches suddenly become easy to spot.
* Whenever you add some non-trivial new function to your program, try to write two versions: One which is very slow and stupid, but almost certainly correct, and one which is highly optimized. Verify on a huge number of positions that they give the same results. Remove the slow version only when you feel 100% sure that the fast version is correct.
* Always make [[Color Flipping#Debugging|symmetry tests]] when you add a new term to your [[Evaluation functionFunction|evaluation function]] .
* Run through a simple tactical test like [[Win at Chess|WAC]] at 5 seconds/move every time you change something important in your search. Don't try to optimize the results, but just make sure that the score doesn't suddenly drop dramatically.
* Check the quality of your [[Move Ordering|move ordering]] by measuring how often a [[Beta-Cutoff|beta cutoff]] occurs on the first move, and the frequencies with which the 1st, 2nd, 3rd, ... move turns out to be best at [[Node Types#PV|PV nodes]].

Navigation menu