Simplify retrograde analysis capability condition - #6531
Conversation
by simplifying according condition in search.cpc Passed STC and LTC non-reg bounds: https://tests.stockfishchess.org/tests/view/695ce092912b7ff140de60c6 LLR: 3.17 (-2.94,2.94) <-1.75,0.25> Total: 121728 W: 31439 L: 31298 D: 58991 Ptnml(0-2): 305, 13281, 33554, 13416, 308 https://tests.stockfishchess.org/tests/view/695dfc9702d0182a589fe8e8 LLR: 2.94 (-2.94,2.94) <-1.75,0.25> Total: 56220 W: 14472 L: 14299 D: 27449 Ptnml(0-2): 30, 5326, 17219, 5511, 24 Superseeds PR official-stockfish#6521 bench: 2477446
|
clang-format 20 needs to be run on this PR. (execution 21132914050 / attempt 1) |
|
Since this removes a condition and passes simplification bounds, this PR is fine I think. The title claims an improvement in retrograde analysis. Is there an objective and reproducible way to quantify this? Similarly to matetrack? This would help developers in future to, for example, evaluate the merits of something like #6521 etc. (I will also think about this, but maybe you already have something in mind or even working.) |
|
Hi Robert, as said in the main comment the implemtation is not very robust and highly depends on hash-size, threads, minimum search depth, and other parameters used. Anyway a possible objective and reproducible way to quantify this for the current implementation on given test positions might be following:
if search now terminates without regaining the mate-score then the retrograde analysis ability has failed. example PGN (start from the final position, then go back move by move):
|
|
Hm, ideally we would get away from single position test cases and come up with a more systematic approach. So using the new script from robertnurnberg/matetools#97 Master: Patch: For comparison, master on matetrack has these stats: Edit: The numbers were corrected after a bug was found in the retrocheck script by @pb00068. |
|
Hi @robertnurnberg , thank you very much for your work and analysis! I have a question/doubt on how retrocheck.py works. N.B.: I have now https://tests.stockfishchess.org/tests/view/696138808709a8d27c038387 branch https://github.com/pb00068/Stockfish/tree/retro which should be very strong & robust on |
|
Hm, I fear that counting all the found mates along the mating line will somehow dilute the statistics, and make it harder to differentiate good from bad patches. (think of all the short mates that will be found by almost all versions of sf). I like that the current tool shows the improvement of hash filling compared to the plain matetrack runs. And somehow we have decided for sf development to look at those 6554 puzzles, so we can do the same for retro analysis. If there are other mates/puzzles one is interested in (such as along all the nodes along a mating line), one can create a separate .epd file and run the script on that. |
|
@maintainers: |
|
@robertnurnberg There must be something wrong with your current version of retrocheck.py It reports failings on simpliest problems:
In turn the retrocheck.py script reports this problem as fail: PS.: After adding the script seems work correcty: |
|
Thanks. This has now been fixed. I will repeat the checks that I reported above and correct the results. |
bench: 2050811
|
After further tests I came to the conclusion that this change does not influence the retrograde analysis capability in a measureable way. Therefore I changed the subject of the PR now and handle/describe it as a pure simplification. |
by simplifying according condition in search.cpc
Passed STC and LTC non-reg bounds:
https://tests.stockfishchess.org/tests/view/695ce092912b7ff140de60c6
LLR: 3.17 (-2.94,2.94) <-1.75,0.25>
Total: 121728 W: 31439 L: 31298 D: 58991
Ptnml(0-2): 305, 13281, 33554, 13416, 308
https://tests.stockfishchess.org/tests/view/695dfc9702d0182a589fe8e8
LLR: 2.94 (-2.94,2.94) <-1.75,0.25>
Total: 56220 W: 14472 L: 14299 D: 27449
Ptnml(0-2): 30, 5326, 17219, 5511, 24
Superseeds PR #6521
N.B.:
Since current implementation relies completely on TT and relevant pv entries might get overriden by other positions
it is not very robust and depends on hash-size, threads, minimum search depth, and other parameters used.
A robust implementation might be possible but requires additional code.
bench: 2477446