Skip to content
 
 

Latest commit

 

History

1,350 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Prune

drawing

this is a hobby project made by two passionate about informatic.

currently, the engine includes:

  • Evaluation:

    • nnue
      • (60144+768x4hm -> 384-pw)x2 -> (16 -> 32 -> 1)x8
      • 13 iterations from random net
    • trained on self-gen data using bullet (if you want the data used to train it, you can directly ask one of us)
    • correction history :
      • pawn
      • previous move
      • continuation move
      • minor+king pieces
    • material scaling
  • Search:

    • iterative Deepening
    • quiescence search
    • aspiration window
    • enhanced forward pruning
    • Reduction:
      • late move reduction :
        • log base
        • history
        • tactical moves
    • pruning:
      • null move pruning
      • reverse futility pruning (improving and not improving)
      • razoring at depth 1
      • late move pruning
      • history pruning
      • capture history pruning
      • futility pruning
      • SEE pruning in QS
    • transposition table
      • buckets of 3 entries
    • move ordering:
      • killer move
      • PV move
      • SEE
      • MVV-LVA
      • history heuristic
      • capthist
    • singular extension :
      • singular
      • double
      • negative
      • cutnode negext
    • IIR
  • most of the search parameters has been tuned over 2k iterations of 16 40+0.4 games

  • movegen

    • use bitboards
    • fully legal movegen
  • UCI protocol:

    • fancy commands:
      • version (give the commit's hash when it was compiled)
      • arch (give the arch used to compile)
      • bench (test of 48 positions, which give the node count/depth sum to compare search, also give average nps)
      • runQ (run quiescnce search on the given position)
      • print (print the current position [after the moves])
      • position kiwipete (set kiwipete's position)
  • option :

    • SyzygyPath: path to Syzygy tablebase files
    • SyzygyProbeDepth: minimum search depth to probe tablebases
    • SyzygyProbeLimit: maximum piece count to probe (0–7)
    • TB scoring: WIN = 20000 - ply, LOSS = -20000 + ply, DRAW = 0; ply adjustment prefers faster wins and slower losses; cursed win/blessed loss are treated as draws since the 50-move rule makes them unachievable in practice
    • the other ones should be known, refer to the stockfish readme
  • syzygy probing is done thanks to a copy of Fathom from : https://github.com/jdart1/Fathom

  • support multithreading (lazy smp)

  • don't support yet frc, planed for v4

to compile, just run

make prune

in the core/ directory, and you will have the executable prune, which contains the engine (so it is moveable)

note

for the version naming, we currently use the following :

  • 3rd digit is only for bug fix versions
  • 2nd digit is for elo improvement (for now, we target a +190 elo per release)
  • 1st digit is for new features (as smp for v3, or planed frc for v4)

thanks

  • stockfish discord :
    1. TM improvement (took some constant from heimdall for init)
    2. corrhist help (took some constant from sirius for update)
    3. speedup of the nnue (lizard updates)
  • chessprogramming wiki
    • warn for new dev, can be outdated, so don't forget to sprt every changes
  • especially to :
    • swedishchef (the dev from pawnocchio and vine) for helping me debugging the viriformat writer, and giving me some search ideas
    • Ciekce, who helped me a lot making working the threat net (by giving me his bullet config, and helping me debugging it)
    • Yoshie, who helped me to know some speedup techniques for the ti, directly or by his code

About

UCI chess engine written in c++

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages