RichFeatures
The material feature set (OnnxFeatures) plus cheap, dice-free positional features — the signal a material-only model is blind to (it cannot tell two positions of equal material apart).
Kept separate from OnnxFeatures on purpose: that 7-feature set is the input contract of the currently deployed model, so its shape must not change. RichFeatures reuses it for the material block and appends the positional columns, giving a distinct input for a model trained on the richer set. Computing features here — in the engine, the single source of truth for move generation — means training-data enrichment and inference share this exact code, with no Python/Scala re-implementation drift.
All features are from color's own perspective (own minus opponent) and independent of the dice pool, matching the dice-free leaf the search evaluates.
Attributes
- Note
-
Cost:
mobility_diffruns two full dicechess.engine.movegen.MoveGenerator.generateAllMoves passes, so this set is not cheap enough to evaluate on every leaf of a 2-ply search (hundreds of thousands per move). It targets training enrichment and one-ply / shallow inference — the "one-ply + rich features vs. two-ply + material" comparison. - Source
- RichFeatures.scala
- Graph
-
- Supertypes
-
class Objecttrait Matchableclass Any
- Self type
-
RichFeatures.type