- 分值分为中局mg和残局eg这里对于Φ局和残局会给予不同的评分。中局和残局的判断不在评估函数内进行(判断不是0/1的关系中间插值处理),看到有方法是存储方式为((unsigned int)eg << 16) + mg
- 怀疑基础子力是直接存在表里的?
- 每种棋子机动区域得分(可以移动到几个格子)
- NB被P保护的加分(NB是分值比较小的棋子所以在P的保护下只会被對方P威胁)
- NB下一步可以到被P保护区域的加分
- 车线上没有己方的兵(通路车)
- 被(受保护的/安全的)P攻击(因为这种情况下其他棋子只能躲避)
- 被更小的子力/被车攻击(可能因为车是直线攻击的子力最小的子)
- 被王攻击分攻击多个和一个的情况,主要残局比较明显
- 通路兵和荇号的关系底线越近越高
- 通路兵和列号的关系,离两侧越近越安全
- 被两颗棋子攻击(兵或者被两颗兵攻击不包括)
-
kingring也就是王的活动区域(王的位置范围加上前方的一行)
- 攻击王的区域的棋子的加权和
- 攻击KingRing的棋子数之和(攻击多个格子则重复计算)
- 王的safety table也就是对王KingRing的初始化,只需要在棋盘上子力比较大的时候进行这里是自己棋盘上非兵的子力和大于后的时候。在子力少的时候王本身为战斗力
blockedPawns 前方有棋子或在23行的兵不参与机动性计算
对于每个棋子计算攻击区域等
初始化被某粒棋子攻击的区域(Q要把被KBR保护的区域去掉)
这一块完成机动性的计算和对王的安全性的初始化
对于白色是456行,黑是543行
2. 在兵的后方的奖励
3. 对兵和象相同颜色的惩罚
4. 对于被关在兵前面的象的特殊处理 Chess960图案
- 和对方的兵在同一行/列的加分
- 全开/半开的列(应该是有/没有对方的兵)
- 对于被王困住的罚分(特别是王不能易位)
王的相关计算,因為需要之前的计算来完善攻击星系来评估王的安全性
王的计算计算王的威胁
评价过路兵,我们需要包括王在内的攻击信息
如果双方只有兵要评价可能升变的兵(unstoppable)
只在开局的时候进行,尽快占据更大的空间