Ferdy wrote:You may describe here the chess tools/utilities that you need.
Hey Ferdy! I have always dreamed of an adapter that is able to play chess games by taking into account suggestions from other engines, very similar to ProDeo's MASTER.ENG concept.
An initial implementation would work as follows:
User tells the adapter about 3 engines that exist, giving them paths in some configuration file, setting them as "Slave 1", "Slave 2", and "Master", say:
[ENGINE SLAVE 1]Filename=C:\Chess\Stockfish\stockfish_9_l_x64.exe
[SLAVE 1 OPTIONS]Threads=4
[ENGINE SLAVE 2]Filename=C:\Chess\Houdini\H6_Std_x64.exe
[SLAVE 2 OPTIONS]Tactical Mode=1
[ENGINE MASTER]Filename=C:\Chess\Komodo\komodo-11.3.1-64bit.exe
[MASTER OPTIONS]Threads=4;Contempt=-10
Now, when playing the game, the adapter divides the remaining game time by 4 (to tell the engines they have this time to think for the entire game), then follows the next procedure:
Ask Slave 1 to make a move.
Ask Slave 2 to make a move.
If both moves match, make the move on the board.
If the moves are different, make Slave 1's move against Master, and receive an evaluation. Now make Slave 2's move against Master, and receive an evaluation.
If both moves have the same evaluation, make Slave 1's move on the board.
Else, make the move that was most disfavorable to Master on the board.
Example:
Opening position.
Slave 1 plays 1.e4
Slave 2 plays 1.d4
1.e4 is played against Master, Master moves 1.e5 with a score of 0.30
1.d4 is played against Master, Master moves 1.Nf6 with a score of 0.25
Master is black, so 0.30 is most disfavorable for it. 1.e4 is made on the board
That's the initial concept.
After it, features could be added like, giving the slaves 80% of the time and Master 10% to check each choice, or having Slave 1 and 2 playing their choices simultaneously (the user would need to adjust their threads), etc. And extra Slaves for specific situations (say, Slave 3 plays the rest of the game if the score goes >1.00, because we're already winning and don't want to risk blowing it up; or Slave 4 plays the rest of the game if score goes <-1.00, because the concept is failing for this game, we abort and play normally.)
The idea would be that some combination of this could play stronger than the strongest engine, as the master engine would agree to its choices most of the time, but when the engine is about to blunder, slave 2 could avoid the mistake and save the game.
Or it could be used to produce amazing games by having Master be some engine of amazing style, since the Slaves are only going to suggest sound moves, this Master would just choose the most stylistic choice.