io-chess
UCI chess engine
Main Page
Namespaces
Classes
Files
File List
File Members
Loading...
Searching...
No Matches
FeatureExtractor.hpp
Go to the documentation of this file.
1
5
#pragma once
6
#include "chess.hpp"
7
#include <array>
8
#include <cstdint>
9
10
struct
alignas
(64)
ChessInput
{
11
// [Input 1] Board: 32 planes of 8x8 (Categorical: 0 or 255, or continuous
12
// [last two planes]) Structure: 32 x 64 bytes = 2048 bytes
13
uint8_t
layers
[32][64];
14
15
// [Input 2] Global: 16 scalars (Normalized Floats)
16
// Structure: 16 x 4 bytes = 64 bytes (aligned)
17
float
global
[16];
18
};
19
20
class
FeatureExtractor
{
21
public
:
22
static
constexpr
int
NUM_SQUARES
= 64;
23
24
// --- Sparse Layer Indices (0 to 31) ---
25
// Maps to ChessInput.sparse[index]
26
enum
LayerIndices
{
27
// Piece Presence (0-11)
28
US_PAWN
= 0,
29
US_KNIGHT
,
30
US_BISHOP
,
31
US_ROOK
,
32
US_QUEEN
,
33
US_KING
,
34
THEM_PAWN
,
35
THEM_KNIGHT
,
36
THEM_BISHOP
,
37
THEM_ROOK
,
38
THEM_QUEEN
,
39
THEM_KING
,
40
41
// Legal Moves / Reachability (12-23)
42
US_MOVE_PAWN
,
43
US_MOVE_KNIGHT
,
44
US_MOVE_BISHOP
,
45
US_MOVE_ROOK
,
46
US_MOVE_QUEEN
,
47
US_MOVE_KING
,
48
THEM_MOVE_PAWN
,
49
THEM_MOVE_KNIGHT
,
50
THEM_MOVE_BISHOP
,
51
THEM_MOVE_ROOK
,
52
THEM_MOVE_QUEEN
,
53
THEM_MOVE_KING
,
54
55
// Threats & Checks (24-27)
56
US_THREATS
,
57
THEM_THREATS
,
58
US_CHECKS
,
59
THEM_CHECKS
,
60
61
// Defended (28-29)
62
US_DEFENDED
,
63
THEM_DEFENDED
,
64
65
// Special (30-31) - Added to reach exactly 32 Channels for alignment
66
US_KING_DIST
,
67
THEM_KING_DIST
68
};
69
70
// --- Global Indices (0 to 14) ---
71
// Maps to ChessInput.global[index]
72
enum
GlobalIndices
{
73
// Material Configuration (Normalized)
74
US_MAT_PAWN
= 0,
75
THEM_MAT_PAWN
,
76
US_MAT_KNIGHT
,
77
THEM_MAT_KNIGHT
,
78
US_MAT_BISHOP
,
79
THEM_MAT_BISHOP
,
80
US_MAT_ROOK
,
81
THEM_MAT_ROOK
,
82
US_MAT_QUEEN
,
83
THEM_MAT_QUEEN
,
84
85
// Castling Rights
86
US_OO
,
87
US_OOO
,
88
THEM_OO
,
89
THEM_OOO
,
90
91
// Game Phase (0.0 = Opening, 1.0 = Deep Endgame)
92
PHASE
,
93
};
94
95
// High-performance extraction directly into the struct
96
static
void
fill_input
(
const
chess::Board &board,
ChessInput
&out);
97
98
private
:
99
// Internal logic for dense map generation (Chebyshev distance)
100
// Implementation is hidden in .cpp to keep header clean
101
static
void
init_tables
();
102
};
FeatureExtractor
Definition
FeatureExtractor.hpp:20
FeatureExtractor::NUM_SQUARES
static constexpr int NUM_SQUARES
Definition
FeatureExtractor.hpp:22
FeatureExtractor::init_tables
static void init_tables()
FeatureExtractor::GlobalIndices
GlobalIndices
Definition
FeatureExtractor.hpp:72
FeatureExtractor::THEM_MAT_ROOK
@ THEM_MAT_ROOK
Definition
FeatureExtractor.hpp:81
FeatureExtractor::THEM_MAT_QUEEN
@ THEM_MAT_QUEEN
Definition
FeatureExtractor.hpp:83
FeatureExtractor::US_MAT_KNIGHT
@ US_MAT_KNIGHT
Definition
FeatureExtractor.hpp:76
FeatureExtractor::US_MAT_QUEEN
@ US_MAT_QUEEN
Definition
FeatureExtractor.hpp:82
FeatureExtractor::THEM_OOO
@ THEM_OOO
Definition
FeatureExtractor.hpp:89
FeatureExtractor::THEM_OO
@ THEM_OO
Definition
FeatureExtractor.hpp:88
FeatureExtractor::THEM_MAT_KNIGHT
@ THEM_MAT_KNIGHT
Definition
FeatureExtractor.hpp:77
FeatureExtractor::US_MAT_BISHOP
@ US_MAT_BISHOP
Definition
FeatureExtractor.hpp:78
FeatureExtractor::US_MAT_PAWN
@ US_MAT_PAWN
Definition
FeatureExtractor.hpp:74
FeatureExtractor::US_OOO
@ US_OOO
Definition
FeatureExtractor.hpp:87
FeatureExtractor::US_MAT_ROOK
@ US_MAT_ROOK
Definition
FeatureExtractor.hpp:80
FeatureExtractor::PHASE
@ PHASE
Definition
FeatureExtractor.hpp:92
FeatureExtractor::THEM_MAT_PAWN
@ THEM_MAT_PAWN
Definition
FeatureExtractor.hpp:75
FeatureExtractor::US_OO
@ US_OO
Definition
FeatureExtractor.hpp:86
FeatureExtractor::THEM_MAT_BISHOP
@ THEM_MAT_BISHOP
Definition
FeatureExtractor.hpp:79
FeatureExtractor::LayerIndices
LayerIndices
Definition
FeatureExtractor.hpp:26
FeatureExtractor::US_MOVE_ROOK
@ US_MOVE_ROOK
Definition
FeatureExtractor.hpp:45
FeatureExtractor::US_THREATS
@ US_THREATS
Definition
FeatureExtractor.hpp:56
FeatureExtractor::THEM_MOVE_BISHOP
@ THEM_MOVE_BISHOP
Definition
FeatureExtractor.hpp:50
FeatureExtractor::US_MOVE_KNIGHT
@ US_MOVE_KNIGHT
Definition
FeatureExtractor.hpp:43
FeatureExtractor::THEM_MOVE_QUEEN
@ THEM_MOVE_QUEEN
Definition
FeatureExtractor.hpp:52
FeatureExtractor::US_KING_DIST
@ US_KING_DIST
Definition
FeatureExtractor.hpp:66
FeatureExtractor::THEM_MOVE_KNIGHT
@ THEM_MOVE_KNIGHT
Definition
FeatureExtractor.hpp:49
FeatureExtractor::THEM_PAWN
@ THEM_PAWN
Definition
FeatureExtractor.hpp:34
FeatureExtractor::US_MOVE_KING
@ US_MOVE_KING
Definition
FeatureExtractor.hpp:47
FeatureExtractor::US_KING
@ US_KING
Definition
FeatureExtractor.hpp:33
FeatureExtractor::THEM_DEFENDED
@ THEM_DEFENDED
Definition
FeatureExtractor.hpp:63
FeatureExtractor::THEM_MOVE_ROOK
@ THEM_MOVE_ROOK
Definition
FeatureExtractor.hpp:51
FeatureExtractor::THEM_BISHOP
@ THEM_BISHOP
Definition
FeatureExtractor.hpp:36
FeatureExtractor::US_ROOK
@ US_ROOK
Definition
FeatureExtractor.hpp:31
FeatureExtractor::THEM_KING
@ THEM_KING
Definition
FeatureExtractor.hpp:39
FeatureExtractor::THEM_MOVE_KING
@ THEM_MOVE_KING
Definition
FeatureExtractor.hpp:53
FeatureExtractor::THEM_CHECKS
@ THEM_CHECKS
Definition
FeatureExtractor.hpp:59
FeatureExtractor::US_QUEEN
@ US_QUEEN
Definition
FeatureExtractor.hpp:32
FeatureExtractor::US_MOVE_BISHOP
@ US_MOVE_BISHOP
Definition
FeatureExtractor.hpp:44
FeatureExtractor::THEM_KNIGHT
@ THEM_KNIGHT
Definition
FeatureExtractor.hpp:35
FeatureExtractor::US_MOVE_PAWN
@ US_MOVE_PAWN
Definition
FeatureExtractor.hpp:42
FeatureExtractor::THEM_MOVE_PAWN
@ THEM_MOVE_PAWN
Definition
FeatureExtractor.hpp:48
FeatureExtractor::US_MOVE_QUEEN
@ US_MOVE_QUEEN
Definition
FeatureExtractor.hpp:46
FeatureExtractor::US_BISHOP
@ US_BISHOP
Definition
FeatureExtractor.hpp:30
FeatureExtractor::THEM_THREATS
@ THEM_THREATS
Definition
FeatureExtractor.hpp:57
FeatureExtractor::US_KNIGHT
@ US_KNIGHT
Definition
FeatureExtractor.hpp:29
FeatureExtractor::THEM_KING_DIST
@ THEM_KING_DIST
Definition
FeatureExtractor.hpp:67
FeatureExtractor::THEM_ROOK
@ THEM_ROOK
Definition
FeatureExtractor.hpp:37
FeatureExtractor::US_PAWN
@ US_PAWN
Definition
FeatureExtractor.hpp:28
FeatureExtractor::US_DEFENDED
@ US_DEFENDED
Definition
FeatureExtractor.hpp:62
FeatureExtractor::THEM_QUEEN
@ THEM_QUEEN
Definition
FeatureExtractor.hpp:38
FeatureExtractor::US_CHECKS
@ US_CHECKS
Definition
FeatureExtractor.hpp:58
FeatureExtractor::fill_input
static void fill_input(const chess::Board &board, ChessInput &out)
Definition
FeatureExtractor.cpp:352
ChessInput
Definition
FeatureExtractor.hpp:10
ChessInput::layers
uint8_t layers[32][64]
Definition
FeatureExtractor.hpp:13
ChessInput::global
float global[16]
Definition
FeatureExtractor.hpp:17
preprocessing
include
FeatureExtractor.hpp
Generated by
1.17.0