3

For research purposes, I would like to have a chess engine hooked up to a tablebase where I can be guaranteed that the chess engine is looking at ALL moves and calls the tablebase in real time in small positions. Chess engines may discard some moves on the way to calling the tablebase later, and I need to avoid that, for my purposes. At the very least I have to know that no moves, no matter how silly, have been discarded. Can anyone advise me as to what the best available setup is for this purpose? Or whether some code should be added to an open source engine?

4
  • Harvey, am I right in thinking that the only position evaluations you care about for your ultimate purpose are the definitive tablebase evaluations of "small" positions? That is, is it right that you don't care e.g. about having access to an engine's numerical evaluations of non-tablebase positions as well? (By the way, I doubt you'd remember, but we met very briefly at a reverse mathematics conference at U.Chicago some years ago; I was a student of Jeremy Avigad's.)
    – ETD
    Commented Dec 1, 2013 at 4:27
  • 1
    I think this question has to be more detailed. I cannot grasp the problem formulation as it is formulated at the moment. Is it endgames or entire games? What is the goal of the study?
    – user2001
    Commented Dec 2, 2013 at 20:52
  • It seems the phrase: "guaranteed that the chess engine is looking at ALL moves" is a bit difficult to satisfy. However, I offer this link which helps understand the size of the problem: engine-cloud.com It is a way to have a large amount of parallel processing without going broke - "by delegating CPU load to remote machines" in the cloud. Anyway, with some configuration effort the cloud solution might do what you're looking for.
    – ezaspi
    Commented Dec 23, 2013 at 21:02
  • It's unclear why you want to do this. Bear in mind that the reason that chess engines discard moves is that there are usually so many that it can't look to any reasonable depth without discarding some. For general play, it's better to look to depth 15 and occasionally discard moves you shouldn't have than to look to depth 4 and see everything to that very limited horizon. In a typical position, even looking at everything to depth 5 requires examining about 100,000,000 positions Commented Dec 28, 2014 at 10:14

2 Answers 2

2

You might find some luck looking to chess problem solvers. In chess compositions, a problem is 'cooked' if it has more than one solution (usually) or any solution that is unintended. If possible, problems are listed as C+ if they are proven by a computer to have only the intended solution(s). Obviously, these solvers do not throw away any moves to make such a proof.

Popeye Solver is one such solver. You can find more information about it on Wikipedia and the web.

You weren't very clear on what you were trying to accomplish though (this would have been important), so I'm not sure if it will work for you or not. Typically, with a program such as popeye it has a position, a stipulation, and a set of conditions. For example, a FEN position, "mate in 5", and "orthodox chess" (or perhaps varying rules).

1

I would like to have a chess engine hooked up to a tablebase where I can be guaranteed that the chess engine is looking at ALL moves and calls the tablebase in real time in small positions.

I thought that chess engines are already hooked up to tablebases? Also, to make sure what moves the engine looks like, there should be a "verbose" mode for engines?

Chess engines may discard some moves on the way to calling the tablebase later, and I need to avoid that, for my purposes.

Chess engines probably discard moves according to their search algorithm, in order to limit their searching time. But exactly which moves that are discarded probably varies between engines. Yet, engines should have an "exhaustive" mode that takes longer time and checks more moves?

At the very least I have to know that no moves, no matter how silly, have been discarded.

You could write a script that keeps track of "all possible moves" and then compare it against the moves that the engine has considered. Thus, you get the list of all discarded moves.

Can anyone advise me as to what the best available setup is for this purpose? Or whether some code should be added to an open source engine?

I would advice some sort of wrapper around a Linux command line engine. Write the engine verbose output to a file. Have a script that keeps generating the "all possible moves" list at every point in the game. Then, compare against this list. Also, handle the tablebases as needed, perhaps the engine gives some nice options for this. I haven't done anything like this before, so these are my best guesses on how to set this up and make it work!

1
  • 1
    Most chess engines do not include tablebases. This allows the user to choose among the ones he desires. Commented Sep 29, 2014 at 9:13

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.