A standard chess engine will find the move it considers best assuming best play from both sides. But this move might lead to an insignificant advantage or a tricky line that can easily result in mistakes for a human player of a specific ability. Is there a program that finds the best "practical" move for e.g. intermediate players? For example, it might pick a move that leads to a very strong attacking position where the opponent will most likely make a mistake, even though it could be defended against with perfect play.
-
7Very interesting question, but I think implementing something like this could be difficult because "practical", could be very different depending on the situation. For example, would the same move be equally practical against an opponent 200 points above and 200 points below? What about classical game vs. blitz game? – Akavall Oct 03 '19 at 16:27
-
Seems you want something closer to expectimax than minimax? – user541686 Oct 04 '19 at 06:35
-
This reminds me of poker. I think most pokerbots always play practical moves instead of assuming a Nash equilibrium and trying to play theoretical best moves. – Paul Oct 04 '19 at 10:13
-
One way to think about this is that you're looking to quantify a different objective function. When you're losing, you don't want to just minimize how much you're losing by (who cares if you lose by a centipawn or a queen). Instead, you want to minimize how much you're losing by, subject to there still being a line that your opponent could reasonably fall for. You might quantify "reasonably fall for" by counting "only" moves or situations where only the top move (or two) continue their advantage, but other moves lead to your having the advantage. – ddunn801 Oct 04 '19 at 11:32
-
As an analogy, in American football you onside kick because it gives you a (slim) opportunity to score quickly even though the expected result would put you worse off. – ddunn801 Oct 04 '19 at 11:33
-
Wait a minute... you're not trying to make an engine that lets you cheat online without being noticed, are you? Because that's very much one possible side effect of such an engine. – corsiKa Oct 04 '19 at 16:34
-
Paul- I disagree. Poker is largely percentages. – Savage47 Oct 05 '19 at 07:04
-
ddunn-Completely disagree. An onside kick is typically made because the situation favors it. Onside kicks are recovered about 11% so that means they are almost always used where the chance of winning is less than 11% The exceptions are rare.OP is asking about specific situation where he can 'invite' the opponent to go wrong. It would be more analogous to something like a zone blitz. – Savage47 Oct 05 '19 at 07:09
4 Answers
You're describing something that's very similar to contempt. The idea with contempt is that if you keep more dynamism in the position, a weaker opponent is more likely to make mistakes that you can then exploit. Therefore, given two moves that yield similar evals, an engine with high contempt score will choose the one that keeps more dynamism in the position. The current-strongest traditional engines all have contempt implemented (example for Komodo).
The danger of contempt is, against a strong opponent, high contempt can get you killed - you are after all forcing the engine to play a weaker move just to keep the game alive.

- 26,534
- 1
- 68
- 146
-
1Thanks, that's similar to what I'm looking for, but my question is even for players of the same ability. For example, one move might lead to a win 9/10 times considering the likely moves the opponent will make. – Ari Oct 03 '19 at 01:40
-
3@Ari it's similar though. Take two moves, one of which will lead to a draw and the other might lead to a win 90% of the time and a loss the remaining 10% of the time. An engine with a very high contempt setting might pick the latter (and lose against perfect defense). – Allure Oct 03 '19 at 01:44
-
1Without contempt engines would probably draw most games against inferior opponents by not excluding forced repetitions at any point. – Inertial Ignorance Oct 03 '19 at 02:45
-
1May be very good if the other player is running out of time on their clock. – Ian Ringrose Oct 03 '19 at 15:02
-
@Ari If your opponent is on the same level as you, then if you can do a meta analysis of a line (that is, not only deciding whether it's winning, but estimating how likely your opponent will see that it's winning), then they'll probably be able to an analysis of it. – Acccumulation Oct 03 '19 at 15:18
-
1Also, if your goal is to become a better chess player, then leaning on contemptuous play is probably going to end up being more of a crutch than anything. Bluster and bravado can take you only so far before you actually have to start sharpening your core skills. – J... Oct 04 '19 at 12:57
I realized this question applies mainly to standard chess engines that use minimax functions to evaluate moves. However chess engines like alphazero use monte carlo tree search to simulate many different games so they're not only looking at the best possible moves. It's possible that they already could be used to find the best "practical" move, or that they could be adapted for that purpose. For example the monte carlo search algorithm could be updated to look at "reasonable" moves and simulate what happens.

- 471
- 4
- 10
-
2Relevant link https://en.chessbase.com/post/komodo-mcts-the-boa-constrictor-approach – JollyJoker Oct 03 '19 at 10:44
-
1But then you have to program "reasonable" into the algorithm. – Inertial Ignorance Oct 03 '19 at 18:05
Update: Maia chess came out recently and it does something very similar to what I ask above. It tries to predict the most likely human move and at a given level. It seems Maia could be extended to create a program that finds the best practical move - given likely future human moves, it could figure out which move has the best "expected value".
Their paper: https://arxiv.org/abs/2006.01855
Play it: https://lichess.org/@/maia1

- 471
- 4
- 10
Not really.
Databases are useful because they can tell you often a move is played and what the result is however they are not perfect for a variety of reasons.
Fritz 12 (not sure about later versions) has a "hotness" meter which tells you how complex a variation is.
Bottom line. it's a combination of things. You're looking for moves where the most principled moves turn out to be bad. No engine can tell you that.

- 4,249
- 6
- 12