http://www.open-aurec.com/wbforum/viewtopic.php?t=49458
Thus I am trying it again here. Why does Polyglot need to duplicate the
last info from UCI engines in case they don't send final search infos with
the move made(which happens practically very often)? Is it because it
tries to circumvent the lack of the final search info, which according to the
UCI protocol, _should_ be sent? (I know that should != must, but...)
Anyway this behaviour of course screws up current WB and also other
tools which calculate e.g. nps from WB debugs, as the timestamp then
doesn't fit for the duplicated search info.
Guenther
Simple example from above mentioned thread:
Polyglot log:
- Code: Select all
< ENGINE info score cp -10 depth 9 nodes 335126 time 1570 pv f5d6 f4d6 e7d6 d3d6 c8c7 a2a3 h8f8 d6d4 c6c5 d4d6
> XBOARD 9 -10 157 335126 Nxd6 Bxd6 Bxd6 Rxd6 Kc7 a3 Rf8 R6d4 c5 Rd6
< ENGINE info string branching factor = 0.373622
< ENGINE info depth 10 seldepth 10
< ENGINE info nps 213716
< ENGINE info score cp -11 depth 10 nodes 335535 time 1570 pv f5d6 f4d6 e7d6 d3d6 c8c7 a2a3 h8f8 d6d4 c6c5 d4d6
> XBOARD 10 -11 157 335535 Nxd6 Bxd6 Bxd6 Rxd6 Kc7 a3 Rf8 R6d4 c5 Rd6
< ENGINE info string branching factor = 0.00481624
< ENGINE info depth 11 seldepth 11
< ENGINE info nps 202817
< ENGINE info score cp -9 depth 11 nodes 1087103 time 5360 pv f5d6 f4d6 e7d6 d3d6 c8c7 a2a3 h8f8 d6d4 c6c5 d4g4 f8g8
> XBOARD 11 -9 536 1087103 Nxd6 Bxd6 Bxd6 Rxd6 Kc7 a3 Rf8 R6d4 c5 Rg4 Rg8
< ENGINE info string branching factor = 13174.8
< ENGINE bestmove f5d6
> XBOARD 11 -9 536 1087103 Nxd6 Bxd6 Bxd6 Rxd6 Kc7 a3 Rf8 R6d4 c5 Rg4 Rg8
> XBOARD move f5d6
POLYGLOT MOVE Nxd6
How it appears then in the WB debug file:
- Code: Select all
390231 <second: 8 -12 15 28687 Nxd6 Bxd6 Bxd6 Rxd6 Kc7 a3 Rf8 R6d4 c5 Rd6
390231 <second: 9 -10 157 335126 Nxd6 Bxd6 Bxd6 Rxd6 Kc7 a3 Rf8 R6d4 c5 Rd6
390231 <second: 10 -11 157 335535 Nxd6 Bxd6 Bxd6 Rxd6 Kc7 a3 Rf8 R6d4 c5 Rd6
391583 <second: 11 -9 536 1087103 Nxd6 Bxd6 Bxd6 Rxd6 Kc7 a3 Rf8 R6d4 c5 Rg4 Rg8
415067 <second: 11 -9 536 1087103 Nxd6 Bxd6 Bxd6 Rxd6 Kc7 a3 Rf8 R6d4 c5 Rg4 Rg8
415067 <second: move f5d6
From the UCI specs:
- Code: Select all
* bestmove [ ponder ]
the engine has stopped searching and found the move best in this position.
the engine can send the move it likes to ponder on. The engine must not start pondering automatically.
this command must always be sent if the engine stops searching, also in pondering mode if there is a
"stop" command, so for every "go" command a "bestmove" command is needed!
Directly before that the engine should send a final "info" command with the final search information,
the the GUI has the complete statistics about the last search.