# 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? – Akavall Oct 3 '19 at 16:27
• Seems you want something closer to expectimax than minimax? – user541686 Oct 4 '19 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 '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 4 '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 4 '19 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 '19 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). – Allure Oct 3 '19 at 1:44
• Without contempt engines would probably draw most games against inferior opponents by not excluding forced repetitions at any point. – Inertial Ignorance Oct 3 '19 at 2:45
• May be very good if the other player is running out of time on their clock. – Ian Ringrose Oct 3 '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 3 '19 at 15:18

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.

• – JollyJoker Oct 3 '19 at 10:44
• But then you have to program "reasonable" into the algorithm. – Inertial Ignorance Oct 3 '19 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.