Chemistry 版 (精华区)

发信人: zjliu (秋天的萝卜), 信区: Chemistry
标  题: 电脑象棋和量子化学——计算量子化学的新思路(一)
发信站: BBS 哈工大紫丁香站 (Tue Mar 29 12:05:23 2005)

电脑象棋和量子化学
——计算量子化学的新思路

黄晨 * 2005年3月
(* 联系地址:复旦大学化学系表面化学实验室,eMail:morning_yellow@elephantbase

.net)


A.引擎和引擎协议

A1. 什么是引擎?
A2. 什么是引擎协议?什么是开放式引擎协议?
A3. 目前流行的国际象棋引擎协议有哪些?
A4. 量子化学计算程序Gaussian有没有引擎和引擎协议?
A5. 国际象棋引擎协议当中要规定哪些内容?
A6. 象棋引擎的运作方式有哪些?它们各有什么优缺点?
A7. 量子化学计算程序是否需要引擎协议?
A8. 量子化学计算程序的引擎协议需要规定哪些内容?
A9. 界面的设计要有哪些要求?

A1. 什么是引擎?

  “引擎”这个概念是从汽车上借用过来的。引擎是汽车的核心部件,在一个计算机
软件上,“引擎”是核心程序,它可以象汽车上的引擎一样卸下来,移植到其他软件上
。通常软件除了引擎以外还有“界面”程序,界面就如同汽车的底盘,它是引擎的操作
平台。

A2. 什么是引擎协议?什么是开放式引擎协议?

  引擎和界面是相对独立的两种程序,它们之间的配合需要两个关键步骤:
  (1) 界面给引擎发出指令,告诉引擎该如何运行;
  (2) 引擎及时给界面发出反馈信息,报告自己的运行状态和运行结果。
  界面和引擎之间的通讯协议就是“引擎协议”,它规定了界面给引擎发出的指令,
以及引擎向界面反馈的有效信息。在多任务的操作系统平台上,通常界面在前台运行,
引擎在后台运行,它们之间的通讯可以通过以下几种方式:
  (1) 标准输入输出:这是最常用的方式,因为这种方式最容易制订引擎协议,在各
种平台下都可以使用。
  (2) Windows的DDE通讯:DDE通讯是Windows中最灵活的通讯方式。
  (3) Windows的DLL库的API函数,调用API函数是Windows中速度最快的通讯方式。它

和DDE通讯都只限于Windows操作平台,当然,有些非Windows的平台下有类似的通讯方式

,不过移植起来不像标准输入输出那样方便。
  (4) 磁盘文件传输:这是最简单有效的方式,但是通讯效率低,不同平台的文件格
式和读写方法也不相同,所以不易采用。
  开放式引擎协具有以下特点:
  (1) 协议内容是公开的,并且可以免费使用;
  (2) 任何人都可以根据该协议自己编写引擎,凡是支持该协议的界面,都可以使用
他编写的引擎;
  (3) 任何人都可以根据该协议自己编写界面,凡是支持该协议的引擎,都可以被他
编写的界面调用。

A3. 目前流行的国际象棋引擎协议有哪些?

  目前流行的国际象棋引擎协议有:
  (1) ChessBase协议,它是非开放的引擎协议(通讯方式可能是Windows的API函数);


  (2) WinBoard协议,比较成熟的开放式引擎协议,通讯方式是标准输入输出;
  (3) UCI协议,最近兴起的开放式引擎协议,通讯方式也是标准输入输出,ChessBas

e专门为UCI协议制作了引擎适配器,因此它将成为今后国际象棋引擎的主流平台。关于U

CI协议的内容,请参阅《国际象棋通用引擎协议》一文。

A4. 量子化学计算程序Gaussian有没有引擎和引擎协议?

  Gaussian(意思是“高斯函数”)是化学界最常用的量子化学计算程序,它的创立者J

. A. Pople因此而获得1998年诺贝尔化学奖。Gaussian的Windows版本具有一个简单的界

面,在运算时调用的是从L1到L9999的Link程序,显然这是一个多引擎的程序,众多Link

程序就是Gaussian的引擎。
  遗憾的是,Gaussian的说明手册中没有提到Link程序的引擎协议。从表观上说,这
些引擎具有以下特点:
  (1) Gaussian通过磁盘文件为Link程序提供信息;
  (2) Link程序在运行时不接收任何信息;
  (3) 众多Link程序不是同时运转的,前一个程序停止了,后一个程序接着前一个程
序的运算结果继续运算;
  (4) 某些软件(如Linux下的Molden)可以根据Link程序输出的结果来查看运算过程,

而不中断Link程序的运行,但它们无法操控Link程序该如何计算。
  所以,Gaussian和Link程序之间的通讯不是依靠引擎协议的,Link程序也称不上严
格意义的引擎。

A5. 国际象棋引擎协议当中要规定哪些内容?

  首先要规定通讯方式,可以是标准输入输出,也可以是DDE或者API,当然最好不要
通过读写磁盘文件来通讯。
  其次,需要涉及到国际象棋的规范了:
  (1) 记谱方法:规定一步棋是如何表示的,国际象棋中通常采用代数格式,即用棋
子的起始坐标和到达坐标表示一步棋;
  (2) 局面描述方法:规定一个局面是如何表示的,国际象棋中通常采用FEN格式,请

参阅《国际象棋译文苑》文摘——《关于PGN和FEN记谱规范(下)》一文;
  (3) 棋局描述方法:这在国际象棋引擎中不是非常必要,可参考《国际象棋译文苑
》文摘——《关于PGN和FEN记谱规范(上)》一文;
  (4) 引擎运作方式:这点在后面将会提到。
  除此以外,还要规定一些常用指令(从界面到引擎的)和反馈信息(从引擎到界面的)
,例如如何设置参数,引擎是如何反馈思考过程和结果的,等等。请参阅《国际象棋通
用引擎协议》一文。

A6. 象棋引擎的运作方式有哪些?它们各有什么优缺点?

  象棋引擎的运作方式一般有两种:
  (1) 连贯方式:界面把自己的着法告诉引擎,引擎随后输出它的着法,此时界面把
自己下一步着法告诉引擎,再让引擎响应,这样直到棋局终止,WinBoard协议就使用这
样的方式。这种方式有利于界面的设计,界面只要把一步步着法告诉引擎就可以了,甚
至用不着考虑规则,一切由引擎判断和处理,连违反规则的着法也可以由引擎来指出(例

如WinBoard界面从不判断“吃过路兵”的合理性,必须由引擎来判断)。采用连贯方式的

引擎协议通常会加重引擎设计者的负担。
  (2) 单步方式:界面把当前局面告诉引擎,引擎只针对该局面输出它认为的最佳着
法,界面着下一步着法时,不是告诉引擎走哪一步,而是把走完这步的局面告诉引擎,U

CI协议就使用这样的方式。和连贯方式恰恰相反,单步方式可以使引擎设计者的负担减
轻很多。然而单步方式可能存在潜在的危险,对于象棋中重复局面的发生,可能只传递
一个局面是无法说明情况的。因此对于单步方式来说,制定完善的引擎协议是具有一定
难度的。

A7. 量子化学计算程序是否需要引擎协议?

  量子化学计算程序通常可以完成以下计算:
  (1) 计算某个化学粒子(原子、分子或离子)的基本性质,例如能量、能级、光谱、
电荷分布、磁屏蔽效应等,这种计算是量子化学最基本的计算,通常称为“单点计算”

  (2) 计算分子的振动性质,从而获得分子的红外光谱和热力学函数,通常称为“频
率计算”;
  (3) 优化分子结构,即寻找势能面上的极小值点;
  (4) 寻找反应过渡态,即寻找势能面上的鞍点。
  在这些运算当中,困难最大的是优化分子结构和寻找反应过渡态。原因有以下两点

  (1) 大部分分子在指定构型附近的势能面上,往往存在多个极小值点或鞍点,究竟
哪个点是最终需要的构型,计算程序是无法判别的,需要人工选择,在寻找极小值点或
鞍点时不断引导,达到最终需要的构型。
  (2) 步长的设置必须随势能面而变化,势能面平缓时可以扩大步长,势能面陡峭时
必须缩小步长,至于如何扩大和缩小步长,没有很严格的算法,必要时需要人工干预。
  从这两点可以看出,人工干预是量子化学计算过程中的重要手段,为此需要开发“
计算量子化学界面”,真正计算过程是由“量子化学计算引擎”来完成的,这就需要在
界面和引擎之间实现通讯,通过界面随时接收引擎运算结果,并干预引擎使它按照用户
的意愿来完成工作。

A8. 量子化学计算程序的引擎协议需要规定哪些内容?

  国际象棋引擎协议的内容可以移植到量子化学计算程序上。这里需要特别指出的是
,量子化学必须建立描述分子结构和化学反应的规范,这些规范包括:
  (1) 确定单位制,最好采用“原子单位制”;
  (2) 分子构型的输入和输出格式,最好同时支持直角坐标和自然坐标;
  (3) 单点计算参数的设置方案;
  (4) 单点计算结果的输出方案;
  (5) 构型搜索参数的设置方案;
  (6) 构型搜索结果的输出方案。

A9. 界面的设计要有哪些要求?

  理论上只要引擎是以“标准输入输出”方式工作的,就可以不依靠其他程序单独工
作。但是像过去的DOS操作系统一样输入行命令,并不是一件愉快的事。对于引擎来说,

界面起到代替行命令的功能,它至少需要实现两个基本的功能:
  (1) 根据用户的意图向引擎发送命令;
  (2) 获取引擎的反馈信息并根据用户所能接受的方式显示出来。
  这就需要界面同引擎配套,所以界面必须根据引擎协议来完成以上两个任务。
  除此以外,界面还可以做其他事情。例如绝大多数象棋界面都具有制作棋谱的功能
,计算量子化学界面也应该如此,能画出漂亮的分子结构,才能被化学家们所青睐。
--
╔═══════════════════╗
║★★★★★友谊第一  比赛第二★★★★★║
╚═══════════════════╝

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 天外飞仙]


※ 来源:·哈工大紫丁香 http://bbs.hit.edu.cn·[FROM: 202.118.229.*]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:4.081毫秒