OliThink 5.3.1 released (Win, Mac, Linux and Java)

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

Moderator: Ras

Mesrine

Re: OliThink 5.3.1 released (Win, Mac, Linux and Java)

Post by Mesrine »

Thank you for the OliThink Engine.
stevenaaus
Posts: 613
Joined: Wed Oct 13, 2010 9:44 am
Location: Australia

Re: OliThink 5.3.1 released (Win, Mac, Linux and Java)

Post by stevenaaus »

For engines that don't support Analyze, Scid sends these commands

Code: Select all

      # Set search time and depth to something very large and start search:
      sendToEngine $n {st 120000}
      sendToEngine $n {sd 50}
      sendToEngine $n post
      sendToEngine $n go
Perhaps there a better way to do this ?
After a while Olithink makes a move and stops sending analysis lines

Code: Select all

Scid  : new
Scid  : force
Scid  : setboard rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
Scid  : white
Scid  : st 120000
Scid  : sd 50
Scid  : post
Scid  : go
Engine: UNKNOWN COMMAND: white
Engine:  1    44      0        25  e2e3 
Engine:  2     0      0       101  e2e3 e7e6 
Engine:  3    41      0       471  e2e3 d7d5 d1h5 
Engine:  4     0      0      3074  d2d4 d7d5 c1f4 c8f5 
Engine:  5    27      1      6895  d2d4 e7e6 e2e4 d8h4 d1f3 
Engine:  6     3     12     50092  d2d4 d7d5 e2e3 c8d7 f1d3 g7g6 
Engine:  7    18     22     91360  d2d4 g8f6 b1c3 d7d5 g1f3 f6e4 f3e5 
Engine:  8     7    135    559133  e2e4 d7d5 e4e5 e7e6 d2d4 c8d7 g1f3 f8e7 
Engine:  9    19    223    962961  e2e4 e7e6 d2d4 d8h4 f1d3 g8f6 g2g3 h4g4 e4e5 
Engine: 10     8    948   4090120  d2d4 g8f6 e2e3 d7d5 f1d3 c8d7 g1f3 g7g6 f3g5 d7g4 
Engine: move d2d4
Engine: kibitz W: 8 Nodes: 3014875 QNodes: 1075245 Evals: 2128603 cs: 948 knps: 430
User avatar
Jim Ablett
Posts: 2331
Joined: Fri Jul 14, 2006 7:56 am
Location: London, England
Full name: Jim Ablett

Re: OliThink 5.3.1 released (Win, Mac, Linux and Java)

Post by Jim Ablett »

stevenaaus wrote:For engines that don't support Analyze, Scid sends these commands

Code: Select all

      # Set search time and depth to something very large and start search:
      sendToEngine $n {st 120000}
      sendToEngine $n {sd 50}
      sendToEngine $n post
      sendToEngine $n go
Perhaps there a better way to do this ?
After a while Olithink makes a move and stops sending analysis lines

Code: Select all

Scid  : new
Scid  : force
Scid  : setboard rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
Scid  : white
Scid  : st 120000
Scid  : sd 50
Scid  : post
Scid  : go
Engine: UNKNOWN COMMAND: white
Engine:  1    44      0        25  e2e3 
Engine:  2     0      0       101  e2e3 e7e6 
Engine:  3    41      0       471  e2e3 d7d5 d1h5 
Engine:  4     0      0      3074  d2d4 d7d5 c1f4 c8f5 
Engine:  5    27      1      6895  d2d4 e7e6 e2e4 d8h4 d1f3 
Engine:  6     3     12     50092  d2d4 d7d5 e2e3 c8d7 f1d3 g7g6 
Engine:  7    18     22     91360  d2d4 g8f6 b1c3 d7d5 g1f3 f6e4 f3e5 
Engine:  8     7    135    559133  e2e4 d7d5 e4e5 e7e6 d2d4 c8d7 g1f3 f8e7 
Engine:  9    19    223    962961  e2e4 e7e6 d2d4 d8h4 f1d3 g8f6 g2g3 h4g4 e4e5 
Engine: 10     8    948   4090120  d2d4 g8f6 e2e3 d7d5 f1d3 c8d7 g1f3 g7g6 f3g5 d7g4 
Engine: move d2d4
Engine: kibitz W: 8 Nodes: 3014875 QNodes: 1075245 Evals: 2128603 cs: 948 knps: 430
wb command 'st' not implemented in Olithink (would only take about a minute to implement). If you send 'time 120000' it will work correctly.

Jim.
stevenaaus
Posts: 613
Joined: Wed Oct 13, 2010 9:44 am
Location: Australia

Re: OliThink 5.3.1 released (Win, Mac, Linux and Java)

Post by stevenaaus »

Jim Ablett wrote: wb command 'st' not implemented in Olithink (would only take about a minute to implement). If you send 'time 120000' it will work correctly.
The problem with xboard is it revisions and various implementations by different engines.

As an example, the xboard page i have states
time (boolean, default 1, recommended 1)
If time=1, xboard will send the "time" and "otim" commands to update the engine's clocks; if time=0, it will not.
but Oli makes no mention of "time" in it's feature list.
Oli also seems to read in the (minutes component of) "base time" for the "level" command, but it makes no use of it, or "otim" at all.

I realise people may say - "But it works in Xboard/Arena", so why bother making it protocol compliant. And fair enough.
These GUIs are full of hacks and work arounds for every engine i suppose. But this is not the way it should be. Engines should implement the protocol, instead of GUIs being full of hacks.

So - for the record - I *am* interested in making Scid vs. PC work properly with xboard engines. It is my goal to make this a solid, clean and maintainable project. Please tell when i do things wrong. But i'm not interested in including hacks for engines which don't implement the protocol properly/well.
User avatar
Jim Ablett
Posts: 2331
Joined: Fri Jul 14, 2006 7:56 am
Location: London, England
Full name: Jim Ablett

Re: OliThink 5.3.1 released (Win, Mac, Linux and Java)

Post by Jim Ablett »

I've fixed the analysis issues.
Updated binaries on my website.

Jim.
User avatar
Marek Soszynski
Posts: 587
Joined: Wed May 10, 2006 7:28 pm
Location: Birmingham, England

Re: OliThink 5.3.1 released (Win, Mac, Linux and Java)

Post by Marek Soszynski »

Jim Ablett wrote:I've fixed the analysis issues.
Updated binaries on my website.

Jim.
Thanks for your efforts, Jim.

Unfortunately, in infinite analysis I've not seen the engine get past depth 15, and it doesn't seem to quit properly either.
I suppose it's the author who ought to address these issues.
Marek Soszynski
OliverBr
Posts: 865
Joined: Tue Dec 18, 2007 9:38 pm
Location: Munich, Germany
Full name: Dr. Oliver Brausch

Re: OliThink 5.3.1 released (Win, Mac, Linux and Java)

Post by OliverBr »

Marek Soszynski wrote:
Jim Ablett wrote:I've fixed the analysis issues.
Updated binaries on my website.

Jim.
Thanks for your efforts, Jim.

Unfortunately, in infinite analysis I've not seen the engine get past depth 15, and it doesn't seem to quit properly either.
I suppose it's the author who ought to address these issues.
I am currently working on 5.3.2 where this will be fixed. Be patient a little bit. A question for Jim: What compiler did you use to make the linux binaries? They are faster than mine :)
User avatar
Jim Ablett
Posts: 2331
Joined: Fri Jul 14, 2006 7:56 am
Location: London, England
Full name: Jim Ablett

Re: OliThink 5.3.1 released (Win, Mac, Linux and Java)

Post by Jim Ablett »

What compiler did you use to make the linux binaries? They are faster than mine Smile
Latest GCC

Code: Select all

1. -Ofast -flto -fprofile-generate 
2. -Ofast -flto -fprofile-use
Jim.
OliverBr
Posts: 865
Joined: Tue Dec 18, 2007 9:38 pm
Location: Munich, Germany
Full name: Dr. Oliver Brausch

Re: OliThink 5.3.1 released (Win, Mac, Linux and Java)

Post by OliverBr »

There we go, OliThinK move generator is not working correctly :(

Code: Select all

./olithink531b -sd 4 "8/2p5/3p4/KP5r/1R3p1k/8/4P1P1/8 w - -"
perft
Depth:1 Nodes:14
Depth:2 Nodes:193
Depth:3 Nodes:2850
Depth:4 Nodes:43721
OliverBr
Posts: 865
Joined: Tue Dec 18, 2007 9:38 pm
Location: Munich, Germany
Full name: Dr. Oliver Brausch

Re: OliThink 5.3.1 released (Win, Mac, Linux and Java)

Post by OliverBr »

OliverBr wrote:There we go, OliThinK move generator is not working correctly :(

Code: Select all

./olithink531b -sd 4 "8/2p5/3p4/KP5r/1R3p1k/8/4P1P1/8 w - -"
perft
Depth:1 Nodes:14
Depth:2 Nodes:193
Depth:3 Nodes:2850
Depth:4 Nodes:43721
Of course, the en-passant-super-pin. I implemented it and never tested, it was buggy since version 5.0.0!

For anyone, who wants to patch OliThink <= 5.3.1: In generateCaps() it must be:

Code: Select all

                           xorBit(clbd, colorb+(c^1));
                           hh = ROCC1(f);
                           if (!(hh & BIT[kingpos[c]]) || !(hh & colorb[c^1] & RQU)) {
                                   a = a | BIT[ENPASS];
                           }
                           xorBit(clbd, colorb+(c^1));
instead of

Code: Select all

                           xorBit(clbd, colorb+c);
                           hh = ROCC1(f);
                           if (!(hh & BIT[kingpos[c]]) || !(hh & colorb[c^1] & RQU)) {
                                a = a | BIT[ENPASS];
                           }
                           xorBit(clbd, colorb+c);