Skip to content

exacto 0.e

Latest
Compare
Choose a tag to compare
@d-sparks d-sparks released this 03 May 19:18
· 3 commits to master since this release

Basic program setup:

  • Rewrote Exacto from scratch using the bitboard game representation
  • "Magic bitboard" move generation for sliding pieces
    • I generated my own magics, but quite poorly: 14 bits for rooks, 11 bits for bishops
    • Legal (as opposed to pseudolegal + check detection) move generation

Search algorithms, pruning and heuristics:

  • The main search algorithms are PVS/alpha-beta with alpha-beta quiescence searches at the leaves
  • Selective reductions of the search tree:
    • Adaptive null move forward pruning
    • Late move reductions
    • Pruning via transposition table
    • Futility pruning (frontier and pre-frontier nodes)
    • Razoring (pre-pre-frontier nodes)
    • Delta pruning (in the quiescence search)
  • Selective extensions of the search tree:
    • Check extensions
    • Recapture extensions
    • Passed pawn extensions
  • Move ordering:
    • Hash table suggestions
    • Internal iterative deepening
    • Static exchange evaluation and MVV/LVA
    • Piece value tables for positional gain estimation
  • Killer move heuristic
  • All moves are insertion sorted (no lazy move generation, yet)

Positional evaluation (tapered, lazy):

  • Dedicated hash table for pawn structure evaluation. Knowledge of:
    • Pawn chains
    • Isolated pawns
    • Backward pawns
    • Doubled pawns
    • Passed pawns
  • Elementary detection of good/bad bishops, and preference for bishop pairs
  • Bishop/knight differentiation.
  • Rook placement:
    • Preference for open files
    • Preference for being on open files aiming at weak squares
    • Preference for 7th rank
    • Preference to develop, castle, etc.
  • King safety:
    • Attackers/defenders detection
    • Enemy attacks on squares near king (preprocessor option, off by default)
    • "Two move" attacks (preprocessor option, off by default)
    • Pawn fortress / castling destination
    • File strength around king
    • Attacker to defender ratio (preprocessor option, off by default)
    • Pieces desire to be "aimed at the enemy king"
  • Undefended minor piece penalty

Gameplay:

  • Opening book (hand made, overview)
  • Dynamic time management (conservative, but much less conservative than 0.d)
  • Iterative deepening