# Is there an engine that finds the best "practical" move?

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.

• Very 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? Oct 3, 2019 at 16:27
• Seems you want something closer to expectimax than minimax? Oct 4, 2019 at 6: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 4, 2019 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. Oct 4, 2019 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. Oct 4, 2019 at 11:33

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.

• Thanks, 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 3, 2019 at 1:40
• @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). Oct 3, 2019 at 1:44
• Without contempt engines would probably draw most games against inferior opponents by not excluding forced repetitions at any point. Oct 3, 2019 at 2:45
• May be very good if the other player is running out of time on their clock. Oct 3, 2019 at 15:02
• Also, 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 4, 2019 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.

• Oct 3, 2019 at 10:44
• But then you have to program "reasonable" into the algorithm. Oct 3, 2019 at 18:05

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.

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