⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 国际象棋程序设计(六):局面评估函数.htm

📁 象棋程序设计全资料集(介绍编写象棋程序的方法思路)
💻 HTM
📖 第 1 页 / 共 2 页
字号:
  <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>&ccedil;<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 + -