mirror of
https://github.com/opelly27/Stockfish.git
synced 2026-05-20 09:47:46 +00:00
55 lines
1.9 KiB
C++
55 lines
1.9 KiB
C++
#ifndef _NNUE_FEATURES_A_H_
|
||
#define _NNUE_FEATURES_A_H_
|
||
|
||
#include "features_common.h"
|
||
|
||
#include "evaluate.h"
|
||
|
||
// Definition of input feature A of NNUE evaluation function
|
||
// A is a union of P features and K features, so technically the
|
||
// same effect can be achieved by including both P and K features
|
||
// but it would result in slower index appending because
|
||
// P would conditionally exclude K features and vice versa,
|
||
// where A doesn't have any conditionals.
|
||
namespace Eval::NNUE::Features {
|
||
|
||
// Feature P: PieceSquare of pieces other than balls
|
||
class A {
|
||
public:
|
||
// feature quantity name
|
||
static constexpr const char* kName = "A";
|
||
|
||
// Hash value embedded in the evaluation function file
|
||
static constexpr std::uint32_t kHashValue = 0x7A4C414Cu;
|
||
|
||
// number of feature dimensions
|
||
static constexpr IndexType kDimensions = PS_END2;
|
||
|
||
// The maximum value of the number of indexes whose value is 1 at the same time among the feature values
|
||
static constexpr IndexType kMaxActiveDimensions = 32;
|
||
|
||
// Timing of full calculation instead of difference calculation
|
||
static constexpr TriggerEvent kRefreshTrigger = TriggerEvent::kNone;
|
||
|
||
// Get a list of indices with a value of 1 among the features
|
||
static void append_active_indices(
|
||
const Position& pos,
|
||
Color perspective,
|
||
IndexList* active);
|
||
|
||
// Get a list of indices whose values have changed from the previous one in the feature quantity
|
||
static void append_changed_indices(
|
||
const Position& pos,
|
||
Color perspective,
|
||
IndexList* removed,
|
||
IndexList* added);
|
||
|
||
private:
|
||
// Index of a feature for a given piece on some square
|
||
static IndexType make_index(Color perspective, Square s, Piece pc);
|
||
};
|
||
|
||
} // namespace Eval::NNUE::Features
|
||
|
||
#endif // #ifndef _NNUE_FEATURES_UNION_P_K_H_
|