Luminex - a UCI chess engine written in C++23. All evaluation values are self-engineered from chess first principles.
Author: Cheng Chang
Luminex 5.14.0 what's new?
King-Pawn Correction History & Search Overhaul
This release introduces king-pawn correction history — a 6th eval correction table indexed by king positions and pawn structure — along with a comprehensive search overhaul including smarter LMR, improved null move pruning, and quadratic king safety.
What's New
Evaluation
- King-pawn correction history: 6th correction table indexed by pawn_key XOR king_sq hash, adding position-specific eval adjustments for king safety context (+65.6 Elo)
- Quadratic king safety: Replaced sigmoid danger model with quadratic
au²/8scaling for more natural danger growth - King flight safety: Penalty for limited king escape squares (0-1 flights: +80 danger, 2 flights: +30 danger)
- Non-linear mobility lookup tables: Replaced linear formulas with per-mobility-level tables for all piece types
Search
- Multi-table correction history (5 tables): pawn + nonpawn[2] + minor + major, weighted moving average per table, ±32 cp each
- Selective corrhist update: Skip correction updates when in check or best move is capture
- Correction cap ±200: Increased from ±100 for wider eval adjustment range
- Confidence-weighted pruning: Correction history magnitude modulates futility/reverse-futility margins
- Capture-response LMR: +1 reduction for quiets after opponent's capture (depth >= 4)
- Deep worsening LMR: 4-ply eval trajectory makes LMR more aggressive for consistently worsening positions; history influence clamped to [-3,3]
- NMP static_eval guard: Require eval >= static_eval for null move pruning
- Eval-adaptive null move R: R+1 when eval > beta + 200
- Probcut dynamic SEE: SEE threshold = max(rbeta - eval, 0)
- Broader IIR: depth >= 3 instead of 4
- Bad captures deferred: Search SEE<0 captures AFTER quiets
- Faster history decay: Gravity 32768→16368
- Separate noisy/quiet LMR: Quiets get 1.6x base reduction of captures
- Tighter singular extension margin: depth10/16 instead of depth2
- Shuffling detection: Skip singular extension on back-and-forth moves
- Qsearch depth-dependent SEE: Threshold from fixed 0 to -60*depth
- LMP depth limit extended from 6 to 8
- Eval cache 512K→64K: Reduced L2/L3 pressure (+10.8 Elo)
New Features
- Polyglot opening book support: New
BookFileUCI option for opening book path
Test Results
Self-play vs v5.13.0, tc=1+0.01:
| Run | Cutechess Elo |
|---|---|
| Run 1 | +127.0 ± 30.7 (219W-79L-102D) |
vs StashV20 (2509 Elo), tc=1+0.01:
| Run | Cutechess Elo |
|---|---|
| Run 1 | -86.9 ± 47.6 (67W-116L-17D) |
Estimated Strength
~2422 CCRL Blitz equivalent (+100 Elo over v5.13.0)
Binaries
| Platform | File | Notes |
|---|---|---|
| Linux (modern) | luminex-linux-x86-64-modern | AVX2 + BMI2 (CPUs since ~2015) |
| Linux (compat) | luminex-linux-x86-64 | SSE4.2 + POPCNT |
| Windows (modern) | luminex-windows-x86-64-modern.exe | ClangCL optimized |
| Windows (compat) | luminex-windows-x86-64.exe | MSVC compatible |
| macOS | luminex-macos-arm64 | Apple Silicon |

Comments
Post a Comment