一种围棋人机对弈系统的制作方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一种围棋人机对弈系统的制作方法
专利名称:一种围棋人机对弈系统的制作方法
技术领域:
本发明涉及一种围棋人机对弈软件技术领域,具体涉及到计算机和人类对弈来下围棋的系统。

背景技术:
随着人类几十年来的不断努力,计算机已经在众多棋类中击败人类顶尖高手,但由于围棋本身复杂度极高,变化无穷,战术运用极其灵活,而且下棋多靠模式识别的特点,使得围棋变成了计算机科学的"阿喀琉斯之踵"。

围棋是一种源于中国的智力游戏,先介绍一下围棋的基础知识
棋子的气,是指一个棋子在棋盘上,与它直线紧邻的空点是这个棋子的 "气"。

棋子直线紧邻的点上,如果有同色棋子存在,则它们便相互连接成一个不可分割的整体。

它们的气也应一并计算。

棋子直线紧邻的点上,如果有异色棋子存在,这口气就不复存在。

提子,是指如一块棋所有的气均被对方占据,便呈无气状态,将被提掉,称为"提子"。

若下子后,双方棋子都呈无气状态,应只提取对方无气之子。

禁着点,是指棋盘上的任何一子,如某方下子后,该子立即呈无气状态,同时又不能提取对方棋子,这个点叫做"禁着点",禁止落子。

禁止全局同型,是指禁止该局棋曾出现的局面再次出现。

终局胜负判断,是指在终局时,根据中国规则,先将死子捡掉,再把目和
子数加起来,看看是否达到184^(185)个子(黑棋应赢的目数)或176^(177)个子(白棋应赢的目数),并决定胜负。

围棋为什么这么难呢?围棋是棋类中最复杂的一项(参见文献施遥《人工智
能在围棋程序中的应用》复旦大学附属中学),围棋独特的复杂性即
1. 围棋的模糊性棋型过多致使计算机无法识别出准确招法;
2. 围棋的反复性仅围棋中存在提子和打劫这两种极其复杂的情况,人类都无法很准确地指出正着所在,在计算机程序上的实现则更为复杂而繁琐;
3. 围棋的灵活性围棋中存在大量高深的棋理和灵活战术,计算机无法"理解的。

而且围棋中战略的目的性没有其他棋类明显,很难对每个子的价值进行评估。

人类围棋高手下棋时的"感觉"也是目前计算机无法"领会"的。

基于上述三种独特的复杂性,围棋中很多着手无法被抽象成机械化的算法。

现有的围棋人机对弈软件只能采用近似的数学方法或模拟方法,致使围棋人机对弈软件上的算法无法发挥出在其他棋类人机对弈软件上的效果。

现有的人机对弈软件的棋力最高水平不过是业余2段,常用围棋人机对弈软件日本的Hiroshi编制的Aya,是亚洲最强的人机对弈软件,其功能较全,但定式下法混乱,落子速度慢。

蒙特卡罗算法(以下简称MC算法)自06年开始被各个软件所使用,它使软件的战斗力达到了一个新的高度。

但MC算法基于概率论,存在很大的不确定性,而围棋是锱铢必较的,纯基于MC算法的程序虽然可以大量模拟对局,但是程序会漫天落子,毫无章法。

上述软件,存在由于算法的缺陷,存在落子速度慢的缺陷。

发明内容
为了解决现有人机对穽软件中存在软件与软件、人类与软件之间交流不多以及落子速度慢的缺陷,本发明提出了一种围棋人机对弈系统。

围棋人机对弈系统,由系统服务器Server、 AI平台和多个对弈用户终端Client组成,所述系统服务器Server、 AI平台和对弈用户终端Client之间
通过网络系统连接,并采用围棋对弈协议SGCP协议进行通信,其中-
系统服务器Server,作为游戏大厅服务器,用于提供联机对弈、数据交换以及对弈规则处理;
AI平台,是人机对弈的引擎,用于获取对弈用户终端Client的棋盘信息,并根据所述棋盘信息控制人机对弈的过程,包括棋局分析、战术的选择、落子点的确定,还用于发送所述落子点信息给^f弈用户终端Client;
对弈用户终端Client,用于提供围棋对弈界面,还用于引导用户进入人机对弈进程;还用于将棋盘数据发送给AI平台,还用于根据AI平台发送的落子点信息更新棋盘数据和围棋对弈界面;
所述围棋对弈协议SGCP,是基于TCP/IP协议的一种通信协议,它在已建立的TCP连接中进行数据通信,它以换行符[CrLf]分割数据包中的每条指令,所述指令由命令号和参数构成,命令号与参数之间使用一个空格[Space]分隔;AI平台包括多用户管理器、常数管理器、参数编辑器、网络通信控制器、
战术与算法协调器,其中
多用户管理器,用于保存并控制多个对弈用户终端Client的档案,并对每个对弈用户终端Client的档案独立设置、并分配单独的存储空间,所述存储空间用于存储对弈用户终端Client的设置参数和对弈过程数据;
常数管理器,用于存取AI平台运行时需要的常数,还用于根据算法运行需要调整相关常数;
参数编辑器,用于存储战术与算法协调器中所有算法模块相关的参数和评分权重参数;所述评分权重参数是指确定所用到的各算法的加分比例;
网络通信控制器,用于控制AI平台与系统网关、每个对弈用户终端Client 的数据通信,所述通信遵循围棋对弈协议SGCP协议;
战术与算法协调器,用于存储围棋的战术规则和算法模块,还用于统筹和调用算法模块和战术规则,进而确定落子点;还用于在对局过程中,调整、更新参数编辑器中的算法参数;还用于判断终局的胜负。

所述战术与算法协调器,可以采用多台电脑共同分担计算任务的分布式计算的方法获得落子点;还可以采用后台计算的方法在对方思考的时间段内对棋局进行分析,并根据分析预测对方的落子点。

本发明的围棋人机对弈系统中的战术与算法协调器采用分布式计算的方法获得己方落子点,有效的提高运算能力,縮短引擎思考时间;所述战术与算法协调器还采用后台的计算方法,即在对方思考的时间段内对棋局进行分析,模拟人类下棋的过程,增加了引擎的实际思考时间,进一步提高了计算速度,进而提高了落子速度。

具体实施例方式
本实施方式的围棋人机对弈系统,由系统服务器Server、 AI平台和多个对弈用户终端Client组成,所述系统服务器Server、 AI平台和对弈用户终端Client之间通过网络系统连接,并采用围棋对弈协议SGCP协议进行通信,其中
系统服务器Server,作为游戏大厅服务器,用于提供联机对弈、数据交换以及对弈规则处理;AI平台,是人机对穽的引擎,用于获取对穽用户终端Client 的棋盘信息,并根据所述棋盘信息控制人机对弈的过程,包括棋局分析、战术的选择、落子点的确定,还用于发送所述落子点信息给对弈用户终端Client;
对弈用户终端Client,用于提供围棋对弈界面,还用于引导用户进入人机对弈进程;还用于将棋盘数据发送给AI平台,还用于根据AI平台发送的落子
点信息更新棋盘数据和围棋对弈界面;
所述围棋对弈协议SGCP,是基于TCP/IP协议的一种通信协议,它在已建立的TCP连接中进行数据通信,它以换行符[CrLf]分割数据包中的每条指令,所述指令由命令号和参数构成,命令号与参数之间使用一个空格[Space] 分隔;
AI平台包括多用户管理器、常数管理器、参数编辑器、网络通信控制器、战术与算法协调器,其中
多用户管理器,用于保存并控制多个对弈用户终端Client的档案,并对每个对弈用户终端Client的档案独立设置、并分配单独的存储空间,所述存储空间用于存储对弈用户终端Client的设置参数和对弈过程数据;
常数管理器,用于存取AI平台运行时需要的常数,还用于根据算法运行需要调整相关常数;
参数编辑器,用于存储战术与算法协调器中所有算法模块相关的参数和评分权重参数;所述评分权重参数是指确定所用到的各算法的加分比例;
网络通信控制器,用于控制AI平台与系统网关、每个对弈用户终端Client 的数据通信,所述通信遵循围棋对弈协议SGCP协议;
战术与算法协调器,用于存储围棋的战术规则和算法模块,还用于统筹和调用算法模块和战术规则,进而确定落子点;还用于在对局过程中,调整、更新参数编辑器中的算法参数;还用于判断终局的胜负。

所述战术与算法协调器,是AI平台进行落子生成的核心模块。

它所包含的算法模块包含有多个现有算法,所述现有算法包括括静态分析模块、搜索模块、MC算法模块等现有的围棋相关算法模块。

所述常数管理器,能够实现算法的微调,如调整MC算法模拟的对局数目,
使算法更加灵活。

引擎进入对弈状态前,可以在所述参数编辑器中调整相关参数,在对局进程中,引擎可以根据棋局进程和战术要求调整参数编辑器中的参数,以提高对棋局的把握能力。

所述对穽用户终端Client,还用于设置本地的算法常数,所述算法常数存储于多用户管理器中的对穽用户终端Client的档案中。

这样,用户可以在对局前、以及对局过程中,随时通过调整算法常数的办法来改变计算机的行棋方法。

所述战术与算法协调器采用现有的各种围棋落子点的选择方法获得落子占。

"、、o
所述战术与算法协调器,采用多台电脑共同分担计算任务分布式计算的方法,具体过程为
步骤一在每个对弈用户终端Client的电脑上设置计算端程序;
步骤二分别对每个计算端程序进行性能测试,并获得每个对弈用户终端Client的电脑的计算性能,并选取计算性能位于前k位的多台对弈用户终端Client的电脑作为分布式计算的终端;
步骤三根据棋盘数据,和所有分布式计算的终端的计算能力之和算出所期望的计算时间,为蒙特卡罗算法分配模拟次数,以各分布式计算的终端的性能为权值,按照能者多劳的原则进行加权分配计算任务;
步骤四AI平台等待各分布式计算终端反馈的计算结果,并预算超时时间,将超时未完成的运算任务在主机进行处理。

所述步骤四中,在接收到第一台参与分布式运算的终端的电脑返回的计算结果之后,启动计时器开始计时,在设定时间内,接收其他参与分布式运算的
终端的电脑返回的计算结果,当计时超过所述设定时间时,强制将其他所有参与分布式计算的终端的电脑返回运算结果,对于未完成的计算量,由主机负责计算,或者由主机再次分配给计算性能位于前1-5位的参与分布式运算的终端的电脑进行计算,并将计算结果返回主机;
所述k为大于l的整数。

所述主机是指AI平台所在的电脑。

在所述步骤三中,根据算法类型来分配计算任务。

当参与分布式计算的终端的电脑数量较多,达到上百台时,AI平台所在的电脑负担过重,可以选择计算能力位于前i位的多台参与分布式计算的终端的电脑作为子主机,来完成步骤三和步骤四的工作,然后,所有子主机将所有
计算结果返给主机。

所述i为大于10的整数。

分布式计算可以解决很大一部分的计算力不足的问题。

对计算端程序的性能测试方法,统计参与对弈的所有用户终端Client进行
5亿次l+l运算所需时间,然后根据所述时间对所有参与对弈的用户终端Client
的电脑进行排序,进而获得所有参与对弈的用户终端Client的电脑的计算能力。

采用分布式计算的方式,能够有效的提高运算能力,縮短引擎思考时间。

所述战术与算法协调器,还采用后台计算的方法,具体为在对方思考的时间段内,将棋盘均匀拆分成多个局部,对每个局部进行模拟、局部分析;
对当前局面,通过静态分析预测对方落子,针对对方可能的几个落子点,进行预先落子点的计算。

所述预测对方落子的方法,可以采用确定己方围棋落子点的选择方法预测对
方的落子点。

现有的人机对弈软件,都只在轮到己方落子时才开始思考,而本发明在任何时候都不会停止自己思考的脚步,模拟人的思维,在对方思考时,本发明的系统仍在思考已方棋的下一个落子点的选择,增加了引擎的实际思考时间。

加入后台计算功能的人机对弈软件,比现有人机对弈软件的确定落子的时间更短。

所述战术与算法协调器,同时采用上述分布式计算的方法和后台计算的方法,能够充分利用所有参与围棋人机对弈系统的用户终端的计算机的资源,最大可能的縮短运算时间、提高计算效率,縮短确定落子的时间。

所述战术与算法协调器判断终局的胜负的方法为
在对局结束时,以点目结果为胜负判定标准,点目方法如下对棋盘每个点进行判断,如果该点为非空点时,则该点的归属者目数+h如果该点为空点时,与之相邻的非空点全部为白子,则白方目数+1,全部为黑子,则黑方目数 +1,若有黑有白,则双方+0.5,其他情况则不加;分数多的一方为胜者。

所述对局结束,是指双方都停着的时候。

本发明中所述的围棋对弈协议SGCP中,系统服务器接收到的有效101登录到SkyGo Server网关,参数为选用的昵称 201向网关申请等待对手,参数忽略202从网关获取当前正在等待对手的玩家列表,参数忽略 203向网关申请与指定对手对弈,参数为对手昵称204获取网关统计信息(在线人数等),参数忽略205撤销等待对手申请,参数忽略 301获取对局信息,参数为对局唯一标识符(Gtoken) 302退出对局,参数为对局唯一标志符(Gtoken) 303聊天发言,参数为发言内容311对局准备就绪,参数忽略321申请落子,参数为坐标327申请点目,参数忽略其中,中括号中的为反馈指令。

对局建立流程为
1、确保网关状态正常,启动用户端,输入昵称和网关信息,进行连接 [确定昵称唯一,如不唯一则添加下划线以示区别]
2、等待对手或向其他玩家申请对局
3、获取对局信息
4、点击"开始"表示准备就绪 [等待双方准备就绪后开始对局]
5、进行对局
6、双方点击"放弃"以示结束 [此时对局结束,可再次点击开始发起新局]
其中,中括号中的为网关内部的处理流程。

本实施方式的AI平台还包括记忆库管理器和自学习模块,所述记忆库管理器,用于对AI平台运行中产生的棋局形势进行保存和重现,还用于存储自学习模块的分析结果,还用于将所述自学习模块的分析结果为战术与算法协调器提供棋局参考;所述自学习模块,用于将记忆库管理器中存储的棋局中重复出现的棋局进行分析,并将所述棋局和分析结果存储到记忆库管理器中。

所述记忆库管理器能够保存和再现一些棋型,是AI平台的自学习模块的基础支持。

所述自学习模块是让程序主动学习定式(参见文献谷蓉,刘学民,朱仲涛,周杰《一种围棋定式的机器学习方法》清华大学自动系)和手筋等围棋知识。

权利要求
1、一种围棋人机对弈系统,其特征在于它由系统服务器Server、AI平台和多个对弈用户终端Client组成,所述系统服务器Server、AI平台和对弈用户终端Client之间通过网络系统连接,并采用围棋对弈协议SGCP协议进行通信,其中系统服务器Server,作为游戏大厅服务器,用于提供联机对弈、数据交换以及对弈规则处理;AI平台,是人机对弈的引擎,用于获取对弈用户终端
Client的棋盘信息,并根据所述棋盘信息控制人机对弈的过程,包括棋局分析、战术的选择、落子点的确定,还用于发送所述落子点信息给对弈用户终端Client;对弈用户终端Client,用于提供围棋对弈界面,还用于引导用户进入人机对弈进程;还用于将棋盘数据发送给AI平台,还用于根据AI平台发送的落子点信息更新棋盘数据和围棋对弈界面;所述围棋对弈协议SGCP,是基于TCP/IP协议的一种通信协议,它在已建立的TCP连接中进行数据通信,它以换行符[CrLf]分割数据包中的每条指令,所述指令由命令号和参数构成,命令号与参数之间使用一个空格[Space]分隔;所述AI平台包括多用户管理器、参数编辑器、网络通信控制器、战术与算法协调器,其中多用户管理器,用于保存并控制多个对弈用户终端Client的档案,并对每个对弈用户终端Client 的档案独立设置、并分配单独的存储空间,所述存储空间用于存储对弈用户终端Client的设置的战术参数和对弈过程数据;参数编辑器,存取AI平台运行时需要的常数,根据算法运行需要调整相关常数;还用于存储战术与算法协调器中所有算法模块相关的参数和评分权重参数;所述评分权重参数是指确定所用到的各算法的加分比例;网络通信控制器,用于控制AI平台与系统网关、每个对弈用户终端Client的数据通信,所述通信遵循围棋对弈协议SGCP协议;战术与算法协调器,用于存储围棋的战术规则和算法模块,还用于统筹和调用算法模块和战术规则,进而确定落子点;还用于在对局过程中,调整、更新参数编辑器中的算法参数;还用于判断终局的胜负。

2、根据权利要求1所述的围棋人机对弈系统,其特征在于,所述对弈用户终端Client,还用于设置本地的算法常数,所述算法常数存储于多用户管理器中的对弈用户终端Client的档案中。

3、根据权利要求1所述的围棋人机对穽系统,其特征在于,所述战术与算
法协调器,采用多台电脑共同分担计算任务的分布式计算的方法,具体过程为步骤一在每个对弈用户终端Client的电脑上设置计算端程序;步骤二分别对每个计算端程序进行性能测试,并获得每个对弈用户终端Client的电脑的计算性能,并选取计算性能位于前k位的多台对弈用户终端 Client的电脑作为分布式计算的终端;步骤三根据棋盘数据,和所有分布式计算的终端的计算能力之和算出所期望的计算时间,以各分布式计算的终端的性能为权值,按照能者多劳的原则进行加权分配计算任务;步骤四AI平台等待各分布式计算终端反馈的计算结果,并预算超时时间,将超时未完成的运算任务在主机进行处理。

所述步骤四,可以采用下述方法实现AI平台接到第一台参与分布式运算的终端的电脑返回的计算结果之后,继续等待设定时间,如果在所述设定时间内,接收他参与分布式运算的终端的电脑也返回计算结果,超过所述设定时间后,强制将其他所有参与分布式计算的终端的电脑返回运算结果,对于未完成的计算量,由主机负责计算;或者由主机再次分配给计算性能位于前l-5位的对弈用户终端Client的电脑进行计算,所述计算结果返回主机;所述k为大于1的整数;所述主机是指AI平台所在的电脑。

4、根据权利要求3所述的围棋人机对弈系统,其特征在于,在步骤二中,分布式计算的终端的计算能力的测试方法为,统计参与对穽的所有用户终端Client进行5亿次1+1运算所需时间,然后根据所述时间对所有参与对弈的用户终端Client的电脑进行排序,进而获得所有参与对弈的用户终端Client 的电脑的计算能力。

5、根据权利要求3所述的围棋人机对弈系统,其特征在于,所述步骤四中,在接收到第一台参与分布式运算的终端的电脑返回的计算结果之后,启动计时器开始计时,在设定时间内,接收其他参与分布式运算的终端的电脑返回
的计算结果,当计时超过所述设定时间时,强制将其他所有参与分布式计算的终端的电脑返回运算结果,对于未完成的计算量,由主机负责计算,或者由主机再次分配给计算性能位于前l-5位的参与分布式运算的终端的电脑进行计算,并将计算结果返回主机。

6、根据权利要求5所述的围棋人机对弈系统,其特征在于,当参与分布式计算的终端的电脑数量超过一百台时,选择计算能力位于前i位的多台参与分布式计算的终端的电脑作为子主机,来完成步骤三和步骤四的工作,然后,所有子主机将所有计算结果返给主机,所述i为大于10的整数。

7、根据权利要求1或3所述的围棋人机对弈系统,其特征在于,所述战术与算法协调器,采用后台计算的方法,具体为在对方思考的时间段内,将棋盘均匀拆分成多个局部,对每个局部进行模拟、局部分析;对当前局面,通过静态分析预测对方落子,针对对方可能的几个落子点,进行预先落子点的计算。

8、根据权利要求7所述的围棋人机对弈系统,其特征在于,所述预测对方落子的方法,采用确定己方围棋落子点的选择方法预测对方的落子点。

9、根据权利要求1所述的围棋人机对穽系统,其特征在于,所述战术与算法协调器判断终局的胜负的方法为在对局结束时,以点目结果为胜负判定标准,点目方法如下对棋盘每个点进行判断,如果该点为非空点时,则该点的归属者目数+h如果该点为空点时,与之相邻的非空点全部为白子,则白方目数+1,全部为黑子,则黑方目数 +1,若有黑有白,则双方+0.5,其他情况则不加;分数多的一方为胜者。

10、根据权利要求1所述的围棋人机对弈系统,其特征在于,所述AI 平台还包括记忆库管理器和自学习模块,所述记忆库管理器,用于对AI平台运
行中产生的棋局形势进行保存和重现,还用于存储自学习模块的分析结果,还用于将所述自学习模块的分析结果为战术与算法协调器提供棋局参考;所述自学习模块,用于将记忆库管理器中存储的棋局中重复出现的棋局进行分析,并将所述棋局和分析结果存储到记忆库管理器中。

全文摘要
一种围棋人机对弈系统,涉及一种人机对弈软件技术。

它解决了现有人机对弈软件存在的落子速度慢的缺陷。

本发明的人机对弈系统由系统服务器Server、AI平台和多个对弈用户终端Client组成,其中战术与算法协调器用于存储围棋的战术规则和算法模块,还用于统筹和调用算法模块和战术规则,进而确定落子点;还用于在对局过程中,调整、更新参数编辑器中的算法参数;还用于判断终局的胜负。

所述战术与算法协调器采用分布式计算的方式对棋局进行分析获得落子点,有效提高了运算能力,缩短引擎思考时间;所述战术与算法协调器还可以采用后台计算方法,即在对方思考的时间段内对棋局进行分析,模拟人类下棋的过程,增加了引擎的实际思考时间,进一步提高了计算速度。

相关文档
最新文档