点格棋博弈中UCT算法的研究与实现

【摘要】:2016年3月谷歌AlphaGo击败世界围棋冠军李世石九段,使人工智能、机器博弈再次成为大众焦点。人工智能是计算机科学的重要研究方向,主要研究用机器来模拟和执行人脑的智力功能,开发相关的理论和技术,从而达到让机器可以能像人一样进行学习、思考、判断等各种脑力活动的目标。机器博弈因使用计算机解决博弈问题而得名,它将博弈思想和计算机科学相融合,希望计算机能像人一样做出理性决策。机器博弈作为人工智能极具挑战的分支之一,一直以来都被誉为人工智能的“果蝇”,机器博弈的研究对于人工智能的发展具有积极的推动作用。机器博弈在国外的发展较早,并取得了一定的成就;在国内的发展还比较缓慢,以棋类为载体是目前研究机器博弈的主要方法。点格棋是法国数学家爱德华·卢卡斯在1891年提出的二人纸笔游戏。点格棋博弈系统主要由知识表示、着法生成、搜索算法和估值函数四部分组成,其中搜索算法是核心。搜索算法根据当前局面生成一颗一定深度的博弈树,对博弈树进行向下搜索,传统的点格棋博弈系统所采用的搜索算法多为α-β剪枝算法,采用α-β剪枝算法存在搜索深度浅、浪费时间等问题。另一方面α-β剪枝算法必须有一个估值函数对棋盘的优劣进行评估。目前常采用的估值方法当棋盘中不存在安全边的时候会比较准确,但是如果棋盘中含有安全边,估值会由于安全边占领的顺序不同而存在误差,所以点格棋博弈系统的估值函数设计相对较难。UCT算法是蒙特卡洛算法的一种延伸算法,根据大数定理以多次模拟的方式实现对博弈树中节点的价值评估,同时将UCB算法应用到博弈树搜索上,通过UCB算法选择进行评估的节点,引导博弈树向更好的方向生长,有利于更快的获得最优解。UCT算法根据大量模拟棋局的结果以概率的方法进行盘面优劣的判断,预估节点的好坏,优先选择表现好的节点。这种方法解决了点格棋目前存在的盘面评估问题。将UCT算法应用到点格棋博弈,最后通过实验证明采用UCT算法的点格棋博弈系统博弈水平高于α-β剪枝算法。根据点格棋博弈过程中棋盘会存在许多价值相同的边即等价边,这些边选择其中任意一条边进行搜索,与对这些全部进行搜索产生的结果相同,在进行博弈树搜索时只需要对其中一条边进行搜索,据此提出基于等价边裁剪的UCT算法在UCT算法拓展节点阶段进行等价边裁剪。最后通过实验证明改进算法能够减少博弈树搜索时搜索节点的数量,大幅度提高UCT算法的博弈水平。在UCT算法模拟棋局阶段,为提高模拟棋局结束后收益值计算的准确性,在原有计算方法的基础上提出了基于修正值的收益值计算方法,不仅对模拟棋局胜负进行了区分,还对胜负的程度进行了量化,使收益值更加的精确;其次,为提高模拟棋局的次数,实现了基于多核CPU的UCT算法的并行化,充分利用了多核CPU的计算性能,提高棋局的模拟数量。综合以上两点改进提出基于修正收益值的并行UCT算法,通过实验证明基于修正收益值的并行UCT算法可以提高博弈树搜索深度和模拟棋局数量,使UCT算法的博弈水平更高。本文的创新点如下:1.在认真分析点格棋博弈中经常使用的搜索算法后,发现UCT算法相对于传统的α-β剪枝算法有着时间和空间方面的优势,将UCT算法运用到点格棋博弈中。2.提出基于等价边裁剪的UCT算法:给出等价边的定义,在拓展之前进行等价边裁剪,减少博弈树的搜索空间,提高博弈水平。3.提出基于修正收益值的并行UCT算法,包括两个方面改进:第一,提出基于修正值的收益值计算方法,对胜负程度进行区分、量化,提高收益值准确性;第二,为充分利用了计算机性能,提高模拟棋局次数,实现了UCT算法的并行化。

【相似文献】

中国期刊全文数据库

前2条

1

苏黔;;如何调整彩电的会聚[J];电气时代;1986年02期

2

;[J];;年期

中国硕士学位论文全文数据库

前2条

1

刘洋;点格棋博弈中UCT算法的研究与实现[D];安徽大学;2016年

2

刘慧慧;改性涤纶织物的结构设计及性能研究[D];北京服装学院;2012年

中国重要报纸全文数据库

前1条

1

王石川;年轻人稍微出点格,不是坏事[N];东莞日报;2014年

计算机博弈点格棋规则,点格棋博弈中UCT算法的研究与实现相关推荐

  1. java开发爱恩斯坦棋,爱恩斯坦棋计算机博弈关键技术研究

    爱恩斯坦棋计算机博弈关键技术研究 [摘要]:计算机博弈是人工智能领域的重要研究方向之一,被誉为人工智能学科的"果蝇".爱恩斯坦棋属于完备信息博弈棋种,是一种棋局信息完全透明的博弈类 ...

  2. java开发爱恩斯坦棋,爱恩斯坦棋计算机博弈系统的研究与实现

    爱恩斯坦棋计算机博弈系统的研究与实现 [摘要]:计算机博弈,也称机器博弈,是一个极具挑战与发展前景的计算机研究领域,其作为人工智能领域一个极其重要的课题,素有人工智能领域"果蝇"之 ...

  3. Excel - 选择性粘贴和单元格引用规则

    最基本的功能,才是最重要的功能,一定好好好理解. 最常用的复制.粘贴功能,在Excel里赋予了更多的选项,也变得更加强大.Excel里一般可复制的内容都是只单元格区域,其组成包括数据(文本或数值).格 ...

  4. 黑白棋,又叫翻转棋(Reversi)、苹果棋或奥赛罗棋(Othello)。棋盘共有8行8列共64格。开局时,棋盘正中央的4格先置放黑白相隔的4枚棋子。双方轮流落子,只要落子和棋盘上任一枚己方的棋子

    黑白棋,又叫翻转棋(Reversi).苹果棋或奥赛罗棋(Othello).棋盘共有8行8列共64格. 开局时,棋盘正中央的4格先置放黑白相隔的4枚棋子.双方轮流落子,只要落子和棋盘上任一枚己方的棋子在 ...

  5. POI导出Excel:设置字体、颜色、行高自适应、列宽自适应、锁住单元格、合并单元格...

    点击关注公众号,利用碎片时间学习 1. 前言 poi框架可以支持我们在java代码中, 将数据导出成excel , 在实际开发中, 往往还需要设置excel字体,颜色,行高,列宽等属性, 有时候还需要 ...

  6. Android 宫格图控件MultiImageView(RecyclerView适配器中展示不定数量的图片)

    Android 宫格图控件MultiImageView(RecyclerView适配器中展示不定数量的图片) 最近的github上的996ICU在IT界应该很多人听说了,不知道CSDN上什么是最受大家 ...

  7. POI按照源单元格设置目标单元格格式

    原文:http://jjw198874.blog.163.com/blog/static/1889845522011102401854234/ POI按照源单元格设置目标单元格格式 poi按照一个源单 ...

  8. 在excel工作表中c1单元格_已知Excel工作表中A1单元格和B1单元格的值分别为“电子科技大学”、“信息中心”,要求在C1单元格显示“...

    已知Excel工作表中A1单元格和B1单元格的值分别为"电子科技大学"."信息中心",要求在C1单元格显示" 更多相关问题 所谓犯罪现象的特性,是指为 ...

  9. python xlwt单元格合并_Python xlwt写入单元格并合并单元格操作问题,pythonxlwt,我想展示成这样:----...

    Python xlwt写入单元格并合并单元格操作问题,pythonxlwt,我想展示成这样:---- 我想展示成这样:----------------| 名称 |----------------| 1 ...

  10. android 绘制5格电量,Android 如何把状态栏信号格改为5格

    前言         欢迎大家我分享和推荐好用的代码段~~声明         欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net 雨季o莫忧离:http://blog ...

最新文章

  1. dbcp 连接池参数说明
  2. StringUtils工具类的isBlank()方法使用说明
  3. 如何使用.NET配置文件(一)
  4. 8款惊艳的HTML5粒子动画特效
  5. 部署ftp文件共享服务
  6. Prototype使用$F()函数
  7. List异常报错:list All elements are null
  8. 关于sg90舵机的一点小想法
  9. html pc页面连接到微信,PC上对限制在微信客户端访问的html页面进行调试
  10. 卑微的我,喜欢遥远的你
  11. 【Disturbed People】【CodeForces - 1077B】(思维水题)
  12. wps-excel的自动分页符(虚线)怎么去掉
  13. mybatis中设置主键返回
  14. 机器学习中的距离公式
  15. 一个10年程序员给大家的忠告
  16. 分析LFC乐付链系统发展潜力
  17. eventlet并发读写socket出现Second simultaneous问题
  18. 2017年大数据、云计算、物联网发展趋势
  19. 艾德克斯充电测试软件_艾德克斯直流充电桩测试应用
  20. Java 只有引用类型(reference type)

热门文章

  1. 本地方法接口和本地方法栈总结
  2. Oracle listagg去重distinct三种方法总结
  3. 如果Service有多个实现类,Spring怎么知道该注入哪个实现类
  4. VMware VirtualBox共存时桥接注意
  5. 用数据库表填充下拉列表框
  6. 看到大家在讨论阿拉伯数字-》汉字数字的转换,拿出我去年写的C版本
  7. c++虚函数动态联编需要避免的内存泄漏问题
  8. 【代码优化】私有构造器使用及对象创建优化
  9. GridView里面的Item高度设置
  10. Android开发之ProgressBar控件(实现加载动画与条形进度条)