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.
Positional and Tactical
Moderators: hgm, Rebel, chrisw
-
- Posts: 4833
- Joined: Sun Aug 10, 2008 3:15 pm
- Location: Philippines
-
- Posts: 12541
- Joined: Wed Mar 08, 2006 8:57 pm
- Location: Redmond, WA USA
Re: Positional and Tactical
Eliminate the wood values.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.
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.
But sharing ideas is an even greater virtue. We have another word for this. It is called teaching.
-
- Posts: 4833
- Joined: Sun Aug 10, 2008 3:15 pm
- Location: Philippines
Re: Positional and Tactical
We can try that.Dann Corbit wrote: ↑Thu Apr 11, 2019 7:56 pmEliminate the wood values.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.
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.
-
- Posts: 12541
- Joined: Wed Mar 08, 2006 8:57 pm
- Location: Redmond, WA USA
Re: Positional and Tactical
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.
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.
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.
But sharing ideas is an even greater virtue. We have another word for this. It is called teaching.
-
- Posts: 27808
- Joined: Fri Mar 10, 2006 10:06 am
- Location: Amsterdam
- Full name: H G Muller
Re: Positional and Tactical
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.
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.
-
- Posts: 182
- Joined: Sun Jun 12, 2016 5:44 pm
- Location: London
- Full name: Vincent
Re: Positional and Tactical
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.
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.
-
- Posts: 4833
- Joined: Sun Aug 10, 2008 3:15 pm
- Location: Philippines
Re: Positional and Tactical
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.
[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.