The first version with the "correct" new SEE is 7.47; however, this version did not make use of the attacker and victim already being known for a potential q-search move before calling the SEE function (which is only done in cases where the attacker value is < the defender value, when not in check, for promotions, etc). The net result is that the "get smallest attacker" function was always being called in the SEE function, which would sometimes find a smaller attacker than the potential q-search move being considered.
The second version is 7.49 and uses the known attacker and victim values and simply saves the first call to get the smallest attacker.
I am puzzled because the "wrong" version wins about 5% more games than the "right" version, which naturally got me thinking about this, since the difference is (I think) below the error margin for 5,400 games.
For the case when the q-search move being considered is the only attacker it should not matter what the SEE result is; likewise where the q-search move actually is the lowest attacker.
Nor would it seem to matter when the q-search attacker is not the lowest attacker when the SEE result using the lowest attacker indicates a "poor" capture, since using the actual attacker would be even worse (aside from rare xray situations).
It would seem to make a difference in the odd case where the lowest attcker SEE result is good, but the more valuable real attacker is not. I'm thinking this will mean more moves are actually tried in the q-search, which should be slower, but yet it plays better.
Incidentally, in Tinker's ecosystem, SEE is not used in the full width search for capture move ordering, just MVV/LVA. The overall move order is hash move (which is usually the PV move), all captures (and queen promotions), 2 non-capture killers, and finally the remaining non-captures and other moves. History-based LMR is used for non-captures after the first 3 non-caps (or 4 when the hash move is a capture), not including the killers.
In the full-width search, postponing poor captures for Tinker results in poorer play. In the q-search, Tinker skips poor captures when not in check (and a few other cases).
Code: Select all
Program Elo + - Games Score Av.Op. Draws
Tinker 747 x64 : 2408 7 7 5407 52.4 % 2392 34.8 %
Tinker 749 x64 : 2392 7 7 5407 47.6 % 2408 34.8 %