Author: Randall Jouett
Date: 08:44:20 05/27/02
Go up one level in this thread
On May 27, 2002 at 01:34:39, Russell Reagan wrote: >On May 26, 2002 at 23:41:51, Randall Jouett wrote: > >>I would think that hash tables (i.e., not >>having to re-evaluate the tree) and good heuristics in >>EvaluatePosition() are where the true benifits would lay. >>In other words, I think we'd all much rather have a great >>heuristic that was slow than a bad heuristic that was fast :^). > >Hello Randal. Glad to see that you joined us here :) Glad to be here! :^) >If you are using alpha-beta, which I assume every engine is (or some variation >of it), then the main goal is to reduce the branching factor. Dan Corbit >pointed out to me once that when you go from a high branching factor to a >lower one (even slightly lower), the machine running the engine with the >lower branching factor could be significantly slower than the machine running >the engine with the higher branching factor, and the slower machine would out >search the faster one. That's why Chess Tiger for the Palm PC can beat a lot >of the amateur programs that are run on hardware 20 times faster than it, >because it's move ordering and branching factor are incredible (so I've heard). Well, I've been out of chess programming for 10 years or so -- glad to be back! :^) -- and from your comments, it sounds like alpha-beta (and variants) are still the way to go. I kinda figured that this was still the situation. I guess some things never change :^). As far as branching goes, all I can really say is that I guess there is good branching and bad branching. For instance, I would think that increasing the depth of the search during captures and checks are good things, even if one line gives up the queen :^). After all, mate could be hiding behind that queen sack :^). In other words, if we still have captures in this particular branch, then keep on trucking. That is, we might as well continue with this particular branch, since a computers forte' is tactics. OTOH, I also believe that pawn structure analysis (especially in a quiesent position) is worth a lot more than some programs are giving credit for, Russell. Any good decent player (above 2000 or so) will tell you that pawn structure pretty much dictates the overall position of a game. Isolated pawns are targets, for instance. With all this in mind, I think my next program is going to add some serious weight to pawn structure. Basically, I'm going to set up the program with an outrageous starting value for pawn structure, and every time it loses, I'm going to subtract a point or so, eventually landing on a value that seems to be ok for most positions. If this seems to work, I guess I could try this with the other pieces, too. In other words, I planning on having many, many heuristics in EvaluatePosition(), with some probably looking like pure crapola in the begining, yet the program should be able to figure out which heuristics really mean someting at particular times of game, be it start, middle, or during the end game. Don't know if all of this will work, but I'm it's going to be funny as hell watching the program "dive on the blade" while it's learning (and probably teaching me a thing or two) :^). At the very least, it's something to try, and beats the heck out of sitting around twiddling my thumbs :^). BTW, I was wondering if anyone has ever added a simple heuristic because it was capable of being rolled into a simple, quick loop? In other words, for the majority of the loop, most of the data stayed in registers on chip. I would think that these simple heuristics might be worth looking into when there isn't too much happening on the board. Why not? :^) Nice hearing from you, Russell, and good luck with your endeavors, bud. NOP -- Randall Jouett Amateur Radio: AB5NI I eat spaghetti code out of a bitbucket while sitting at a hashtable!
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.