象棋棋子的价值,灵活性及其关系评估

论文帮手 3本页 1524字

5 估值技术

  估值是一个通过既有的棋类知识来评估一个局面优劣的过程。这一过程对具体的棋类知识依赖程度很深,但是仍有一般性的规律可循。这里以象棋为例介绍具有普遍性的估值手段。

  5.1 棋子价值评估

  棋子的价值评估,简单的说就是评估双方都有哪些棋子在棋盘上。根据我们的经验,可以让一个车价值为 500,一个马价值为 300,一个兵价值为 100 等等。将的价值为无限大(通常用一个远大于其他棋子的数)。一方的棋子总值就是棋盘上存活的该方棋子乘以棋子价值的和。用一个式子表达:SideValue=Sum( PieceNumber×PieceValue )其中 PieceNumber是某种棋子的数量,PieceValue是该种棋子的价值,Sum 是对各种棋子的总价值求和。如果红色的棋子价值总和大于黑色的棋子价值总和,通常这意味着红方的局势优于黑方。而红黑双方的 SideValue之差越大,红方的优势也就越大。听起来有点太简单了,的确是这样。但棋子的价值却是估值所要包含的最重要的内容。甚至于配合合适的搜索深度,仅仅评估双方棋子的价值,就可以下一手马马虎虎的象棋了。几乎没有真正的博弈程序仅仅利用上面提到的式子来评估棋子价值。原因是对于棋子价值评估,往往还可以很容易地加入一些其他的明显规律,使估值函数的知识水平提高。例如,兵在棋局中的作用与其过河与否有很大的关系。一个过河兵的作用比未过河的兵对局势的影响要大得多。显然,我们可以把兵的价值根据其过河与否结合其他具体位置信息设计成动态的。

  5.2 棋子的灵活性与棋盘

  控制棋子的灵活性是指棋子的活动范围,通常是越大越好。一匹不能动的马很难在棋局中发挥重要作用;同样,一个蹲在角落里的车也是价值不高的。评估棋子的灵活性较为简单,将一个棋子的所有合法走法罗列出来,乘上该种棋子每一可走步的价值就行了。套用上一节的式子:Mobility=Sum(MoveNumber×MoveValue )其中,MoveNumber是某种棋子的合法走法数量,MoveValue是该种棋子每一走法的价值,Sum是对所有棋子的灵活性价值求和。Mobility就是所有棋子的灵活性分数。与灵活性评估类似,还可以评估博弈双方对棋盘上位置的控制能力。在象棋中,如果一位置落在某方棋子的合法走步上,就可以认为被该方控制。如果某一位置同时落在双方的合法走步上,我们可以根据双方控制该位置的棋子数量及棋子价值来决定孰优孰劣。能控制更多位置的一方应在这项评分上占优。评估棋盘棋子的灵活性和棋盘控制在各种棋类中的作用大相径庭。一般来说在象棋中这属于较为次要的内容,但在围棋中可能起极关键的作用。

估值技术

  5.3 棋子的关系评估

  棋子间的关系也是估值的重要内容之一,我们可以将某个棋子被对方棋子威胁看成是一个不利的因素。例如红车的位置在黑马的合法走步当中,此时我们可以把红车的价值减去一个值(例如 200)来刻画这种情形。而如果红马在黑车的合法走步之中,而红马同时也在红卒的合法走步之中,我们可以认为红马置于红卒的保护之下,没有受到威胁,价值不变。棋子关系的评估应考虑到该谁走棋的问题。如果某个红马落在黑炮的合法走步之内,但此时轮到红方走棋,应认为红马受到的威胁较轻。而如果此时轮到黑方走棋,就应认为红马受到的威胁很大,应减去一个相对较大的值了。如果将被对方威胁,且轮到对方走棋,那么无论有何种棋子可以走到将位都没有意义,将等于失去了。此时应结束估值返回失败的估值( 通常是极大或极小值)。棋子间关系的评估可以在很大程度上提高估值的精度,通常是博弈估值的必备内容。

  5.4 估值技术小结

  与搜索算法配合由前面几节所述,我们可以了解一个估值函数可以从若干角度评价某一局面上博弈双方的优劣程度。把这些不同方面的评价得分加在一起,就构成了一方的价值总和。如果我们把红方的价值总和叫做 RedValue,黑方价值总和叫做 BlackValue,那么一个局面的估值 Value就是红方和黑方的价值差。表达如下式:Value=RedValue-BlackValue这个 Value也就是最终返回给搜索引擎的估值。在基本的极大极小搜索的过程里估值的取得是和上式完全契合的,即无论任何时候取估值均由固定一方的值减去另一方的值。而在负极大值形式的搜索中,如果被估值节点是取极小值节点时取的估值 RedValue- BlackValue,则被估值节点取极大值节点时取的估值就应是 BlackValue-RedValue。在搜索的过程中,搜索程序通常会评估一个所有经过的节点是否已分出胜负,如果是就直接返回估值而不再对该节点搜索下去。这一估值过程与其他的部分分开置于两个模块当中,因为这些已分出胜败的局面并不需要再向下搜索,而其他的估值过程则要在搜索树的末端才执行。我们可以通过简单地察看双方的将帅是否存在来构成这一判断胜负的估值部分。当然也可以把对复杂一些的将死的局面判断加进去。但是没有更复杂的局面判断一般也不会对博弈的准确性构成大的影响,因为随着搜索的向下进行,将死的局面的子节点会透露明确的胜负结果。只是这种情况发生的时候,没有将死局面判断的程序会多花费一些运算时间来搜索更多子节点。但较复杂的判断则导致在每一个节点上花费较多的判断时间,在实现估值函数的时候应当根据具体的情况选择最好的方法。这些基本内容构成的了估值核心。

(未完,请点击下面的其他章节)

相关文章

上一篇:博弈理论极大极小算法和Alpha-Beta搜索技术

下一篇:电脑象棋基本编码实现和性能测试

点击按钮复制手机号

18930620780

将微信二维码保存到相册

打开微信扫一扫从相册识别

1.点击按钮复制QQ号

3008635932

2.打开QQ→添加好友/群

粘贴QQ号,加我为好友