New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make intelligent mode more intelligent #301
Comments
The second bullet could perhaps be well handled by ignoring the Black pieces and characterizing all reachable positions by:
By just considering pawn moves while allowing captures when necessary, it shouldn't be hard to determine every possible final structure before trying to place the rest of the units (or after, as a quick check before launching into full solving). |
I've placed proof-of-concept code in This code is not meant to be taken as-is; it's complicated and it's still undergoing testing, and I could probably better make use of some of Popeye's own functionality. Also, the best use of these ideas is within the target position generation machinery, not at the end. Rather, some of the ideas might be useful elsewhere, and I primarily want to show the benefits of this approach. Against one of my own compositions
these added heuristics seem to knock out ~ 90% of the generated target positions and provide an associated solving speedup. |
An extension of this idea would be to perform similar checks in the solving phase after every considered capture, pawn move, and castling (as well as after the first move, if an initial en passant capture was considered). I'm not sure where/how best to experiment with that. |
I've continued working on this idea, extending my previous work to also estimate the number of moves needed to reach a target position. The result is my
Assuming that these improvements are real (i.e., there are no bugs that invalidate these timings), I think it's worth trying to get these heuristics into the next release, possibly as an "experimental" option. |
While using Popeye to assess the soundness of various
ser-h=
s, I discovered that many of its target positions were simply infeasible, and I suspect that a lot of them can be knocked out automatically. For example:It would interesting to implement some such heuristics in the target position generation logic.
The text was updated successfully, but these errors were encountered: