Thinker output

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

Moderators: hgm, Rebel, chrisw

User avatar
Matthias Gemuh
Posts: 3245
Joined: Thu Mar 09, 2006 9:10 am

Thinker output

Post by Matthias Gemuh »

Hi Lance,

I respect your decision to not output any infos while Thinker is thinking during game play.
This makes it difficult however to watch Thinker play at long time controls.
Can you in addition to your no-output versions give us a version that outputs ?
Feel free to truncate its thinking line to one or 2 moves.
If the output weakens the engine by a few elos, no problem.

BTW, are there any users out there that would appreciate such a special Thinker version ?

Best,
Matthias.
My engine was quite strong till I added knowledge to it.
http://www.chess.hylogic.de
eberle

Re: Thinker output

Post by eberle »

Matthias Gemuh wrote: BTW, are there any users out there that would appreciate such a special Thinker version ?
Most users would be very glad with a Thinker version with more output. Thinker is nearly as strong as the free Rybka.
Good suggestion, Matthias
Dieter
User avatar
hgm
Posts: 27796
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Thinker output

Post by hgm »

Matthias Gemuh wrote:I respect your decision to not output any infos while Thinker is thinking during game play.
I don't see any reason to respect that decision at all. It is a silly decision, ad IMO a violation of WB potocol! I don't see how it would cost you any Elos to print depth and score, but even if it did, when the user says 'post' the engine should post. Just like when the user says 'easy', the engine should not ponder, even when not pondering makes it weaker...
User avatar
GenoM
Posts: 910
Joined: Wed Mar 08, 2006 9:46 pm
Location: Plovdiv, Bulgaria

Re: Thinker output

Post by GenoM »

hgm wrote:
Matthias Gemuh wrote:I respect your decision to not output any infos while Thinker is thinking during game play.
I don't see any reason to respect that decision at all. It is a silly decision, ad IMO a violation of WB potocol! I don't see how it would cost you any Elos to print depth and score, but even if it did, when the user says 'post' the engine should post. Just like when the user says 'easy', the engine should not ponder, even when not pondering makes it weaker...
totally agree
take it easy :)
CThinker
Posts: 388
Joined: Wed Mar 08, 2006 10:08 pm

Re: Thinker output

Post by CThinker »

hgm wrote:
Matthias Gemuh wrote:I respect your decision to not output any infos while Thinker is thinking during game play.
I don't see any reason to respect that decision at all. It is a silly decision, ad IMO a violation of WB potocol! I don't see how it would cost you any Elos to print depth and score, but even if it did, when the user says 'post' the engine should post. Just like when the user says 'easy', the engine should not ponder, even when not pondering makes it weaker...
This is not about saving Elo points.

It is "by design".

The search classes has no I/O capability at all. It is cleanly decoupled from any I/O. When to told to seach, it just searches. When it is done, it just returns. It is up to the shell to display any result. The shell also does not know how the search class does its thing. It just know that it will return eventually with a best move and a score.

The only search-time link between the two is that the shell passes the address of a "terminate" flag that the search must check once in a while in case the search needs to be interrupted.

The shell does not even have a concept of iteration depth. Only the search knows that (just because that is how it is implemented). If I decide to invent a new search that does not have iterative deepening, the shell would still work.

As for the Xboard, protocol, it is broken in this way, because it assumes a particular implementation. The same goes for any protocol item that knows about "hash", PV, and any other implementatio-specific materials in engines.

All other engines out there are monolithic. Thinker does not have to be.
User avatar
Matthias Gemuh
Posts: 3245
Joined: Thu Mar 09, 2006 9:10 am

Re: Thinker output

Post by Matthias Gemuh »

hgm wrote:
Matthias Gemuh wrote:I respect your decision to not output any infos while Thinker is thinking during game play.
I don't see any reason to respect that decision at all. It is a silly decision, ad IMO a violation of WB potocol! I don't see how it would cost you any Elos to print depth and score, but even if it did, when the user says 'post' the engine should post. Just like when the user says 'easy', the engine should not ponder, even when not pondering makes it weaker...

I would of course be insane to truely respect a decision that so heavily breaks the protocol.
I just thought that sweet words may lead to a fixing of the bug.
I even have an option in ChessGUI to exclude such engines from tournaments.

Matthias.
My engine was quite strong till I added knowledge to it.
http://www.chess.hylogic.de
CThinker
Posts: 388
Joined: Wed Mar 08, 2006 10:08 pm

Re: Thinker output

Post by CThinker »

Matthias Gemuh wrote:
hgm wrote:
Matthias Gemuh wrote:I respect your decision to not output any infos while Thinker is thinking during game play.
I don't see any reason to respect that decision at all. It is a silly decision, ad IMO a violation of WB potocol! I don't see how it would cost you any Elos to print depth and score, but even if it did, when the user says 'post' the engine should post. Just like when the user says 'easy', the engine should not ponder, even when not pondering makes it weaker...

I would of course be insane to truely respect a decision that so heavily breaks the protocol.
I just thought that sweet words may lead to a fixing of the bug.
I even have an option in ChessGUI to exclude such engines from tournaments.

Matthias.
I don't think there is 'breaking the protocol' here. Even the example that Harm gave - the "easy" command is implementation-specific. There are engines out there that don't know how to ponder. So, you send them and "hard"/"easy" command, and they just ignore them. In fact, you send them a hard + post command, expecting a PV display, but you won't get any when it is not their turn.

And, I don't work on the Thinker code anymore.

Cheers...
CThinker
Posts: 388
Joined: Wed Mar 08, 2006 10:08 pm

Re: Thinker output

Post by CThinker »

hgm wrote:
Matthias Gemuh wrote:I respect your decision to not output any infos while Thinker is thinking during game play.
I don't see any reason to respect that decision at all. It is a silly decision, ad IMO a violation of WB potocol! I don't see how it would cost you any Elos to print depth and score, but even if it did, when the user says 'post' the engine should post. Just like when the user says 'easy', the engine should not ponder, even when not pondering makes it weaker...
And btw, Harm, I'm surprised that you used the 'easy' command as an example:

Code: Select all

C:\Temp\umax>umax.exe
tellics say         micro-Max 1.6w
tellics say         by H.G. Muller
easy
Error (unknown command): easy
hard
Error (unknown command): hard
quit

C:\Temp\umax>
User avatar
Graham Banks
Posts: 41435
Joined: Sun Feb 26, 2006 10:52 am
Location: Auckland, NZ

Re: Thinker output

Post by Graham Banks »

CThinker wrote: And, I don't work on the Thinker code anymore.
Are you working on a new engine?
gbanksnz at gmail.com
User avatar
hgm
Posts: 27796
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Thinker output

Post by hgm »

CThinker wrote:And btw, Harm, I'm surprised that you used the 'easy' command as an example:

Code: Select all

C:\Temp\umax>umax.exe
tellics say         micro-Max 1.6w
tellics say         by H.G. Muller
easy
Error (unknown command): easy
hard
Error (unknown command): hard
quit

C:\Temp\umax>
Well, that I am a lazy SOB does not imply others should be forgiven for acting the same way! :lol: :lol: :lol: Micro-Max cannot ponder at all, and I guess replying "unkown command" to "hard" is a good way to let the GUI know about it. (Not that any existing GUI does anything with that info...). But I agree that it is not logical to give the same to "easy". Note that uMax 1.6w has not been worked on from the time I first released it as a WB engine, which was at a time when I did not work on WB at all, and hardly knew the protocol. My current policy is to let my engines recognize all WB commands that are sent by default, even if only for the purpose to ignore them (like "computer", "ratings", "otim" etc.).

You have point about existing protocols being tailored for a specific implemetation of a chess engine (tree search with iterative deepening). But I am pretty sure Thinker does get its moves that way. So this in itself is no excuse for violating the protocol. In the end you get a PV somehow, don't you? It would already be a great improvement if you print that PV before printing the move (so it is not discarded as ponder output, and ends up in the PGN file).

For me looking at the depth/score and PV info is all the fun. Without it, computer Chess is quite meaningless. This was rubbed in again recently, when I converted some XQ engines from another protocol to WB, through an adapter. That other protocol does not give thinking output, so there is nothing I could do about that. But it is just no fun seeing thoe engines play, knowing not even if they thinnk they are winning or losing.