go-chess-minimax, v1.7
Posted on

The library that implements a chess engine based on the minimax algorithm.
Improve the replacing strategy for same transpositions on storing in a transposition table.
Change Log
- calculate a move quality via searching terminators: move quality is directly proportional to a time of its evaluation;
- in a transposition table:
- store moves qualities together with corresponding transpositions;
- replacing same transpositions on storing only if new one has a greater move quality.
Features
- move searcher used the negamax algorithm;
- optimizations:
- alpha-beta pruning;
- transposition table:
- storing transpositions in an LRU cache;
- hashing a transposition by its representation in Forsyth–Edwards Notation;
- replacing same transpositions on storing only if new one has a greater move quality:
- move quality is directly proportional to a time of its evaluation;
- sharing a transposition table between searches;
- transposition table is safe for concurrent use (via a mutual exclusion lock over a whole storage);
- iterative deepening;
- parallel search (Lazy SMP):
- launch concurrent searches with same depths;
- searching termination:
- by a deep;
- by a time;
- by calling a special method (it's safe for concurrent use);
- position evaluation only by a material (based on an evaluation function of Claude Shannon);
- architecture features:
- easily extensible and composable architecture of searching;
- composable searching terminators.
Repository
Link: https://github.com/thewizardplusplus/go-chess-minimax/tree/v1.7.
Content: code.
License: MIT.