Answers.Body: <p>Update: <a href="https://maiachess.com/" rel="nofollow noreferrer">Maia chess</a> 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 &quot;expected value&quot;.</p>
  <p>Their paper: <a href="https://arxiv.org/abs/2006.01855" rel="nofollow noreferrer">https://arxiv.org/abs/2006.01855</a></p>
  <p>Play it: <a href="https://lichess.org/@/maia1" rel="nofollow noreferrer">https://lichess.org/@/maia1</a></p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2021-01-18T01:42:56.633Z
Answers.LastActivityDate: 2021-01-18T01:42:56.633Z
Answers.UserDisplayName: Ari
Answers.Body: <p>You're describing something that's very similar to <a href="https://www.chessprogramming.org/Contempt_Factor" rel="noreferrer">contempt</a>. 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 <a href="https://komodochess.com/store/pages.php?cmsid=14" rel="noreferrer">Komodo</a>). </p>
  
  <p>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.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-10-03T01:40:03.957Z
Answers.Text: 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.
Answers.UserDisplayName: Ari
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-10-03T01:44:10.700Z
Answers.Text: @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).
Answers.UserDisplayName: Allure
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-10-03T02:45:53.127Z
Answers.Text: Without contempt engines would probably draw most games against inferior opponents by not excluding forced repetitions at any point.
Answers.UserDisplayName: Inertial Ignorance
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-10-03T15:02:47.983Z
Answers.Text: May be very good if the other player is running out of time on their clock.
Answers.UserDisplayName: Ian Ringrose
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-10-03T15:18:57.070Z
Answers.Text: @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.
Answers.UserDisplayName: Acccumulation
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-10-04T12:57:18.840Z
Answers.Text: 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.
Answers.UserDisplayName: J...
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-10-03T01:35:58.817Z
Answers.LastActivityDate: 2019-10-03T01:35:58.817Z
Answers.UserDisplayName: Allure
Answers.Body: <p>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. </p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-10-03T10:44:30.983Z
Answers.Text: Relevant link https://en.chessbase.com/post/komodo-mcts-the-boa-constrictor-approach
Answers.UserDisplayName: JollyJoker
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-10-03T18:05:37.913Z
Answers.Text: But then you have to program "reasonable" into the algorithm.
Answers.UserDisplayName: Inertial Ignorance
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-10-03T04:16:54.537Z
Answers.LastActivityDate: 2019-10-03T04:16:54.537Z
Answers.UserDisplayName: Ari
Answers.Body: <p>Not really. </p>
  
  <p>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. </p>
  
  <p>Fritz 12 (not sure about later versions) has a "hotness" meter which tells you how complex a variation is.  </p>
  
  <p>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. </p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-10-05T07:00:50.413Z
Answers.LastActivityDate: 2019-10-05T07:00:50.413Z
Answers.UserDisplayName: Savage47
Body: <p>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.</p>
  
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2019-10-03T16:27:37.653Z
Comments.Text: 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?
Comments.UserDisplayName: Akavall
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2019-10-04T06:35:23.230Z
Comments.Text: Seems you want something closer to expectimax than minimax?
Comments.UserDisplayName: user541686
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2019-10-04T10:13:42.713Z
Comments.Text: This reminds me of poker. I think most pokerbots always play practical moves instead of assuming a [Nash equilibrium](https://en.wikipedia.org/wiki/Nash_equilibrium) and trying to play theoretical best moves.
Comments.UserDisplayName: Paul
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2019-10-04T11:32:01.700Z
Comments.Text: 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.
Comments.UserDisplayName: ddunn801
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2019-10-04T11:33:06.780Z
Comments.Text: 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.
Comments.UserDisplayName: ddunn801
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2019-10-04T16:34:27.600Z
Comments.Text: 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.
Comments.UserDisplayName: corsiKa
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2019-10-05T07:04:45.930Z
Comments.Text: Paul- I disagree. Poker is largely percentages.
Comments.UserDisplayName: Savage47
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2019-10-05T07:09:49.190Z
Comments.Text: 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.
Comments.UserDisplayName: Savage47
Tags: <engines>
Title: Is there an engine that finds the best "practical" move?
ThreadText: # Is there an engine that finds the best "practical" move?
  
  (Asked by: username_0 on 2019-10-03)
  
  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.
  
  **Tags:** engines
  
  > **Comments:**
  > **username_1**: 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?  
  > **username_2**: Seems you want something closer to expectimax than minimax?  
  > **username_3**: This reminds me of poker. I think most pokerbots always play practical moves instead of assuming a [Nash equilibrium](https://en.wikipedia.org/wiki/Nash_equilibrium) and trying to play theoretical best moves.  
  > **username_4**: 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.  
  > **username_4**: 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.  
  > **username_5**: 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.  
  > **username_6**: username_3- I disagree. Poker is largely percentages.  
  > **username_6**: 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.  
  
  ---
  
  ## 4 answers
  
  ### Answer by username_0 on 2021-01-18. Score: 3 | Accepted answer
  
  Update: [Maia chess](https://maiachess.com/) 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>
  
  
  ---
  
  ### Answer by username_7 on 2019-10-03. Score: 26
  
  You're describing something that's very similar to [contempt](https://www.chessprogramming.org/Contempt_Factor). 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](https://komodochess.com/store/pages.php?cmsid=14)).
  
  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.
  
  > **Comments:**
  > **username_0**: 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.  
  > **username_7**: @username_0 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).  
  > **username_8**: Without contempt engines would probably draw most games against inferior opponents by not excluding forced repetitions at any point.  
  > **username_9**: May be very good if the other player is running out of time on their clock.  
  > **username_10**: @username_0 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.  
  > **username_11**: 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.  
  
  ---
  
  ### Answer by username_0 on 2019-10-03. Score: 7
  
  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.
  
  > **Comments:**
  > **username_12**: Relevant link https://en.chessbase.com/post/komodo-mcts-the-boa-constrictor-approach  
  > **username_8**: But then you have to program "reasonable" into the algorithm.  
  
  ---
  
  ### Answer by username_6 on 2019-10-05. Score: 1
  
  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.
  
  
  ---
  
  