Page 1 of 1

Positional and Tactical

Posted: Thu Apr 11, 2019 7:44 pm
by Ferdy
What methods are needed to make an engine plays strong positionally but weak tactically? One can limit the depth and nodes based from material on the board for example, but probably needs more enhancements.

Due to deep opening preparation and understanding humans are very strong in the early part of the game, they are also good at ending because there are a lot of studies and rule/pattern to remember, how to draw a KRPvKR ending etc. They are also good on closed positions because there are less variations to calculate.

Re: Positional and Tactical

Posted: Thu Apr 11, 2019 7:56 pm
by Dann Corbit
Ferdy wrote: Thu Apr 11, 2019 7:44 pm What methods are needed to make an engine plays strong positionally but weak tactically? One can limit the depth and nodes based from material on the board for example, but probably needs more enhancements.

Due to deep opening preparation and understanding humans are very strong in the early part of the game, they are also good at ending because there are a lot of studies and rule/pattern to remember, how to draw a KRPvKR ending etc. They are also good on closed positions because there are less variations to calculate.
Eliminate the wood values.

Re: Positional and Tactical

Posted: Thu Apr 11, 2019 8:03 pm
by Ferdy
Dann Corbit wrote: Thu Apr 11, 2019 7:56 pm
Ferdy wrote: Thu Apr 11, 2019 7:44 pm What methods are needed to make an engine plays strong positionally but weak tactically? One can limit the depth and nodes based from material on the board for example, but probably needs more enhancements.

Due to deep opening preparation and understanding humans are very strong in the early part of the game, they are also good at ending because there are a lot of studies and rule/pattern to remember, how to draw a KRPvKR ending etc. They are also good on closed positions because there are less variations to calculate.
Eliminate the wood values.
We can try that.

I also thought
1. Turn off or reduce the transposition table usage as the search gets deeper
2. Reduce influence of move ordering as the search gets deeper

So for the first 6 plies or 3 moves, try to be perfect, humans can do this.

Re: Positional and Tactical

Posted: Thu Apr 11, 2019 8:21 pm
by Dann Corbit
I always thought that if the search got deep enough, the wood values would become pointless.
The power of what they can do (sort of like kinetic energy) would become apparent so that the power of what they might do (sort of potential energy == wood count) becomes less and less important.

Re: Positional and Tactical

Posted: Fri Apr 12, 2019 10:31 pm
by hgm
Well, that only would be true if checkmate is within the horizon. Because otherwise 'what they can do' is mostly just gobble up other material, but if you have no idea that that material is valuable, and how valuable it is, it still knows absolutely nothing.

One way that is not mentioned yet is increase the reduction of non-PV moves when you get above a certain remaining depth. Positional errors tend to go from bad to worse in time, so a deep PV will eventually show the tactical punishment of earlier positional mistakes. But by making sure deviations from the PV are searched only to limited depth, you can limit the engine's tactical abilities.

Re: Positional and Tactical

Posted: Fri Apr 12, 2019 11:23 pm
by konsolas
How about adding lots and lots of unsound pruning?

For example, futility pruning with a margin of 32cp * depth, or maybe late move pruning at a low movecount at all depths, null move pruning with a very high reduction (say depth over 2), and also disable all search extensions.

This also has the advantage of making the engine search quite deep, which can be good for positional play. Meanwhile, all the unsound pruning significantly reduces tactical strength.

Re: Positional and Tactical

Posted: Sat Apr 13, 2019 7:27 am
by Ferdy
Maintain a stronger move when the position is not tactical.

[d]rnbqk2r/pppp1ppp/4pn2/8/1bPP4/2N5/PPQ1PPPP/R1B1KBNR b KQkq - 3 4
Last move Qc2 is positional.
a3 can be tactical, something that there is threat of a capture.

Applying aggressive pruning in a non-controlled manner may backfire on its positional play.


Black launches an aggressive beautiful attack starting at move 11. ... c5, but somehow get lost in the complications.

[pgn][Event "?"] [Site "?"] [Date "2019.04.11"] [Round "2"] [White "Ramjet 0.13 2220"] [Black "Lc0 v0.21.1 w11258-120x9-se blas"] [Result "1-0"] [ECO "E12"] [GameDuration "00:03:15"] [GameEndTime "2019-04-11T23:37:43.803 China Standard Time"] [GameStartTime "2019-04-11T23:34:28.619 China Standard Time"] [Opening "Queen's Indian"] [Termination "adjudication"] [TimeControl "40/180"] [Variation "4.Nc3"] 1.d4 { book } 1...Nf6 { book } 2.c4 { book } 2...e6 { book } 3.Nf3 { book } 3...b6 { book } 4.Nc3 { book } 4...Bb7 { book } 5.Bg5 { book } 5...Be7 { book } 6.Qc2 { book } 6...d5 { book } 7.Bxf6 { book } 7...Bxf6 { book } 8.cxd5 { book } 8...exd5 { book } 9.e3 { 0.00/10 7.6s } 9...O-O { -0.20/3 5.6s } 10.Bd3 { +0.11/9 3.2s } 10...g6 { -0.02/3 5.4s } 11.Qb3 { +0.13/9 7.7s } 11...c5 { +0.66/3 4.9s } 12.dxc5 { +0.29/10 4.6s } 12...Nd7 { +0.92/3 6.2s } 13.cxb6 { +0.29/10 5.3s } 13...Nc5 { +1.31/4 5.0s } 14.Qc2 { +0.22/9 3.0s } 14...d4 { +0.73/3 6.5s } 15.Nxd4 { +0.67/9 2.6s } 15...Bxd4 { +1.89/4 4.5s } 16.exd4 { +0.59/10 2.9s } 16...Qxd4 { +0.51/4 5.7s } 17.O-O-O { +0.33/9 3.1s } 17...axb6 { -0.29/3 6.8s } 18.Be4 { +0.87/10 2.7s } 18...Qf6 { -0.75/3 5.6s } 19.Bxb7 { +1.24/10 2.6s } 19...Nxb7 { -1.10/4 4.3s } 20.Nd5 { +1.48/9 2.3s } 20...Qe6 { -1.51/3 6.9s } 21.Rhe1 { +3.29/11 4.9s } 21...Qd6 { -1.69/4 4.5s } 22.Ne7+ { +6.25/11 2.6s } 22...Qxe7 { -3.46/4 6.3s } 23.Rxe7 { +7.51/12 3.2s } 23...Rfc8 { -6.61/4 3.9s } 24.Rc7 { +7.71/13 3.5s } 24...Rxc7 { -4.90/4 7.8s } 25.Qxc7 { +8.68/14 3.2s } 25...Rc8 { -10.61/5 5.6s } 26.Qxc8+ { +M13/13 1.8s } 26...Kg7 { -22.36/4 5.4s } 27.Qxb7 { +M11/11 0.96s } 27...Kf6 { -23.48/3 5.8s } 28.Rd7 { +M9/9 0.42s } 28...Kg5 { -24.11/2 5.6s } 29.Rxf7 { +M7/7 0.071s } 29...Kh4 { -26.24/3 5.6s } 30.Rxh7+ { +M5/5 0.054s } 30...Kg5 { -26.59/4 5.6s, White wins by adjudication } 1-0 [/pgn]

Limiting iteration depth is one the best way to weaken the engine tactically.


Querying the table in https://fsmosca.github.io/chess-tests/ for positionally strong and tactically weaker engines. Got this.
https://docs.google.com/spreadsheets/d/ ... sp=sharing

Texel and Senpai seemed to fit for positionally stronger but tactically weaker engines. But of course this is only arasan test suite which is generally a difficult test suite.

Would like to add some more tactics there.