自学习五子棋下棋算法研究.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
自学习五子棋下棋算法研究.doc

自学习五子棋下棋算法研究 摘 要: 博弈是人工智能的主要研究领域之一。本文通过研究博弈理论,博弈树搜索技术,强化自学习算法和人工神经网络理论,设计了一个具有自学习功能的五子棋系统。 关键词:博弈 五子棋 强化学习 神经网络 引言 课题意义 人工智能是综合性很强的一门边缘学科,它的中心任务是研究如何使计算机去做那些过去只能靠人的智力才能做的工作。目前,各国都把人工智能作为重点列入本国的高科技发展计划。博弈是人工智能的一个重要研究领域,它广泛应用于政治、经济、军事和生物竞争等领域中。博弈的许多研究成果为人工智能提供了很多概念和方法,也广泛应用于军事指挥和经济决策中。 人工智能中大多以下棋(如:象棋、围棋、五子棋、西洋跳棋等)为例研究博弈规律。博弈成为了一个典型的问题。早期,人工智能的创始人之一 A. L. Samuel 编了一个计算机下西洋跳棋的程序。1959 年,该程序战胜了设计者本人,1962年则击败了美国的一个州冠军。现在,国际上对国际象棋的研究已比较深入,IBM 公司的“深蓝”程序将世界冠军卡斯帕罗夫击败了。国内中山大学的陈志行教授的“手谈”围棋程序也已有一定“智力”。Tesauro 的 TD-GAMMON(1995 年)西洋双陆棋程序经过上百万盘的学习训练,程序达到世界水平。这些程序或者需要经过大量训练,或者“智力”有限,或者是采用大规模搜索算法实现,难以避免“组合爆炸”的危机,因此,一个真正“智能”的,有学习能力的高效率的博弈策略还有待进一步研究。 博弈论与博弈过程 下棋类的博弈是一种完全信息的过程,即下棋的双方都知道对方已经走过的步子,也知道对方将来可能走的步子。假设有甲、乙二人对弈,现在轮到甲下棋,他面对的是一个局面1,从这局面可以有N种符合规则的下法。这 N 种下法分别形成了局面 2,3,……,N+1。如图1-1 所示。假设甲选择了形成局面 2 的下法,轮到乙下棋。乙面对局面2,又可以有 M 种可能的下法,形成 M 种新的局面 K+1,K+2,……,K+M。如图1-2 所示。如果甲选择形成局面 3,4……,N+1 的下法,乙方都对应有若干种下法。这样甲乙双方轮流交替下棋,棋盘局面发展变化就形成如图 1-3 所示的一棵树形状,通常称为博弈树。博弈树最终的叶节点有甲赢乙输,甲输乙赢,甲乙平手三种。下棋者总是从当前局面出发选择最有利于自己的走法下一子,如甲在局面 1,他将从乙 2、乙 3 等中选择最有利自己的走法;同样,乙在 2 局面时也从甲 4、甲 5 等局面中选择最有利自己走法。 为了从很多的局面中选出最优的,就需要一个搜索算法和一个对局面进行形势判断的函数。搜索算法通常使用极小极大值搜索算法,对形势的好坏,用估值函数进行判断。 图1-1 甲方面对的局势 图1-2 乙方面对的局势 图1-3 博弈树 课题主要工作 本课题的工作是将博弈策略和机器自学习理论应用在五子棋的设计与实现上,主要研究与解决的问题如下: 博弈理论,搜索算法,机器学习算法的学习。 自学习五子棋核心算法的实现。 五子棋问题的计算机实现。 五子棋问题的表示 要让计算机学会下棋,首先就要把下棋问题表示成计算机可理解的形式,即把五子棋问题形式化,并能让搜索、估值、学习等算法对这些数据进行操作。需要在计算机中表示的主要问题有棋盘状态、落子顺序、状态的变化及特征的表示等。 棋盘状态表示 要让计算机知道棋盘状态,就是要它记住棋盘中哪个位置有黑子,哪个位置有白子以及哪个位置是空点。棋盘是19行19列的,我们可以采用坐标的形式表示行和列。程序中我们用二维数组来记录棋盘的坐标及所下的子。用数字1表示黑色棋子,用2表示白色棋子,用0表示无棋子。 棋盘特征及下棋顺序的表示 在对棋盘的局势进行判断时,估值函数和TD强化学习法都要提取棋盘状态的特征,以便对局势进行判断。通过编写搜索函数,获取|、—、/,\方向的棋盘特征。 下棋的双方每下一子,棋盘的状态都会发生变化。由于搜索过程中有回溯发生,因此状态更新后,还要能恢复成原来的。我们采用一个链表数据结构,它可以方便地实现下棋顺序的记录和悔棋操作。 估值函数 在博弈程序中,为了判断棋局局势的好坏,需要有一个量来进行估计,这就是估值函数。估值函数是与具体的棋类知识紧密结合的,很大程度上决定了博弈程序棋力的高低。在静态估值函数中,我们对不同的棋形给出固定的估计值。在TD强化学习算法中,我们用神经网络作为估值函数,评判棋局优劣。 博弈树搜索技术 计算机要选择有利于它的最佳下法,就要能判断哪种形势对它最有利。但往往对一个形势的判断是很难做到准确的,特别是一盘棋刚开始的时候,棋盘的形势不明朗,即使是专家也不能做出准确的判断。为了判断哪种下法最有利,我们往往需要向后面计算几步,看看在走了几步棋

文档评论(0)

aiwendang + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档