Throttle has been rewritten from scratch as Polonium
Throttle is a UCI chess engine developed using Sebastian Lague's chess framework.
You can either download my latest version in releases or play with me online at lichess but note I may not always be online. If you choose to download me, also note that I am a UCI chess engine and I don't come with my own graphical interface. I would recommend you to use a GUI to test my engine if you are not familiar with the UCI protocol such as Arena Chess GUI or Banksia Chess GUI.
Connected with lichess using this lichess-bot tool.
Version | Estimate CCRL Elo | CCRL Blitz | CCRL Bullet | CEDR |
---|---|---|---|---|
3.1 | 2379.6 +/- 64.2 | - | - | - |
3.0 | 2376.3 +/- 62.0 | - | - | - |
- Estimated Elo is calculated against Stash 14.0 with a tc of 10+0.1(sorry stash!)
- From 3.2 onwards, Elo is calculated against the previous versions of Throttle (because Stash randomly crashes)
- Aspiration window
v2.4
16.6 +/- 9.6
- Fail-Soft Negamax Search
- Quiescence Search
- Principle Variation Search
- Triple PVS
v1.5
21.3 +/- 11.1
- Actual TT pruning
v2.1
136.4 +/- 31.2
- A/B Pruning
- Null Move Pruning
- Reverse Futility Pruning
- Futility Pruning (depthdepthmargin)
v3.0
15.7 +/- 9.2 vs Normal futility pruning
- Quiescence Search Standing Pat Pruning
- Quiescence Search Delta Pruning
v2.5
11.7 +/- 7.7
- Mate Distancing Pruning
- Internal Iterative Reduction
- Late move reductions with triple pvs
- TT Moves
- MVV-LVA (for good captures)
- Killer moves (quiets)
- History moves (quiets)
v2.0
67.9 +/- 20.9
- Hard and Soft Time Management
- Tuned with Gedimas' Texel Tuner
- SWAR compression
v2.2
5.7 +/- 4.6
- Material values (PeSTO)
- Piece square tables (PeSTO)
- Tapered Eval
- Tempo
- Mobility
uci
setoption name [name] value [value]
position [startpos/FEN] [moves]
isready
go [wtime] [winc] [btime] [binc]
Hash type spin default 201 min 1 max 1024
- TT Hash size in MBrfpMargin type spin default 55 min 0 max 200
- Reverse Futility Pruning marginfutilityMargin type spin default 116 min 0 max 400
- Futility Pruning marginhardBoundTimeRatio type spin default 10 min 1 max 100
- Hard Bound time management ratiosoftBoundTimeRatio type spin default 40 min 1 max 300
- Soft Bound time management ratio
sevel
- Get the static evaluation of the position
Log after v2.1
---------------
v2.2 - SWAR test for compressed eval for speedup
Score of SWARtest vs Original: 5383 - 5132 - 4808 [0.508] 15323
... SWARtest playing White: 3347 - 1892 - 2423 [0.595] 7662
... SWARtest playing Black: 2036 - 3240 - 2385 [0.421] 7661
... White vs Black: 6587 - 3928 - 4808 [0.587] 15323
Elo difference: 5.7 +/- 4.6, LOS: 99.3 %, DrawRatio: 31.4 %
SPRT: llr 2.95 (100.3%), lbound -2.94, ubound 2.94 - H1 was accepted
v2.3 - Check for non pv before pruning or reducing in tt
(COMPUTER BLUESCREENED HALFWAY SO THIS IS JUST PARTIAL RESULTS)
Score of NoTTCutoffsInPv vs Original: 2204 - 2080 - 1824 [0.510] 6108
... NoTTCutoffsInPv playing White: 1359 - 788 - 908 [0.593] 3055
... NoTTCutoffsInPv playing Black: 845 - 1292 - 916 [0.427] 3053
... White vs Black: 2651 - 1633 - 1824 [0.583] 6108
Elo difference: 7.1 +/- 7.3, LOS: 97.1 %, DrawRatio: 29.9 %
SPRT: llr 1.64 (55.8%), lbound -2.94, ubound 2.94
v2.4 - Budget aspiration window search
Score of ASP vs Original: 1307 - 1139 - 1072 [0.524] 3518
... ASP playing White: 810 - 433 - 516 [0.607] 1759
... ASP playing Black: 497 - 706 - 556 [0.441] 1759
... White vs Black: 1516 - 930 - 1072 [0.583] 3518
Elo difference: 16.6 +/- 9.6, LOS: 100.0 %, DrawRatio: 30.5 %
SPRT: llr 2.96 (100.4%), lbound -2.94, ubound 2.94 - H1 was accepted
v2.5 - Delta pruning
Score of DeltaPrune vs Original: 2000 - 1817 - 1615 [0.517] 5432
... DeltaPrune playing White: 1252 - 668 - 796 [0.608] 2716
... DeltaPrune playing Black: 748 - 1149 - 819 [0.426] 2716
... White vs Black: 2401 - 1416 - 1615 [0.591] 5432
Elo difference: 11.7 +/- 7.7, LOS: 99.8 %, DrawRatio: 29.7 %
SPRT: llr 2.95 (100.2%), lbound -2.94, ubound 2.94 - H1 was accepted
v2.6 - Correct ASP window search
Score of ASP vs Original: 3391 - 3179 - 2721 [0.511] 9291
... ASP playing White: 2084 - 1259 - 1304 [0.589] 4647
... ASP playing Black: 1307 - 1920 - 1417 [0.434] 4644
... White vs Black: 4004 - 2566 - 2721 [0.577] 9291
Elo difference: 7.9 +/- 5.9, LOS: 99.6 %, DrawRatio: 29.3 %
SPRT: llr 2.95 (100.3%), lbound -2.94, ubound 2.94 - H1 was accepted
v2.7 - Tuned eval + changed mobility
(BLUESCREENED)
Around 7 elo
v2.8 - Speed up evaluation - extract only at the end
Score of SpeedUp vs Original: 902 - 733 - 544 [0.539] 2179
... SpeedUp playing White: 538 - 284 - 268 [0.617] 1090
... SpeedUp playing Black: 364 - 449 - 276 [0.461] 1089
... White vs Black: 987 - 648 - 544 [0.578] 2179
Elo difference: 27.0 +/- 12.6, LOS: 100.0 %, DrawRatio: 25.0 %
SPRT: llr 2.95 (100.1%), lbound -2.94, ubound 2.94 - H1 was accepted
v2.9 - RFP changed to 55;
... RFP55 playing White: 3188 - 1958 - 1745 [0.589] 6891
... RFP55 playing Black: 2148 - 3124 - 1617 [0.429] 6889
... White vs Black: 6312 - 4106 - 3362 [0.580] 13780
Elo difference: 6.4 +/- 5.0, LOS: 99.4 %, DrawRatio: 24.4 %
SPRT: llr 2.95 (100.1%), lbound -2.94, ubound 2.94 - H1 was accepted
v3.0 - New futility pruning
Score of NewFP vs Original: 1646 - 1461 - 1002 [0.523] 4109
... NewFP playing White: 953 - 603 - 499 [0.585] 2055
... NewFP playing Black: 693 - 858 - 503 [0.460] 2054
... White vs Black: 1811 - 1296 - 1002 [0.563] 4109
Elo difference: 15.7 +/- 9.2, LOS: 100.0 %, DrawRatio: 24.4 %
SPRT: llr 2.96 (100.5%), lbound -2.94, ubound 2.94 - H1 was accepted
v3.1 - Retuned eval with mobility
Score of ReplacedEval vs Original: 1807 - 1610 - 789 [0.523] 4206
... ReplacedEval playing White: 1026 - 674 - 404 [0.584] 2104
... ReplacedEval playing Black: 781 - 936 - 385 [0.463] 2102
... White vs Black: 1962 - 1455 - 789 [0.560] 4206
Elo difference: 16.3 +/- 9.5, LOS: 100.0 %, DrawRatio: 18.8 %
SPRT: llr 2.96 (100.4%), lbound -2.94, ubound 2.94 - H1 was accepted
- Sebastian Lague (For hosting the tiny chess bot tournament, although I couldn't submit on time)
- Ciekce (For helping with a lot of engine-related stuff)
- cj5716 (For helping with a lot of engine-related stuff)
- arandomnoob(on discord) (For helping with a lot of engine-related stuff)
- Toanth (For hosting the 400 token challenge to really get me into chess programming)
- Gediminas - for texel-tuner and stuff related to tuning
- jw (nnue stuff and bullet)
- and many other people in sebastian lague's chess programming server / the engine programming server
- Stormphrax
- Boychesser
- Smol.cs / NOSPRT
- 200 token monstrosity
- Atadofanoobbot
- Viridithas
- Ethereal
- Altair
- https://minuskelvin.net/chesswiki/ (Updated Chess programming wiki)
- https://www.chessprogramming.org/ (Old Wiki)
- https://github.com/cosmobobak/viridithas/blob/master/wiki.md (Small repository of search optims)
- https://discord.gg/S3MMh67q (Sebastian Lagues's chess programming serever)
- https://discord.gg/dVgkdqqt (Engine programming server)
- Aspiration window
v2.4
16.6 +/- 9.6
- Fail-Soft Negamax Search
- Quiescence Search
- Principle Variation Search
- Triple PVS
v1.5
21.3 +/- 11.1
- Lazy SMP multithreading
- Pondering
- Actual TT pruning
v2.1
136.4 +/- 31.2
- A/B Pruning
- Null Move Pruning
- Reverse Futility Pruning
- Futility Pruning (depthdepthmargin)
v3.0
15.7 +/- 9.2 vs Normal futility pruning
- Quiescence Search Standing Pat Pruning
- Quiescence Search Delta Pruning
v2.5
11.7 +/- 7.7
- Mate distancing pruning
- Static Exchange Evaluation Pruning (QSearch)
- Late Move Pruning
- Multicut
- Prob-cut
- History leaf pruning
- Parity pruning
- Uncertainty cutoffs
- AEL-Pruning
- Enhanced forward pruning
- Internal Iterative Reduction
- Late move reductions with triple pvs
- Internal Iterative deepening
- Fail-high reductions
- Rank-cut
- Razoring
- Check Extensions
- Capture extensions
- Mate threat extensions
- One reply extension
- Passed pawn extension
- Pv extension
- Recapture extension
- Singular extensions
- TT Moves
- MVV-LVA (for good captures)
- iller moves (quiets)
- History moves (quiets)
v2.0
67.9 +/- 20.9
- History gravity
- History ageing
- History malus
- 1-ply continuation history
- 2-ply continuation history
- More extensive MVV-LVA ordering
- Capture history
- Counter-moves
- Hard Bound
- Soft Bound
- Piece Square Tables
- Piece Weights
- Tempo
- Piece mobility (no king no pawn)
- Pawn shield
- Pawn storm
- Strong pawn bonus
- Doubled pawn malus
- Passed pawn bonus
- Phalanx pawn bonus
- Isolated pawn malus
- Piece attacking enemy bonus
- Pawn defending piece bonus
- Trapped piece malus
- Major pieces on open file bonus
- Major piece on semi-open file bonus
- Minor piece outpost bonus
- Undefended minor piece malus
- Pawn-count relative weight
- Blocking C-Pawn malus (in closed openings)
- Omit squares controlled by enemy pawns for mobility
- Bishop pair
- Bad bishop
- Color weakness (also considering majority of pawns on what colored square)
- Fianchettoed bishop bonus (a fianchettoed bishop shouldn't be exchanged)
- Returning bishop bonus
- Pawn-count relative weight
- Rook behind passed-pawns
- Rook blocked by uncastled king malus
- Rook connecting bonus
- Early development malus
- King cornering for endgame checkmate (UNTUNED!!)
- King tropism
- King-relative PSQTs
- King Virtual mobility
- King on open file malus
- King on semi-open file malus
- King-relative to pawn chain malus
- Attacking king zone
- X-Rays/pins malus
- Castling rights