Skip to content

Latest commit

 

History

History
67 lines (49 loc) · 4.97 KB

File metadata and controls

67 lines (49 loc) · 4.97 KB

Design

How the engine is put together, what each technique buys, and the backlog of ideas not yet implemented. For a prioritised list of next steps see tasks.md; for strength and speed numbers see engine-strength.md and performance.md.

Architecture

Negamax is the search core. It holds four collaborators, each a plain object with a small interface, injected at construction:

collaborator responsibility
PestoEvaluator static evaluation from the side-to-move's view
MoveOrderer orders moves to maximise alpha-beta cut-offs; owns killer / history tables
TranspositionTable / SharedTT Zobrist-keyed cache; same key / probe / store interface, one in-process, one in shared memory
Clock turns go limits into a deadline / node budget and answers should_stop

lazy_smp.search is the coordinator: it spawns worker processes, each running its own iterative deepening Negamax against a shared SharedTT, and returns the best completed result as a SearchResult. __main__.py is the UCI protocol layer and the only place that prints info / bestmove.

Implemented

Backlog

Search

Evaluation

Alternative search algorithms to evaluate

(NegaScout / PVS is already implemented - see above.)