auntyellow 发表于 2005-2-24 14:39:00

象棋引擎源程序发布公告

<br /><br /><P>  ElephantEye 0.90b 是专门为调试 Elephant Board 的 UCCI 协议而制作的象棋引擎,公开源程序的目的有两个:
  (1) 为 UCCI 引擎作示范;
  (2) 展示位棋盘在中国象棋中的运用方法。
  广大象棋爱好者和程序员可以以任何目的使用 ElephantEye 0.90b 的代码,但作者不对代码中的错误负责。
  以下是 ElephantEye 0.90b 的技术指标:</P>
<P>  一、支持的 UCCI 协议的命令:
  (1) ucci
  (2) position {startpos | fen &lt;fen_str&gt;}
  (3) go {infinite | depth &lt;ply&gt;}
  (4) quit
  (5) stop (只能在工作状态中使用,其他命令只能在空闲状态中使用)。</P>
<P>  二、可以返回的 UCCI 协议的信息:
  (1) id {name &lt;engine_name&gt; | company &lt;company_name&gt; | author &lt;author_name&gt;}
  (2) ucciok
  (3) info depth &lt;ply&gt; score &lt;pos_score&gt; nodes &lt;searched_nodes&gt;
  (4) {score &lt;pos_score&gt; | bestmove &lt;best_move&gt; } (go depth 0 返回 score,否则返回 bestmove)
  (5) bye</P>
<P>  三、对弈引擎技术:
  (1) 着法预产生数组;
  (2) 使用位棋盘(位行/位列)的着法产生;
  (3) 使用位棋盘(位行/位列)的将军判断;
  这三个技术是 ElephantEye 0.90b 的核心技术;
  (4) MVV/LVA 启发(只针对吃子着法);
  (5) 历史表启发(只针对不吃子着法);
  (6) “最小-最大”搜索法;
  (7) Alpha-Beta 搜索;
  (8) Quiescence 搜索;
  (9) 将军扩展搜索;
  (10) 循环着法和长将的检测(由于不接收历史局面,对弈时仍然可能长将);
  (11) 杀棋步数计算;
  (12) 迭代加深启发;
  这些技术是象棋对弈程序的基本技术;
  (13) 主要变例获取;
  (14) 中止信号获取;
  这两个技术是实现 UCCI 反馈信息的基础,但同时降低了搜索效率。
  
  为此,ElephantEye 0.90b 源程序的文件及其功能如下:
  (1) UCCI.H:UCCI 命令的获取;
  (2) LONGRAND.H:32位随机数的产生;
  (3) CCBITBRD.H:位棋盘结构的定义和功能的实现;
  (4) CCPREGEN.H:着法预产生数组和 Zobrist 数组的生成(功能1);
  (5) CCMOVGEN.H:局面结构的定义和功能的实现,包括着法产生和将军判断(功能2-5);
  (6) CCEVALUE.H:局面评估函数,ElephantEye 0.90b 采用“梦入圣蛋”的快速局面评估方法;
  (7) CCSEARCH.H:搜索程序(功能6-14);
  (8) ELEEYE09.CPP:ElephantEye 0.90b 的主程序(即 main 函数);
  所有的子程序都以头文件的形式存在,编译 ELEEYE09.CPP 即可;</P>
<P>  为了阐述界面和引擎的通讯原理,作者用 Visual Basic 设计了一个示例程序,文件及其功能如下:
  (1) REDIRECT.CPP:REDIRECT.DLL 包含了 Console 程序重定向的 API 库函数;
  (2) EX_STDIO.BAS:用 Visual Basic 跟引擎通讯的示例程序;
  (3) EX_STDIO.FRM:示例程序用到的界面;
  (4) EX_STDIO.VBP:Visual Basic 工程文件,可直接用 Visual Basic 编译。</P>
<P>  此外,ElephantEye 0.90b 还为以下有待开发的功能预留了部分接口:
  (1) 时间控制的 UCCI 协议;
  (2) 接收历史局面的 UCCI 协议;
  (3) 开局库和局面表(置换表或散列表);
  (4) 高级搜索方法(包括空着裁剪、窗口裁剪、PVS/NegaScout、MTD(f) 等等);
  (5) 更合理的局面评估函数。
  尽管这些功能还没有实现,ElephantEye 0.90b 也已经具有相当的棋力,实力远远强于公开源代码的 MantisChess 和 VSCCP,稍弱于“梦入圣蛋”,适合初学者练习。

页: [1]
查看完整版本: 象棋引擎源程序发布公告