BubbaTough wrote:LearningLemming does this (I am not sure if I do it the same way Bob does or not). My testing method is a bit informal, so I can't really say if/how much it helps. I think it is a useful heuristic, but not easy to tune such that good pawn/piece sacrifices are chosen, and bad ones avoided.
It is a useful heuristic, in the sense that it is "obviously correct" to all human players. When I try to implement it, I see a lot of games where my program wins precisely because of this piece of knowledge. But still, when I look at a sufficiently big number of games, it turns out that my program performs worse with this heuristic than without it. It seems that the number of games where this heuristic improves performance is more than outweighed by the number of games where it hurts performance.
In my experience, this is a very frequent phenomenon: Adding a new evaluation rule which is correct 95% of the time can very often hurts the playing strength. I think this is because more than anything else, the strength of a chess player depends on the quality of his/her/its
worst moves. For a chess programmer, this means that adding a new piece of heuristic knowledge is always a very dangerous operation. Unless the new piece of knowledge is correct in virtually all positions (which is almost never the case, more or less by definition of the word "heuristic"), there is a very serious risk that the new piece of knowledge is counterproductive.
This problem is even more serious because just looking at the games can easily give a false impression: The games where the program wins because of the new piece of knowledge are usually numerous and easy to spot, but the games where the new knowledge causes losses are even more numerous, but very difficult to spot. Therefore, adding new heuristic knowledge often makes the program play "optically" better, and look more intelligent, but hurts the practical playing strength.
This is all very frustrating, especially for people who are impatient, have very little time for programming and testing, want to implement lots of chess knowledge, and lack the skills to make a simple and fast program. Unfortunately, I'm one of these people. I wish I could simply quit and spend all my spare time on other and more rewarding hobbies.
Tord