简要介绍
国际象棋基本常见的几种评估有Material子力、Space空间、Mobility机动性、Tempo着法、Threat威胁、Shape形状、Motif图案等,而在具体的确定的时候还有很多不同的表现形式。一个棋子的移动往往是影响多个评价指标之后得到的综合结果。但是往往这些的计算不会严格按照这样的框架,比方在Stockfish中这些类型的划分就没有那么的死板。
评估和棋盘表示关系非常的大,棋盘的结构(和对棋盘结构的理解)非常影响写评估的手感。而且对模板的数量应用可以减少很多的工作量。这点相比起来Stockfish就做的非常的优秀(结构真的非常的漂亮但是有的时候也会找不到要用的东西)。
比如说取一个函数。
template<Tracing T> template<Color Us>
Score Evaluation<T>::evaluate_space() {
const Color Them = (Us == WHITE ? BLACK : WHITE);
const Bitboard SpaceMask =
Us == WHITE ? CenterFiles & (Rank2BB | Rank3BB | Rank4BB)
: CenterFiles & (Rank7BB | Rank6BB | Rank5BB);
//…
}