ZeroFish

Getting the best of 2 worlds:

Stockfish

and

Lc0

ZeroFish is an experimental program that tries to combine the best of Stockfish and Lc0 in a number of experiments.


Experiment 1 - it's widely assumed that Stockfish is better in tactics than Lc0, we setup a crude MEA system:


In the main folder we install ZeroFish (which is ProDeo in disguise) that will serve as an arbiter;

In the sub folder MEA1 we install Stockfish 11;

In the sub folder MEA2 we install Lc0 version 0.25.1


When calculating ZeroFish will fire up both Stockfish and Lc0 with the position while ZeroFish is trying to figure out if the position is tactical or not. When time is up ZeroFish decides which move to play, if the position is tactical it will play the move of Stockfish, else the move of Lc0.


That's the idea.


The process can be followed on the screen by manipulating the depth, we take Arena as an example.

The Stockfish depth is increased with 100 (130 in this example) when a position is tactical. ZeroFish will play the Stockfish move.

The Lc0 depth is increased with 200 (214 in this example) when a position is quiet. ZeroFish will play the Lc0 move.

_________________________________________________________________________________________________

How to define a position as tactical?

programmer stuff


ZeroFish at the end of the of each evaluation subtracts the material score from the evaluation score and as such an engine decide score is calculated. In quiet positions the engine decide score is not much, it varies between 0.00 to 0.50, in wild positions where king safety, mobility, passed pawns play a big role the engine decide score may jump over 2 pawns.


Code:

a=abs(eval_score-material_score);

total+=a;

count++;

engine decide=total/count;


Currently (as an educated guess) the engine decide score is set to 0.59, when below the position is quiet, equal or above the root position is considered tactical. The engine decide value is flexible and can be changed in the zerofish.ini file.

The zerofish.ini configuration file

Meaning, you can use any UCI engine.

_________________________________________________________________________________________________

Remarks


1. Playing games, because of the set up (loading 2 engines every move with the loss of the hash table contents) makes ZeroFish not an ideal platform playing games. Using a RTX-1060 for Lc0 and playing a (40 moves in 5 minutes) match against Komodo 14 ended equal, a considerable elo loss. If the idea makes sense it should be implemented under a normal GUI where engines can remain in memory, can use it's own time control.


2. ZeroFish is not set up to play bullet games, the (re)loading of Lc0 already takes about a full second. Keep in mind the goal of ZeroFish, ideas to get the best out of 2 worlds, the AB engines in combination with NN engines.


3. Baretail, included in the download is a handy util that monitors text files in real time. To monitor the thinking process open mea1\log.txt (Stockfish) and mea2\log.txt (lc0).

_________________________________________________________________________________________________

Download

ZeroFish pre-installed under Arena 3.0

213 Mb

ZeroFish

205 Mb

Credits

1. ARENA is copyrighted © by Martin Blume and its

    distribution is limited to the ARENA website only.

2. The Stockfish team for the use of Stockfish 11.

3. The Lc0 team for the use of Lc0.

4. Ferdinand Mosca for MEA.