bob wrote:
This "idea" is not a new one. And like all evaluation terms, I am afraid that if someone copies it directly, it will be significantly sub-optimal for their program. We did a lot of tuning to settle on the numbers we are using.
There are two parts to the code, one is a simple reference to the array/table using the two material imbalance terms that show which side has more of what or less of what (say +2 minors, -1 major, a rook for two minors exchange). That is such a simple bit of code no one could complain about that being copied at all. ie, "score += imbalance[majors][minors]. The table is also pretty simple and small enough to be irrelevant to the copying issue, IMHO. Particularly given that the numbers probably will only work well using the other numbers in Crafty's eval, of which there are hundreds...
Thanks.
So, a few questions about the tuning that goes into that table.
Clearly, because of symmetry, only half of the numbers in the table are independent. The majority of the numbers are saturated at +/-126, but of course it doesn't matter when R=+2, n=0. Quite apart from the fact that you're never going to take 10 pawns to make up the nominal 1000 points of difference, the imbalance is large enough that it's probably decisive. The interesting elements are those that are supposedly near equal. The off-equal elements R=+/-1,n=0 and n=+/-1,R=0 effectively modify the value of a single rook or single minor with respect to pawns (to rook~600, minor~400). Apart from those, there are 9 numbers left, 7 of which (including those along the diagonal) are +/-42 and and two (that put rooks against a superior number of minor pieces) are +/-84.
Which of those numbers were tested and tuned most thoroughly? I would expect the block immediately besides R=n=0 and the R=+/-2/n=-/+3 combinations, is that correct?
Just trying to get a feel for where I'd start if I wanted to re-tune some of those numbers, since I don't have the computational resources (not for computer chess anyway) to vary all of them extensively.
I'll probably take the fact that the modified rook/minor vs. pawns value come out at 600/400 as a hint that this value is fairly good, since it seems to work well across a number of different chess programs, and try varying the other elements of the table first.
It would be more of a problem if this was just one of many things that is copied, of course. But for this piece of code, where the table is 10 lines or so, + one line of executable code, I would not see a problem...
Thanks again.
It's one thing to look at someone else's code (or description) and re-use an idea that's interesting, but I never really understood the point in copying other people's code verbatim. Technical complications aside, it doesn't seem any fun to me...