Skip to content

GnikDroy/mimir

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

64 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mimir

Mimir is a UCI compatible chess engine built from scratch.

Features

  • Bitboard move generation (legal & pseudo-legal) verified with perft tests.
  • Full compliance of drawing rules: Insufficient material, three-fold-repetition, and 50 move rule.
  • Negamax alpha-beta pruning with iterative deepening depth first search and quiescence search to counter horizon effects.
  • Transposition tables with zobrist hashing.
  • A classical PST tapered evaluation function optimized by Texel's tuning.
  • Modern NNUE based evaluation based on 768 perspective architechture with incremental updates.
  • Move ordering via hash moves from transposition tables, Most Valuable Victim - Least Valuable Aggressor (MVV-LVA) for captures.
  • Killer moves and history heuristics for quiet moves.
  • Principal variation search (PVS) with aspiration windows.
  • Null move pruning (NMP) and Late move reductions (LMR)
  • Reverse Futility Pruning (RFP)
  • Delta pruning and Static Exchange Evaluation (SEE).
  • A UCI compatible interface with a soft-hard limit time scheduler.
  • Playable on lichess @playmimir. Uses the lichess bot API.

Building

Requirements

  • Rust 1.70+ (for #![feature(variant_count)])
  • Standard build tools (cargo)

Building and Testing

cargo build --release

# Run all tests
cargo test --release

References

  • Chess Programming Wiki – comprehensive reference for most techniques outlined above
  • lichess-bot - A bridge between lichess and bots.
  • beans.bin - Credits to @ciekce [Stormphrax] from discord for training the network

About

Mimir is a superhuman chess engine with NNUE evaluation and zero dependencies.

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages