Material は、 盤上と持ち駒を含めて、どちらがどれだけ駒の価値を持っているかを表す評価項目である。 評価関数の中では最も基本的な要素であり、 ほぼすべての将棋AIが何らかの形で material を使う。
最も単純には、 各駒へ固定の点数を与えて合計する。
たとえば将棋では、
にそれぞれ重みを置き、 成駒や持ち駒は別の重みで扱う。
この差分が material balance であり、 序盤から終盤まで一貫して強い影響を持つ。
int pieceValue(PieceType pt) {
switch (pt) {
case PAWN: return 100;
case LANCE: return 300;
case KNIGHT: return 350;
case SILVER: return 500;
case GOLD: return 600;
case BISHOP: return 800;
case ROOK: return 1000;
default: return 0;
}
}
int evaluateMaterial(const Position& pos) {
int score = 0;
for (Piece pc : pos.pieces(BLACK))
score += pieceValue(pc.type());
for (Piece pc : pos.pieces(WHITE))
score -= pieceValue(pc.type());
score += handValue(pos.hand(BLACK));
score -= handValue(pos.hand(WHITE));
return score;
}
実戦的には、
まで考えることが多い。
将棋では持ち駒があるため、 material はチェス以上に重要な意味を持つ。
たとえば、
は単純な固定値だけでは測りきれない。
そのため現代の将棋AIでは、 material を基礎にしつつ King Safety, Mobility, NNUE などで補正する。