📄 国际象棋程序设计(六):局面评估函数.htm
字号:
<DT> <FONT face="Times New Roman">5. </FONT>满兵,棋盘上有太多的兵会影响机动性,为车开放一条纵线才是好主意。
<DT> 最后兵形上要注意的是:后面跟了车的通路兵是非常危险的,因为任何吃掉它的子都会成为车的盘中餐。如果有一个车在通路兵的后面<FONT
face="Times New Roman">(</FONT>同一列<FONT
face="Times New Roman">)</FONT>,那么我的程序给予极高的加分。
<DT>
<DT><FONT face=楷体_GB2312 size=5><B>王的安全和取向</B></FONT>
<DT>
<DT> 我们很早就谈到过王的安全了,在开局和中局里,保护王是最重要的,易位是最好的办法。
<DT> 但是在残局里,王身边的很多子都没了,他转眼间变成了攻击性子力!把它留在兵阵的后面简直是浪费资源。
<DT> “取向”<FONT
face="Times New Roman">(Tropism)</FONT>在这里衡量的是一个子攻击对方王的难易程度,通常用距离来衡量。取向的计算规则跟兵种有关,不过通用的规则是,你越靠近对方的王,你对他的压力就越大。
<DT>
<DT><FONT face=楷体_GB2312 size=5><B>确定权重</B></FONT>
<DT>
<DT> 现在我们确定了有那些因素是需要衡量的,但是我们怎么决定它们的权重呢?
<DT> 这是个非常有价值的问题,可以花几年时间<FONT face="Times New Roman">(</FONT>也确实有人在做<FONT
face="Times New Roman">)</FONT>用线性组合的办法来调整评估函数,有时把机动性设得多一些,有时更强调安全性,等等。我当然希望有一个绝对的答案,可惜没有,因为再好的评价函数都会碰到麻烦和失误。如果你的程序足够强,那很好。如果不是,那么试试别的方案,让它和你原来的程序下,如果能赢下大多数,那么新的方案就是一个进步。
<DT> 有三种方法可以试试:
<DT> <FONT face="Times New Roman">1.
</FONT>通过优化评估函数取得的成绩,要达到加深一层搜索所达到的同样效果,这是非常困难的。如果你很疑惑,那么宁可把评估函数设得简单些,把更多的处理器资源留给<FONT
face="Times New Roman">Alpha-Beta</FONT>搜索。<FONT
color=#0000ff>【有关资料表明,加深一层搜索大约可以使棋力提高</FONT><FONT face="Times New Roman"
color=#0000ff>200</FONT><FONT color=#0000ff>分</FONT><FONT
face="Times New Roman" color=#0000ff>(ELO)</FONT><FONT
color=#0000ff>,这是相当可观的。】</FONT>
<DT> <FONT face="Times New Roman">2. </FONT>除非你想和世界冠军去比,否则你的局面评价函数不必要特别有效。
<DT> <FONT face="Times New Roman">3.
</FONT>如果你的程序确实很快,你可以花些时间用适当的算法来改进评估方法。但是对象棋来说,花上几千年时间都是有可能的。<FONT
color=#0000ff>【这里指用适当的算法来调整权重,例如线性回归分析、神经网络算法等,每做一步调整,都需要用大量的对局来试验,所以工作量非常大。】</FONT>
<DT><FONT
color=#0000ff> 【最后想注明我的观点,即局面评估函数是整个象棋程序的核心。人们越来越把注意力集中到局面评估函数上,好的象棋程序往往用上万行的程序来分析局面,但它们的作者很少会透露出其中的细节。一个最简单的办法就是去看一些公开了的象棋程序,例如:</FONT><FONT
face="Times New Roman" color=#0000ff>Crafty</FONT><FONT
color=#0000ff>的评估函数有</FONT><FONT face="Times New Roman"
color=#0000ff>4000</FONT><FONT color=#0000ff>多行,主要包括以下四方面的内容:</FONT>
<DT><FONT color=#0000ff> </FONT><FONT face="Times New Roman"
color=#0000ff>(1) </FONT><FONT color=#0000ff>子力价值,仅仅是简单地把每个子的价值加在一起;</FONT>
<DT><FONT color=#0000ff> </FONT><FONT face="Times New Roman"
color=#0000ff>(2) </FONT><FONT
color=#0000ff>兵的价值,不仅考虑兵的相对位置,也考虑通路兵</FONT><FONT face="Times New Roman"
color=#0000ff>(</FONT><FONT color=#0000ff>特别在残局中</FONT><FONT
face="Times New Roman" color=#0000ff>)</FONT><FONT color=#0000ff>;</FONT>
<DT><FONT color=#0000ff> </FONT><FONT face="Times New Roman"
color=#0000ff>(3) </FONT><FONT
color=#0000ff>跟每个子位置有关的子力价值,即子力的灵活性、协调性等因素;</FONT>
<DT><FONT color=#0000ff> </FONT><FONT face="Times New Roman"
color=#0000ff>(4) </FONT><FONT
color=#0000ff>王的安全性,既考虑王周围的兵阵,也考虑可以攻击王的其他棋子。</FONT>
<DT><FONT color=#0000ff> 以上译自</FONT><FONT face="Times New Roman"
color=#0000ff>Crafty</FONT><FONT
color=#0000ff>源程序的第一段,其中的细节可以参考这个程序的其他片段。】</FONT>
<DT>
<DT><FONT face=楷体_GB2312 size=5><B>下一个月</B></FONT>
<DT>
<DT> 好了,没有下一个月了,就这些了。
<DT> 如果我要把这个连载拖得长一些,我可以写一些关于开局库<FONT face="Times New Roman">(Opening
Book)</FONT>、残局库<FONT face="Times New Roman">(Endgame
Library)</FONT>、特别针对象棋的硬件,以及很多很多其他的内容。我当然写得出来,但是我才不写呢。我打算把一部分内容保留到我今年秋天要写的书里,其他内容我也不知道到底有没有用。还有一个原因,我也懒得写下去了。
<DT> 我希望你们喜欢看我的东西,希望你们能学到两三个有用的技巧。如果真的学到了,那么明年看我写的别的东西吧<FONT
face="Times New Roman">(GDC</FONT>或<FONT
face="Times New Roman">E3)</FONT><FONT color=#0000ff>【我也不知道是什么学科,</FONT><FONT
face="Times New Roman" color=#0000ff>GDC</FONT><FONT
color=#0000ff>好像是图形显示控制芯片,反正和象棋没任何关系】</FONT>,并且在你公司里的工程师或程序员面前好好夸我,好吗?
<DT> 太高兴了!
<DT>
<DT> <FONT face="Times New Roman">Fran</FONT>ç<FONT
face="Times New Roman">ois Dominic Laram</FONT>é<FONT
face="Times New Roman">e</FONT>,<FONT face="Times New Roman">2000</FONT>年<FONT
face="Times New Roman">10</FONT>月
<DT>
<DT><FONT color=#0000ff> 【译后注:总的来说</FONT><FONT face="Times New Roman"
color=#0000ff>Laram</FONT><FONT color=#0000ff>é</FONT><FONT
face="Times New Roman" color=#0000ff>e</FONT><FONT
color=#0000ff>写的东西还是比较浅显的,没有代码和过于专业的知识</FONT><FONT face="Times New Roman"
color=#0000ff>(</FONT><FONT color=#0000ff>即便是有,我也已经在译注中说明了</FONT><FONT
face="Times New Roman" color=#0000ff>)</FONT><FONT
color=#0000ff>。但是或许是我英语水平的问题,他的某些表述并不能理解,因此即便很别扭地翻译出来了,还是要在译注中加上自己的理解,这让我非常吃力。不过总算一切都结束了。</FONT>
<DT><FONT
color=#0000ff> 与此同时,我还收集了很多专题方面的文章,大概有三十来篇,本来是想翻译的,以展示我在程序设计方面的造诣,但是没有时间了</FONT><FONT
face="Times New Roman" color=#0000ff>(</FONT><FONT
color=#0000ff>况且在</FONT><FONT face="Times New Roman"
color=#0000ff>Laram</FONT><FONT color=#0000ff>é</FONT><FONT
face="Times New Roman" color=#0000ff>e</FONT><FONT
color=#0000ff>的文章里我也发挥过瘾了</FONT><FONT face="Times New Roman"
color=#0000ff>)</FONT><FONT
color=#0000ff>。我相信读者看了这六篇连载后一定觉得还不够,至少对于想设计象棋引擎的读者来说,仅仅看这么点东西是远远不够的,因此我把这些原文放在我的网站上,相信对于学过程序设计的读者来说,看这些文章应该是没有问题的。</FONT>
<DT><FONT
color=#0000ff> 如果你读到有疑问的地方,不妨和我交流,或许你的疑问是很就价值的。如果你找到文中明显的错误</FONT><FONT
face="Times New Roman" color=#0000ff>(</FONT><FONT
color=#0000ff>包括错别字</FONT><FONT face="Times New Roman"
color=#0000ff>)</FONT><FONT
color=#0000ff>,一定要写信给我,我的工作是无偿为象棋爱好者和程序设计师做的,所以也需要你们的帮助。】</FONT>
<DT>
<DT> 原文:<A
href="http://www.gamedev.net/reference/programming/features/chess6/"
target=_blank><FONT
face="Times New Roman">http://www.gamedev.net/reference/programming/features/chess6/</FONT></A>
<DT> 译者:黄晨 <FONT face="Times New Roman">(</FONT><A
href="mailto:webmaster@elephantbase.net"><FONT
face="Times New Roman">webmaster@elephantbase.net</FONT></A><FONT
face="Times New Roman">)</FONT>
<DT> 类型:全译加译注
<DT> 说明:<FONT face="Times New Roman">2004</FONT>年<FONT
face="Times New Roman">11</FONT>月首先发表于《<A href="http://www.chessit.net/"
target=_blank>国际象棋译文苑</A>》,<FONT face="Times New Roman">2005</FONT>年<FONT
face="Times New Roman">5</FONT>月修订译注。 </DT></DL>
<DIR>
<LI>上一篇 <A
href="http://www.elephantbase.net/computer/basic_advanced.htm">国际象棋程序设计<FONT
face="Times New Roman">(</FONT>五<FONT face="Times New Roman">)</FONT>:高级搜索方法</A>
<LI>下一篇 <A href="http://www.elephantbase.net/computer/outline.htm">概述</A>
<LI>返 回 <A href="http://www.elephantbase.net/computer.htm">象棋百科全书——电脑象棋</A>
</LI></DIR>
<DIV align=center>
<CENTER>
<TABLE border=0>
<TBODY>
<TR>
<TD>
<P align=center><A href="http://www.elephantbase.net/" target=_blank><IMG
height=31 src="国际象棋程序设计(六):局面评估函数_files/elephantbase.gif" width=88
border=0></A></P></TD></TR>
<TR>
<TD><A href="http://www.elephantbase.net/" target=_blank><FONT face=Arial
size=2><STRONG>www.elephantbase.net</STRONG></FONT></A></TD></TR></TBODY></TABLE></CENTER></DIV></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -