Yet another game analysis method

Discussion of anything and everything relating to chess playing software and machines.

Moderators: hgm, Rebel, chrisw

User avatar
Kirk
Posts: 5699
Joined: Sat Mar 11, 2006 3:44 am

Re: Yet another game analysis method

Post by Kirk »

Ferdy wrote: Fri Apr 05, 2019 5:20 pm
Kirk wrote: Fri Apr 05, 2019 5:04 pm Hi Ferdy!

How difficult would it be to add some tactical tips to Chess Artist?

Examples would be:

“This move would pin the Knight”
That one is possible, python-chess has a method to detect pins.
“Creating an isolated pawn”
Possible but needs to walk the pv and see if a capture would create an isolated pawn. Something like,
4. cxd5 exd5 and the d5 pawn of black would become isolated assuming there is no longer black's c pawn. The white's move 4. cxd5 can have a comment "Creating ...". So move the cxd5 on the board nad exd5 too, then check if there is an isolated pawn at d5. So the first trigger is a capture to the pawn.
“Opening a file”
Possible, but I need to see sample situation.
“Protecting the King”
“Zugzwang”
Can you give some examples to each situation?
*I will give it a try. I think Zugzwang move could be calculated when every move would calculate as a loss or greater than one pawn.

*Protecting the King would need to store the previous position where the King is threatened (Mate would result unless this move(s) were made). Any move where Mate is not computed by the engine would work compared to the previously stored position.

*Opening a file would only be useful for the Rook and Queen where a move would make all possible squares it could occupy open (a-h). It could work diagonally for the bishop too I suppose.

*"A Combination..." text could result too is moves of similar evaluation had one where exchanging would still lead to an evaluation of equal exchange (in capture piece value but not necessarily evaluation equality as positionally it may be better)

Thank you for your feedback!
“He knew all the tricks, dramatic irony, metaphor, pathos, puns, parody, litotes and... satire. He was vicious”
Dann Corbit
Posts: 12538
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: Yet another game analysis method

Post by Dann Corbit »

You can recognize Zugzwang with the technique introduced by Omid David:
https://arxiv.org/abs/0808.1125
Taking ideas is not a vice, it is a virtue. We have another word for this. It is called learning.
But sharing ideas is an even greater virtue. We have another word for this. It is called teaching.
Ferdy
Posts: 4833
Joined: Sun Aug 10, 2008 3:15 pm
Location: Philippines

Re: Yet another game analysis method

Post by Ferdy »

Kirk wrote: Fri Apr 05, 2019 6:22 pm
Ferdy wrote: Fri Apr 05, 2019 5:20 pm
Kirk wrote: Fri Apr 05, 2019 5:04 pm Hi Ferdy!

How difficult would it be to add some tactical tips to Chess Artist?

Examples would be:

“This move would pin the Knight”
That one is possible, python-chess has a method to detect pins.
“Creating an isolated pawn”
Possible but needs to walk the pv and see if a capture would create an isolated pawn. Something like,
4. cxd5 exd5 and the d5 pawn of black would become isolated assuming there is no longer black's c pawn. The white's move 4. cxd5 can have a comment "Creating ...". So move the cxd5 on the board nad exd5 too, then check if there is an isolated pawn at d5. So the first trigger is a capture to the pawn.
“Opening a file”
Possible, but I need to see sample situation.
“Protecting the King”
“Zugzwang”
Can you give some examples to each situation?
*I will give it a try. I think Zugzwang move could be calculated when every move would calculate as a loss or greater than one pawn.
I think I get this and as Dan also mentioned regarding null move. For the side to move to be in zugzwang, we just compare 2 scores, first score is its own search and second score is the score when it pass the side to move to its opponent. From the point of view of the side to move if first score is lower than the second score then the side to move is in zugzwang.
*Protecting the King would need to store the previous position where the King is threatened (Mate would result unless this move(s) were made). Any move where Mate is not computed by the engine would work compared to the previously stored position.
This is nice something related to mate score. To detect the move that protects our king, we just pass and if opponent score is a mate score that means the opponent is threatening our king. Now we go back and search normally, if the score is not mate that means this move protects our king.
*Opening a file would only be useful for the Rook and Queen where a move would make all possible squares it could occupy open (a-h). It could work diagonally for the bishop too I suppose.
I can't understand this so far. I am thinking on the QGD, slav, exchange, d4 d5 c4 c6 cxd5 cxd5. Now the c file is opened. A comment "opening the file" for cxd5 move of black is possible, but this is too obvious for the advance player, but could be a good comment for a beginner to let him knew what is an open file even if there is no rook or queen occupying it.
*"A Combination..." text could result too is moves of similar evaluation had one where exchanging would still lead to an evaluation of equal exchange (in capture piece value but not necessarily evaluation equality as positionally it may be better)
I can't understand this.
dkappe
Posts: 1631
Joined: Tue Aug 21, 2018 7:52 pm
Full name: Dietrich Kappe

Re: Yet another game analysis method

Post by dkappe »

I took a whack at the combined leela and sf here https://github.com/dkappe/chess-artist

The file is a separate new-artist.py along with an example.sh shell script. There is a point where the first and second engines are called on the same position, which probably isn’t what you want, but so far so good.
Fat Titz by Stockfish, the engine with the bodaciously big net. Remember: size matters. If you want to learn more about this engine just google for "Fat Titz".
Ferdy
Posts: 4833
Joined: Sun Aug 10, 2008 3:15 pm
Location: Philippines

Re: Yet another game analysis method

Post by Ferdy »

dkappe wrote: Sat Apr 06, 2019 3:33 pm I took a whack at the combined leela and sf here https://github.com/dkappe/chess-artist

The file is a separate new-artist.py along with an example.sh shell script. There is a point where the first and second engines are called on the same position, which probably isn’t what you want, but so far so good.
I see there is engine 2 and first engine will be used when material is still high :).
dkappe
Posts: 1631
Joined: Tue Aug 21, 2018 7:52 pm
Full name: Dietrich Kappe

Re: Yet another game analysis method

Post by dkappe »

Ferdy wrote: Sat Apr 06, 2019 5:01 pm I see there is engine 2 and first engine will be used when material is still high :).
As per your formula.
Fat Titz by Stockfish, the engine with the bodaciously big net. Remember: size matters. If you want to learn more about this engine just google for "Fat Titz".
dkappe
Posts: 1631
Joined: Tue Aug 21, 2018 7:52 pm
Full name: Dietrich Kappe

Re: Yet another game analysis method

Post by dkappe »

From the recent US Women’s Championship (I upped the decisive score to 7.0):

[pgn] [Event "US Championship (Women)"] [Site "St Louis, MO USA"] [Date "2019.03.22"] [Round "3.1"] [White "Irina Krush"] [Black "Jennifer R Yu"] [Result "0-1"] [EventDate "2019.03.20"] [ECO "B13"] [WhiteElo "2451"] [BlackElo "2273"] [PlyCount "80"] [Annotator "leela+sf"] {Hash 32mb, Threads 3, @ 10.0s/pos} 1. c4 c6 2. e4 d5 3. exd5 cxd5 4. d4 Nf6 5. Nc3 Nc6 6. Bg5 Be6 7. a3 Qd7 8. Be2 $0 {+0.01} ({Better is} 8. Nf3 Ne4 9. cxd5 Bxd5 10. Be3 {+0.33}) Rd8 $0 {+0.36} 9. Bxf6 $0 {+0.21} exf6 $0 {+0.34} 10. c5 $0 {+0.21} g6 $0 {+0.32} 11. Nf3 $1 {+0.34} ({} 11. b4 Bh6 12. b5 Na5 13. Qa4 {+0.32}) 11... h5 $1 {+0.32} ({} 11...Bg7 12. b4 a6 13. O-O O-O {+0.34}) 12. b4 $0 {+0.15} Bh6 $0 {+0.30} 13. b5 $0 {+0.14} 13... Ne7 $6 {+0.73} ({Better is} 13...Na5 14. Qa4 b6 15. c6 Qc7 {+0.15}) 14. h4 $6 {-0.31} ({Excellent is} 14. a4 O-O 15. a5 b6 16. axb6 {+0.75}) 14... Kf8 $0 {+0.07} ({Better is} 14...O-O 15. a4 Bg4 16. O-O Nf5 {-0.31}) 15. a4 $0 {-0.10} ({Better is} 15. O-O Bg4 16. Nh2 Bxe2 17. Qxe2 {+0.06}) Kg7 $0 {+0.08} 16. a5 $6 {-0.21} ({Better is} 16. O-O Bg4 17. Nh2 Bxe2 18. Qxe2 {+0.07}) 16... Nc8 $2 {+0.83} ({Excellent is} 16...Bg4 17. O-O Nf5 18. b6 a6 {-0.21}) 17. b6 $2 {+0.02} ({Excellent is} 17. O-O Ne7 18. Re1 Rhe8 19. Ra2 {+0.87}) a6 $0 {+0.24} 18. Na2 $0 {+0.06} Ne7 $0 {+0.20} 19. Nb4 $0 {+0.02} 19... Qc8 $6 {+0.51} ({Better is} 19...Bf5 20. O-O Be4 21. Re1 Rhe8 {+0.00}) 20. Ra3 $0 {+0.05} ({Better is} 20. O-O Bf5 21. Re1 Be4 22. Bd3 {+0.50}) 20... Rde8 $6 {+0.59} ({Better is} 20...Rhe8 21. O-O Bg4 22. Re1 Nc6 {+0.03}) 21. Rc3 $0 {+0.25} ({Better is} 21. O-O Nc6 22. Nxc6 Qxc6 23. Ne1 {+0.53}) 21... Bd7 $6 {+0.74} ({Better is} 21...Nc6 22. Nxc6 Qxc6 23. O-O Bg4 {+0.13}) 22. O-O $0 {+0.52} 22... Bc6 $2 {+1.00} ({Better is} 22...Rd8 23. Re1 Rhe8 24. Bd3 Nc6 {+0.54}) 23. Ne1 $0 {+0.66} ({Better is} 23. Re1 Nf5 24. Nxc6 Qxc6 25. Bd3 {+1.00}) 23... Nf5 $2 {+0.90} ({Better is} 23...Bd7 24. Nec2 Ba4 25. Ra3 Bxc2 {+0.65}) 24. Nxc6 $0 {+0.53} ({Better is} 24. Nf3 Re6 25. Nxc6 Qxc6 26. Bd3 {+0.94}) Qxc6 $0 {+0.73} 25. Nc2 $0 {+0.34} ({Better is} 25. Nf3 Ne7 26. Bd3 Qd7 27. Bc2 {+0.72}) Nxh4 $0 {+0.53} 26. Nb4 $0 {+0.44} Qe6 $0 {+0.70} 27. Bd3 $0 {+0.45} ({Better is} 27. Bf3 Nxf3+ 28. Rxf3 h4 29. c6 {+0.67}) Bf4 $0 {+0.90} 28. c6 $6 {-0.58} ({Excellent is} 28. Bc2 Re7 29. Nd3 Bh6 30. Re1 {+0.69}) Bd6 $0 {-0.46} 29. Rc5 $0 {-0.70} ({Better is} 29. Nc2 bxc6 30. Rxc6 Bh2+ 31. Kxh2 {-0.51}) Bxc5 $0 {-0.34} 30. dxc5 $0 {-1.24} bxc6 $0 {-0.31} 31. Nxa6 $0 {-0.61} 31... Qe5 $0 {-0.53} ({} 31...Qd7 32. Nc7 {-0.61}) 32. Nc7 $0 {-0.51} Re7 $5 {-2.33} 33. Qa4 $0 {-6.61} ({Excellent is} 33. Qd2 Qd4 34. Qd1 Qf4 35. g3 {-2.33}) Qg5 $0 {-6.19} 34. g3 $0 {-6.48} Nf3+ {-7.72} 35. Kg2 $0 {-5.80} Ne1+ $0 {-6.07} 36. Rxe1 $0 {-6.41} Rxe1 $0 {-6.28} 37. Qf4 $0 {-6.83} Qg4 {-8.16} 38. f3 {-14.78} Qd7 {-7.40} 39. a6 {-11.16} Qe7 {-11.21} 40. Qd2 {-18.21} Ra1 {-9.84} (-- {WhiteAveError=0.78, BlackAveError=0.50, ratingDiff=66}) 0-1 [/pgn]

Still need to identify the engine in comments.
Fat Titz by Stockfish, the engine with the bodaciously big net. Remember: size matters. If you want to learn more about this engine just google for "Fat Titz".
Ferdy
Posts: 4833
Joined: Sun Aug 10, 2008 3:15 pm
Location: Philippines

Re: Yet another game analysis method

Post by Ferdy »

Kirk wrote: Fri Apr 05, 2019 5:04 pm Hi Ferdy!

How difficult would it be to add some tactical tips to Chess Artist?

Examples would be:

“This move would pin the Knight”
Tried to implement this with comment "Pins the knight"

Six sample games.

[pgn] [Event "69th ch-RUS 2016"] [Site "Novosibirsk RUS"] [Date "2016.10.25"] [Round "9.2"] [White "Goganov,A"] [Black "Riazantsev,A"] [Result "1/2-1/2"] [BlackElo "2651"] [BlackFideId "4125029"] [BlackTitle "GM"] [ECO "A07"] [EventDate "2016.10.16"] [Opening "Reti"] [Variation "King's Indian attack (Barcza system)"] [WhiteElo "2635"] [WhiteFideId "24109959"] [WhiteTitle "GM"] 1. Nf3 d5 2. g3 Nd7 3. c4 dxc4 4. Na3 e5 5. Nxc4 e4 6. Nd4 $2 $15 { -0.92/15 } ( { Excellent is } 6. Nh4 h6 7. b3 $14 { +0.37/19 } ) 6... Nb6 { -0.21/17 } ( { Also playable is } 6... Nc5 7. Nb3 Be6 $15 { -0.52/20 } ) 7. e3 $6 $17 { -1.35/16 } ( { Better is } 7. Nxb6 axb6 8. Nc2 $15 { -0.58/20 } ) 7... Nf6 8. Bg2 Bc5 $6 { -0.04/16 } ( { Better is } 8... Nxc4 9. Qa4+ Bd7 $15 { -0.81/20 } ) 9. Nb3 $2 $17 { -1.26/16 } ( { Excellent is } 9. d3 exd3 10. Qxd3 { -0.18/22 } ) 9... Be7 $15 { -0.9/17 } ( { Also playable is } 9... Bb4 10. Ne5 Qd5 $17 { -1.19/20 } ) 10. Ne5 $17 { -1.29/18 } ( { Also playable is } 10. Nxb6 axb6 11. Nd4 $15 { -0.94/19 } ) 10... c5 11. O-O $6 $17 { -1.59/18 } ( { Better is } 11. d4 exd3 12. Nd2 $15 { -0.74/22 } ) 11... O-O $15 { -0.75/18 } ( { Also playable is } 11... Bd6 12. f4 Qc7 $15 { -0.97/21 } ) 12. f4 $6 $17 { -1.55/18 } ( { Better is } 12. d4 exd3 13. Nd2 $15 { -0.98/21 } ) 12... exf3 $4 $15 { -0.48/17 } ( { Better is } 12... a5 13. a4 Re8 $17 { -1.46/22 } ) 13. Qxf3 $2 $15 { -0.87/19 } ( { Excellent is } 13. Nxf3 Re8 14. d4 { +0.2/20 } ) 13... c4 14. Na5 Qc7 15. d4 cxd3 16. Nxd3 Rd8 17. Nf4 $17 { -1.6/18 } ( { Also playable is } 17. Qf4 Bd6 18. Qh4 $17 { -1.2/21 } ) 17... Rb8 $4 $15 { -0.33/17 } ( { Excellent is } 17... Nbd7 18. Bd2 Ne5 $17 { -1.89/22 } ) 18. Nb3 $17 { -1.0/17 } ( { Also playable is } 18. Qf2 Ng4 19. Qe2 $15 { -0.53/19 } ) 18... Bf5 $15 { -0.49/19 } ( { Also playable is } 18... Nc4 19. Nd4 Ne5 $15 { -0.75/20 } ) 19. Nd4 $2 $17 { -1.44/19 } ( { Excellent is } 19. Qe2 Be4 20. Bd2 $15 { -0.37/21 } ) 19... Be4 20. Qe2 $6 $17 { -1.48/18 } ( { Better is } 20. Qf2 Bxg2 21. Nxg2 $15 { -0.89/21 } ) 20... Bxg2 21. Qxg2 $6 $17 { -1.4/18 } ( { Better is } 21. Kxg2 Na4 22. Nd3 $15 { -0.59/20 } ) 21... Qe5 $6 $15 { -0.56/18 } ( { Better is } 21... Bc5 22. Bd2 Nc4 $17 { -1.38/20 } ) 22. g4 $6 $17 { -1.39/15 } ( { Better is } 22. Qf3 Nbd5 23. Bd2 $15 { -0.75/22 } ) 22... Qe4 $6 $15 { -0.7/19 } ( { Better is } 22... Rbc8 23. Nd3 Qe4 $17 { -1.26/20 } ) 23. Nf5 $6 $17 { -1.34/16 } ( { Better is } 23. Qxe4 Nxe4 24. b3 $15 { -0.58/23 } ) 23... Bc5 $4 $15 { -0.25/19 } ( { Excellent is } 23... Bf8 24. Qxe4 Nxe4 $17 { -1.68/23 } ) 24. Qxe4 Nxe4 25. b3 g6 $4 { -0.21/20 } ( { Better is } 25... Nd5 26. Nxd5 Rxd5 $17 { -1.06/23 } ) 26. Ng3 $2 $17 { -1.58/18 } ( { Excellent is } 26. Nh6+ Kg7 27. g5 $15 { -0.27/24 } ) 26... Nxg3 27. hxg3 Nd5 $15 { -0.94/20 } ( { Also playable is } 27... Rd6 28. Kg2 f6 $17 { -1.01/20 } ) 28. Kf2 Rd6 $15 { -0.33/19 } ( { Also playable is } 28... Nb4 29. Kf3 Nd3 $15 { -0.44/20 } ) 29. Kf3 Nb4 $6 { -0.14/18 } ( { Better is } 29... Nc3 30. Re1 Re8 $15 { -0.84/22 } ) 30. Ba3 Re8 { -0.09/19 } ( { Also playable is } 30... Rbd8 31. Rac1 b6 { -0.15/25 } ) 31. Rfe1 $6 $15 { -0.84/17 } ( { Better is } 31. Bxb4 Bxb4 32. e4 { -0.12/23 } ) 31... Rf6 $6 $14 { +0.41/17, Pins the knight } ( { Better is } 31... g5 32. Nh5 b6 $15 { -0.54/23 } ) 32. Kg2 $6 { -0.14/16 } ( { Better is } 32. Rad1 h6 33. Re2 $14 { +0.62/22 } ) 32... Ra6 $6 { +0.1/19 } ( { Better is } 32... Nd3 33. Nxd3 Bxa3 $15 { -0.47/21 } ) 33. Bxb4 Bxb4 34. Re2 Rd6 35. Rc1 Ba5 { +0.0/19 } ( { Also playable is } 35... g5 36. Nh5 Ba5 { -0.09/27 } ) 36. Kf3 { -0.19/19 } ( { Also playable is } 36. Rc5 Bb6 37. Rd5 { +0.0/26 } ) 36... Bb6 37. e4 Rd4 38. Rcc2 $15 { -0.48/19 } ( { Also playable is } 38. Rc3 Kg7 39. Nd5 { -0.1/24 } ) 38... Kg7 $6 { +0.0/19 } ( { Better is } 38... h6 39. Rc3 Rd1 $15 { -0.5/24 } ) 39. Nd5 $15 { -0.5/19 } ( { Also playable is } 39. g5 Bd8 40. Rc5 { -0.2/24 } ) 39... Rd3+ { -0.11/21 } ( { Also playable is } 39... Bd8 40. Nf4 Bf6 { -0.11/23 } ) 40. Kg2 Bd4 { +0.0/21 } ( { Also playable is } 40... Ba5 41. Rc5 Bd8 { -0.12/25 } ) 41. Nf4 Rc3 { +0.0/21 } ( { Also playable is } 41... Rd1 42. Rc7 g5 { +0.0/28 } ) 42. Rxc3 { -0.2/20 } ( { Also playable is } 42. Rcd2 Be5 43. g5 { +0.0/24 } ) 42... Bxc3 43. Rc2 Be5 44. Kf3 Rd8 45. Nd5 h6 { +0.0/29 } ( { Also playable is } 45... a6 46. a4 h6 { +0.0/34 } ) 46. a4 { +0.0/28 } ( { Also playable is } 46. Rc5 a6 47. a4 { +0.0/30 } ) 46... Kf8 { +0.0/25 } ( { Also playable is } 46... Bb8 47. Rc5 Be5 { +0.0/30 } ) 1/2-1/2 [Event "69th ch-RUS 2016"] [Site "Novosibirsk RUS"] [Date "2016.10.25"] [Round "9.5"] [White "Bocharov,D"] [Black "Svidler,P"] [Result "1/2-1/2"] [BlackElo "2745"] [BlackFideId "4102142"] [BlackTitle "GM"] [ECO "A13"] [EventDate "2016.10.16"] [Opening "English"] [Variation "Romanishin gambit"] [WhiteElo "2611"] [WhiteFideId "4138716"] [WhiteTitle "GM"] 1. Nf3 Nf6 2. c4 e6 3. g3 a6 4. Bg2 b5 5. b3 Bb7 6. O-O { -0.02/15 } ( { Also playable is } 6. Qc2 c5 7. O-O $14 { +0.33/19 } ) 6... c5 $2 $16 { +1.04/17 } ( { Excellent is } 6... Be7 7. a4 bxc4 $15 { -0.35/21 } ) 7. Nc3 $14 { +0.25/18 } ( { Also playable is } 7. Bb2 bxc4 8. bxc4 $14 { +0.36/21 } ) 7... Qb6 $14 { +0.88/17 } ( { Also playable is } 7... b4 8. Na4 Be7 $14 { +0.47/21 } ) 8. e3 $6 { +0.15/17 } ( { Better is } 8. Bb2 Nc6 9. e3 $14 { +0.67/20 } ) 8... Be7 $14 { +0.63/16 } ( { Also playable is } 8... d6 9. Qe2 bxc4 $14 { +0.45/20 } ) 9. Qe2 $6 { +0.0/17 } ( { Better is } 9. d4 O-O 10. d5 $14 { +0.5/22 } ) 9... Ne4 $6 $14 { +0.79/17 } ( { Better is } 9... O-O 10. cxb5 axb5 { +0.16/24 } ) 10. Bb2 $6 { -0.07/20 } ( { Better is } 10. Nxe4 Bxe4 11. d3 $14 { +0.66/21 } ) 10... O-O $6 $14 { +0.9/19 } ( { Better is } 10... Nxc3 11. Bxc3 O-O { +0.0/22 } ) 11. d4 $6 { -0.07/19 } ( { Better is } 11. Nxe4 Bxe4 12. d3 $14 { +0.44/21 } ) 11... Nxc3 12. Bxc3 cxd4 $2 $16 { +1.02/15 } ( { Excellent is } 12... b4 13. dxc5 Qxc5 { -0.11/21 } ) 13. exd4 Bf6 14. Rac1 $14 { +0.51/17 } ( { Also playable is } 14. Qd2 Be4 15. d5 $14 { +0.83/21 } ) 14... d6 $6 $16 { +1.01/17 } ( { Better is } 14... b4 15. Ba1 a5 { +0.07/21 } ) 15. c5 $4 { +0.23/18 } ( { Better is } 15. Qd2 a5 16. d5 $16 { +1.2/22 } ) 15... Qd8 $14 { +0.57/17 } ( { Also playable is } 15... Qc7 16. Bd2 Bxf3 { +0.19/23 } ) 16. Rfd1 $6 { +0.11/20 } ( { Better is } 16. Bb2 Bxf3 17. Bxf3 $14 { +0.66/21 } ) 16... Bd5 $1 $14 { +0.4/20 } ( { Inferior is } 16... Bxf3 17. Bxf3 d5 $14 { +0.73/21 } ) 17. Ne1 { +0.18/20 } ( { Also playable is } 17. h3 Nc6 18. Nh2 $14 { +0.46/22 } ) 17... Bxg2 $14 { +0.79/20 } ( { Also playable is } 17... Nc6 18. Bxd5 exd5 $14 { +0.36/22 } ) 18. Kxg2 d5 19. h4 $6 { +0.18/17 } ( { Better is } 19. Nf3 Nc6 20. a3 $14 { +0.88/22 } ) 19... Nc6 $14 { +0.86/19 } ( { Also playable is } 19... Qd7 20. Qg4 Nc6 $14 { +0.43/22 } ) 20. h5 $2 $17 { -1.08/17 } ( { Excellent is } 20. a3 Qd7 21. Nf3 $14 { +0.85/22 } ) 20... b4 21. Bb2 a5 $1 { -0.24/17 } ( { Inferior is } 21... Qa5 22. h6 g6 { +0.16/23 } ) 22. f4 $6 $15 { -0.51/19 } ( { Better is } 22. h6 g6 23. f4 $14 { +0.37/22 } ) 22... Qc7 { +0.02/18 } ( { Also playable is } 22... Qb8 23. Rb1 a4 { -0.18/21 } ) 23. Nf3 { -0.13/17 } ( { Also playable is } 23. Qd2 a4 24. g4 { +0.1/21 } ) 23... a4 { +0.06/18 } ( { Also playable is } 23... h6 24. Qe3 a4 { +0.0/20 } ) 24. Rc2 { +0.05/14 } ( { Also playable is } 24. Qd2 Qc8 25. Rb1 { +0.19/21 } ) 24... Rfe8 $14 { +0.52/17 } ( { Also playable is } 24... Qb7 25. Bc1 Qa6 $14 { +0.35/20 } ) 25. Qe3 $6 { -0.12/15 } ( { Better is } 25. Bc1 Bd8 26. Ne5 $14 { +0.86/21 } ) 25... Bd8 $14 { +0.55/16 } ( { Also playable is } 25... h6 26. Bc1 Rec8 $14 { +0.26/19 } ) 26. g4 $6 $14 { +0.36/16 } ( { Better is } 26. Ne5 Na5 27. h6 $14 { +0.87/19 } ) 26... f5 $16 { +1.45/17 } ( { Also playable is } 26... a3 27. Bc1 Ra7 $16 { +1.03/19 } ) 27. g5 Qb7 $16 { +1.53/18 } ( { Also playable is } 27... Re7 28. Bc1 Qd7 $16 { +1.15/21 } ) 28. Re2 $16 { +1.12/18 } ( { Also playable is } 28. Bc1 axb3 29. axb3 $16 { +1.55/22 } ) 28... Bc7 $16 { +1.46/18 } ( { Also playable is } 28... Qf7 29. Rh1 Bc7 $16 { +1.15/21 } ) 29. Rde1 $16 { +1.15/20 } ( { Also playable is } 29. h6 g6 30. Bc1 $16 { +1.36/26 } ) 29... Re7 $16 { +1.43/19 } ( { Interesting is } 29... Qc8 30. Bc1 Ra7 $16 { +1.48/20 } ) 30. Bc1 Kf8 $6 $16 { +1.99/21 } ( { Better is } 30... Qc8 31. Kh1 Bb8 $16 { +1.25/21 } ) 31. Qd3 $16 { +1.32/19 } ( { Also playable is } 31. bxa4 Kg8 32. Qd3 $16 { +1.58/21 } ) 31... Qc8 $16 { +1.59/19 } ( { Also playable is } 31... Qa6 32. Qd2 Qc8 $16 { +1.11/23 } ) 32. g6 h6 33. Bd2 $2 $14 { +0.85/19 } ( { Excellent is } 33. bxa4 Qa6 34. Qd2 $16 $18 { +2.12/23 } ) 33... axb3 34. axb3 Rb8 $16 { +1.98/19 } ( { Also playable is } 34... Kg8 35. Qb1 Re8 $16 { +1.62/24 } ) 35. Ra1 Ke8 $2 $16 $18 { +2.55/21 } ( { Excellent is } 35... Ra8 36. Rae1 Kg8 $16 { +1.32/28 } ) 36. Ne1 $6 $16 { +1.65/19 } ( { Better is } 36. Be1 Kf8 37. Kg3 $16 $18 { +2.17/24 } ) 36... Ra8 $16 { +1.83/23 } ( { Also playable is } 36... Qb7 37. Nc2 Qb5 $16 { +1.75/24 } ) 37. Rxa8 Qxa8 38. Qb5 { Pins the knight } 38... Kd7 $6 $16 $18 { +2.74/22 } ( { Better is } 38... Kf8 39. Nc2 Ba5 $16 { +1.81/26 } ) 39. Nd3 Kc8 40. Be3 Bb8 $16 $18 { +2.89/22 } ( { Also playable is } 40... Nb8 41. Bf2 Nc6 $16 $18 { +2.4/25 } ) 41. Nxb4 $2 $16 $18 { +2.32/18 } ( { Excellent is } 41. Bf2 Bc7 42. Nxb4 $16 $18 { +3.38/25 } ) 41... Nxb4 42. Qxb4 Rb7 $6 $16 $18 { +2.9/20 } ( { Better is } 42... Qc6 43. Rc2 Rb7 $16 $18 { +2.14/24 } ) 43. Qa4 $2 $16 { +1.47/22 } ( { Excellent is } 43. Qe1 Qa6 44. Bf2 $16 $18 { +3.19/25 } ) 43... Qxa4 44. bxa4 Rb3 $16 $18 { +2.62/22 } ( { Also playable is } 44... Kd7 45. Ra2 Ra7 $16 $18 { +2.25/27 } ) 45. a5 $6 $16 $18 { +2.14/18 } ( { Better is } 45. Bf2 Kd7 46. Ra2 $16 $18 { +2.82/28 } ) 45... Kd7 $16 $18 { +3.01/23 } ( { Also playable is } 45... Ra3 46. Bd2 Ra2 $16 $18 { +2.6/22 } ) 46. Bc1 $2 $16 $18 { +2.58/19 } ( { Excellent is } 46. Ra2 Rxe3 47. a6 $16 $18 { +3.76/27 } ) 46... Rc3 $16 $18 { +3.34/21 } ( { Also playable is } 46... Rb1 47. Ba3 Ba7 $16 $18 { +3.25/23 } ) 47. Bd2 $2 $16 { +1.33/19 } ( { Excellent is } 47. Rb2 Kc8 48. Bd2 $16 $18 { +3.87/25 } ) 47... Rc4 $16 { +1.87/20 } ( { Also playable is } 47... Rc2 48. Rf2 Rc4 $16 { +1.58/26 } ) 48. Be1 Bxf4 $2 $16 $18 { +3.79/22 } ( { Excellent is } 48... Ra4 49. Rb2 Bc7 $16 { +1.52/25 } ) 49. Ra2 Kc8 50. a6 Kb8 51. Re2 $6 $16 $18 { +3.0/20 } ( { Better is } 51. Rb2+ Ka8 52. Rb7 $16 $18 { +3.89/25 } ) 51... Ka7 $1 $16 $18 { +3.36/22 } ( { Inferior is } 51... Bg5 52. Bf2 Ka7 $16 $18 { +3.76/24 } ) 52. Rxe6 Bg5 53. Rd6 $2 $16 $18 { +2.41/17 } ( { Excellent is } 53. Bf2 Rc2 54. Re5 $16 $18 { +4.37/26 } ) 53... Rxd4 $1 $16 $18 { +2.68/18 } ( { Inferior is } 53... Be3 54. Rd7+ Kxa6 $16 $18 { +3.26/23 } ) 54. Bf2 $16 $18 { +2.86/18 } ( { Also playable is } 54. Rd7+ Kxa6 55. Rxg7 $16 $18 { +3.09/26 } ) 54... Rd2 $6 $16 $18 { +3.8/18 } ( { Better is } 54... Rg4+ 55. Kf3 Bh4 $16 $18 { +3.09/25 } ) 55. Kf3 Rd3+ 56. Ke2 Rd2+ 57. Ke1 Ra2 $16 $18 { +4.62/20 } ( { Also playable is } 57... Rc2 58. Rd7+ Kxa6 $16 $18 { +4.48/23 } ) 58. Bd4 f4 59. Rxd5 $16 $18 { +4.49/17 } ( { Also playable is } 59. Bxg7 f3 60. Rxd5 $16 $18 { +4.83/23 } ) 59... f3 60. Rf5 $6 $16 $18 { +4.38/18 } ( { Better is } 60. Bxg7 Re2+ 61. Kd1 $16 $18 { +4.88/22 } ) 60... Rd2 61. Bf2 $2 $16 $18 { +3.04/19 } ( { Excellent is } 61. Bxg7 Rg2 62. Rxf3 $16 $18 { +7.87/22 } ) 61... Rd3 $6 $16 $18 { +3.75/17 } ( { Better is } 61... Kxa6 62. Rxf3 Rd8 $16 $18 { +3.24/23 } ) 62. Rf7+ Kxa6 63. Rxg7 $4 { -0.09/20 } ( { Excellent is } 63. c6 Bd2+ 64. Kf1 $16 $18 { +4.72/24 } ) 63... Bd2+ $4 $16 $18 { +2.75/19 } ( { Excellent is } 63... Bf6 64. Rf7 Bc3+ { +0.0/27 } ) 64. Kf1 Rd5 $2 $16 $18 { +5.88/21 } ( { Excellent is } 64... Bg5 65. Bg3 Bf6 $16 $18 { +3.85/24 } ) 65. c6 Bc3 66. Rd7 Rxh5 67. c7 $2 $16 { +1.0/18 } ( { Excellent is } 67. Be3 Rh4 68. Ra7+ $16 $18 { +11.57/24 } ) 67... Kb7 $16 { +1.06/17 } ( { Also playable is } 67... Rh1+ 68. Bg1 Kb7 $14 { +0.99/29 } ) 68. Bg3 $2 $16 $18 { +4.3/19 } ( { Excellent is } 68. Bb6 Be5 69. g7 $16 $18 { +6.61/27 } ) 68... Rh1+ 69. Kf2 Be1+ 70. Kxf3 $4 { +0.14/23 } ( { Excellent is } 70. Ke3 Bxg3 71. g7 $16 $18 { +4.32/28 } ) 70... Rh3 71. Ke2 { +0.14/28 } ( { Also playable is } 71. g7 Rxg3+ 72. Ke4 { +0.14/31 } ) 71... Rxg3 72. g7 Ba5 73. Rd8 Bxc7 74. g8=Q Rxg8 75. Rxg8 1/2-1/2 [Event "69th ch-RUS 2016"] [Site "Novosibirsk RUS"] [Date "2016.10.26"] [Round "10.4"] [White "Tomashevsky,E"] [Black "Jakovenko,D"] [Result "1/2-1/2"] [BlackElo "2714"] [BlackFideId "4122356"] [BlackTitle "GM"] [ECO "C50"] [EventDate "2016.10.16"] [Opening "Giuoco Pianissimo"] [WhiteElo "2724"] [WhiteFideId "4147235"] [WhiteTitle "GM"] 1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. d3 Nf6 5. O-O O-O 6. h3 { -0.01/15 } ( { Also playable is } 6. c3 Bb6 7. Bg5 $14 { +0.46/20 } ) 6... d6 $14 { +0.67/16 } ( { Also playable is } 6... a6 7. Nbd2 Ba7 { +0.2/20 } ) 7. c3 { +0.12/16 } ( { Also playable is } 7. a4 a5 8. Nc3 { +0.24/21 } ) 7... a6 $2 $14 { +0.77/16 } ( { Excellent is } 7... a5 8. Bg5 h6 $15 { -0.49/22 } ) 8. a4 { +0.16/17 } ( { Also playable is } 8. Bb3 b5 9. Qe2 $14 { +0.3/18 } ) 8... Ba7 $14 { +0.44/15 } ( { Also playable is } 8... Bb6 9. Nbd2 Ne7 $14 { +0.4/20 } ) 9. Nbd2 $6 $14 { +0.25/17 } ( { Better is } 9. b4 Ne7 10. Nbd2 $14 { +0.92/19 } ) 9... Ne7 $14 { +0.84/18 } ( { Also playable is } 9... Qe8 10. b4 Be6 $14 { +0.43/19 } ) 10. Re1 $6 { +0.19/17 } ( { Better is } 10. d4 Ng6 11. b4 $14 { +0.72/19 } ) 10... Ng6 $14 { +0.7/17 } ( { Also playable is } 10... h6 11. Bb3 c6 $14 { +0.33/20 } ) 11. Bb3 $2 $15 { -0.51/18 } ( { Excellent is } 11. Nf1 c6 12. Bb3 $14 { +0.74/21 } ) 11... c6 $2 $14 { +0.82/18 } ( { Excellent is } 11... Bxh3 12. gxh3 Nf4 $15 { -0.55/21 } ) 12. Nf1 $14 { +0.31/18 } ( { Also playable is } 12. d4 Re8 13. Bc2 $14 { +0.72/20 } ) 12... d5 13. Ng3 $6 { +0.09/19 } ( { Better is } 13. exd5 Nxd5 14. Ng3 $14 { +0.81/21 } ) 13... h6 $14 { +0.72/18 } ( { Also playable is } 13... dxe4 14. dxe4 Qc7 $14 { +0.45/21 } ) 14. exd5 Nxd5 15. d4 exd4 16. Nxd4 Re8 $6 $14 { +0.85/17 } ( { Better is } 16... Be6 17. Bc2 Ndf4 { +0.19/22 } ) 17. Rxe8+ Qxe8 18. Bxd5 cxd5 19. Be3 Bb8 20. Nf1 { +0.0/18 } ( { Also playable is } 20. Qd2 Bc7 21. a5 { +0.18/19 } ) 20... Be6 $6 $14 { +0.46/17 } ( { Better is } 20... Bc7 21. Qh5 Qd7 { -0.14/22 } ) 21. Qh5 { +0.06/17 } ( { Also playable is } 21. Nh2 Bc7 22. Qb3 $14 { +0.46/21 } ) 21... Be5 22. Nd2 { +0.0/19 } ( { Interesting is } 22. Qd1 Qe7 23. Qd2 { -0.03/20 } ) 22... Bd7 { +0.18/19 } ( { Also playable is } 22... Bxd4 23. Bxd4 Bd7 { -0.03/23 } ) 23. N2f3 { +0.15/21 } ( { Also playable is } 23. a5 f6 24. Qd1 $14 { +0.43/22 } ) 23... f6 $14 { +0.37/18 } ( { Also playable is } 23... Bxd4 24. Nxd4 Qe4 { +0.09/24 } ) 24. a5 { -0.22/19 } ( { Also playable is } 24. Nf5 Ne7 25. Nxe7+ $14 { +0.25/23 } ) 24... Nf8 $14 { +0.25/20 } ( { Also playable is } 24... Ne7 25. Qxe8+ Rxe8 { -0.19/24 } ) 25. Qxe8 { Pins the knight } 25... Rxe8 26. Nxe5 { -0.13/19 } ( { Also playable is } 26. Nc2 Bd6 27. Rd1 { +0.09/26 } ) 26... fxe5 27. Nb3 Ne6 $14 { +0.43/20 } ( { Also playable is } 27... Bc6 28. f3 Ng6 { +0.09/23 } ) 28. Nc5 Nxc5 29. Bxc5 Kf7 $14 { +0.29/21 } ( { Also playable is } 29... Bb5 30. Re1 Kf7 { +0.21/25 } ) 30. Re1 { +0.14/22 } ( { Also playable is } 30. h4 Bb5 31. f3 $14 { +0.35/24 } ) 30... g5 { +0.21/22 } ( { Also playable is } 30... h5 31. h4 Kf6 { +0.0/26 } ) 31. Re3 { +0.0/21 } ( { Also playable is } 31. g4 Rc8 32. b4 { +0.12/25 } ) 31... Re6 { +0.1/19 } ( { Also playable is } 31... Bb5 32. g4 Rc8 { +0.0/24 } ) 32. Bb6 { +0.0/23 } ( { Also playable is } 32. Rf3+ Kg6 33. Rf8 { +0.0/28 } ) 32... Bb5 { +0.0/24 } ( { Also playable is } 32... Re8 33. f3 h5 { +0.0/29 } ) 33. Rf3+ Rf6 { +0.0/28 } ( { Also playable is } 33... Kg6 34. Rf8 Re8 { +0.0/31 } ) 34. Rxf6+ { +0.0/30 } ( { Also playable is } 34. Re3 Re6 35. h4 { +0.17/27 } ) 34... Kxf6 35. f3 { +0.0/32 } ( { Also playable is } 35. g4 Be2 36. Kg2 { +0.0/36 } ) 35... e4 { +0.17/19 } ( { Also playable is } 35... h5 36. g4 h4 { +0.0/37 } ) 36. fxe4 { +0.0/24 } ( { Also playable is } 36. Kf2 h5 37. fxe4 { +0.0/29 } ) 36... dxe4 37. Kf2 { +0.0/28 } ( { Also playable is } 37. Bd4+ Kf5 38. b3 { +0.0/35 } ) 37... Kg6 { +0.0/29 } ( { Also playable is } 37... h5 38. Bd4+ Kg6 { +0.0/36 } ) 38. g3 { +0.0/29 } ( { Also playable is } 38. Kg3 Bf1 39. b3 { +0.0/36 } ) 38... Bd7 39. h4 gxh4 40. gxh4 h5 { +0.04/30 } ( { Also playable is } 40... Bb5 41. b3 Bd3 { +0.0/41 } ) 1/2-1/2 [Event "66th ch-RUS w 2016"] [Site "Novosibirsk RUS"] [Date "2016.10.25"] [Round "9.2"] [White "Charochkina,D"] [Black "Galliamova,A"] [Result "0-1"] [BlackElo "2450"] [BlackFideId "4129725"] [BlackTitle "IM"] [ECO "D52"] [EventDate "2016.10.16"] [Opening "QGD"] [WhiteElo "2366"] [WhiteFideId "4180917"] [WhiteTitle "IM"] 1. d4 d5 2. c4 c6 3. Nc3 Nf6 4. Nf3 e6 5. Bg5 Nbd7 6. e3 h6 $6 $16 { +1.0/16 } ( { Better is } 6... a6 7. cxd5 exd5 $14 { +0.47/20 } ) 7. Bf4 $6 { +0.21/15 } ( { Better is } 7. Bh4 Bd6 8. Bd3 $14 { +0.92/18 } ) 7... Nh5 $6 $14 { +0.74/17 } ( { Better is } 7... Bb4 8. Qb3 Qa5 { +0.18/20 } ) 8. Be5 Nhf6 9. Bg3 $14 { +0.35/17 } ( { Also playable is } 9. Bd3 dxc4 10. Bxc4 $14 { +0.78/20 } ) 9... Nh5 $14 { +0.79/17 } ( { Also playable is } 9... Bb4 10. Bd3 dxc4 $14 { +0.43/21 } ) 10. Bh4 $6 { +0.18/17 } ( { Better is } 10. Be5 Nhf6 11. Bg3 $14 { +0.68/20 } ) 10... g5 11. Nd2 $6 { +0.08/16 } ( { Better is } 11. Bg3 Nxg3 12. hxg3 $14 { +0.82/21 } ) 11... Ng7 $6 $16 { +1.03/16 } ( { Better is } 11... Ndf6 12. Bg3 Nxg3 $14 { +0.4/20 } ) 12. Bg3 Nf5 13. e4 $6 { -0.23/16 } ( { Better is } 13. Qf3 Nxg3 14. hxg3 $14 { +0.54/20 } ) 13... Nxg3 $2 $14 { +0.68/16 } ( { Excellent is } 13... Nxd4 14. cxd5 exd5 $15 { -0.4/21 } ) 14. hxg3 Bg7 $14 { +0.92/18 } ( { Also playable is } 14... dxc4 15. a4 Rb8 $14 { +0.57/22 } ) 15. e5 $2 $17 { -1.21/16 } ( { Excellent is } 15. exd5 exd5 16. cxd5 { +0.14/19 } ) 15... c5 16. cxd5 $2 $17 { -1.72/16 } ( { Excellent is } 16. f4 cxd4 17. Nb5 $14 { +0.73/20 } ) 16... cxd4 17. dxe6 dxc3 18. exd7+ Bxd7 19. bxc3 Bxe5 20. Bc4 Bxc3 { Pins the knight } 21. O-O Bc6 22. Qh5 $17 { -1.3/17 } ( { Also playable is } 22. Qe2+ Qe7 23. Rae1 $15 { -0.85/24 } ) 22... O-O 23. Rad1 Bg7 $4 { +0.09/19 } ( { Excellent is } 23... Qf6 24. Bb3 Rad8 $17 { -1.62/22 } ) 24. Ne4 Qc7 { +0.16/20 } ( { Also playable is } 24... Qe7 25. Nd6 Ba4 { -0.11/24 } ) 25. Nd6 Ba4 26. Rd2 b5 27. Bd5 Rab8 $14 { +0.39/16 } ( { Also playable is } 27... Rad8 28. Nxf7 Rxd5 { +0.0/28 } ) 28. Nf5 $6 { +0.0/21 } ( { Better is } 28. Rd3 Rbd8 29. Nf5 $14 { +0.55/23 } ) 28... Rb6 $14 { +0.33/17 } ( { Also playable is } 28... Qc3 29. Nxh6+ Bxh6 { +0.0/31 } ) 29. Re1 $4 { +0.12/18 } ( { Excellent is } 29. f4 gxf4 30. Qg4 $16 $18 { +2.12/23 } ) 29... Rf6 30. g4 $15 { -0.42/19 } ( { Also playable is } 30. Qg4 Qc3 31. Rde2 { +0.0/24 } ) 30... b4 31. Rde2 a5 { +0.0/19 } ( { Also playable is } 31... Kh8 32. Qh3 Rd8 $15 { -0.38/23 } ) 32. Re7 $6 $15 { -0.68/18 } ( { Better is } 32. Qh3 Rd8 33. Bb3 { +0.0/23 } ) 32... Qc5 33. R1e5 $6 $15 { -0.82/18 } ( { Better is } 33. R7e5 Qb6 34. Re7 { -0.1/24 } ) 33... Qc1+ $6 { +0.0/21 } ( { Better is } 33... Qc3 34. Qh3 Qd2 $15 { -0.7/21 } ) 34. Kh2 $17 { -1.0/16 } ( { Also playable is } 34. Re1 Qc3 35. R7e3 $15 { -0.51/22 } ) 34... Qf4+ $6 $15 { -0.65/18 } ( { Better is } 34... Kh8 35. Re3 Bc2 $17 { -1.59/21 } ) 35. Kh3 $2 $17 { -1.85/17 } ( { Excellent is } 35. Kg1 Qd2 36. Qh3 $15 { -0.58/23 } ) 35... Qxf2 36. Rxf7 R8xf7 37. Re7 Rxf5 38. gxf5 Qxf5+ 39. Kh2 Qxd5 0-1 [Event "66th ch-RUS w 2016"] [Site "Novosibirsk RUS"] [Date "2016.10.25"] [Round "9.1"] [White "Ubiennykh,E"] [Black "Kosteniuk,A"] [Result "0-1"] [BlackElo "2537"] [BlackFideId "4128125"] [BlackTitle "GM"] [ECO "E46"] [EventDate "2016.10.16"] [Opening "Nimzo-Indian"] [Variation "Reshevsky variation"] [WhiteElo "2346"] [WhiteFideId "4137582"] [WhiteTitle "WIM"] 1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. e3 O-O 5. Ne2 d5 6. a3 { -0.07/15 } ( { Also playable is } 6. cxd5 exd5 7. a3 { -0.01/20 } ) 6... Be7 $6 $14 { +0.33/15 } ( { Better is } 6... Bd6 7. cxd5 exd5 $15 { -0.44/21 } ) 7. cxd5 $15 { -0.39/18 } ( { Also playable is } 7. Ng3 c5 8. cxd5 { -0.13/22 } ) 7... exd5 8. Nf4 $15 { -0.37/17 } ( { Also playable is } 8. Ng3 c5 9. dxc5 { +0.05/21 } ) 8... c6 { +0.17/17 } ( { Also playable is } 8... h6 9. Bd3 c6 $15 { -0.31/20 } ) 9. Bd3 Na6 { +0.19/16 } ( { Also playable is } 9... h6 10. O-O Re8 $15 { -0.26/20 } ) 10. O-O $6 $15 { -0.51/17 } ( { Better is } 10. Bc2 b5 11. O-O $14 { +0.46/21 } ) 10... Nc7 11. Bc2 $15 { -0.37/18 } ( { Also playable is } 11. b4 Bd6 12. Bd2 { -0.14/19 } ) 11... b6 $6 $14 { +0.37/16 } ( { Better is } 11... Re8 12. f3 c5 { -0.23/20 } ) 12. f3 $6 $15 { -0.38/17 } ( { Better is } 12. e4 dxe4 13. Nxe4 $14 { +0.34/20 } ) 12... c5 13. Rf2 $2 $15 { -0.96/16 } ( { Excellent is } 13. b3 Ba6 14. Re1 { +0.24/21 } ) 13... Bd6 14. Nce2 $15 { -0.92/14 } ( { Also playable is } 14. Rb1 Ba6 15. dxc5 $15 { -0.64/19 } ) 14... Re8 $15 { -0.72/15 } ( { Interesting is } 14... a5 15. g4 h6 $15 { -0.68/18 } ) 15. Bd2 $6 $15 { -0.97/15 } ( { Better is } 15. b4 c4 16. Nc3 $15 { -0.43/20 } ) 15... Bb7 $6 { -0.05/16 } ( { Better is } 15... Bd7 16. g4 h6 $15 { -0.83/20 } ) 16. b4 $17 { -1.07/17 } ( { Also playable is } 16. dxc5 bxc5 17. Rb1 $15 { -0.71/19 } ) 16... c4 17. g4 Nd7 $15 { -0.52/16 } ( { Also playable is } 17... Qe7 18. Qf1 h6 $15 { -0.58/20 } ) 18. Rg2 $6 $17 { -1.03/16 } ( { Better is } 18. Qf1 Qh4 19. Rg2 { -0.12/20 } ) 18... Ne6 $4 { +0.06/17 } ( { Excellent is } 18... Nf8 19. Qf1 Be7 $17 { -1.22/19 } ) 19. Qe1 $4 $17 $19 { -3.02/20 } ( { Excellent is } 19. Nxe6 Rxe6 20. Nc3 { +0.24/21 } ) 19... Bxf4 20. exf4 Nxd4 21. Nxd4 Rxe1+ 22. Rxe1 c3 $4 { -0.18/18 } ( { Excellent is } 22... Qf6 23. Be3 Re8 $17 $19 { -2.77/21 } ) 23. Bxc3 Qc7 24. Bb2 Nf8 25. f5 Bc8 $6 $14 { +0.59/18 } ( { Better is } 25... Rc8 26. Ba4 a5 $15 { -0.37/20 } ) 26. Re8 { -0.05/19, Pins the knight } ( { Also playable is } 26. Bb3 Bb7 27. Rge2 $14 { +0.29/22 } ) 26... Bb7 27. Re3 $1 { -0.12/18 } ( { Interesting is } 27. Re1 Rc8 28. Ba4 $15 { -0.27/21 } ) 27... Rc8 { -0.1/20 } ( { Interesting is } 27... a5 28. b5 Nd7 { -0.07/22 } ) 28. Bd3 $15 { -0.48/17 } ( { Also playable is } 28. Rge2 Qf4 29. Bd3 { +0.0/22 } ) 28... Qf4 { -0.19/19 } ( { Also playable is } 28... Qd6 29. Bb5 a6 $15 { -0.25/21 } ) 29. Rge2 h5 $6 { -0.09/21 } ( { Better is } 29... Bc6 30. Ba6 Rc7 $15 { -0.61/24 } ) 30. gxh5 Nh7 31. Re7 Ng5 $2 $16 { +1.39/16 } ( { Excellent is } 31... Qg5+ 32. Kf1 Rb8 { +0.0/26 } ) 32. Rxb7 $4 { +0.0/19 } ( { Excellent is } 32. f6 Bc6 33. Nxc6 $16 $18 { +2.38/23 } ) 32... Nh3+ 33. Kg2 Qh4 34. Ne6 fxe6 35. Rxg7+ Kf8 36. Rg4 $4 $17 $19 { -2.89/17 } ( { Excellent is } 36. fxe6 Nf4+ 37. Kh1 $16 $18 { +7.47/27 } ) 36... Nf4+ 37. Rxf4 Qxf4 38. fxe6 Ke7 $2 $17 { -1.86/19 } ( { Excellent is } 38... Qg5+ 39. Kf2 Ke7 $17 $19 { -3.0/23 } ) 39. Be5 Qg5+ 40. Bg3 Rc3 41. Bg6 d4 42. f4 $2 $17 $19 { -4.74/18 } ( { Excellent is } 42. Re4 Qd2+ 43. Kh3 $17 $19 { -3.65/23 } ) 42... Qg4 $6 $17 $19 { -4.24/17 } ( { Better is } 42... Qd5+ 43. Be4 Qxh5 $17 $19 { -5.23/22 } ) 43. Rf2 d3 44. f5 Rc2 45. f6+ Kxe6 46. Bxd3 Rxf2+ 47. Kxf2 Qxh5 48. Ke3 $1 $17 $19 { -4.37/22 } ( { Interesting is } 48. a4 Qd1 49. Ke3 $17 $19 { -4.48/25 } ) 48... Qh6+ $17 $19 { -4.37/20 } ( { Also playable is } 48... Qd1 49. b5 Qc1+ $17 $19 { -4.48/26 } ) 49. Kd4 $1 $17 $19 { -4.48/23 } ( { Interesting is } 49. Bf4 Qxf6 50. Ke4 $17 $19 { -4.58/25 } ) 49... Qxf6+ 50. Kc4 $6 $17 $19 { -5.55/20 } ( { Better is } 50. Ke4 Qc3 51. b5 $17 $19 { -4.69/29 } ) 50... Qb2 51. Be1 b5+ 52. Kxb5 Qe5+ 53. Ka6 Qxe1 54. Bc4+ Kd6 55. Ka5 Qc3 0-1 [Event "chess.com Blitz Final 5m+2spm 2016"] [Site "chess.com INT"] [Date "2016.10.27"] [Round "4"] [White "Carlsen,M"] [Black "Nakamura,Hi"] [Result "1/2-1/2"] [BlackElo "2787"] [BlackFideId "2016192"] [BlackTitle "GM"] [ECO "A05"] [EventDate "2016.10.27"] [Opening "Reti opening"] [WhiteElo "2853"] [WhiteFideId "1503014"] [WhiteTitle "GM"] 1. Nf3 Nf6 2. g3 d5 3. Bg2 e6 4. O-O Be7 5. d3 b6 6. Nbd2 $6 $15 { -0.46/17 } ( { Better is } 6. e4 dxe4 7. Ne5 { +0.22/20 } ) 6... Bb7 $6 { +0.11/17 } ( { Better is } 6... c5 7. Ne5 Nfd7 $15 { -0.53/21 } ) 7. e4 c5 $6 $14 { +0.25/16 } ( { Better is } 7... O-O 8. e5 Nfd7 $15 { -0.68/21 } ) 8. Re1 $6 $15 { -0.45/19 } ( { Better is } 8. Ne5 O-O 9. f4 $14 { +0.32/20 } ) 8... Nc6 $1 { -0.04/17 } ( { Interesting is } 8... O-O 9. exd5 Nxd5 { +0.06/21 } ) 9. c3 Qc7 $14 { +0.27/18 } ( { Also playable is } 9... O-O 10. exd5 Nxd5 { -0.11/22 } ) 10. Nf1 $2 $15 { -0.79/17 } ( { Excellent is } 10. exd5 Nxd5 11. a4 $14 { +0.44/23 } ) 10... dxe4 $1 { -0.16/18 } ( { Interesting is } 10... d4 11. cxd4 cxd4 { +0.0/21 } ) 11. dxe4 Rd8 $6 { -0.04/17 } ( { Better is } 11... h6 12. e5 Nd7 $15 { -0.72/20 } ) 12. Qa4 $15 { -0.43/17, Pins the knight } ( { Also playable is } 12. Qe2 O-O 13. e5 { +0.02/22 } ) 12... a6 $6 $14 { +0.32/18 } ( { Better is } 12... h6 13. Bf4 Qc8 $15 { -0.53/22 } ) 13. e5 $6 $15 { -0.5/18 } ( { Better is } 13. Bf4 Qd7 14. Rad1 $14 { +0.25/22 } ) 13... Nd7 $6 { +0.13/18 } ( { Better is } 13... b5 14. Qf4 Nd7 $15 { -0.67/22 } ) 14. Qg4 Kf8 15. Qh5 $6 $15 { -0.42/16 } ( { Better is } 15. h4 b5 16. Bg5 { +0.13/21 } ) 15... h6 $2 $14 { +0.75/19 } ( { Excellent is } 15... Kg8 16. Bg5 h6 $15 { -0.71/22 } ) 16. Bf4 $2 $17 { -1.5/19 } ( { Excellent is } 16. Ng5 Bxg5 17. Bxg5 $16 { +1.16/24 } ) 16... Kg8 $4 { -0.09/18 } ( { Excellent is } 16... g6 17. Qh3 Kg7 $17 { -1.46/23 } ) 17. h4 Nf8 18. Ne3 $6 $15 { -0.47/17 } ( { Better is } 18. N3h2 Na5 19. Bxb7 $14 { +0.33/21 } ) 18... Ng6 $15 { -0.29/16 } ( { Also playable is } 18... b5 19. Qg4 h5 $15 { -0.41/21 } ) 19. Rad1 $15 { -0.49/17 } ( { Also playable is } 19. Nc4 Na5 20. Nd6 { +0.0/21 } ) 19... b5 { -0.09/19 } ( { Interesting is } 19... Rxd1 20. Rxd1 Kh7 { -0.01/21 } ) 20. Rxd8+ Bxd8 { +0.0/18 } ( { Also playable is } 20... Nxd8 21. Rd1 a5 { -0.18/21 } ) 21. Qg4 $6 $15 { -0.48/20 } ( { Better is } 21. Rd1 Bc8 22. Bf1 $14 { +0.36/22 } ) 21... h5 22. Qh3 c4 $6 $14 { +0.28/16 } ( { Better is } 22... Qb6 23. Nf1 Nb8 $15 { -0.26/19 } ) 23. Rd1 $6 { -0.22/17 } ( { Better is } 23. a4 Na5 24. axb5 $14 { +0.58/21 } ) 23... Be7 $1 { +0.01/18 } ( { Inferior is } 23... Qc8 24. Qh1 Na5 $14 { +0.39/22 } ) 24. Qh1 $15 { -0.54/18 } ( { Also playable is } 24. a4 Kh7 25. Kh2 { -0.18/20 } ) 24... Kh7 $6 $14 { +0.57/18 } ( { Better is } 24... Nxf4 25. gxf4 g6 { -0.2/21 } ) 25. Ng5+ Bxg5 26. hxg5 $2 $17 { -1.74/19 } ( { Excellent is } 26. Bxg5 Rb8 27. f4 $14 { +0.77/23 } ) 26... Rd8 $2 $14 { +0.94/19 } ( { Excellent is } 26... Kg8 27. Be4 h4 $17 { -1.09/24 } ) 27. Qxh5+ Kg8 28. Rxd8+ $6 { +0.0/20 } ( { Better is } 28. Be4 Rxd1+ 29. Qxd1 $14 { +0.95/27 } ) 28... Nxd8 29. Bxb7 $15 { -0.41/21 } ( { Also playable is } 29. Qh1 Bxg2 30. Qxg2 { +0.02/23 } ) 29... Nxb7 30. Qf3 Nc5 $6 { +0.0/21 } ( { Better is } 30... Qc8 31. Ng2 Nc5 $15 { -0.5/23 } ) 31. Qa8+ Kh7 32. Qh1+ { +0.0/28 } ( { Also playable is } 32. a3 Qd7 33. Qh1+ { +0.0/30 } ) 32... Kg8 33. Qa8+ Kh7 34. Ng4 { +0.0/21 } ( { Also playable is } 34. Nc2 Nd3 35. Qh1+ { +0.0/28 } ) 34... Qd7 { +0.0/22 } ( { Also playable is } 34... Nd3 35. Be3 Nxb2 { +0.0/25 } ) 35. Qh1+ Kg8 36. Qa8+ Kh7 37. Qh1+ Kg8 1/2-1/2 [/pgn]


Ohh I just saw "Rook attacks along the open file" this can be detected too. See black's 11th move.

[pgn] [Event "chess.com Blitz Final 5m+2spm 2016"] [Site "chess.com INT"] [Date "2016.10.27"] [Round "4"] [White "Carlsen,M"] [Black "Nakamura,Hi"] [Result "1/2-1/2"] [BlackElo "2787"] [BlackFideId "2016192"] [BlackTitle "GM"] [ECO "A07"] [EventDate "2016.10.27"] [Opening "Reti opening"] [WhiteElo "2853"] [WhiteFideId "1503014"] [WhiteTitle "GM"] 1.Nf3 Nf6 2.g3 d5 3.Bg2 e6 4.O-O Be7 5.d3 b6 6.Nbd2 $6 $15 { -0.46/17 } ( { Better is } 6.e4 dxe4 7.Ne5 { +0.22/20 } ) 6...Bb7 $6 { +0.11/17 } ( { Better is } 6...c5 7.Ne5 Nfd7 $15 { -0.53/21 } ) 7.e4 c5 $6 $14 { +0.25/16 } ( { Better is } 7...O-O 8.e5 Nfd7 $15 { -0.68/21 } ) 8.Re1 $6 $15 { -0.45/19 } ( { Better is } 8.Ne5 O-O 9.f4 $14 { +0.32/20 } ) 8...Nc6 $1 { -0.04/17 } ( { Interesting is } 8...O-O 9.exd5 Nxd5 { +0.06/21 } ) 9.c3 Qc7 $14 { +0.27/18 } ( { Also playable is } 9...O-O 10.exd5 Nxd5 { -0.11/22 } ) 10.Nf1 $2 $15 { -0.79/17 } ( { Excellent is } 10.exd5 Nxd5 11.a4 $14 { +0.44/23 } ) 10...dxe4 $1 { -0.16/18 } ( { Interesting is } 10...d4 11.cxd4 cxd4 { +0.0/21 } ) 11.dxe4 Rd8 $6 { -0.04/17 } ( { Better is } 11...h6 12.e5 Nd7 $15 { -0.72/20 } ) 1/2-1/2 [/pgn]
User avatar
Kirk
Posts: 5699
Joined: Sat Mar 11, 2006 3:44 am

Re: Yet another game analysis method

Post by Kirk »

Ferdy wrote: Sat Apr 06, 2019 3:43 am
Kirk wrote: Fri Apr 05, 2019 6:22 pm
Ferdy wrote: Fri Apr 05, 2019 5:20 pm
Kirk wrote: Fri Apr 05, 2019 5:04 pm Hi Ferdy!

How difficult would it be to add some tactical tips to Chess Artist?

Examples would be:

“This move would pin the Knight”
That one is possible, python-chess has a method to detect pins.
“Creating an isolated pawn”
Possible but needs to walk the pv and see if a capture would create an isolated pawn. Something like,
4. cxd5 exd5 and the d5 pawn of black would become isolated assuming there is no longer black's c pawn. The white's move 4. cxd5 can have a comment "Creating ...". So move the cxd5 on the board nad exd5 too, then check if there is an isolated pawn at d5. So the first trigger is a capture to the pawn.
“Opening a file”
Possible, but I need to see sample situation.
“Protecting the King”
“Zugzwang”
Can you give some examples to each situation?
*I will give it a try. I think Zugzwang move could be calculated when every move would calculate as a loss or greater than one pawn.
I think I get this and as Dan also mentioned regarding null move. For the side to move to be in zugzwang, we just compare 2 scores, first score is its own search and second score is the score when it pass the side to move to its opponent. From the point of view of the side to move if first score is lower than the second score then the side to move is in zugzwang.
*Protecting the King would need to store the previous position where the King is threatened (Mate would result unless this move(s) were made). Any move where Mate is not computed by the engine would work compared to the previously stored position.
This is nice something related to mate score. To detect the move that protects our king, we just pass and if opponent score is a mate score that means the opponent is threatening our king. Now we go back and search normally, if the score is not mate that means this move protects our king.
*Opening a file would only be useful for the Rook and Queen where a move would make all possible squares it could occupy open (a-h). It could work diagonally for the bishop too I suppose.
I can't understand this so far. I am thinking on the QGD, slav, exchange, d4 d5 c4 c6 cxd5 cxd5. Now the c file is opened. A comment "opening the file" for cxd5 move of black is possible, but this is too obvious for the advance player, but could be a good comment for a beginner to let him knew what is an open file even if there is no rook or queen occupying it.
*"A Combination..." text could result too is moves of similar evaluation had one where exchanging would still lead to an evaluation of equal exchange (in capture piece value but not necessarily evaluation equality as positionally it may be better)
I can't understand this.
Maybe you are right. Do not concern yourself with the last two. I was thinking it would be interesting is a variation was a good alternative and involved a series of exchanges, it might be interesting to note if that move was not chosen.
“He knew all the tricks, dramatic irony, metaphor, pathos, puns, parody, litotes and... satire. He was vicious”
giovanni
Posts: 142
Joined: Wed Jul 08, 2015 12:30 pm

Re: Yet another game analysis method

Post by giovanni »

Hi Ferdinand. Sorry to hijack your thread, but I was playing with the last version of your excellent tool on my linux box. When I analyze a game with the static evaluation using an old stock fish version everything goes fine:


giovanni@giovanni-X555YI:~/Downloads/chess-artist-master$ python chess-artist.py -infile carl1.pgn -outfile out_myg_1.pgn -eng /usr/local/games/stockfish-scidb -eval static -job none
Chess Artist 0.2.0

Analyzing engine: Stockfish 6 64 (Scidb)
Annotating game 1...
Done!!

But when I use the latest stockfish version, it chokes on the input file, until I have to intterrupt it:

giovanni@giovanni-X555YI:~/Downloads/chess-artist-master$ python chess-artist.py -infile carl1.pgn -outfile out_myg_1.pgn -eng /home/giovanni/Downloads/stockfish_19033111_x64_modern -eval static -job none
Chess Artist 0.2.0

Analyzing engine: Stockfish 310319 64 POPCNT
Annotating game 1...
^CTraceback (most recent call last):
File "chess-artist.py", line 1823, in <module>
main(sys.argv[1:])
File "chess-artist.py", line 1816, in main
g.AnnotatePgn()
File "chess-artist.py", line 1465, in AnnotatePgn
staticScore = self.GetStaticEvalAfterMove(fenAfterMove)
File "chess-artist.py", line 824, in GetStaticEvalAfterMove
for eline in iter(p.stdout.readline, ''):
KeyboardInterrupt

Could you please doublecheck?
Thanks in advance.
Giovanni