Cheese title

Technical Features

More information about the algorithms used in this project can be found on the Chess programming wiki

  • Engine compatible with UCI and CECP protocols
  • Bitboards and magic bitboards
  • alpha-beta search (negamax)
  • Principal Variation Search
  • Quiescence search
  • Iterative deepening
  • Aspiration window
  • Opening book (Polyglot format)
  • Internal iterative deepening
  • Adaptive null moves pruning
  • Late move reduction
  • Late move pruning
  • Futility pruning
  • Razoring
  • Mate distance pruning
  • Multiple threads support
    • Young Brother Wait Concept (YBWC)
      • Support 64 threads maximum
    • "Lazy SMP" (Shared hash table)
      • Support 256 threads maximum in Linux, and 64 in Windows
  • Transposition table + Zobrist hash key
    • Use Mersenne Twister for random numbers
    • 4 buckets
    • Replacement scheme : use age and depth
  • Pawn Hash table (2 Mb)
  • Search extensions
    • Check extension
    • Pawn on 7th
  • Evaluation function
    • Lazy evaluation
    • Game phase (incremental)
    • Material (incremental)
    • Mobility tables
    • Piece square tables
    • Doubled pawns
    • Passed pawns
    • Isolated pawns
    • Backward pawns
    • Blocked pawns
    • Rooks on open or semi-open files
    • Rooks on 7th rank
    • King safety
    • Knight outposts
    • Insufficient Material
    • Endgames
    • Allow to change some parameters with personalities
    • Texel's tuning method
      • Gradient descent algorithm
  • Tablebases
    • Syzygy tablebases
  • Move ordering
    • Hash table
    • SEE good captures and promotions
    • Killer moves
    • Counter moves
    • History heuristic
    • SEE bad captures
  • Rules
    • Standard
    • FRC