Author: Andrew Wagner
Date: 17:24:40 06/17/04
So this week I've been working on adding code to Trueno strictly for debugging purposes. Basically, I've been dumping info in readable format to a log file during search, with all output lines conditionally compiled. See http://www.winboard.info/trueno/debug.txt for an example with WAC 001. It's been amazing to me in working on this just how little I understand about how my program works, especially with regards to alphabeta. Not that I don't understand the basic idea, but just the notion of when fail highs and lows are likely to happen and what that really means. Several times, as I've been reformatting the output, I've looked at something and said "Boy, that looks wierd, it must be a bug!". And, two hours later, I go "Ohhh, it's _supposed_ to do that! Now I get it!" And I've learned something valuable about my program and chess programming in general. Anyway, I recommend this process to any others out there who are still relatively new to computer chess. Now, on to my two questions: 1.) I discovered in the process of debugging last night that my killer moves code wasn't working. At all. I'm still not sure it is (look at the end of the four-ply search in the log above, you can see that Qg7 should definitely be a killer, but it's not getting searched quickly enough). So my question is about how people usually implement killers. Do you clear them on every iteration? Do you have a set of killers for each possible depth? 2.) And now for an easy alphabeta question. When I search a move and get back a mate score which is a PV node, I can return that score immediately after updating my PV, right? As opposed to going back and looking at other moves? Because I'm not going to find a quicker mate on that ply anyway.
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.