I found a formula that seems to be quite common these days.
Code: Select all
HistoryTableEntry += 32 * bonus - HistoryTableEntry * abs(bonus) / 512;
I also like that only one table is used for good and bad updates instead of two tables.
Now...
1. How are history limits handled ? (e.g. MIN=-16000 MAX= 16000 for HistoryTableEntry) ?
None of the source codes uses a classic re-scaling scheme if limits are reached (why) ?
2. What is the idea behind the constants, how (why) are they choosed ?
3. Some implementations limit the bonus like MIN(depth*depth,400).
That makes sense to me because in the example depth = 20 seems to be very far away
from the current position. What are your thoughts about it?
Currently i use a classic approach based on history_good[] and history_bad[] tables.
The history score is the relative score of both values multiplied with HistoryMax.
I need to scale the tables when an entry reaches a limit. I really would like to switch to the above.
Well, it feels like a good idea but i really want to understand what i am going to implement.
Thanks in advance.