swami wrote: ↑Thu Oct 13, 2022 5:59 am
Can the engine be trained to do the following, against human opponent:
Defend very well all the time
Don't attempt any attack or do tactical shots to penalise the human blunders
Don't even attempt to get any significant positional gains
Maximum result that the engine can hope to get is a draw (Auto draw = ON, after 125 moves)
Human opponent will be lucky only if he's able to achieve a breakthrough and get past the engine's hard fought defense.
When in advantage, aimlessly drag the pieces on and on unless threatened
IMHO, such an engine would be ideal for practice - especially for children. It's like a punchbag in Boxing, or the machine that throws in a ball in the same angle that it's configured to do so (Tennis/Cricket)
It's certainly a lot better than the sparring mode in fritz, level play by DGT Centaur or playing a normal game and having to take back so many moves again and again to strive and find a better move to make. Saves a lots of time and frustration.
I'd think that human will find a lot of missed opportunities in post-game analysis, and that would provide for a great learning experience.
Does any engine/software that is remotely close to what I just described, via some settings or configuration, exist?
Another interesting question I'd like to ask is: what would be the estimated rating of such an engine? I know it's hard to measure, as maximum it can get is a draw and it also depends on the level of the engine and the league that it plays in. But it would be curious to estimate if Stockfish is configured to play in such a way and it is tested against every engine there is, with a large number of games. Mean average of the rating scale I suppose.
I made a revision in CDrill (derived from
cdroid) to try to fit the criteria.
The algorithm is simple just let the engine play a move that would equalize the position. If the engine has the advantage, it will try to find a move that will bring the position to equality (cdroid can play blunder, bad and dubious moves). Now it is up to the opponent to find the best move to equalize. If the engine is in a disadvantageous position, it will attempt to find the best move.
Sample games.
[pgn]
[Event "Computer chess game"]
[Site "?"]
[Date "2022.10.14"]
[Round "1"]
[White "ferdy"]
[Black "Cdrill 2.1"]
[Result "1/2-1/2"]
[ECO "D10"]
[Opening "Slav"]
[Variation "3.e3"]
[TimeControl "180+2"]
[Termination "normal"]
[PlyCount "115"]
[WhiteType "human"]
[BlackType "program"]
1. d4 d5 {-0.13/6 7} 2. c4 c6 {+0.36/5 4} 3. e3 a6 {+0.08/5 4} 4. Qh5 Qd7
{+0.36/5 4} 5. Qxh7 Rxh7 {+8.13/6 6} 6. cxd5 e5 {+8.43/5 4} 7. dxc6 Qg4
{+7.94/5 4} 8. cxb7 Bb4+ {+6.47/4 6} 9. Bd2 Bxb7 {+6.50/4 4} 10. Be2 f5
{+10.83/4 3} 11. Bxg4 Bxd2+ {+0.08/5 3} 12. Nxd2 fxg4 {-0.08/6 11} 13. Rc1
g6 {+2.00/5 3} 14. Rc8+ Bxc8 {+3.66/2 3} 15. Kd1 g5 {+5.43/5 5} 16. Kc2 e4
{+5.31/5 5} 17. Kc3 Nh6 {+5.12/5 5} 18. Kc4 g3 {+5.33/5 3} 19. Kd5 Bh3
{+7.57/5 3} 20. Kd6 Nc6 {+9.78/5 3} 21. Kc5 a5 {+7.02/4 3} 22. Kb6 a4
{+7.44/4 5} 23. Kc5 O-O-O {+7.09/4 3} 24. Kb6 Na5 {+7.58/5 6} 25. Kb5 Kc7
{+7.77/4 3} 26. Kxa5 a3 {+5.71/4 3} 27. gxh3 g4 {+12.86/5 4} 28. Ne2 Kc6
{+0.90/5 6} 29. hxg3 Ra8+ {+0.84/5 3} 30. Kb4 axb2 {-0.03/4 3} 31. hxg4
Rb7+ {+0.41/4 3} 32. Kc3 Nxg4 {+0.25/5 6} 33. Rf1 Rf8 {+1.74/4 2} 34. Nf4
Rc8 {-0.62/4 2} 35. Nc4 Nxe3 {+2.81/4 2} 36. fxe3 b1=R {+0.38/5 2} 37. Rxb1
Rxb1 {+1.11/5 4} 38. g4 Ra8 {+3.55/5 5} 39. a3 Rh1 {+3.26/5 2} 40. g5 Rc8
{+2.82/5 2} 41. g6 Kb5 {+1.71/5 4} 42. d5 Rd1 {+2.93/5 4} 43. g7 Rg1
{+1.81/5 4} 44. g8=Q Rcxg8 {+4.21/5 4} 45. d6 Re8 {+3.77/5 5} 46. Nd5 Rg7
{+1.13/5 2} 47. Nc7+ Rxc7 {-2.01/2 2} 48. dxc7 Kc5 {+0.22/7 3} 49. a4 Kc6
{+0.74/7 6} 50. a5 Rc8 {+0.35/7 5} 51. a6 Re8 {+0.13/7 4} 52. Kd4 Kxc7
{+0.74/7 5} 53. Ne5 Rc8 {+0.90/7 4} 54. Kxe4 Kb8 {+0.84/7 3} 55. Kd5 Re8
{+0.77/7 3} 56. e4 Ka8 {0.00/8 3} 57. Nc6 Rxe4 {0.00/9 4} 58. Kxe4
{Stalemate} 1/2-1/2
[Event "Computer chess game"]
[Site "?"]
[Date "2022.10.14"]
[Round "2"]
[White "ferdy"]
[Black "Cdrill 2.1"]
[Result "1/2-1/2"]
[ECO "D06"]
[Opening "QGD"]
[Variation "Marshall Defence, 3.cxd5 Nxd5 4.e4"]
[TimeControl "600+2"]
[Termination "normal"]
[PlyCount "119"]
[WhiteType "human"]
[BlackType "program"]
1. d4 d5 {-0.13/6 19} 2. c4 Nf6 {+0.49/6 12} 3. cxd5 Nxd5 {-0.06/5 12} 4.
e4 Nf6 {-0.15/5 10} 5. Nc3 c6 {-0.28/5 10} 6. Nf3 Bg4 {-0.34/5 26} 7. e5
Nd5 {-0.23/5 15} 8. Ng5 Bxd1 {+6.25/5 24} 9. Nxf7 Ba4 {+8.41/5 9} 10. Bh6
e6 {+11.12/5 9} 11. Ba6 Be7 {+10.02/5 13} 12. Bxg7 Nxa6 {+8.04/5 9} 13.
Nd6+ Qxd6 {+9.11/2 8} 14. Bxh8 Nb6 {+10.12/5 8} 15. exd6 Bxd6 {0.00/6 13}
16. Be5 O-O-O {+0.09/6 25} 17. O-O Kb8 {+0.27/5 8} 18. Nxa4 Nxa4 {-0.01/6
8} 19. d5 Nc7 {+3.20/6 7} 20. dxc6 Bxe5 {+2.95/6 7} 21. b4 Bxh2+ {+4.84/5
7} 22. Kh1 Rc8 {+3.53/6 7} 23. b5 Na8 {+3.47/6 7} 24. Rab1 Kc7 {+2.93/6 11}
25. b6+ Kxc6 {+1.64/2 6} 26. bxa7 N8b6 {+1.73/5 7} 27. Rfc1+ Nc5 {-2.03/2
6} 28. Rb5 Nd7 {+5.82/6 10} 29. Ra5 Ra8 {+0.65/6 13} 30. Kxh2 h6 {+0.85/6
6} 31. Kh3 Kb6 {+0.85/6 6} 32. Ra3 Na6 {+0.07/6 9} 33. Kh4 Rf8 {+0.60/6 9}
34. f3 Rh8 {+0.63/6 12} 35. Rd1 Ndc5 {+0.05/6 12} 36. Rd6+ Kxa7 {+0.64/2 5}
37. Raxa6+ bxa6 {+2.45/3 5} 38. Rxe6 Ra8 {+6.81/6 5} 39. Re7+ Nb7 {+1.66/2
5} 40. Rxb7+ Kxb7 {+3.78/3 5} 41. Kh5 Ra7 {+4.83/8 8} 42. Kxh6 Ka8
{+3.54/10 19} 43. g4 Kb7 {+3.07/9 7} 44. g5 Ra8 {+0.23/9 5} 45. g6 Rf8
{+0.76/8 7} 46. g7 Rxf3 {+0.11/7 15} 47. g8=Q Rh3+ {+0.11/6 9} 48. Kg7 Rg3+
{+0.11/5 4} 49. Kf8 Rxg8+ {+0.18/6 13} 50. Kxg8 Ka8 {+0.33/11 4} 51. Kf7
Ka7 {0.00/12 4} 52. Ke6 Kb7 {+0.32/11 4} 53. Kd6 Kb6 {+0.17/13 8} 54. Kd5
Ka5 {+0.17/11 4} 55. Kc4 Ka4 {0.00/14 4} 56. Kc5 a5 {0.00/14 4} 57. Kb6 Kb4
{0.00/16 15} 58. a3+ Ka4 {0.00/3 3} 59. Ka6 Kxa3 {0.00/16 14} 60. Kxa5
{Insufficient material} 1/2-1/2
[/pgn]
I think I can release CDrill with this type of capability. It will just try to equalize or get outplayed.