This is a temporary, read-only recovery of the chessprogrammingwiki while a longer-term plan is worked out. Editing is not possible right now, but will be again soon.
Chess Programming Wiki All pages Other namespaces

ShashChess

Home * Engines * Stockfish * ShashChess

ShashChess,
a Stockfish derivative by Andrea Manzo with the aim to apply the proposals of Alexander Shashin as exposed in his book Best Play: A New Method for Discovering the Strongest Move 1 2 3. First released in July 2018 4, subsequent ShashChess versions feature skill levels and handicap modes, NNUE, Monte-Carlo Tree Search with one or multiple threads in conjunction with alpha-beta, and various learning techniques utilizing a persistent hash table 5 6.

Contents
  1. Personalities
  2. Q-Learning
  3. Forum Posts
    1. 2018 ...
    2. 2020 ...
  4. External Links
  5. References

Personalities

Based on static evaluation score ranges derivered from pawn endgame point value (PawnValueEg = 208), ShashChess classifies the position with five personalities of three former World Chess Champions, Tigran Petrosian for negative scores, José Raúl Capablanca for balanced scores, and Mikhail Tal for positive scores 7:

if      (eval < -74) personality =  Petosian;
else if (eval < -31) personality =  Petosian | Capablanca;
else if (eval <  31) personality =             Capablanca;
else if (eval <  74) personality =             Capablanca | Tal;
else                 personality =                          Tal; 

These personalities are considered in various search selectivity thresholds, along with multiple dynamic evaluation score adjustments.

Q-Learning

A rote learning technique inspired from Q-learning, worked out and introduced by Kelly Kinyama 8 9 and also employed in BrainLearn 9.0 10, was applied in ShashChess since version 12.0 11. After the end of a decisive selfplay game, the list of moves (ml) and associated scores is merged into the learn table from end to start, the score of timestep t adjusted as weighted average with the future reward of timestep t+1, using a learning rate α of 0.5 and a discount factor γ of 0.99 12:

  for (t = ml.size() - 2; t >= 0; t--) {
    ml[t].score = (1-α)*ml[t].score + α*γ*ml[t+1].score;
    insertIntoOrUpdateLearningTable( ml[t] );
  }

During repeated selfplay games, subsequently playing along the learned best line so far, decreasing score adjustments will stimulate exploration of alternative siblings, while increasing score adjustments correspondents to exploitation of the best move.

Forum Posts

2018 ...

Re: ShashChess (11.0) by Andrea Manzo, CCC, March 06, 2020

Re: ShashChess (12.0) by Andrea Manzo, CCC, June 28, 2020

Re: ShashChess (15.0) by Andrea Manzo, CCC, October 03, 2020

Re: ShashChess (17.1) by Andrea Manzo, CCC, June 01, 2021

2020 ...

References

Up one Level


  1. Welcome to BS Chess↩︎

  2. Alexander Shashin (2013). Best Play: A New Method for Discovering the Strongest Move. Mongoose Press, Amazon↩︎

  3. Review: Best Play | ChessVibes by Arne Moll, September 05, 2013 (Wayback Machine)↩︎

  4. ShashChess by Andrea Manzo, CCC, July 28, 2018↩︎

  5. ShashChess/README.md at master · amchess/ShashChess · GitHub↩︎

  6. Re: Komodo MCTS by Mark Lefler, CCC, June 12, 2019 » Komodo MCTS↩︎

  7. ShashChess/search.cpp at master · amchess/ShashChess · GitHub↩︎

  8. Re: Self-Learning stockfish upgraded by Kelly Kinyama, FishCooking, May 28, 2019↩︎

  9. A new reinforcement learning implementation of Q learning algorithm for alphabeta engines to automatically tune the evaluation of chess positions by Kelly Kinyama, FishCooking, June 29, 2020↩︎

  10. Release BrainLearn 9.0 · amchess/BrainLearn · GitHub↩︎

  11. ShashChess 12.0 by Andrea Manzo, FishCooking, June 28, 2020↩︎

  12. ShashChess/search.cpp at master · amchess/ShashChess · GitHub↩︎

Categories: Derivative · GPL · Open Source · NNUE · MCTS · UCI · Chess960 · X86 · X64 · PC · Android · Mac · Linux · Windows · Chess Suffix

What links here

Contributors: GerdIsenberg, Smatovic.