Gerd Isenberg wrote:Sven Schüle wrote:Gerd Isenberg wrote:Henk wrote:My chess program uses an evaluation with Mobility(=MoveCount), KingSafety and MaterialCount only.
Now he playes e4, e5, Dh5 ?
What can I do about this.
A common term is a penalty for too early queen development related to the number of none developed light pieces (knights and bishops), i.e. something like this:
Code: Select all
tooEarlyQueenPenalty = max(1, distance[d1][qSq]) * max(0, 3-nNoneDevLight);
Hi Gert,
shouldn't it be:
Code: Select all
tooEarlyQueenPenalty = distance[d1][qSq] * max(0, nNoneDevLight-3);
which will set the penalty for the white queen to its distance to d1 if no white bishop or knight has been developed yet? I think your first "max" is not necessary since it would result in a penalty of 1 even if the queen has not been developed as well.
Sven
Yes, I don't want to penelize Qc2. Should be number of developed pieces this way around. Sorry for the confusion
Code: Select all
tooEarlyQueenPenalty = max(0, distance[d1][qSq] - 1) * max(0, 3-nDevLight);
That sounds like a very bad idea. So you suggest:
* a stupid mobility that incentivises the queen to come out early
* a corrective term that penalizes the queen for coming out early
Now you have *two* terms that are *correlated*, and hence very hard to tune. what makes much more sense is to have a better mobility.
what I do is simply to score mobility less in the opening than in the endgame for the queen. my mobility is just a good old Fruit-style centered linear mobility
Code: Select all
[nb_squares ag_nb_sq(piece)] * weight(opening/endgame, piece)
And of course, weight(endgame, queen) > weight(opening, queen).
How to count the the number of squares is also very important. My testing results show that:
* you should exclude squares attacked by enemy pawns
* you should also exclude squares occupied by your own pawns
This is somewhat better in testing than the Fruit counting.
I tried many other variations (looking at up attacks, or squares occupied by own pieces, trying to score forward and backward mobility differently) never worked.
Theory and practice sometimes clash. And when that happens, theory loses. Every single time.