Tactical endgame position- some engines get it, some not.

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

Terje
Posts: 347
Joined: Tue Nov 19, 2019 4:34 am
Location: https://github.com/TerjeKir/weiss
Full name: Terje Kirstihagen

Re: Tactical endgame position- some engines get it, some not.

Post by Terje »

OliverBr wrote: Sat Sep 26, 2020 12:37 pm
Terje wrote: Wed Sep 23, 2020 2:50 pm Weiss extends all checks (actually any time when in check), but that's only half the moves in the line so it takes a while before it plays it out far enough :)
You *really* made some progress with Weiss. Weiss 1.1 is 400 ELO stronger than OliThink, while Weiss 0.5 is 400 ELO weaker. Now testing 0.8, still weaker than OliThink.
Tuning evaluation, first with my own python script then one based on Andrew's paper, has given something in the ballpark of 250 elo alone :D

It seems you too are making great strides recently after improving your testing methodology :)
OliverBr
Posts: 725
Joined: Tue Dec 18, 2007 9:38 pm
Location: Munich, Germany
Full name: Dr. Oliver Brausch

Re: Tactical endgame position- some engines get it, some not.

Post by OliverBr »

Terje wrote: Sat Sep 26, 2020 4:04 pm Tuning evaluation, first with my own python script then one based on Andrew's paper, has given something in the ballpark of 250 elo alone :D
I am having a look into your code and I am really impressed. It's by far the second smallest (4.5k lines of code) chess engine >ELO2500 I have found. (after OliThink 1.6k lines of code)

I find your code very good readable, really well structured. Furthermore, I never really liked C++ and always preferred C.
It seems you too are making great strides recently after improving your testing methodology :)
The biggest asset is the 32core server which allows me to play 1000s of games within hours. But it's not always easy, there are changes which do not improve OliThink against its former version, but against some other engines.
I know that most engines are only testing against themselves, I prefer testing against other engines. At the moment the sparring partners are Glaurung 2.2, Murka 3 and Weiss (0.10, now 1.0):

Code: Select all

   # PLAYER            :  RATING  ERROR  POINTS  PLAYED   (%)    W    D     L  D(%)  CFS(%)
   1 Murka 3 x64       :     200     18  1061.5    1400  75.8  928  267   205  19.1     100
   2 Weiss 0.10        :     163     18  1004.5    1400  71.8  865  279   256  19.9     100
   3 Glaurung 2.2      :     113     17   919.0    1400  65.6  796  246   358  17.6     100
   4 OliThink 5.8.1    :       0   ----  1215.0    4200  28.9  819  792  2589  18.9     ---
Weiss 0.10 has a little bug and crashes/hangs so every 2-3000 games, so now I will test from now against Weiss 1.0, which is about 40 ELO stronger:

Code: Select all

   # PLAYER            :  RATING  ERROR  POINTS  PLAYED   (%)    W    D     L  D(%)  CFS(%)
   1 Weiss 1.0         :     205     27   534.0     700  76.3  478  112   110  16.0      51
   2 Murka 3 x64       :     204     28   533.5     700  76.2  485   97   118  13.9     100
   3 Glaurung 2.2      :      97     24   444.5     700  63.5  388  113   199  16.1     100
   4 OliThink 5.8.1    :       0   ----   588.0    2100  28.0  427  322  1351  15.3     ---
Chess Engine OliThink: http://brausch.org/home/chess
OliThink GitHub:https://github.com/olithink
Terje
Posts: 347
Joined: Tue Nov 19, 2019 4:34 am
Location: https://github.com/TerjeKir/weiss
Full name: Terje Kirstihagen

Re: Tactical endgame position- some engines get it, some not.

Post by Terje »

OliverBr wrote: Sat Sep 26, 2020 5:46 pm
Terje wrote: Sat Sep 26, 2020 4:04 pm Tuning evaluation, first with my own python script then one based on Andrew's paper, has given something in the ballpark of 250 elo alone :D
I am having a look into your code and I am really impressed. It's by far the second smallest (4.5k lines of code) chess engine >ELO2500 I have found. (after OliThink 1.6k lines of code)

I find your code very good readable, really well structured. Furthermore, I never really liked C++ and always preferred C.
It seems you too are making great strides recently after improving your testing methodology :)
The biggest asset is the 32core server which allows me to play 1000s of games within hours. But it's not always easy, there are changes which do not improve OliThink against its former version, but against some other engines.
I know that most engines are only testing against themselves, I prefer testing against other engines. At the moment the sparring partners are Glaurung 2.2, Murka 3 and Weiss (0.10, now 1.0):

Code: Select all

   # PLAYER            :  RATING  ERROR  POINTS  PLAYED   (%)    W    D     L  D(%)  CFS(%)
   1 Murka 3 x64       :     200     18  1061.5    1400  75.8  928  267   205  19.1     100
   2 Weiss 0.10        :     163     18  1004.5    1400  71.8  865  279   256  19.9     100
   3 Glaurung 2.2      :     113     17   919.0    1400  65.6  796  246   358  17.6     100
   4 OliThink 5.8.1    :       0   ----  1215.0    4200  28.9  819  792  2589  18.9     ---
Weiss 0.10 has a little bug and crashes/hangs so every 2-3000 games, so now I will test from now against Weiss 1.0, which is about 40 ELO stronger:

Code: Select all

   # PLAYER            :  RATING  ERROR  POINTS  PLAYED   (%)    W    D     L  D(%)  CFS(%)
   1 Weiss 1.0         :     205     27   534.0     700  76.3  478  112   110  16.0      51
   2 Murka 3 x64       :     204     28   533.5     700  76.2  485   97   118  13.9     100
   3 Glaurung 2.2      :      97     24   444.5     700  63.5  388  113   199  16.1     100
   4 OliThink 5.8.1    :       0   ----   588.0    2100  28.0  427  322  1351  15.3     ---
Yeah, until 1.0 I had a bug that caused rare crashes due to a mistake when checking if the TT move was pseudo-legal. 1.0 and on should be crash free iirc.

Weiss itself is probably closer to 2500 lines if you exclude the syzygy library and tuner code :P
OliverBr
Posts: 725
Joined: Tue Dec 18, 2007 9:38 pm
Location: Munich, Germany
Full name: Dr. Oliver Brausch

Re: Tactical endgame position- some engines get it, some not.

Post by OliverBr »

Terje wrote: Sat Sep 26, 2020 6:27 pm Yeah, until 1.0 I had a bug that caused rare crashes due to a mistake when checking if the TT move was pseudo-legal. 1.0 and on should be crash free iirc.
There was a bug that caused even rarer crashes for 10 years in olithink, until another programmer found it 2018. (vgl. http://talkchess.com/forum3/viewtopic.php?f=7&t=74821)
Since 5.3.3 it's gone.

About pseudo-legel moves: Is there common sense about it's better to generate pseuso-legal or just legal moves (like OliThink)?
Weiss itself is probably closer to 2500 lines if you exclude the syzygy library and tuner code :P
I like this.
Chess Engine OliThink: http://brausch.org/home/chess
OliThink GitHub:https://github.com/olithink
Terje
Posts: 347
Joined: Tue Nov 19, 2019 4:34 am
Location: https://github.com/TerjeKir/weiss
Full name: Terje Kirstihagen

Re: Tactical endgame position- some engines get it, some not.

Post by Terje »

OliverBr wrote: Sat Sep 26, 2020 9:17 pm
Terje wrote: Sat Sep 26, 2020 6:27 pm Yeah, until 1.0 I had a bug that caused rare crashes due to a mistake when checking if the TT move was pseudo-legal. 1.0 and on should be crash free iirc.
There was a bug that caused even rarer crashes for 10 years in olithink, until another programmer found it 2018. (vgl. http://talkchess.com/forum3/viewtopic.php?f=7&t=74821)
Since 5.3.3 it's gone.

About pseudo-legel moves: Is there common sense about it's better to generate pseuso-legal or just legal moves (like OliThink)?
Weiss itself is probably closer to 2500 lines if you exclude the syzygy library and tuner code :P
I like this.
Pseudo-legal seems to make sense by not wasting time testing perfect legality of more moves than necessary (many, many positions only need 1 or a few moves to be cut). Don't really know if it's worth much if anything tho.